PDF to Markdown & Text Extractor – OCR PDF Parser for RAG
Pricing
from $2.00 / 1,000 pdf converteds
PDF to Markdown & Text Extractor – OCR PDF Parser for RAG
PDF text extractor and parser: convert PDFs and scanned PDFs to clean, LLM-ready Markdown and plain text with headings, lists, tables and multi-column layouts. Scanned pages are OCR'd automatically. No API key, no LLM. From $2 to $3 per 1,000 PDFs ($5 from 7 Nov); failed files are free.
Pricing
from $2.00 / 1,000 pdf converteds
Rating
0.0
(0)
Developer
Chris Elder
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
PDF to Markdown & Text Converter (with OCR for scanned PDFs)
PDF to Markdown turns PDFs into clean, structured Markdown and plain text that LLMs, RAG pipelines and people can use. It rebuilds the document instead of dumping characters: headings, paragraphs (hyphenation fixed), bulleted and numbered lists, tables, code blocks and two- or three-column layouts in the right reading order. Running headers, footers and page numbers are removed. Scanned pages are OCR'd automatically, and only the pages that need it.
Use it as a PDF text extractor, PDF parser or PDF OCR step: give it PDF links, get Markdown, plain text and page stats back as JSON, CSV or Excel.
✅ Pay per result: from $2 to $3 per 1,000 PDFs (up to 50 pages each) · 🆓 Files that fail are never charged · 🔑 No API key, no LLM, nothing sent to third-party AI services
▶ Try it with one click · 📄 Real example output · 💲 Pricing · 🔌 API & integrations · ❓ FAQ · 🛟 Support
What does PDF to Markdown do?
- 🧠 LLM / RAG-ready Markdown – structure survives chunking far better than raw
pdftotext; optional<!-- page N -->markers let you cite page numbers - 📑 Tables – aligned rows and columns become Markdown tables (
| a | b |) - 📰 Multi-column layouts – academic papers, government guidance, newsletters
- 🖨️ Scanned PDFs and image-only pages – automatic OCR (Tesseract, 100+ languages); digital pages are never billed as OCR
- 🧹 Noise removal – repeated headers/footers, page numbers, rotated watermarks
- 🔐 Password-protected and long PDFs (default limits 100 MB and 300 pages; both adjustable)
- 📦 Output as dataset rows (JSON, CSV, Excel) and optional downloadable
.mdfiles
Use cases
- RAG and AI agents – load reports, manuals, papers and contracts into Pinecone, Qdrant, Weaviate or pgvector with headings intact
- Document digitisation – make scanned letters, invoices and archives searchable
- Research – convert two-column academic papers to Markdown for notes and LLM summaries
- Compliance and legal – turn policies and terms into diffable text
- Data extraction – pull tables out of PDFs into Markdown
Why choose this PDF extractor?
- 💲 Low, predictable price – from $2 to $3 per 1,000 PDFs (up to 50 pages each), depending on your Apify plan.
- 🧱 Structure, not a text dump – headings, lists, tables and reading order survive, so chunks keep their context in RAG
- 🖨️ OCR only where it's needed – digital pages are read directly; only scanned pages are OCR'd and billed as OCR
- 🔒 Private and reproducible – no LLM, no third-party AI API; the same PDF gives the same output every time
- 🆓 Failed files are free – 404s, wrong passwords and non-PDF links are listed and never charged
Workflow: convert every PDF on a website
- Run Sitemap URL Extractor with an include pattern like
\.pdf$to list every PDF a site publishes. - Paste those links into PDF to Markdown (
pdfUrls) and start the run. No download step is needed. - Optional: use Dataset Transformer to keep only
url,title,wordCountandmarkdownand export a CSV, or Bulk File Downloader to archive the original PDFs as one ZIP.
How to use it
- Click Try for free – the input is prefilled with a public IRS form (9 pages), so Start works straight away and costs about half a cent.
- Paste direct PDF links (the URL must return the PDF file, not a viewer page). To convert your own files, put them anywhere that gives a direct download link (a public S3/R2/GCS bucket, your website, a Dropbox link ending in
?dl=1) and paste the links. - Keep OCR mode = Auto (OCR only where needed), or choose Never for the cheapest text-only extraction.
- Click Start. Download JSON, CSV or Excel, or open the
.mdfiles.
Input example
{"pdfUrls": [{ "url": "https://www.irs.gov/pub/irs-pdf/iw8ben.pdf" }],"ocrMode": "auto","saveMarkdownFiles": true}
More options: ocrLanguage (e.g. deu, fra, eng+spa), maxPagesPerPdf, detectTables, pageMarkers, includePlainText, includePerPage, password, maxFileSizeMb, maxConcurrency.
Output example (from a real public run)
The example run above (IRS Instructions for Form W-8BEN, 9 pages, 9 Oct 2026) converted in 1.3 seconds. See it yourself: full Markdown file · dataset JSON
{"url": "https://www.irs.gov/pub/irs-pdf/iw8ben.pdf","fileName": "iw8ben.pdf","title": "Instructions for Form W-8BEN (Rev. October 2021)","pageCount": 9,"pagesProcessed": 9,"ocrPages": 0,"tablesFound": 0,"wordCount": 8384,"charCount": 51355,"processingMs": 1279,"markdown": "# Instructions for Form W-8BEN\n\n## (Rev. October 2021)\n\n#### Certificate of Foreign Status of Beneficial Owner ...","markdownFileUrl": "https://api.apify.com/v2/key-value-stores/iOJnjrSdK2GpgcI8z/records/iw8ben-1.md?signature=..."}
An excerpt of the markdown field, exactly as produced:
#### Purpose of FormEstablishing status for chapter 3 purposes. Foreign persons are subject to U.S. tax at a 30% rate on income they receive from U.S. sources that consists of:- Interest (including certain original issue discount (OID));- Dividends;- Rents;- Royalties;
| Field | Description |
|---|---|
markdown | The document as clean Markdown |
text | Plain text (Markdown removed, table cells tab-separated) |
title, author, metadata | From the PDF metadata (title falls back to the first heading) |
pageCount, pagesProcessed, ocrPages, ocrMeanConfidence | Processing stats |
tablesFound, wordCount, charCount, processingMs | Content stats |
pages[] | Optional per-page Markdown |
markdownFileUrl | Link to the .md file (with Save Markdown files) |
How much does it cost to convert PDF to Markdown?
Price update: from 7 Nov 2026 (06:30 UTC) the price per PDF rises from $0.003 to $0.005 ($5 per 1,000 PDFs) and each OCR page from $0.006 to $0.01. Apify gives users 14 days' notice. The prices below apply until then.
Pay-per-event pricing: you pay only for PDFs converted. No platform usage charges on top.
| Event | Price | Notes |
|---|---|---|
| PDF converted (includes up to 50 pages) | $0.003 ($3 per 1,000 PDFs) | Silver $0.0025, Gold and above $0.002 |
| Extra page beyond 50 | $0.0002 per page | Long documents only |
| OCR page | $0.006 per page | Only scanned/image pages, only in Auto or Always mode. Silver $0.005, Gold $0.004 |
| Run start | $0.001 per GB of memory | Default 2 GB = $0.002 per run |
Worked examples (Free/Starter prices, default memory):
| Job | Calculation | Total |
|---|---|---|
| One-click example (one 9-page digital PDF) | $0.003 + $0.002 start | $0.005 |
| 1,000 ten-page digital PDFs in one run | 1,000 × $0.003 + $0.002 | $3.00 |
| One 200-page digital report | $0.003 + 150 × $0.0002 + $0.002 | $0.035 |
| One 20-page scanned contract | $0.003 + 20 × $0.006 + $0.002 | $0.125 |
Never charged: files that fail (404, not a PDF, wrong password, over your size limit). Cap spending with Apify's Max cost per run – the Actor stops cleanly at the limit. Apify's Free plan includes $5 of monthly credit.
Integrations (API, AI agents, Make, Zapier)
API – convert and get results in one call:
curl -X POST "https://api.apify.com/v2/acts/chris_elder~pdf-to-markdown/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"pdfUrls":[{"url":"https://www.irs.gov/pub/irs-pdf/iw8ben.pdf"}]}'
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("chris_elder/pdf-to-markdown").call(run_input={"pdfUrls": [{"url": "https://www.irs.gov/pub/irs-pdf/iw8ben.pdf"}]})for doc in client.dataset(run["defaultDatasetId"]).iterate_items():print(doc["title"], doc["wordCount"]) # doc["markdown"] -> your chunker / vector DB
AI agents (MCP) – add https://mcp.apify.com/?tools=chris_elder/pdf-to-markdown to Claude, Cursor, VS Code or any MCP client, and your agent can read any PDF link as Markdown.
Make, Zapier, n8n – use the Apify app's Run Actor action with chris_elder/pdf-to-markdown, then send the Markdown to Notion, Google Docs, a vector database or email. Webhooks in Apify Console fire when a run finishes.
Limits and good to know
- Complex tables (merged cells, nested headers) are approximated. Scanned tables are OCR'd as text, best effort.
- Math formulas come out as Unicode text, not LaTeX.
- Images and charts are not described (no AI vision, which keeps it cheap and private).
- The link must return the PDF itself. Viewer pages (Google Drive preview, DocSend) won't work.
- OCR quality depends on scan quality;
ocrMeanConfidencetells you how sure the OCR was.
Is it legal?
The Actor downloads only the files you give it, one request per file, and converts them. It doesn't crawl websites, log in or bypass protection. Make sure you have the right to process the documents (your own files, public-domain or openly licensed documents, or documents you're licensed to use). Personal data inside documents is processed only to produce your output.
FAQ
Does it use ChatGPT or another LLM? No. Conversion is deterministic (pdf.js layout analysis plus Tesseract OCR), so results are reproducible and documents never leave the Apify platform.
Which OCR languages are supported? English is built in; any Tesseract language code works, e.g. deu, fra, spa or eng+deu.
How do I convert files on my computer? Upload them somewhere that gives a direct download link (a public S3/R2/GCS bucket, your website, or a Dropbox link ending in ?dl=1), then paste the links.
Can I extract text from a PDF to CSV or Excel? Yes. Each PDF is one dataset row, so you can export the run as CSV or Excel with markdown, text, title and the page stats as columns. Tables stay as Markdown tables inside the markdown field rather than separate spreadsheet columns.
How is this different from LLM-based PDF parsers? It doesn't send your documents to an LLM, so it is cheaper and gives the same result every run. The trade-off: charts and images aren't described, and very complex tables are approximated.
How many PDFs can I convert in one run? Paste as many links as you need. The Actor converts up to 4 PDFs at a time (maxConcurrency), and Apify's Max cost per run setting caps what you spend.
My PDF failed. Open RUN_SUMMARY in the key-value store for the reason (404, not a PDF, password, too large). You weren't charged for it.
Support, reliability and feature requests
- Failed files are free. You pay only for PDFs converted.
- Tested on real documents before every release (IRS forms, 15-page arXiv papers with tables, 29-page reports, scanned pages).
- Issues answered within 2 business days. Open an issue on the Issues tab with a sample PDF link.
- Feature requests welcome – open an issue titled "Feature request: …".
- Built by GPT Shop Ltd with AI-assisted development; every release is reviewed and tested before it ships.
More tools from GPT Shop Ltd
- Sitemap URL Extractor – every URL from a website's sitemaps (find all PDFs on a site with an include pattern like
\.pdf$) - Bulk Lighthouse & PageSpeed Audit – Core Web Vitals and SEO scores for many URLs
- Bulk WHOIS Domain Lookup – registrar, expiry, availability and DNS for many domains via official RDAP
- Image to Text OCR – bulk text extraction from images in 100+ languages
- All tools: apify.com/chris_elder
Done-for-you
Need this run for you or customised? Done-for-you data from £49: https://tools.gptshopltd.com/done-for-you-scraper/