PDF to Markdown: Document Parser for Word, Excel, PPTX, EPUB
Pricing
from $2.10 / 1,000 documents
PDF to Markdown: Document Parser for Word, Excel, PPTX, EPUB
Document parser and PDF parser for LLMs and RAG: turn PDF, Word, Excel, PowerPoint, EPUB and HTML files at URLs into clean Markdown, Word to Markdown included, with text and tables extracted and optional chunks. Priced per document; scanned PDFs read with OCR if you turn it on.
Pricing
from $2.10 / 1,000 documents
Rating
0.0
(0)
Developer
Nebula Colors LLC
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
PDF to Markdown: PDF, Word, Excel, PowerPoint, EPUB
A document parser and PDF parser in one: give it links to PDF, Word, Excel or PowerPoint files and get each back as clean Markdown, so Word to Markdown and PDF to Markdown are one run, ready for an LLM or a RAG index. It reads PDF, Word (.docx), Excel (.xlsx, .xls, .ods, .csv), PowerPoint (.pptx), EPUB and HTML files, all in one tool. Headings, paragraphs, lists and tables are kept, and spreadsheets and slide tables come out as Markdown tables. Ask for chunks and each document is also split into pieces of the size you choose, each with the pages it covers. Scanned PDFs can be read too, with OCR. Priced per document, and files that fail are free. PDF tables can be found too, and pages with a table cost a little extra. It works for people and for AI agents through Apify's MCP server.
What it's for
- Load reports, manuals and contracts into a RAG index or a custom GPT.
- Give an AI agent the text of a PDF, a slide deck or a spreadsheet it found.
- Turn a folder of mixed files (once they're online) into one kind of text.
- Pull the tables out of spreadsheets and slides as Markdown.
Input
| Field | What to put |
|---|---|
| Document URLs | One per line, like https://example.com/report.pdf. Required. The type is read from the file itself, so download links without an extension work too. |
| Chunk size | Optional. For a RAG index: about this many characters per chunk, cut at paragraph ends where it can. 0 (the default) gives the Markdown only. |
| Read scanned pages (OCR) | Off by default. Turn it on to read PDF pages that are pictures of text, like scans. $0.01 per page read this way. |
| Find tables in PDFs | Off by default. Turn it on to get tables in PDFs as Markdown tables, and as rows and CSV. $0.002 per page with a table. |
| OCR languages | The languages of the scanned text. English by default; 28 to pick from. Pick only the ones you need, since each one makes reading slower. |
| Max file size (MB) | Bigger files are skipped for free. Default 50. |
| Proxy | Off by default. Turn on Apify Proxy for a site that blocks cloud servers. |
Example:
{"urls": ["https://www.irs.gov/pub/irs-pdf/fw9.pdf","https://calibre-ebook.com/downloads/demos/demo.docx"],"chunkSize": 1500}
Output
One row per document. This one came from a test run on October 16, 2026 (Markdown and chunks cut short here):
{"type": "document","url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf","fileName": "fw9.pdf","format": "pdf","title": "Form W-9 (Rev. March 2024)","author": "SE:W:CAR:MP","pages": 6,"words": 6504,"characters": 37850,"bytes": 140815,"markdown": "## Form W-9\n\n(Rev. March 2024)\n\n## Request for Taxpayer ...\n\n## What Is FATCA Reporting?\n\nThe Foreign Account Tax Compliance Act (FATCA) requires a participating foreign financial institution to report ...","chunks": [{ "index": 0, "text": "## Form W-9\n\n(Rev. March 2024) ...", "characters": 1328, "pageFrom": 1, "pageTo": 1 }],"markdownUrl": null,"convertedAt": "2026-10-16T01:11:15.204Z"}
formatispdf,docx,xlsx,xls,ods,csv,pptx,epub,htmlortext.pagescounts PDF pages, slides, spreadsheet sheets or EPUB chapters (1 for Word and HTML). Chunks givepageFromandpageToin the same units.ocrPagessays how many pages were read with OCR.- With Find tables in PDFs on,
tableslists each table with itspage, itsrows(header first) andcsv, andtablePagescounts the pages they're on. The tables are also in the Markdown, where they were on the page. From a test run on an EU report (rows cut short here):
"tablePages": 3,"tables": [{ "page": 1, "rows": [["", "to air kg/year", "to water kg/year", "to land kg/year"], ["Carbon dioxide (CO2)", "100 million", "-", "-"]], "csv": ",to air kg/year,to water kg/year,to land kg/year\nCarbon dioxide (CO2),100 million,-,-" }]
- A file that couldn't be converted has an
errorinstead, like an old .doc file or a scanned PDF with OCR off, and isn't charged. - A very large document (over 5 million characters) keeps its first 100,000 characters in the row, with the whole Markdown at
markdownUrl.
The run's SUMMARY record says how many documents were converted and failed, the pages and words in all, documents per format, and why the run stopped.
How each type comes out
- PDF: text in reading order, with lines joined into paragraphs and larger type turned into headings. Two-column pages read column by column. Tables come out as Markdown tables with Find tables in PDFs on, and as plain text without it.
- Word: headings, paragraphs, lists, links and tables, from the document's own styles.
- Excel and CSV: each sheet as a Markdown table under its name, without empty rows, columns and sheets.
- PowerPoint: each slide as
## Slide N: title, then its text as bullets, its tables, and its speaker notes. - EPUB: the chapters in reading order, with the book's title and author.
- HTML: the page's body, without scripts and styles.
Price
- $0.003 per document converted, so $3 per 1,000. That covers up to 50 pages (or slides, sheets, chapters).
- That's the price on Apify's free plan. On a paid Apify plan it's less: $2.70 per 1,000 documents on Starter, $2.40 on Scale and $2.10 on Business, the "from" price at the top of this page. The page, OCR and table fees drop the same way.
- $0.0001 for each page past a document's 50th, so a 250-page PDF is $0.003 + $0.02.
- $0.01 for each scanned page read with OCR, only when you turn it on. Pages that already have text are never read again, and scanned pages where OCR finds no text aren't charged.
- $0.002 for each PDF page with a table, only when you turn on Find tables in PDFs. Pages without one aren't charged, and Word, Excel and PowerPoint tables are always free.
- That's close to a document's price, so a table-heavy PDF costs more: a 40-page report with tables on 20 pages is $0.003 + $0.04.
- A page where a chart or numbered list is taken for a table is charged too. That's about 1 in 10 charged pages (14 of 133 in our test of 67 government reports).
- Forms with columns of text (like tax forms) get flagged as tables more often than that. Our first live run of the IRS W-9 flagged 4 of its 6 pages.
- Free: files that fail to download, files that aren't documents, scanned PDFs with OCR off, and addresses robots.txt disallows.
- You can set a maximum charge for a run. It stops when it's reached and keeps what it already converted. With tables on, pages past your maximum keep their tables as plain text, then the run stops.
Good to know
- Scanned PDFs. Turn on Read scanned pages (OCR) and pages without text are read with Tesseract, run inside the tool, so your files go to no other service. It takes about 15 seconds a page, so a run with OCR on starts with 4 GB of memory to read faster. A PDF with typed pages and scanned ones gets both. With OCR off, a PDF that is only scans gets a free error row.
- PDF tables. Tables are found from how the text lines up, so ones without ruled lines work too. On the 67 PDFs of the ICDAR 2013 table benchmark (EU and US government reports), 119 of the 133 pages it found tables on have a table in the benchmark's answer key, and it missed 16. Charts with numbers on their axes sometimes come out as a table. Scanned pages read with OCR come out as text.
- Old Office files. Word and PowerPoint files from Office 97-2003 (.doc, .ppt) aren't supported; save them as .docx or .pptx. Old Excel files (.xls) work.
- Images. Pictures inside documents are left out. The Markdown is the text, lists and tables.
- Polite. It reads each site's robots.txt and skips what it disallows, and paces requests to the same site.
- Your files. Make sure you have the right to use the documents you convert.
Use it from n8n, Zapier or Make
You don't need a separate app. Apify's own integration runs this Actor in all three. Use the Actor ID nebulacolors/document-to-markdown and put your document links in urls, for example {"urls": ["https://example.com/report.pdf", "https://example.com/notes.docx"]}.
- n8n: add the Apify node (search "Apify" in the nodes panel) and pick Run an Actor and get dataset. You get one row per document back, with its Markdown, ready for the next node, like a vector store or Google Docs.
- Zapier: add the Apify app and use the Run Actor action. To get the rows, add a second Apify step that reads the run's dataset.
- Make: use the Apify module Run an Actor, then Get Dataset Items with the run's dataset ID.
A common setup is a sheet of document links: each new row runs the Actor, and the Markdown goes into your RAG index or knowledge base. Files that fail cost nothing.
Use it from an AI agent
The Actor works through Apify's MCP server like any Store Actor. An agent can find it, read its input and call it. One or two documents usually finish within the MCP call's wait. The MCP call waits 30 seconds by default (45 at most). A bigger run takes longer, so the call returns the run's status and dataset ID, and the agent reads the rows with get-dataset-items.
Questions or problems
Open an issue on this Actor's Issues tab. I read them. If it saves you time, a short review helps others find it.