Document to Markdown – PDF, Word, PowerPoint, Excel + OCR
Pricing
from $1.00 / 1,000 page converteds
Document to Markdown – PDF, Word, PowerPoint, Excel + OCR
Convert PDF, DOCX, PPTX, XLSX, HTML, EPUB and images to clean Markdown or plain text for LLMs and RAG. Tables kept, scanned pages read with OCR in 100+ languages, optional RAG chunks with page numbers.
Pricing
from $1.00 / 1,000 page converteds
Rating
0.0
(0)
Developer
Krzysztof Filipiak
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Turn PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX/XLS), HTML, EPUB, CSV, Outlook (MSG) and images into clean Markdown or plain text – ready for ChatGPT, Claude, LangChain, LlamaIndex and any RAG pipeline.
- 📄 Headings, lists and tables preserved – PDF tables become Markdown tables, not a jumble of words.
- 🔍 Scanned pages are read with OCR automatically (100+ languages), mixed PDFs included.
- ✂️ RAG-ready chunks with page numbers and section path – one dataset item per chunk, straight into a vector database.
- 🧹 Clean text – running headers, footers and page numbers removed; hyphenated words re-joined; paragraphs split across pages merged.
- 🔗 Paste Google Drive, Google Docs, Dropbox or GitHub share links – they are turned into downloads for you.
- 💸 From $0.001 per page, no subscription. Failed files are free.
Who uses it
| You want to… | How |
|---|---|
| Feed documents to an LLM or an AI agent | outputFormat: markdown – one item per document |
| Build a RAG knowledge base | chunkSize: 1500 – chunks with pageStart, pageEnd, headingPath |
| Extract tables from PDF reports | Markdown tables in the output, or .md files to download |
| Digitise scanned contracts, invoices, letters | ocr: auto + ocrLanguages: eng+deu |
| Convert slide decks and spreadsheets to text | PPTX slides and XLSX sheets become sections |
| Batch-convert thousands of files | Give a list of URLs, raise maxConcurrency and memory |
How to use
- Paste document URLs into Document URLs (or upload files).
- Pick Markdown or Plain text. For RAG set RAG chunk size (e.g. 1500).
- Click Start. Each document (or chunk) appears in the dataset; every document is also saved as a
.mdfile.
Input example
{"urls": ["https://arxiv.org/pdf/1706.03762","https://example.com/annual-report.docx"],"outputFormat": "markdown","ocr": "auto","ocrLanguages": "eng","chunkSize": 0}
Output example (one document)
{"url": "https://arxiv.org/pdf/1706.03762","fileName": "1706.03762v7.pdf","fileType": "pdf","status": "ok","title": "Attention Is All You Need","pages": 15,"pagesConverted": 15,"ocrPages": 0,"characters": 38781,"words": 6239,"markdown": "# Attention Is All You Need\n\nAshish Vaswani ∗ Google Brain avaswani@google.com\n\n...\n\n## Abstract\n\nThe dominant sequence transduction models are based on complex recurrent or convolutional neural networks ...\n\n## 1 Introduction\n\n...","markdownUrl": "https://api.apify.com/v2/key-value-stores/…/records/0001-1706.03762v7.md"}
Output example (RAG chunk, chunkSize: 1500)
{"fileName": "1706.03762v7.pdf","chunkIndex": 7,"chunkCount": 36,"pageStart": 3,"pageEnd": 3,"headingPath": "Attention Is All You Need > 3 Model Architecture > 3.1 Encoder and Decoder Stacks","text": "### 3.1 Encoder and Decoder Stacks\n\nEncoder: The encoder is composed of a stack of N = 6 identical layers. Each layer has two sub-layers. ...","characters": 1360,"approxTokens": 340}
Failed files appear with status: "error" and a plain-English error (e.g. access denied – the file must be publicly downloadable). They are not charged.
Supported formats
| Format | Notes |
|---|---|
Text layer + automatic OCR of scanned pages; tables; page ranges; password-protected PDFs (pdfPassword) | |
Word .docx | Headings, lists, tables, bold/italic, links |
PowerPoint .pptx | Slide by slide, including tables and speaker notes |
Excel .xlsx, .xls, CSV | Every sheet as a Markdown table |
HTML, EPUB, TXT, MD, JSON, XML, Jupyter .ipynb, Outlook .msg | Converted to Markdown |
| Images: PNG, JPEG, TIFF (multi-page), WebP, GIF, BMP | OCR |
Older binary formats (.doc, .ppt, .rtf, OpenDocument) – save them as .docx/.pptx/PDF first.
Pricing
Pay per event – you only pay for pages actually converted:
| Event | Price |
|---|---|
| Page converted (PDF page, PowerPoint slide; other formats: every started 3,000 characters of output) | $0.001 |
| Page read with OCR (scanned page or image) – instead of the above | $0.003 |
Examples: a 20-page text PDF costs $0.02; a 10-page scanned contract $0.03; 1,000 one-page invoices (text PDFs) $1. Apify platform usage is included in the price. You can set a maximum cost per run in the run options.
Use it from code, AI agents and automation tools
API (any language):
curl -X POST "https://api.apify.com/v2/acts/kris_fili~document-to-markdown/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://arxiv.org/pdf/1706.03762"], "chunkSize": 1500}'
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("kris_fili/document-to-markdown").call(run_input={"urls": ["https://arxiv.org/pdf/1706.03762"]})for doc in client.dataset(run["defaultDatasetId"]).iterate_items():print(doc["title"], len(doc["markdown"]))
AI agents (MCP): connect Claude, Cursor or any MCP client to https://mcp.apify.com?tools=kris_fili/document-to-markdown and ask "convert this PDF to Markdown: …".
No-code: use the Apify integration in Make, Zapier or n8n, or the Integrations tab to send results to Google Drive, Slack or a webhook.
Need only text from photos and scans (with word positions)? Use Image to Text OCR. Need screenshots or PDFs of web pages? Use Website Screenshot & PDF.
FAQ
How accurate is it? Text PDFs are converted exactly from their text layer. Tables with ruling lines are detected reliably; borderless tables may come out as text. OCR accuracy is typically 95%+ on clean scans at 300 DPI and lower on photos and handwriting (handwriting is not supported). Each OCR result has an ocrConfidence score.
Which OCR languages? English by default; set ocrLanguages to any of 100+ languages (e.g. deu, fra, spa, pol, chi_sim, jpn, ara) or combine them (eng+deu).
How big can files be? Up to 500 MB per file (maxFileSizeMb) and 5,000 pages per document (maxPages). For big batches give the run more memory – OCR uses all CPU cores of the run.
Are my documents private? Files are downloaded and processed only inside your own run; results are stored in your Apify account's storage. Nothing is shared or kept by the developer.
Can it read files behind a login? No – files must be downloadable from their URL. For Google Drive and Dropbox share them as anyone with the link, or upload them in the input.
Questions or a format you need? Open an issue on the Issues tab – we answer quickly.