AI Web Scraper & Data Extraction API
Describe the data you need in plain English and get clean JSON from any web page, with no CSS selectors to write or maintain.
Tell the AI what to extract, optionally list the fields and their types, then paste your URLs. Each page is rendered in a real browser and the AI returns the matching data as structured JSON. Because there are no selectors, extraction keeps working when a site changes its layout.
For high-volume jobs where speed and cost matter, define CSS selectors with the web scraper instead. For scheduled, multi-page jobs, build a scraping agent. Every option is documented in the Extract API reference.
Features
- Plain-English promptsDescribe what you want; no selectors required.
- Typed fieldsDefine text, number, or yes/no fields for clean JSON.
- Lists of itemsReturns every matching item, such as all products.
- JS renderingPages are rendered in headless Chrome before extraction.
- Layout-proofKeeps working when class names and markup change.
- Bulk extractionPaste a list of URLs and extract from all of them.
Use cases
- Price and inventory monitoring across e-commerce sites
- Lead generation from directories and B2B catalogs
- Real-estate and rental listing aggregation
- Product review and rating collection for analytics
- Building training datasets for LLMs and recommender systems
API examples
View full API referencecurl -X POST https://api.agenty.ai/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://scrapingsandbox.com",
"prompt": "Extract every product on the page",
"fields": [
{ "name": "name", "type": "string" },
{ "name": "price", "type": "number" },
{ "name": "vendor", "type": "string" },
{ "name": "in_stock", "type": "boolean" }
]
}'const urls = [
'https://scrapingsandbox.com/product/1',
'https://scrapingsandbox.com/product/2',
];
for (const url of urls) {
const res = await fetch('https://api.agenty.ai/v1/extract', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
url,
prompt: 'Extract the product details',
fields: [
{ name: 'name', type: 'string' },
{ name: 'price', type: 'number' },
],
}),
});
const { result } = await res.json();
console.log(url, result);
}import requests
res = requests.post(
"https://api.agenty.ai/v1/extract",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"url": "https://news.ycombinator.com",
"prompt": "Extract the top 10 stories with title and points",
},
)
print(res.json()["result"])How Agenty compares
| Feature | Agenty | Diffbot | ScrapingBee | ScrapeStack |
|---|---|---|---|---|
| AI extraction (no selectors) | Yes | Yes | Yes | No |
| Typed field schema | Yes | Fixed types | Limited | No |
| JavaScript rendering | Yes | Yes | Yes | Yes |
| Online tool, no code | Yes | Limited | No | No |
| Free tier | Yes | Yes | Yes | Yes |
Frequently asked questions
What is the AI Data Extraction API?
The Agenty Extract API uses AI to read a rendered web page and return the data you describe as JSON. Send a prompt, a list of fields, or both. See the API reference for the full request format.
Do I need to write CSS selectors?
No. Describe the data in plain English, such as "every product with its name, price, and rating", and add typed fields if you want a fixed JSON shape. If you prefer selectors, use the web scraper.
How do I extract data from multiple URLs?
Paste your URLs into the tool at the top of this page, one per line, and click Extract data. The same prompt and fields are applied to every page, and you can download all results as JSON.
Does it work with JavaScript-heavy sites?
Yes. Every page is rendered in headless Chrome before extraction, so React, Vue, and Angular single-page apps work out of the box.
Is there a free tier?
You can run 5 extractions without an account, and every account starts with free credits. Check our pricing page for current limits.