AI Web Data Extractor – Any URL to JSON with Your Schema
Pricing
from $1.00 / 1,000 page-extracteds
AI Web Data Extractor – Any URL to JSON with Your Schema
Pricing
from $1.00 / 1,000 page-extracteds
Rating
5.0
(2)
Developer
felix gerald
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
Describe the fields you want, give it URLs, and get clean structured JSON back. No CSS selectors to write or maintain: the page is cleaned to readable text and an LLM fills in your schema. Built to be called by people, scripts and AI agents (it works as a tool through Apify's MCP server).
How it works
- Fetches each page and strips scripts, navigation and noise, keeping headings, lists, tables, links, image URLs and JSON-LD.
- Sends the cleaned text and your schema to the model with a forced tool call, so the output is always structured.
- Validates every result against your JSON Schema (
validflag) and caches identical requests.
Bring your own LLM key
This Actor uses your own API key (Anthropic, OpenAI or any OpenAI-compatible endpoint such as OpenRouter). Model usage is billed by your provider at cost; you only pay this Actor's small per-page fee. Token counts are included in every result so you can see exactly what each page cost. The key is stored encrypted, is used only for model calls in your run, and is never written to the dataset or logs.
Input
| Field | Description |
|---|---|
urls | Pages to extract from |
schema | A JSON Schema object, or a simple map of field name to description |
instructions | Optional extra guidance for the model |
multiple | Extract a list of items per page (listing pages) |
llmProvider, llmApiKey, model, llmBaseUrl | Your model access |
maxContentChars | Cap on page text sent to the model (default 30,000) |
cacheTtlHours | Reuse results for identical page content, schema and model (default 24) |
Simple schema example:
{ "title": "Book title", "price": "Price as a number", "in_stock": "true if available" }
JSON Schema example:
{ "type": "object", "properties": { "name": { "type": "string" }, "price": { "type": "number" } }, "required": ["name", "price"] }
Output
{"url": "https://shop.example/p/123","status": "ok","data": { "name": "Anvil 20kg", "price": 89.99 },"valid": true,"cached": false,"model": "claude-haiku-5-5","inputTokens": 1480,"outputTokens": 62}
Pages that fail (not found, empty, blocked, model error) appear with status: "error" and are not charged. Fields missing on a page come back as null; the model is told never to guess.
Pricing
Charged per page successfully extracted, including cached results. Failed pages are free.
Limitations
- Static HTML only. Pages that render their content with client-side JavaScript return a clear "no readable content" error.
- Page text is untrusted: the model is instructed to ignore instructions embedded in pages, but always validate outputs before acting on them in automated pipelines.
- Very long pages are truncated at
maxContentChars; check thetruncatedflag. - Only extract data you are allowed to process, and follow each site's terms of service and applicable privacy law.
Developer notes
Event to create in Console → Monetization (delete the default apify-default-dataset-item event, otherwise error rows get billed):
page-extracted(suggested start: $0.005) Set it as the primary event.