Instant Data Scraper: Extract Any List or Table to CSV avatar

Instant Data Scraper: Extract Any List or Table to CSV

Pricing

from $2.40 / 1,000 rows

Go to Apify Store
Instant Data Scraper: Extract Any List or Table to CSV

Instant Data Scraper: Extract Any List or Table to CSV

Instant data scraper for any website, no code: paste a URL and it finds the main list or table (products, search results, listings, directories), extracts every item into clean columns, follows next pages, Load more and infinite scroll, and exports CSV, Excel or JSON.

Pricing

from $2.40 / 1,000 rows

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

9 days ago

Last modified

Share

Paste the address of any web page that shows a list or a table: search results, a product grid, a directory, job or property listings, a ranking, forum threads or an HTML table. The scraper finds the page's main list automatically, extracts every item into clean columns, follows the next pages, and gives you rows ready for CSV, Excel or JSON. No code, no CSS selectors, no browser extension to babysit: it runs in the cloud and works through the API too.

What it does

  • Finds the list for you. It looks for the repeated items on the page (cards, rows, results, posts) and ranks them, so the main content wins over menus, footers, sidebars, filters and footnotes. HTML tables are read with their header row as column names.
  • Clean columns. Text, links and image addresses become separate columns with readable names (title, titleUrl, price, rating, author, comments ...) taken from the page's own markup. Prices also get priceAmount and priceCurrency columns, star ratings become numbers, truncated titles are replaced by the full title, and tags or other repeated values are joined into one column. Labels such as "Price:", buttons such as "Add to basket" and empty columns are left out.
  • Follows pagination. Next links and arrows in many languages, page numbers (1 2 3 ...), "Load more" buttons and, when you switch it on, infinite scrolling. Every page keeps the same columns.
  • Handles JavaScript pages. If a list only appears after JavaScript runs, or a site turns plain requests away, the page is loaded in a real browser (Chrome).
  • Free preview. Preview mode lists every list and table found on a page, with item counts, columns and sample rows, so you can pick another one with Which list.
  • Optional AI column names. One short AI call per list renames the columns (for example ageUrl becomes discussionUrl, avatars becomes contributorImages).
  • Any country (optional). Fetch pages through home (residential) connections in a country you choose, confirmed by two IP-location services, to get local prices, language and listings.
  • No duplicates. An item seen before in the run (on two pages, or a repeated "featured" item) is written and charged once.

Who uses it

  • E-commerce and pricing teams: product grids and search results with names, prices, ratings, images and links.
  • Lead generation and research: directories, member lists, company and organisation listings, job boards.
  • Real estate: property listings with price, bedrooms, bathrooms, size, location and link.
  • Analysts and journalists: Wikipedia and statistics tables, rankings, rates and leaderboards into a spreadsheet.
  • Anyone who used a browser extension to grab a list into CSV and now wants it scheduled, repeatable, or as an API.

Example

Input:

{
"startUrls": [{ "url": "https://books.toscrape.com/" }],
"maxPages": 2
}

One of the 40 rows (20 books per page, two pages):

{
"thumbnail": "https://books.toscrape.com/media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg",
"rating": 3.0,
"title": "A Light in the Attic",
"titleUrl": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
"price": "£51.77",
"priceAmount": 51.77,
"priceCurrency": "GBP",
"_sourceUrl": "https://books.toscrape.com/",
"_page": 1,
"_position": 1,
"_listIndex": 1
}

The same input with https://news.ycombinator.com/ gives one row per story, from a page built with tables and two rows per story:

{
"rank": "1.",
"title": "Run Qwen 3.8 Flash Next (125B) on consumer hardware (RTX 4090) at 100T/s",
"titleUrl": "https://github.com/Niko1221/Strata",
"siteUrl": "https://news.ycombinator.com/from?site=github.com/niko1221",
"site": "github.com/niko1221",
"score": "220 points",
"user": "snehesht",
"userUrl": "https://news.ycombinator.com/user?id=snehesht",
"datetime": "2026-10-04T12:51:53",
"age": "3 hours ago",
"ageUrl": "https://news.ycombinator.com/item?id=49953495",
"comments": "102 comments",
"_sourceUrl": "https://news.ycombinator.com/",
"_page": 1,
"_position": 1,
"_listIndex": 1
}

A Wikipedia list page gives its main table, with the table's own headers as columns (Location, Location URL, Population, % of world, Date, Source), 240 rows.

Tested on 40 public pages (4 October 2026)

Product grids, search results, directories, job boards, property listings, forums, rankings, Wikipedia and statistics tables, JavaScript-only pages, a "Load more" page and an infinite list, read through residential connections with up to two pages each:

Pages with rows38 of 40 (the other two blocked automated visits even in a browser; nothing charged)
Right list chosen first38 of 38
Rows3,755 from 58 pages, in about 2 minutes
Pages that needed a browser8 (a JavaScript list, a "Load more" button, and sites that turn plain requests away)

Also tested: "Load more" (24 laptops: the first 6 plus 3 clicks), infinite scrolling (all 100 quotes of a scrolling list: the first 10 plus 3 scrolls), preview mode, a second table chosen with Which list, your own item selector and fields, a spending limit (the run stopped at exactly the limit), and a run moved to another server mid-way (it continued at the next page and charged no row twice).

Input

