PDF to Markdown & Text Converter: Word, Excel, PPT, HTML, RAG avatar

PDF to Markdown & Text Converter: Word, Excel, PPT, HTML, RAG

Pricing

from $3.00 / 1,000 documents

Go to Apify Store
PDF to Markdown & Text Converter: Word, Excel, PPT, HTML, RAG

PDF to Markdown & Text Converter: Word, Excel, PPT, HTML, RAG

Convert PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX), CSV and HTML to clean Markdown and text, plus RAG-ready chunks for LLMs and AI agents. $3 per 1,000 documents.

Pricing

from $3.00 / 1,000 documents

Rating

0.0

(0)

Developer

Giorgos Myrianthous

Giorgos Myrianthous

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Convert PDF to Markdown (and Word, PowerPoint, Excel, CSV, HTML to Markdown/text) in bulk, with heading-aware RAG chunks for LLMs, vector databases and AI agents.

💲 $3 per 1,000 documents (10 pages included per document, then $0.30 per 1,000 extra pages). Failed files are free. Pay only for results. No subscription, and the Apify free plan's monthly credit covers small jobs.

Also known as: PDF to Markdown, PDF to text, PDF parser, Word to Markdown, DOCX to Markdown, PPTX to Markdown, Excel to Markdown, HTML to Markdown, document parser for RAG, MarkItDown alternative.

Quick start

  1. Click Start. The prefilled input works as is.
  2. Or paste this input (JSON tab):
{
"documentUrls": [
{
"url": "https://arxiv.org/pdf/1706.03762"
}
],
"chunksAsSeparateItems": true
}

Output (one dataset item):

{
"url": "https://arxiv.org/pdf/1706.03762",
"status": "ok",
"format": "pdf",
"title": "Attention Is All You Need",
"pages": 15,
"wordCount": 6012,
"markdownUrl": "https://api.apify.com/v2/key-value-stores/…/records/1706.03762v7.md"
}

Use it from the API, AI agents (MCP), n8n, Make or Zapier

curl -X POST "https://api.apify.com/v2/acts/gmyri~doc-to-markdown/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"documentUrls":[{"url":"https://arxiv.org/pdf/1706.03762"}]}'
  • AI agents / MCP: connect https://mcp.apify.com/?actors=gmyri/doc-to-markdown to Claude, Cursor, ChatGPT or any MCP client. The input schema is fully described for tool calling.
  • Python: ApifyClient(token).actor("gmyri/doc-to-markdown").call(run_input={...})
  • n8n / Make / Zapier: use the Apify "Run Actor" action with gmyri/doc-to-markdown, then read the dataset items.

Quick FAQ

  • Does it OCR scanned PDFs? No. This Actor reads the text layer. For scanned PDFs and images use OCR Image to Text & Scanned PDF.
  • Can I convert private files? Yes, if you pass a signed or temporary URL (S3, GCS, Dropbox, Google Drive direct download, Apify key-value store).
  • What if I set a spending limit? The Actor stops cleanly at your Max cost per run and you're never charged above it.

Details

Turn PDF, DOCX, PPTX, XLSX, CSV and HTML files into clean Markdown and heading-aware chunks ready for embeddings, vector databases and LLM prompts. One Actor for every office format, priced per document, with no subscription. It works well as a tool for AI agents through the Apify MCP server.

What it does

  • One input, many formats. Paste file URLs. The Actor detects the format from the file's magic bytes, then falls back to Content-Type and file extension.
  • Structure-preserving Markdown:
    • Word headings become #/##. Bold and italic, bullet lists and tables are kept.
    • PowerPoint becomes one ## Slide N: Title section per slide, with bullet levels, tables and speaker notes.
    • Excel and CSV become one Markdown table per sheet.
    • HTML is stripped of navigation, scripts and footers.
    • PDF text is re-flowed into paragraphs. Hyphenation and bullets are fixed, and page markers are kept (<!-- page 3 -->).
  • RAG chunks out of the box. Sections are split on headings, then on paragraphs and sentences, with configurable size and overlap. Every chunk carries its headingPath (for example Methods > Training Data) for better retrieval.
  • Outputs: a dataset row per document (metadata, Markdown, chunks), an optional dataset row per chunk, and a .md file per document in the key-value store.
  • Fair billing. Failed downloads and corrupt files are never charged. A per-page cap (maxPagesPerDocument) keeps the cost of huge PDFs predictable.

