PDF Table Extractor & PDF to Text (CSV, JSON) avatar

PDF Table Extractor & PDF to Text (CSV, JSON)

Pricing

from $2.00 / 1,000 page processeds

Go to Apify Store
PDF Table Extractor & PDF to Text (CSV, JSON)

PDF Table Extractor & PDF to Text (CSV, JSON)

Extract tables from PDF to CSV and get clean text from every page. For invoices, bank statements and reports. Upload a file or paste links, choose pages. Pay per page; failed files are free.

Pricing

from $2.00 / 1,000 page processeds

Rating

0.0

(0)

Developer

K09 Tools

K09 Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

PDF Table Extractor & PDF to Text

Extract tables from PDF to CSV and get clean text from every page. A simple PDF parser for invoices, bank statements, financial reports, price lists and government documents. Convert PDF to CSV, Excel-ready tables or JSON without copy-pasting. Upload a file or paste links, pick the pages you need, and get:

  • One row per page with the page's text in reading order.
  • Every table detected on the page as rows and columns, plus a CSV file per table you can open in Excel or Google Sheets.

Good for invoices, statements, reports, price lists, government and financial documents, and preparing PDFs for AI/LLM pipelines.

Just one short PDF? Try the free browser version: K09 PDF to CSV (up to 20 pages, no upload). This Actor is for batches, long files, links, the API and automation.

How it works

  1. Upload a PDF, or paste one or more links.
  2. Optional: choose pages (for example 1-3,5,10-) and turn table extraction on or off.
  3. Run it. Leave the input empty to try it free on a built-in sample.

Output

Each dataset row is one page:

{
"fileName": "report.pdf",
"page": 1,
"pageCount": 12,
"text": "Quarterly Sales Report\nThis report summarizes...",
"tableCount": 1,
"tables": [
{
"rows": [["Region", "Q1 sales", "Q2 sales", "Change"],
["North America", "1,204,500", "1,318,250", "+9.4%"]],
"rowCount": 5,
"columnCount": 4,
"csvUrl": "https://api.apify.com/v2/key-value-stores/.../records/file1-page1-table1.csv"
}
]
}

The dataset has two views: Pages (text) and Tables (one row per table with a CSV download link). Export either view as CSV, Excel or JSON.

Features

  • Text in reading order. Two-column article layouts are read column by column instead of mixed line by line.
  • Table cells are separated by tabs in the text, so the layout survives copy and paste.
  • Table detection works on whitespace-aligned tables, the most common kind in generated PDFs, with right-aligned numbers and multi-word cells.
  • Password-protected PDFs are supported if you provide the password.
  • Bad links, non-PDF files and damaged pages are reported in the output and not charged.

Limitations

  • No OCR. Scanned PDFs (photos of paper) contain no text layer, so they return empty text.
  • Tables whose cells wrap over several lines, or that have merged header cells, may come out with extra rows or shifted cells. Check the CSV for complex layouts.
  • Maximum file size: 100 MB.

Pricing

Pay per event:

  • Page processed: charged for each page in your chosen range.
  • Table extracted: charged for each table found (turn off Extract tables for text-only runs).

Failed files and pages are free. If you set a maximum cost for the run, the Actor stops cleanly and keeps everything processed so far.

Privacy

Your files are processed only inside your own run. Output is saved to your own run's storage and nowhere else.

Use it from code or AI agents

Every run can be started from the API, and results come back as JSON, CSV or Excel. Replace YOUR_APIFY_TOKEN with the token from Apify Console → Settings → API & Integrations.

cURL (runs the Actor and returns the results in one call):

curl -X POST "https://api.apify.com/v2/acts/k09~pdf-text-tables/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"pdfUrls":["https://example.com/report.pdf"],"pages":"1-5","extractTables":true}'

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("k09/pdf-text-tables").call(run_input={
"pdfUrls": [
"https://example.com/report.pdf"
],
"pages": "1-5",
"extractTables": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('k09/pdf-text-tables').call({
"pdfUrls": [
"https://example.com/report.pdf"
],
"pages": "1-5",
"extractTables": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

No-code and AI agents: the Actor works with Apify's Zapier, Make and n8n integrations, can run on a schedule from the Console, and can be used as a tool by AI agents through Apify's MCP server (see Apify's MCP documentation).