FieldWhat it does
startUrlsThe pages with the lists or tables you want. One row per item.
maxPagesPages to read per URL: the first page plus next pages, "Load more" clicks or scrolls. Default 5.
maxItemsStop after this many rows in total. Default 1,000.
previewOnlyReturn the lists found on each page (up to 10 URLs) with sample rows instead of extracting. Free.
listIndex1 = the best match. Use 2, 3 ... for another list or table on the page (see preview or LISTS).
renderModeauto (default): plain HTML first, a real browser only when needed. never or always.
clickLoadMoreClick "Load more" / "Show more" buttons. Default on.
infiniteScrollScroll lists that load more items as you scroll. Default off.
waitForSelectorIn the browser, wait for this element before reading the page.
includeTablesTreat HTML tables as lists, with their headers as column names. Default on.
dedupeItemsWrite identical rows once. Default on.
itemSelectorOptional CSS selector of one item, for example article.product_pod. Columns are still found for you.
fieldsOptional own columns: {"title": "h3 a@title", "price": ".price_color", "url": "h3 a@href"}. @href and @src give full addresses, @html the HTML, any other @attribute its value; no @ gives the text.
aiColumnNamesClearer column names from an AI model, one call per list. Default off.
countryOptional two-letter code. Pages are fetched through residential connections in that country, verified.
proxyConfigurationUsed when no country is set. Default: Apify residential proxy.
maxConcurrencyURLs read at the same time. Default 5.

Output

  • Dataset: one row per item, with the detected columns plus _sourceUrl (the page it came from), _page (1 for the first page; each next page, "Load more" click or scroll adds one), _position (its place in the list) and _listIndex. Export as CSV, Excel (XLSX), JSON, JSONL, XML or HTML from the Storage tab or through the API (.../items?format=csv).
  • LISTS (key-value store): for each URL, every list and table found on its first page, numbered, with item count, description, item selector, columns and three sample rows.
  • SUMMARY (key-value store): per URL, pages read, rows, the list used, why it stopped (page limit, no next page, no new items, spending limit) and any failures; plus traffic and charges for the run.

Columns follow the page's structure, so different sites give different columns. For one clean spreadsheet, run one site (or one kind of page) per run.

Use it from code, automations and AI agents

  • API: run it and get the results in one call: POST https://api.apify.com/v2/acts/zaiq~instant-data-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN with the input as JSON. The API tab on this page has ready-made Python, JavaScript and cURL examples.
  • Python (pip install apify-client):
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("zaiq/instant-data-scraper").call(run_input={'startUrls': [{'url': 'https://books.toscrape.com/'}], 'maxPages': 2})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
  • No code: connect it to Google Sheets, Zapier, Make or n8n from the Integrations tab, schedule runs in Apify Console, and get a webhook when a run finishes.
  • AI agents (MCP): add it as a tool to Claude, Cursor or any MCP client through Apify's MCP server: https://mcp.apify.com?tools=zaiq/instant-data-scraper.

Pricing

You pay only for rows delivered.

EventPrice
Row extracted (one item of the list or table)$0.003 ($3 per 1,000 rows)
Page loaded in a real browser that gave new rows$0.05

Plus Apify's standard run start fee.

Free: preview mode, duplicate rows, pages that fail, are blocked, have no list or bring no new rows, and every retry. "Load more" clicks and scrolls inside a browser page are part of that page. A browser is used only when a page needs it (or when you choose Always). AI column names, when switched on, are billed through Apify's OpenRouter integration to the account that runs the Actor, about $0.0003 per list in our tests.

Your spending limit for the run is respected: the run stops cleanly at the limit.

Tips

  • Wrong list? Run once with Preview on (free), look at the lists found, and set Which list to the one you want. The LISTS record of every normal run shows the same.
  • A list behind "Load more"? Leave Click 'Load more' buttons on and raise Pages to follow.
  • An infinite list? Switch on Scroll infinite lists; each scroll counts as a page.
  • Exact columns? Give Fields with CSS selectors; only those columns are returned.
  • Local prices or language? Set Country.

Limits

  • One list per URL in a run (choose which with Which list). For a second list from the same page, run again with its number.
  • Pages behind a login, forms that must be filled in, and lists inside iframes or shadow DOM are not covered.
  • Some sites block automated visits even through home connections and a real browser. Those pages come back as failures in SUMMARY and cost nothing. CAPTCHAs are never solved.
  • Columns are named automatically; on unusual layouts names can be generic (text, link). Use AI column names or Fields for exact names. Items whose details vary in position (some listings show more facts than others) can spread over more columns.
  • Up to 1,000 pages per URL and 1,000,000 rows per run.
  • Extract only data you are allowed to access, and follow the site's terms.

FAQ

How does it know which list I want? It scores every group of repeated items on the page by how many items there are, how much text and how many fields they carry, whether they have links, images and prices, and how much of the page they cover, and it marks down navigation, headers, footers, sidebars, filters, menus and footnotes. The best group is list 1.

Is this the Instant Data Scraper browser extension? No. It does the same kind of job (find the table or list on a page and export it) as a cloud tool: no browser to keep open, runs on a schedule, handles many URLs, works through the API and through residential connections.

Does it work on JavaScript sites? Yes. In automatic mode a page whose list is missing from the HTML, or that turns plain requests away, is loaded in Chrome.

Can I schedule it? Yes, like any Apify Actor: save the input as a task and add a schedule; each run writes a new dataset, and duplicates within a run are skipped.

What if the run is interrupted? Progress is saved. A run moved to another server continues at the next page, and rows already written are never written or charged again.