Supported formats

FormatExtensionsNotes
PDF.pdfText-layer PDFs (poppler). Scanned PDFs return a warning; OCR is not included.
Word.docxHeadings, lists, bold/italic, tables, core properties
PowerPoint.pptxSlides, bullet levels, tables, speaker notes
Excel.xlsx, .xlsmEvery sheet becomes a table (formulas are read as their cached values)
CSV / TSV.csv, .tsvDelimiter auto-detected (, ; tab `
HTML.html, .htmMain/article content only
Text.md, .txt, .jsonPassed through (JSON is pretty-printed in a code block)

Legacy binary formats (.doc, .ppt, .xls) are not supported. Save them as the modern format first.

Input

{
"documentUrls": [
{ "url": "https://arxiv.org/pdf/1706.03762" },
{ "url": "https://example.com/files/q3-report.docx" }
],
"includeChunks": true,
"chunkSize": 2000,
"chunkOverlap": 200,
"chunksAsSeparateItems": false,
"maxPagesPerDocument": 0
}
FieldDefaultDescription
documentUrls–Public file URLs, or Apify key-value-store record URLs from your account
includeChunkstrueProduce RAG chunks
chunkSize / chunkOverlap2000 / 200Target characters per chunk and overlap between chunks
chunksAsSeparateItemsfalseOne dataset row per chunk (best for vector-DB integrations)
includeMarkdownInDatasettrueInclude the full Markdown in the dataset row
saveMarkdownFilestrueSave <name>-<hash>.md to the key-value store
maxPagesPerDocument0 (all)Convert only the first N PDF pages
maxRowsPerTable500Truncate large sheets and tables
includeSpeakerNotestrueInclude PowerPoint notes
maxFileSizeMb50Skip larger files (not charged)

Output

One dataset item per document:

{
"url": "https://arxiv.org/pdf/1706.03762",
"status": "ok",
"fileName": "1706.03762v7.pdf",
"format": "pdf",
"title": "Attention Is All You Need",
"pages": 15,
"wordCount": 6482,
"charCount": 40306,
"metadata": { "Creator": "LaTeX with hyperref", "Pages": "15" },
"warnings": [],
"markdownKey": "1706.03762v7-dd93e904.md",
"markdown": "## Attention Is All You Need\n\n...",
"chunkCount": 47,
"chunks": [{ "index": 2, "headingPath": "Abstract", "text": "## Abstract\n\nThe dominant ...", "charCount": 1987 }]
}

Failed files get "status": "error" and an error message, and are free.

Pricing (pay per event)

EventPriceWhen
document-converted$0.003Each successfully converted file. Includes up to 10 pages, slides or sheets, plus chunking.
extra-page$0.0003Each PDF page, slide or sheet beyond the first 10
apify-actor-start$0.00005Platform default, once per run

Examples: 1,000 Word documents cost $3.00. A 15-page PDF costs $0.003 + 5 × $0.0003 = $0.0045. You can set a maximum cost per run, and the Actor stops cleanly when the limit is reached.

Use with AI agents (MCP)

Add the Actor to the Apify MCP server, and your agent (Claude, Cursor, ChatGPT and others) can call it as a tool:

https://mcp.apify.com/?tools=<your-username>/doc-to-markdown

The Actor uses pay-per-event pricing only, runs with limited permissions and does not use Standby mode, so it is eligible for Apify agentic payments (an agent can pay per run without an Apify account).

API example

curl -X POST "https://api.apify.com/v2/acts/<your-username>~doc-to-markdown/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"documentUrls":[{"url":"https://arxiv.org/pdf/1706.03762"}],"chunksAsSeparateItems":true}'

Limitations

  • OCR is not included. Scanned or image-only PDFs produce a warning and little text.
  • PDF headings are detected heuristically (pdftotext gives no font sizes). Tables inside PDFs come out as text, not Markdown tables.
  • Only process documents you have the right to use. The Actor downloads only the URLs you give it and does not crawl.

Changelog

  • 0.1: First release. PDF, DOCX, PPTX, XLSX, CSV/TSV, HTML, TXT/MD/JSON. RAG chunking. Pay-per-event pricing.