PDF & Document to Markdown Converter for LLM / RAG
Pricing
from $1.00 / 1,000 page converteds
PDF & Document to Markdown Converter for LLM / RAG
Convert PDFs, Word (DOCX), PowerPoint (PPTX), Excel (XLSX), HTML, EPUB and scanned images to clean Markdown for ChatGPT, Claude, RAG and vector databases. Tables preserved, automatic OCR for scanned pages, optional chunking. Pay per page.
Pricing
from $1.00 / 1,000 page converteds
Rating
0.0
(0)
Developer
Chesapeake Commerce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
PDF & Document to Markdown Converter for LLM / RAG (OCR, Tables)
Convert PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX/XLS), HTML, EPUB, CSV and scanned images into clean, structured Markdown that's ready for ChatGPT, Claude, Gemini, LangChain, LlamaIndex and vector databases such as Pinecone, Qdrant, Weaviate and pgvector.
Scanned pages are detected automatically and run through OCR, while normal pages use the fast text layer. PDF tables become Markdown tables. Turn on RAG chunking to get heading-aware chunks with overlap. Pricing is per page and there's no subscription.
Why use it
- Built for LLM pipelines. You get Markdown, not a messy text dump, plus an approximate token count and optional chunks.
- Hybrid OCR. OCR runs only on pages that need it, so mixed scanned and digital PDFs come out right and you only pay the OCR rate for scanned pages.
- Tables kept as real
| Markdown | tables |, with headers. - Sideways margin text removed. Rotated stamps and labels that normally show up as reversed garbage are filtered out.
- Page markers (
<!-- page 7 -->) so your RAG answers can cite page numbers. - Bulk. Thousands of documents per run, with size and page limits that protect your budget.
- Many formats in one Actor: PDF, DOCX, PPTX (slides and notes), XLSX/XLS (sheets as tables), HTML, EPUB, CSV, JSON, XML, PNG/JPG/TIFF (multi-page TIFF supported).
How to use it
- Add document URLs under Document URLs. You can also upload a CSV or text file of URLs. For your own files, upload them to an Apify key-value store, Google Drive (public link) or S3 and paste the links.
- Leave OCR on Auto. Set OCR languages for non-English scans, e.g.
eng+deu. - Optional: set RAG chunk size to something like 1500 to get ready-to-embed chunks.
- Click Start and grab the
markdownfield via API, JSON, CSV or an integration (Make, Zapier, n8n, LangChainApifyDatasetLoader).
Input example
{"sources": [{ "url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf" }, { "url": "https://arxiv.org/pdf/1706.03762" }],"ocrMode": "auto","chunkSize": 1500,"chunkOverlap": 200}
Output example (shortened)
{"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf","status": "OK","finalUrl": "https://www.irs.gov/pub/irs-pdf/fw9.pdf","fileName": "fw9.pdf","fileType": "pdf","fileSizeBytes": 140815,"pageCount": 6,"pagesProcessed": 6,"textPages": 6,"ocrPages": 0,"truncated": false,"metadata": {"Author": "SE:W:CAR:MP","CreationDate": "D:20240306081813-05'00'","Creator": "Designer 6.5","Keywords": "Fillable","ModDate": "D:20240306081813-05'00'","Producer": "Designer 6.5","Subject": "Request for Taxpayer Identification Number and Certification","Title": "Form W-9 (Rev. March 2024)"},"markdownChars": 37789,"approxTokens": 9447,"markdown": "<!-- page 1 -->\n\nW-9\nRequest for Taxpayer\nForm Give form to the\n(Rev. March 2024) Identification Number and Certification requester. Do not\nDepartment of the Treasury send to the IRS.\nGo to www.irs.gov/FormW9 for instructions and the latest information.\nInternal Revenue Service\nBefore you begin. For guidance related to the purpose of Form W-9, see Purpose of Form, below.\n1 Name of entity/individual. An entry is required. (For a sole proprietor or disregarded entity, enter the owner’s name on line 1, and enter the business/disregarded\nentity’s name on line 2.)\n2 Business name/disregarded entity…"}
Fields: status (OK / EMPTY / FAILED / HTTP_ERROR / SKIPPED_ROBOTS_TXT), fileType, pageCount, textPages, ocrPages, truncated, metadata (title, author, dates), markdownChars, approxTokens, markdown, and chunks[] when chunking is on.
LangChain example
from langchain_community.utilities import ApifyWrapperfrom langchain_core.documents import Documentloader = ApifyWrapper().call_actor(actor_id="chesapeake/document-to-markdown",run_input={"sources": [{"url": "https://arxiv.org/pdf/1706.03762"}]},dataset_mapping_function=lambda i: Document(page_content=i.get("markdown") or "", metadata={"source": i["url"]}),)docs = loader.load()
Pricing (pay per event)
| Event | Price |
|---|---|
| Page converted (text layer) | $0.001 ($1 per 1,000 pages) |
| Page converted with OCR (scanned page or image) | $0.006 |
| Actor start | $0.00005 |
What's a page? A PDF page, a PPTX slide, an image (or TIFF frame), or, for formats without pages (DOCX, XLSX, HTML, EPUB, CSV), every 3,000 characters of output (minimum 1). Example: 100 digital PDFs of 12 pages = 1,200 pages = $1.20. Failed downloads, unsupported files, empty results and robots.txt-blocked URLs are free.
FAQ
Which PDFs need OCR? Scans, photographed pages and image-only PDFs. In Auto mode, any page with almost no extractable text gets OCR.
Does it handle password-protected PDFs? No. Encrypted PDFs fail and aren't charged.
How accurate is the OCR? It uses Tesseract 5. It's excellent on clean scans at 200 DPI and weaker on handwriting or low-quality photos. Math formulas and charts aren't transcribed.
Can I convert files from my computer? Yes. Upload them to an Apify key-value store or any file host and pass the URLs. Files are processed in memory and only the Markdown is stored in your run's dataset.
Is there a size limit? 50 MB and 300 pages per document by default. Raise Max file size and Max pages if you need more.
Do you store my documents? No. Documents aren't stored; only the Markdown output goes to your own run storage.