PDF to Text, Tables & RAG Chunks API avatar

PDF to Text, Tables & RAG Chunks API

Pricing

Pay per event

Go to Apify Store
PDF to Text, Tables & RAG Chunks API

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

Puneet

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Security

Limited permissions

Share

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

InputWhat it does
PDF URLsDirect http(s) links, up to 50 per run, 50 MB each
Output modeOne item per page, or RAG chunks
Extract tablesRuled tables as rows (pages mode)
Max pages per PDFReads the first N pages (1 to 500, default 100)
Chunk size / overlapCharacters per chunk (300 to 8,000) and repeated overlap
Redact emails and phone numbersReplaces them with [email removed] / [phone removed]
Include empty pagesOff by default: pages without text are skipped and not charged
Max items per runHard 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.

JobOutputCost
One 5-page PDF, pages mode5 pages$0.015
One 40-page report, pages mode40 pagesabout $0.085
One 40-page report, RAG chunks (1,200 characters)roughly 55 chunksabout $0.06
50 contracts of 20 pages each, pages mode1,000 pagesabout $2.01
Scanned PDF with no text layernothing$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

  1. Click Try for free and keep the prefilled PDF link (a small table PDF from the W3C), or paste your own direct PDF links.
  2. Choose One item per page for text and tables, or RAG chunks for embeddings.
  3. 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_SUMMARY and 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_SUMMARY lists 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.