PDF Text & Table Extractor (pdfplumber, batch URLs)
Pricing
from $20.00 / 1,000 pdf extracteds
PDF Text & Table Extractor (pdfplumber, batch URLs)
Download any PDF by URL and extract clean per-page text + detected tables (as 2D arrays) + document metadata (title/author/created/modified). Powered by pdfplumber. Batch up to 50 PDFs. $0.01 per PDF + $0.0005 per page.
Pricing
from $20.00 / 1,000 pdf extracteds
Rating
0.0
(0)
Developer
Hojun Lee
Maintained by CommunityActor stats
0
Bookmarked
184
Total users
86
Monthly active users
an hour ago
Last modified
Categories
Share
PDF Text Extractor — PDF to Text, PDF Scraper, RAG Chunks, OCR, Tables
Extract text from PDF files via API in seconds. Returns structured Markdown, RAG chunks, tables, and metadata — batch mode, Google Drive / Dropbox / SharePoint auto-resolved, OCR for scanned PDFs. PDF text extractor and PDF parser built for LangChain, LlamaIndex, Pinecone, Weaviate, Chroma. No API key. $0.025/PDF + $0.002/page.
⭐ If this saves you time, a quick review on the Store page helps others find it.
⚡ Run in 30 seconds
Paste any PDF URL — direct links, Google Drive, or Dropbox — and click Start:
# Direct PDF URLhttps://www.irs.gov/pub/irs-pdf/f1040.pdf# Google Drive share link (auto-resolved)https://drive.google.com/file/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/view# Dropbox share link (auto-resolved)https://www.dropbox.com/s/abc123/report.pdf?dl=0# SharePoint / OneDrive share link (auto-resolved)https://company.sharepoint.com/:b:/s/team/EaBcD...view.aspx
Default output is rich Markdown — headings, lists, tables, code blocks auto-detected. Switch to rag_chunks mode to get overlapping text windows ready to embed into Pinecone, Weaviate, Chroma, Qdrant, or any vector DB.
Price comparison vs other Apify PDF actors
| Actor | Start fee | Per page | OCR page | RAG chunks | Tables |
|---|---|---|---|---|---|
| This actor | $0.001 | $0.001 | included | ✅ | ✅ |
| memo23/pdf-text-extractor | $0.005 | $0.005 | $0.015 | ❌ | ❌ |
| yabanana99/pdf-word-excel-to-markdown | $0.005 | $0.004 | $0.012 | ❌ | ❌ |
Up to 15× cheaper per page, with more features.
Why this PDF scraper?
Free PDF extractors give you raw text dumps. This actor goes further:
| Feature | Free alternatives | This actor |
|---|---|---|
| RAG chunks (configurable overlap) | ❌ | ✅ |
| SharePoint / OneDrive URL resolution | ❌ | ✅ |
| Table extraction (2D arrays) | ❌ | ✅ |
| PDF type classification (text vs scanned) | ❌ | ✅ |
| Password-protected PDFs | ❌ | ✅ |
| Auto-OCR for scanned pages | Partial | ✅ Full |
| Skip empty pages option | ❌ | ✅ |
| Batch 50 PDFs in one run | Partial | ✅ |
| Page range selection | ❌ | ✅ |
| Webhook / Telegram alerts | ❌ | ✅ |
Quick start (Python API)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")# Extract text from a single PDFrun = client.actor("gochujang/pdf-text-extractor").call(run_input={"url": "https://www.sec.gov/Archives/edgar/data/320193/aapl-10k.pdf","outputFormat": "markdown",})items = list(client.dataset(run["defaultDatasetId"]).iterate_items())markdown_doc = next(i for i in items if i["_type"] == "markdown")print(markdown_doc["markdown"][:500])
# Batch: extract tables from 10 SEC filings at oncerun = client.actor("gochujang/pdf-text-extractor").call(run_input={"urls": ["https://www.sec.gov/Archives/edgar/data/320193/aapl-10k.pdf","https://www.sec.gov/Archives/edgar/data/789019/msft-10k.pdf",],"extractTables": True,"outputFormat": "per_page","maxPages": 200,})pages = list(client.dataset(run["defaultDatasetId"]).iterate_items())
# RAG pipeline: extract + chunk + embedrun = client.actor("gochujang/pdf-text-extractor").call(run_input={"url": "https://example.com/whitepaper.pdf","outputFormat": "rag_chunks","chunkSize": 1000,"chunkOverlap": 200,})chunks = [i for i in client.dataset(run["defaultDatasetId"]).iterate_items()if i["_type"] == "chunk"]# chunks are ready to embed into Pinecone/Weaviate/Chroma
Use cases
- AI / LLM pipelines — Convert PDF to text for ChatGPT, Claude, Gemini, or RAG vector search. One call returns clean chunks ready for embedding.
- SEC filings — Pull text + tables from 10-K, 10-Q, 8-K in batch. Combine with our SEC EDGAR Tracker.
- Research aggregation — Build a searchable database of academic papers + abstracts from arXiv or PubMed PDFs.
- Financial reports — Auto-extract earnings tables from quarterly releases; pipe into spreadsheets or databases.
- Legal documents — Contracts, court filings, regulatory submissions — extract and index at scale.
- Invoice & receipt parsing — Extract line items and totals from PDF invoices without manual data entry.
- Government records — FOIA responses, regulatory filings, public data PDFs — download and parse in bulk.
- Scanned document digitization — Bank statements, old reports, image PDFs via OCR. Enable
enableOcrand get text even from image-only PDFs. - Compliance audit — Index every PDF in your corporate document store; feed into your search or compliance tools.
What you get
Summary row (one per PDF)
{"_type": "summary","url": "https://www.sec.gov/Archives/.../aapl-10k.pdf","ok": true,"page_count": 80,"pages_extracted": 80,"title": "Apple Inc. — Annual Report 2024","author": "Apple Inc.","created": "D:20240928081300Z","text_preview": "UNITED STATES SECURITIES AND EXCHANGE COMMISSION...","file_size_kb": 4820}
Per-page row
{"_type": "page","url": "https://...","page": 12,"page_count": 80,"char_count": 3210,"word_count": 524,"text": "Item 1A. Risk Factors\n\nOur business...","tables": [[["Revenue", "Q1 2024", "Q4 2023"],["iPhone", "$45.96B", "$43.81B"],["Mac", "$9.66B", "$7.61B"]]],"table_count": 1,"ocr_applied": false}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | array | — | List of PDF URLs to extract (batch mode) |
urlsText | string | — | Paste multiple PDF URLs, one per line — merged with urls |
url | string | — | Single PDF URL (used when urls is empty) |
outputFormat | string | markdown | markdown (LLM-ready), per_page, combined, both, or rag_chunks |
extractTables | boolean | false | Detect and extract tables as 2D arrays |
extractImages | boolean | false | Add image_count field to each page |
skipEmptyPages | boolean | false | Skip pages with no extractable text (useful for scanned PDFs with mixed pages) |
enableOcr | boolean | false | Enable OCR for scanned pages (pages with < 50 chars auto-detected) |
ocrLanguage | string | eng | Tesseract language: eng, deu, fra, jpn, or combined eng+deu |
startPage | integer | 1 | First page to extract (1-indexed) |
endPage | integer | — | Last page to extract (inclusive) |
maxPages | integer | 100 | Max pages per PDF from startPage |
password | string | — | Password for password-protected / encrypted PDFs |
userAgent | string | — | Custom User-Agent for the HTTP request |
Input examples
Single PDF
{"url": "https://www.example.com/whitepaper.pdf"}
Batch of 10-K filings from SEC
{"urls": ["https://www.sec.gov/Archives/edgar/data/320193/aapl-10k.pdf","https://www.sec.gov/Archives/edgar/data/789019/msft-10k.pdf"],"extractTables": true,"maxPages": 200}
Text-only (skip tables for speed)
{"url": "https://...","extractTables": false}
Skip blank/empty pages
{"url": "https://example.com/mixed-scanned.pdf","skipEmptyPages": true,"enableOcr": true}
RAG-Ready Chunking (LangChain / LlamaIndex / Vector DB)
Use outputFormat: "rag_chunks" to get overlapping text chunks ready to embed into Pinecone, Weaviate, Chroma, Qdrant, or any vector database:
{"url": "https://example.com/whitepaper.pdf","outputFormat": "rag_chunks","chunkSize": 1000,"chunkOverlap": 200}
Each chunk row includes context metadata for retrieval:
{"_type": "chunk","chunk_index": 3,"total_chunks": 47,"text": "...overlapping window of text...","doc_title": "Whitepaper Title","doc_author": "Author Name","doc_page_count": 24,"pdf_type": "text_based"}
LangChain integration
from apify_client import ApifyClientfrom langchain.schema import Documentfrom langchain_openai import OpenAIEmbeddingsfrom langchain_community.vectorstores import Chromaclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("gochujang/pdf-text-extractor").call(run_input={"urls": ["https://example.com/report.pdf"],"outputFormat": "rag_chunks","chunkSize": 1000,"chunkOverlap": 200,})chunks = list(client.dataset(run["defaultDatasetId"]).iterate_items())docs = [Document(page_content=c["text"], metadata={"title": c["doc_title"], "chunk": c["chunk_index"]})for c in chunks if c.get("_type") == "chunk"]vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings())
LlamaIndex integration
from apify_client import ApifyClientfrom llama_index.core import VectorStoreIndexfrom llama_index.core.schema import TextNodeclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("gochujang/pdf-text-extractor").call(run_input={"urls": ["https://example.com/report.pdf"],"outputFormat": "rag_chunks",})chunks = list(client.dataset(run["defaultDatasetId"]).iterate_items())nodes = [TextNode(text=c["text"], metadata={"title": c.get("doc_title",""), "chunk_index": c.get("chunk_index",0)})for c in chunks if c.get("_type") == "chunk"]index = VectorStoreIndex(nodes)query_engine = index.as_query_engine()
No post-processing needed — chunks are word-boundary aligned, non-empty, and sized for typical embedding models (512–2048 tokens).
OCR for Scanned PDFs
Enable enableOcr: true to handle scanned or image-based PDFs (bank statements, legal filings, old reports). The actor automatically detects pages with little extractable text and falls back to Tesseract OCR.
{"url": "https://example.com/scanned-report.pdf","enableOcr": true,"ocrLanguage": "eng"}
Each page row includes "ocr_applied": true when OCR was used, so you can distinguish native-text pages from OCR-processed ones.
Supported languages: eng (English), deu (German), fra (French), spa (Spanish), jpn (Japanese), and all Tesseract languages. Multi-language: "eng+deu".
Pricing
Pay-Per-Event — only pay for what you extract:
$0.025— per PDF (download + parse + metadata)$0.002— per page extracted (native text)$0.006— per OCR page (scanned PDFs)$0.003— per RAG chunk generated (rag_chunksmode)
| Run | Cost |
|---|---|
| One 80-page 10-K (native text) | $0.185 |
| Batch of 10 research papers (20 pages avg) | $0.65 |
| 20-page scanned PDF with OCR | $0.145 |
| 50-page doc → RAG chunks (1000 chars, ~62 chunks) | $0.211 |
| Quarterly: 50 earnings releases (15 pages avg) | $2.75 |
Vs Adobe Acrobat Pro DC ($23/mo), Unstructured.io ($99/mo API), or DocParser ($199/mo) — significantly cheaper for dev/batch workloads.
FAQ
Does it support password-protected PDFs?
Yes. Set the password input field to unlock them. Wrong password returns a clear error.
What is the maximum PDF file size?
50 MB by default. You can raise this up to 500 MB via the maxPdfMb input parameter.
Can it handle scanned PDFs (image-only)?
Yes — enable enableOcr: true. Tesseract OCR is built in, supporting 100+ languages. OCR pages are charged at $0.006/page.
Does it extract tables?
Yes. Set extractTables: true to get tables as 2D arrays (rows × columns) per page. Tables are also rendered as Markdown tables in markdown output mode.
Can I extract only specific pages?
Yes — use startPage / endPage for a fixed range, or maxPages to cap the total. All are 1-indexed.
What PDF sources are supported? Direct PDF URLs, Google Drive share links, Dropbox links, SharePoint / OneDrive links — all auto-resolved. Any publicly accessible PDF URL works.
How do I skip pages with no text?
Set skipEmptyPages: true. Useful for mixed PDFs where some pages are blank or image-only.
Is it safe to use for confidential PDFs? Apify runs in isolated containers. PDFs are downloaded to memory, processed, and discarded after the run — they are not stored persistently.
Data engine
- pdf-inspector (Rust) — blazing fast (~150ms), smart layout detection, Markdown output
- pdfplumber v0.11+ — Pure-Python fallback for complex layouts, table extraction
- Tesseract OCR — built-in fallback for scanned/image PDFs, 100+ languages supported
Related actors (same author)
- SEC 13F Institutional Holdings Tracker — Get 13F filing PDF URLs + QoQ holdings changes
- Web Page → Markdown Converter — HTML version of the same idea
- Excel & CSV Extractor — Same idea for .xlsx/.csv files
- DOCX Text Extractor — Same idea for Word documents
- Image OCR Extractor — Same idea for image files (PNG/JPG)
Feedback
A short review helps researchers / analysts find it: Leave a review on Apify Store
Keywords: PDF extractor, PDF parser, PDF to text, PDF to markdown, RAG, table extraction, PDF scraper, document processing, OCR