Structured data extraction API for AI agents
Turn web pages into structured JSON your agent can use.
Reader Extract scrapes a page, converts it into clean Markdown, applies your schema or instruction, and returns structured data alongside the original page context.
1,000 free credits every month. No card required.
curl -X POST https://api.reader.dev/v1/read \
-H "Content-Type: application/json" \
-H "x-api-key: $READER_KEY" \
-d '{
"url": "https://example.com/product",
"formats": ["markdown"],
"extract": {
"schema": {
"name": "string",
"price": "string",
"availability": "string",
"rating": "number",
"summary": "string"
}
}
}'From web context to usable fields
AI agents often need to do more than read a web page. They need to pull out the details that matter and pass them into another system. A research agent may need a company name, description, location, and industry. A shopping workflow may need product name, price, and availability. A real estate workflow may need address, price, beds, baths, and square footage.
You can scrape the page and ask a model to find those fields yourself, but that creates repeated work. You still need to fetch the page, clean the content, decide what text to send to the model, define the output shape, validate the result, handle missing values, and store the final record.
Reader Extract brings that workflow into the same API you use for scraping. Send Reader a URL and an extraction definition. Reader handles the scrape, turns the page into clean Markdown, runs extraction, validates the shape, and returns structured JSON with the page context.
How Reader Extract works
Send a URL and an extraction definition.
The URL is the page to extract from. The extraction definition can be a JSON Schema, shorthand schema, natural language prompt, or prompt plus schema.
Reader scrapes and cleans the page.
The full scrape pipeline runs. The page is rendered, content is extracted, and the result is converted to clean Markdown.
Extraction runs on the cleaned content.
Reader applies your schema or instruction to the cleaned Markdown and returns structured JSON alongside the page context.
Missing fields return null.
If a field is not found in the page content, it returns null. Reader does not invent data for missing fields. Your application can decide how to handle missing values.
Your application receives structured data and source context.
The response includes both the extracted JSON and the normal Reader outputs such as Markdown and metadata. Use the fields for your database, API, or pipeline.
Features
Four ways to define what you want
Full JSON Schema for detailed control. Shorthand schema for quick prototyping. Prompt only for exploratory extraction. Prompt plus schema for guided extraction with natural language context.
Better than brittle selectors
CSS selectors break when pages change layout. Reader Extract works semantically. Instead of finding text inside a CSS class, you define the fields you need and Reader finds them in the content.
Markdown alongside JSON
Every extract response includes both the clean Markdown and the structured JSON. Use the Markdown for context, display, or storage. Use the JSON for your database, API, or pipeline.
Explicit null for missing fields
Real web pages are inconsistent. Some pages will not include every field your schema asks for. Reader returns null for fields that are not found. Missing values are explicit, never hallucinated.
Works on any page type
Product pages, company profiles, job listings, articles, documentation, event pages, recipe pages, real estate listings. The extraction works on any content because it reads clean Markdown, not raw HTML.
Credit usage you can predict
A standard scrape plus extract costs 3 credits. A premium scrape plus extract costs 5 credits. Use extraction when the structured fields are worth the extra step.
Use cases
Product data extraction
Extract product name, brand, price, currency, availability, variants, rating, review count, and description from public product pages.
Company research
Extract company name, description, location, industry, product categories, contact page links, hiring signals, and public website details.
Pricing page analysis
Extract plan names, feature lists, limits, price text, trial details, and call to action copy from public pricing pages.
Real estate listings
Extract address, price, beds, baths, square footage, description, amenities, listing status, and public broker information.
Article and content metadata
Extract title, author, publish date, topic, summary, tags, and canonical URL from articles, blogs, and news pages.
Job posts
Extract job title, company, location, salary range, requirements, responsibilities, benefits, and application details from public job pages.
Four ways to define what you want
Reader supports different extraction styles depending on how much control your workflow needs.
Full JSON Schema
Use full JSON Schema when you want detailed control over field names, types, descriptions, nested objects, and validation behavior. This is a good fit for production workflows where the output needs to match a database model, API payload, or internal data contract.
{
"extract": {
"schema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The product name"
},
"price": {
"type": "number",
"description": "Price without currency symbol"
},
"in_stock": {
"type": "boolean"
}
}
}
}
}Shorthand schema
Use shorthand schema when you want a faster way to define common fields. Useful when you want clean structure without writing full JSON Schema by hand.
{
"extract": {
"schema": {
"title": "string",
"price": "number",
"in_stock": "boolean"
}
}
}Prompt only
Use prompt only when the output is exploratory or does not need a strict schema. Useful for research workflows, summarization, categorization, and first pass analysis.
{
"extract": {
"prompt": "List the 3 main topics discussed on this page"
}
}Prompt plus schema
Use prompt plus schema when you want both control and guidance. This is often the best option for real world pages because the schema defines the output shape while the prompt clarifies how the model should interpret the page.
{
"extract": {
"schema": {
"title": "string",
"price": "number"
},
"prompt": "Focus on the primary product and ignore accessories"
}
}Extraction across different layouts
CSS selectors are useful when pages have stable structure. They are also fragile. If a product page moves the price from .price to .product-price, your selector may fail. If a website has several templates, you may need different selectors for each layout. If you are collecting from many websites, maintaining selectors can become its own product.
Reader Extract works semantically. Instead of telling your scraper to find the text inside a CSS class, you define the fields you need and Reader finds them in the content. That does not mean extraction is magic. You should still validate important outputs, review edge cases, and keep source context. But for heterogeneous pages, schema based extraction can reduce the amount of custom parsing logic your team needs to maintain.
Use selectors when the page structure is stable and exact. Use Extract when your workflow needs to understand fields across messy or varied web pages.
Credit usage for extraction
Extraction adds credits on top of the scrape. If the scrape succeeds but extraction fails, the scrape result is still returned and the extraction attempt still consumes credits.
| Operation | Credit usage |
|---|---|
| Standard scrape | 1 credit |
| Standard scrape plus extract | 3 credits |
| Premium scrape plus extract | 5 credits |
Use extraction when the structured fields are worth the extra step. If your agent only needs to read or summarize a page, Markdown may be enough. If your product needs to store fields, compare values, or trigger workflow logic, extraction is usually worth it.
When to use another capability
Use Scrape when you need page context
If your agent needs to read, summarize, cite, or reason over a page, start with Scrape. Markdown is often enough for research and RAG workflows.
Use Crawl when you need many related pages
If your workflow needs context from an entire website, documentation site, help center, or product catalog, use Crawl first. Extract is best when applied to pages where you know which fields matter.
Use Browser when the page needs interaction
If the data only appears after clicks, filters, form input, login flows your system controls, or multi step navigation, use Browser to create the page state first.
Use Extract when fields matter
If your application needs typed output such as product details, company data, listing fields, job post details, or pricing information, Extract is the right capability.
Frequently asked questions
Turn web pages into structured data
Give your agent the fields it needs, with the source page context beside them. Extract product data, company details, listing information, pricing fields, article metadata, and more from one API.