Instant Web Scraper - Any List or Table to Rows avatar

Instant Web Scraper - Any List or Table to Rows

Pricing

from $0.50 / 1,000 row scrapeds

Go to Apify Store
Instant Web Scraper - Any List or Table to Rows

Instant Web Scraper - Any List or Table to Rows

Paste any URL and get the page's main list or table back as rows. Columns are detected and named for you, next pages are followed automatically, and one run scrapes many URLs. No selectors, no code, no browser. Cookies work for logged-in pages. Export to JSON, CSV or Excel.

Pricing

from $0.50 / 1,000 row scrapeds

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Instant Web Scraper: turn any list or table into rows

Paste a URL. The Actor finds the page's main repeating list (product grid, search results, directory, ranking, HTML table), names the columns, follows the next pages, and hands you clean rows in JSON, CSV or Excel. You don't write any selectors or code, and there's no browser to babysit.

Why use Instant Web Scraper

  • One run, done. Other instant scrapers make you run a "find tables" pass, write down column numbers, then run again. This one picks the best list and names the columns on the first run.
  • Readable column names. Columns are named from the page itself: table headers (teamName, wins), class names (price, rating), and link, image and title attributes (linkUrl, thumbnail, linkTitle).
  • Pagination without setup. It follows rel=next links, "Next" / "›" / "»" buttons in about 20 languages, and numbered pagers. It also counts up ?page=N and /page/N when the page shows no link.
  • Many URLs per run. Each start URL is scraped and paginated on its own, five at a time.
  • Logged-in pages. Paste a Cookie-Editor export and the cookies go out with every request to that domain.
  • Cheap and fast. It reads plain HTML with a real browser TLS fingerprint and never starts a browser. A page takes about a second.

Overview

InputOne or more page URLs
OutputOne row per list item, plus pageUrl, pageNumber, position
PaginationAutomatic (next links, numbered pagers, page-number URLs) or your own CSS selector
LoginCookies (Cookie-Editor JSON, name=value; ... string, or {name: value})
RenderingServer-rendered HTML only (see FAQ)

Supported inputs

Any page whose list is in the HTML the server sends, for example:

  • E-commerce search and category pages (/search?q=..., /category/shoes)
  • Directories and listings (business, lawyer, job, real estate)
  • Rankings, leaderboards, Wikipedia and other HTML tables
  • Blog archives, news indexes, forum thread lists
  • WordPress, Shopify and other CMS listing pages

Use cases

  • Pull a competitor's catalogue (name, price, URL, image) into a spreadsheet
  • Build a lead list from a directory page
  • Track a ranking or a price table every day with a scheduled run
  • Grab a table from a reference page without copy-paste clean-up
  • Feed product or listing rows to an AI agent through the Apify API or MCP

How it works

  1. Downloads the page with a browser-grade TLS fingerprint, through a proxy.
  2. Scores every group of sibling elements that share a shape (same tag and same shared classes). More items, more text, more fields, images and links score higher. Menus, footers, pagers, filter lists and reference lists score lower.
  3. Reads every item of the winning list: element text, link URLs, link titles, image URLs (lazy-loaded data-src and srcset included), alt text, datetime values and table cells.
  4. Lines the values up into columns across items and names them.
  5. Finds the next page and repeats, matching the same list on each page. It stops at your page or row limit, or when a page brings no new rows.

Input configuration

{
"startUrls": ["https://books.toscrape.com/"],
"maxItems": 100,
"maxPages": 5
}
FieldWhat it does
startUrlsPages to scrape. Each one is paginated separately.
actionscrape (rows) or findTables (one preview row per list on each page, not charged per row).
maxItemsMax rows per start URL. Default 1000.
maxPagesMax pages per start URL, start page included. Default 20.
tableNumberScrape the 2nd, 3rd, ... detected list instead of the best one.
itemSelectorCSS selector for one row, e.g. li.product. Skips detection.
renameColumnsRename detected columns (linkTitle → title).
keepOnlyRenamedColumnsOutput only the columns you renamed.
dropConstantLabelsDrop columns holding the same short label in every row ("Read more"). Default on.
nextPageSelectorCSS selector of the next-page link, when auto-detection picks the wrong one.
autoIncrementPageCount up ?page=N / /page/N when there is no next link. Default on.
delayMsPause between pages of the same URL.
cookiesCookies for logged-in pages.
customHeadersExtra request headers.
proxyPick a proxy country or group. Leave empty for the default route.

