AI List Extractor for Any Website

live$0.01/pageData Extraction

Last updated November 9, 2026

Describe a list in plain words and give web addresses. Your own OpenAI, Anthropic, Gemini, or Groq key reads each page and returns one row per item, with a check that flags values not found on the page. No selectors and no per site code.

Features

  • Describe one item in plain words, with no selectors and no per site code.
  • Runs on your own OpenAI, Anthropic, Gemini, or Groq key.
  • Follows next page links, and flags values not found on the page.
  • A refused page, a failed provider call, and a run with no key are free.
  • Pay per event: Page extracted at $0.01.

Input

start_urlsarrayoptional

Public list pages that answer without a login, for example a careers page or a category page. A page that needs JavaScript or refuses plain requests returns a free row.

what_to_extractstringoptional

Plain words, for example: every job: title, company, city, link. Needed when a key is given.

fieldsarrayoptional

Exact keys each item must carry, for the same columns on every page. Empty lets the model choose. In Clay, wrap a column in a one item list.

providerstringoptional

Whose API reads the page, on your key: openai (default), anthropic, gemini, or groq.

api_keystringoptional

Your own key. It goes only to the provider you picked and is never stored, logged, or sent to the model. With no key the actor reads up to 3 addresses for free and sends nothing to a model.

modelstringoptional

Your provider's model name. Defaults: openai gpt-4o-mini, anthropic claude-haiku-4-5-20251001, gemini gemini-2.5-flash, groq llama-3.3-70b-versatile.

max_pages_per_urlstringoptional

How many pages to read from each address by following next page links. Default 3, at most 100. Each page your model answers is charged.

max_itemsstringoptional

The run stops after this many items. Default 1000.

max_chars_per_pagestringoptional

Page text past this length is not sent, which limits your provider bill. Default 40000. The row says when text was cut.

obey_robotsstringoptional

yes (default) or no. A disallowed page returns a free row.

max_charge_usdstringoptional

Stops before a page would pass this figure, before your model is called. This limits this actor's charges, not your provider's bill.

Output schema

json
{
  "row_type": "string",
  "start_url": "string",
  "source_url": "string",
  "page_number": "integer",
  "item": "object",
  "item_index": "integer",
  "fields_not_on_page": "array",
  "item_count": "integer",
  "title": "string",
  "http_status": "integer",
  "page_chars": "integer",
  "text_truncated": "boolean",
  "text_preview": "string",
  "next_page_url": "string",
  "provider": "string",
  "model": "string",
  "input_tokens": "integer",
  "output_tokens": "integer",
  "row_key": "string",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.01per page
EventFree plan price
Page extracted$0.01
Actor Start$0.005

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 150 pages. Any paid Apify plan removes the cap.

Limits

  • Fixtures and the refused key path are the test. No key of ours is used, so no real model has answered through this actor yet, and the first buyer's key is the live test. The per page charge, the item rows, and the default model names were tested on fixtures only. A default model name may be out of date: if your provider refuses it, set model.
  • Item accuracy depends on your model. fields_not_on_page is a text match: a value the model reformatted is listed even when it is right, and a wrong value copied from elsewhere on the page is not listed.
  • No JavaScript. A page that builds its list in the browser returns a free row and no items.
  • No login, no captcha handling, and no route around a refusal. Many large sites refuse plain requests, and those return free rows. Paywalled text is not read.
  • Only the first max_chars_per_page characters of a page go to the model, 40,000 by default. Later items on a longer page are missing, and the row says the text was cut. A model can also stop at its own output limit, and the row reads partial.
  • Next page links are found by rel=next, a link reading Next, or a next class. A page using a load more button or numbered links only ends at page 1.
  • max_charge_usd limits this actor's charges, not your provider's bill. A run restarted by the platform during a model call can repeat that page, which can bill you twice at your provider.
  • Pages are read one at a time, so a run of many pages takes time.
  • You are responsible for following the terms of the sites you read and of your LLM provider.

Available on