AI Web Page Extractor: Structured Data from Any URL avatar

AI Web Page Extractor: Structured Data from Any URL

Pricing

from $10.00 / 1,000 page extracteds

Go to Apify Store
AI Web Page Extractor: Structured Data from Any URL

AI Web Page Extractor: Structured Data from Any URL

Describe what you want in plain English and get it back as JSON from any list of web pages: products, prices, contacts, listings, events. No selectors, no code. Pay per page.

Pricing

from $10.00 / 1,000 page extracteds

Rating

0.0

(0)

Developer

Nick Nguyen

Nick Nguyen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Describe what you want in plain English, give it a list of web pages, and get the matching items back as clean JSON or CSV: products and prices, quotes, job posts, events, contacts, table rows. No CSS selectors, no code, nothing to fix when a site changes its layout.

  • Plain-English prompts. "every book: title, price, star rating and the link to its page".
  • One record per page, items nested, plus a CSV link with one row per item.
  • Reads what the page shows, including links, image alt text, and ratings shown only as icons or classes (e.g. star-rating Three).
  • Pay per page, 3x below the usual price. Pages that fail or where nothing matched are never charged.
  • Text-only mode: leave the prompt empty to get each page's clean text (cheaper, no AI).

Input

FieldTypeDescription
urlsarrayPages to read, one per line. Empty = a free format example.
promptstringWhat to extract, in plain English. Empty = clean page text instead.
maxItemsPerPageintegerUpper limit on items per page (default 100, max 500).
{
"urls": ["https://books.toscrape.com/", "https://books.toscrape.com/catalogue/page-2.html"],
"prompt": "every book: title, price, star rating (1-5) and the link to its page",
"maxItemsPerPage": 100
}

Output (one record per page)

{
"url": "https://books.toscrape.com/",
"status": "ok",
"title": "All products | Books to Scrape - Sandbox",
"itemCount": 20,
"items": [
{"title": "A Light in the Attic", "price": "£51.77", "starRating": 3,
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"},
{"title": "Tipping the Velvet", "price": "£53.74", "starRating": 1,
"url": "https://books.toscrape.com/catalogue/tipping-the-velvet_999/index.html"}
],
"truncated": false,
"fetchedAt": "2026-10-20T15:20:11+00:00"
}

status is ok, no-items (the page loaded but nothing matched: not charged) or failed (with an error: not charged). Use the Items (CSV) output link for one row per item.

Tested on 2026-10-20 on five public pages (book catalog, quotes, Hacker News front page, Python events, a Wikipedia table): every page extracted, 6 to 30 items each.

Pricing

Pay per event, no subscription.

EventPriceWhen it is charged
Page extracted$0.01Once per page, when at least one item came back. 1,000 pages = $10.
Page text$0.002Once per page in text-only mode (no prompt).

Failed pages and pages with no matching items are never charged. Set a maximum charge in the run options and the actor stops before it would go over. Apify's standard run-start event adds $0.00005 per run.

Limits, stated plainly

  • Pages are fetched, not rendered. The actor reads the HTML a browser receives, with a real-browser TLS fingerprint. Sites that build their content with JavaScript after loading, or that sit behind a login or a bot wall, may return little or nothing; those pages show up as no-items or failed and are not charged.
  • One page at a time, no crawling. List every page you want (for example ?page=1 ... ?page=10).
  • AI extraction can make mistakes. The model is told to copy values exactly and to leave missing values as null, but spot-check important data.
  • Very long pages are cut at about 200,000 characters; the record then has truncated: true.
  • Apify free plan: up to 5 pages per run (each page costs us an AI call). Paid plans have no cap.
  • You are responsible for having the right to extract data from the pages you list.

Privacy

Pages you list are fetched and their text is sent to Anthropic's API (Claude) for extraction only. Nothing is kept after the run except the results in your own dataset. The actor runs with limited permissions and reads nothing else in your account.