Picking a different list

Run once with "action": "findTables". Each output row describes one list: its tableNumber, itemCount, columns, three sampleRows and a ready-made itemSelector. Then run again with tableNumber (or paste the itemSelector).

Output overview

One dataset row per list item. The column names come from the page, so they differ from site to site. Every row also carries:

FieldMeaning
pageUrlThe page the row was read from
pageNumber1 for the start page, 2 for the next, ...
positionPosition of the item on its page

Output samples

From https://books.toscrape.com/, with linkTitle → title, priceColor → price, linkUrl → url and keepOnlyRenamedColumns on:

{
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
"title": "A Light in the Attic",
"price": "£51.77",
"pageUrl": "https://books.toscrape.com/",
"pageNumber": 1,
"position": 1
}

From an HTML table (https://www.scrapethissite.com/pages/forms/), page 3:

{
"teamName": "Los Angeles Kings",
"year": "1992",
"wins": "39",
"losses": "35",
"win": "0.464",
"goalsForGf": "338",
"goalsAgainstGa": "340",
"column9": "-2",
"pageUrl": "https://www.scrapethissite.com/pages/forms/?page_num=3",
"pageNumber": 3,
"position": 1
}

Key output fields

Column name patternComes from
Table header in camelCase (teamName)<th> text of the column
Class name in camelCase (price, ratingCount)Text of an element with that class
...Urlhref of a link
...Titletitle attribute of a link, often the untruncated name
...Image / class like thumbnailImage URL (lazy-load attributes first)
...AltImage alt text
datetimedatetime attribute of a <time>
linkText, text, title, descriptionElement text when there is no useful class

When two columns would get the same name, the second becomes name2, then name3.

FAQ

The page I want returns no rows. The site most likely builds the list in the browser with JavaScript, so the HTML holds no list. The run says so in its status message. This Actor does not run a browser, which keeps it fast and cheap. If the site has a JSON API behind the page, scraping that API is usually the better route.

It picked the wrong list. Run with action: findTables, look at the sample rows, then set tableNumber or paste the itemSelector it prints.

Column names look technical. They come from the page's own class names. Use renameColumns with keepOnlyRenamedColumns to get exactly the columns you want under your own names.

Pagination stopped early. Set nextPageSelector to the CSS selector of the next button, or raise maxPages. Infinite-scroll and "load more" buttons that fetch with JavaScript are not followed.

The site blocks me. Pick a residential proxy and a country in proxy. For logged-in content, add cookies.

How am I charged? Per row in the dataset. "Find tables" preview rows are free.

Support

Open an issue on the Actor's Issues tab with the URL you tried and what you expected. Most fixes for a specific site ship within a few days.

Additional services

Need a dedicated scraper for one site (detail pages, logins, APIs, scheduled exports)? Reach out through the Issues tab.

Explore more scrapers

Browse the rest of the portfolio at apify.com/memo23.

🤖 For AI agents & LLM apps

Call this Actor through the Apify API or the Apify MCP server with {"startUrls": ["<url>"], "maxItems": 50}. It returns flat JSON rows with stable keys for a given site, which suits tool calls that need "the list on this page" without writing a scraper. Use action: "findTables" first when you need to choose between several lists on a page.

⚠️ Disclaimer

This Actor reads publicly available web pages, or pages you can access with your own cookies. You are responsible for following each website's terms of service, robots rules and applicable law (including GDPR and copyright) when you scrape and use the data. Do not use it to collect personal data without a lawful basis.

SEO Keywords

instant data scraper, instant web scraper, scrape any website, list scraper, table scraper, html table to csv, web page to excel, auto detect data, no code scraper, pagination scraper, product list scraper, directory scraper, website data extractor, web scraping api, data scraper cloud