Instant Web Scraper - Any List or Table to Rows
Pricing
from $0.50 / 1,000 row scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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=nextlinks, "Next" / "›" / "»" buttons in about 20 languages, and numbered pagers. It also counts up?page=Nand/page/Nwhen 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
| Input | One or more page URLs |
| Output | One row per list item, plus pageUrl, pageNumber, position |
| Pagination | Automatic (next links, numbered pagers, page-number URLs) or your own CSS selector |
| Login | Cookies (Cookie-Editor JSON, name=value; ... string, or {name: value}) |
| Rendering | Server-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
- Downloads the page with a browser-grade TLS fingerprint, through a proxy.
- 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.
- Reads every item of the winning list: element text, link URLs, link titles, image URLs (lazy-loaded
data-srcandsrcsetincluded), alt text,datetimevalues and table cells. - Lines the values up into columns across items and names them.
- 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}
| Field | What it does |
|---|---|
startUrls | Pages to scrape. Each one is paginated separately. |
action | scrape (rows) or findTables (one preview row per list on each page, not charged per row). |
maxItems | Max rows per start URL. Default 1000. |
maxPages | Max pages per start URL, start page included. Default 20. |
tableNumber | Scrape the 2nd, 3rd, ... detected list instead of the best one. |
itemSelector | CSS selector for one row, e.g. li.product. Skips detection. |
renameColumns | Rename detected columns (linkTitle → title). |
keepOnlyRenamedColumns | Output only the columns you renamed. |
dropConstantLabels | Drop columns holding the same short label in every row ("Read more"). Default on. |
nextPageSelector | CSS selector of the next-page link, when auto-detection picks the wrong one. |
autoIncrementPage | Count up ?page=N / /page/N when there is no next link. Default on. |
delayMs | Pause between pages of the same URL. |
cookies | Cookies for logged-in pages. |
customHeaders | Extra request headers. |
proxy | Pick 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:
| Field | Meaning |
|---|---|
pageUrl | The page the row was read from |
pageNumber | 1 for the start page, 2 for the next, ... |
position | Position 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 pattern | Comes from |
|---|---|
Table header in camelCase (teamName) | <th> text of the column |
Class name in camelCase (price, ratingCount) | Text of an element with that class |
...Url | href of a link |
...Title | title attribute of a link, often the untruncated name |
...Image / class like thumbnail | Image URL (lazy-load attributes first) |
...Alt | Image alt text |
datetime | datetime attribute of a <time> |
linkText, text, title, description | Element 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


