Short answer: AI-driven data extraction systems combine an HTTP fetcher, a renderer, and an LLM (or constrained-decoding model) to turn arbitrary web pages into structured JSON. For developers, the best options are the ones with schema-first APIs, predictable JSON output, and bring-your-own-key (BYOK) LLM support so billing and rate limits stay in your control.
Traditional scrapers return raw HTML or markdown and leave parsing to the caller. AI-driven extraction shifts the parse step to the server: you pass a JSON Schema (or a natural-language prompt, or both), and the service returns a JSON object validated against that schema. The model is constrained either by tool-calling, JSON-mode, or grammar-guided sampling so the output is machine-consumable on the first try. This collapses three engineering jobs — fetch, render, parse — into one HTTP call.
fastCRW. Rust-native, ~50 MB RAM idle, Firecrawl-compatible REST API. Accepts both a JSON Schema and an optional prompt on /v1/extract, and is BYOK across OpenAI, Anthropic, Groq, and OpenRouter via llmApiKey / llmProvider / llmModel. Self-hostable under AGPL-3.0; managed at api.fastcrw.com.
Firecrawl. The pattern-setter for the schema + prompt pair on /v1/extract. Hosted-only by default; SDKs in Python and Node. Pricing is credit-based and LLM usage is bundled rather than BYOK by default.
Apify. Actor model: each scraper is a containerized program you can fork. Strong for long-running crawls and proxy rotation; the AI-extraction layer is a separate actor rather than a first-class endpoint.
Diffbot. Knowledge-graph oriented — its "Article", "Product", and "Discussion" automatic extractors return typed JSON without a schema. Less flexible when your schema doesn't match one of their built-in types.
ScrapegraphAI. Open-source Python library that wires graph-of-thought prompting onto a scraper. You bring your own model and infrastructure; lower throughput than the hosted options.
POST a JSON body with url (or urls), a schema, an optional prompt, and BYOK fields to /v1/extract. The response is {"success": true, "data": {...}} where data matches your schema. Minimum 2 credits per call covers the LLM round-trip. The Firecrawl-compatible request shape means you can swap base URLs without changing client code.