PDF to Text, Tables & RAG Chunks API
Pricing
Pay per event
PDF to Text, Tables & RAG Chunks API
Turn PDF URLs into clean per-page text, table rows and overlapping RAG chunks with page references. Handles up to 50 PDFs per run, skips empty pages, flags scanned files, nothing stored after the run.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Puneet
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
PDF to Text, Tables & RAG Chunks API (no OCR, from $0.001 per chunk)
Turn PDF links into clean, page-aware text, table rows and embedding-ready chunks, in one API call.
Give the Actor up to 50 links to PDF files and it returns structured data you can drop straight into a search index, a vector database, a spreadsheet or an LLM prompt. It reads the text layer of each PDF, keeps page numbers, pulls ruled tables out as arrays of rows, and can cut the text into overlapping chunks that remember which pages they came from.
No browser, no login, no API key. Your documents are fetched, parsed and thrown away.
What people use it for
- RAG and AI knowledge bases: switch to RAG chunks and get 300 to 8,000 character chunks with overlap and
pageStart/pageEnd, ready for any embedding model, so answers can cite the page. - Contract, policy and report digestion: one item per page with word counts, so you can route long documents or search them page by page.
- Tables from reports: financial statements, price lists and spec sheets with ruled grids come back as
tables, each a list of rows. - Compliance and archive pipelines: schedule a run over a list of document URLs and compare the text between versions.
- Clean-up before analysis: optional redaction of emails and phone numbers before the text goes anywhere else.
Sample output (pages mode)
{"sourceUrl": "https://example.com/reports/q3.pdf","documentTitle": "Q3 Results","totalPages": 12,"kind": "page","pageNumber": 4,"text": "Revenue by region ...","wordCount": 312,"charCount": 2011,"tableCount": 1,"tables": [[["Region", "Q1", "Q2"], ["North", "10", "12"], ["South", "8", "9"]]]}
In RAG chunks mode each item has kind: "chunk", chunkIndex, pageStart, pageEnd and text instead.
Inputs
| Input | What it does |
|---|---|
| PDF URLs | Direct http(s) links, up to 50 per run, 50 MB each |
| Output mode | One item per page, or RAG chunks |
| Extract tables | Ruled tables as rows (pages mode) |
| Max pages per PDF | Reads the first N pages (1 to 500, default 100) |
| Chunk size / overlap | Characters per chunk (300 to 8,000) and repeated overlap |
| Redact emails and phone numbers | Replaces them with [email removed] / [phone removed] |
| Include empty pages | Off by default: pages without text are skipped and not charged |
| Max items per run | Hard cap on pages or chunks delivered (default 500) |
Bad input (no URLs, a non-http link, overlap larger than chunk size) stops the run straight away with a plain message and no per-item charges.
How much does it cost?
Pay per event: $0.005 per run, plus $0.002 per page with text (pages mode) or $0.001 per chunk (chunks mode). Nothing else: no monthly fee, no per-PDF fee.
| Job | Output | Cost |
|---|---|---|
| One 5-page PDF, pages mode | 5 pages | $0.015 |
| One 40-page report, pages mode | 40 pages | about $0.085 |
| One 40-page report, RAG chunks (1,200 characters) | roughly 55 chunks | about $0.06 |
| 50 contracts of 20 pages each, pages mode | 1,000 pages | about $2.01 |
| Scanned PDF with no text layer | nothing | $0 |
You are never charged for pages without text, for documents that fail to download or parse, or past the Maximum cost per run you set. Apify's free plan includes monthly credit, so you can try it before paying anything.
Quick start
- Click Try for free and keep the prefilled PDF link (a small table PDF from the W3C), or paste your own direct PDF links.
- Choose One item per page for text and tables, or RAG chunks for embeddings.
- Press Start. Results appear in the Output tab in seconds, and you can download JSON, CSV, Excel or HTML, or call the Actor from the Apify API, Make, n8n or Zapier.
FAQ
Does it do OCR for scanned PDFs? No. It reads the text layer, which is what almost all exported reports, contracts, papers and statements have. Scanned files are flagged in RUN_SUMMARY and not charged, so you can send them to an OCR tool instead.
Can I use it for RAG or a vector database? Yes. Chunks mode returns overlapping chunks with pageStart and pageEnd, so your answers can cite the page. Chunk size is 300 to 8,000 characters.
How are tables returned? As arrays of rows per page, for tables drawn with cell borders. Borderless tables come back as text lines.
Is it good for bulk jobs? Up to 50 PDFs per run, 50 MB each, up to 500 pages per PDF. One bad link never stops the others, and RUN_SUMMARY lists every URL with its status.
Are my files stored? No. Each file is parsed from a temporary copy and deleted straight after.
Can I take the text of the same website too? Pair it with the Website SEO Audit & Broken Link Checker to find PDF links and broken ones across a site.
Good to know
- Text-layer PDFs only. Scanned or image-only PDFs have no text to read. They are reported as "no text layer" in
RUN_SUMMARYand not charged. OCR is not included. - Tables are detected where the PDF draws cell borders. Borderless layouts usually come back as plain text lines, and merged cells can leave blank cells in a row.
- Reading order follows the PDF's layout. Multi-column pages can interleave columns.
- Password-protected PDFs are not opened.
- Per-document report.
RUN_SUMMARYlists every URL with its status, pages read and any error. One bad link never stops the others. - Private networks are refused. Links to localhost, internal IPs and cloud metadata addresses are blocked, redirects included.
- Author and creator metadata are not output, because they often contain a person's name. The document title is.
Privacy and rights
Only submit PDFs you own or are licensed to process. The Actor fetches nothing but the URLs you list, one at a time, with a declared user agent. It keeps no copy: the file lives in a temporary file during parsing and is deleted straight after, and no input or output is stored outside your own run's dataset and key-value store. Run-health counters (runs started, succeeded, failed, last error) are kept in a named store in your account.
Built on pdfplumber and pdfminer.six (both MIT). This is an independent tool and is not affiliated with Adobe or any PDF vendor.