Table Extractor — Scrape HTML Tables from Any URL to JSON/CSV
Pricing
$20.00 / 1,000 table extractions
Table Extractor — Scrape HTML Tables from Any URL to JSON/CSV
Table extractor for webpages: pass a URL and get every HTML table back as structured rows — JSON via the API or dataset, CSV via one-click export. For analysts, developers, and AI agents that need tabular data without writing a parser. $0.02 per page processed.
Pricing
$20.00 / 1,000 table extractions
Rating
0.0
(0)
Developer
Anthony Snider
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Webpage Tables Extractor
Turn any webpage's HTML <table>s into clean, structured JSON — headers and rows ready for a spreadsheet, an LLM, or a data pipeline.
Live on the Apify Store — run it instantly or call it as an agent tool via Apify MCP.
What you get
- Every real data
<table>on the page, parsed to JSON. - Each table:
index,headers,rowCount, androws(objects keyed by header, falling back to column index). - Layout/spacer tables (single column or fewer than 2 rows) are automatically skipped.
- Loose
colspanhandling so cells stay aligned with headers. - Single URL or bulk URLs in one run.
Input
{"url": "https://en.wikipedia.org/wiki/List_of_largest_companies_by_revenue","maxUrls": 25}
Or bulk:
{"urls": ["https://example.com/report-a","https://example.com/report-b"]}
Output
One dataset item per page:
{"url": "https://en.wikipedia.org/wiki/List_of_largest_companies_by_revenue","tableCount": 1,"tables": [{"index": 0,"headers": ["Rank", "Name", "Industry", "Revenue (USD millions)"],"rowCount": 50,"rows": [{"Rank": "1","Name": "Walmart","Industry": "Retail","Revenue (USD millions)": "648,125"}]}]}
Pricing: pay-per-event — charged once per page processed.
Pricing
$0.02 per page processed — billed as the table-extracted event, however many tables the page holds. Bulk runs are capped by maxUrls, which is also your budget cap.
FAQ
How do I scrape an HTML table into JSON or a spreadsheet? Pass the page URL — every real data table comes back as headers + rows objects. Download the dataset as CSV or Excel from the run's Storage tab for spreadsheets.
How does it know what the column names are? The header row is detected and each row becomes an object keyed by header text; when a table has no headers, keys fall back to column index so nothing is lost.
Does it handle merged cells (colspan)? Yes — loose colspan handling keeps cells aligned with their headers instead of shifting the whole row.
Why did a table on the page not appear in the output? Single-column and under-2-row tables are skipped on purpose — those are almost always layout/spacer tables, not data. Every real data table is returned with its index on the page.
Can it extract tables that JavaScript renders after load? No — it parses the served HTML, which keeps it fast and cheap. Tables injected purely client-side (rare for data tables) need a browser-based scraper instead.


