PDF & Document to Markdown for RAG - Word, PPT, Excel avatar

PDF & Document to Markdown for RAG - Word, PPT, Excel

Pricing

from $4.00 / 1,000 document converteds

Go to Apify Store
PDF & Document to Markdown for RAG - Word, PPT, Excel

PDF & Document to Markdown for RAG - Word, PPT, Excel

Convert PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX/XLS), EPUB, HTML, CSV and more from URLs into clean LLM-ready Markdown with page counts, metadata and heading-aware RAG chunks. $4 per 1,000 documents, any format. Failed files are free.

Pricing

from $4.00 / 1,000 document converteds

Rating

0.0

(0)

Developer

Kanto Labs

Kanto Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

PDF & Document to Markdown - LLM-ready text and RAG chunks from any file URL

Give it links to PDF, Word, PowerPoint, Excel, EPUB or HTML files; get back clean Markdown, page counts, metadata and ready-to-embed chunks for your LLM, vector database or RAG pipeline.

  • One actor for every office format - PDF, DOCX, PPTX, XLSX, XLS, EPUB, HTML, CSV, JSON, XML, IPYNB, MSG, ZIP
  • $4 per 1,000 documents ($0.004 each), any format, any page count up to the size limit
  • Failed files are free - downloads that fail, unsupported formats and files with no text cost nothing
  • Heading-aware chunks with the section path attached, so no extra splitting step is needed

What does Document to Markdown do?

For every document URL you provide, the actor downloads the file, detects its real type from the bytes (not just the extension), converts it to Markdown and returns one dataset row with:

  • the full Markdown text - headings stay headings, tables become Markdown tables, slides are numbered, PDF pages are marked with <!-- Page N --> so answers can cite a page
  • page count (PDF) or slide count (PowerPoint), word and character counts
  • file metadata: file name, format, size, content type, SHA-256 hash (for de-duplication)
  • optional RAG chunks of the size you choose, each with its headingPath (e.g. ["Methods", "Data"])
  • optional downloadable .md file saved to the run's key-value store

Use cases

  • RAG and AI agents - turn reports, manuals, papers and policies into chunks for Pinecone, Qdrant, Weaviate, pgvector or Chroma.
  • LLM prompts - put a whole contract, deck or spreadsheet into a prompt as readable Markdown.
  • Knowledge bases - convert a folder of mixed office files into one searchable Markdown corpus.
  • Research - batch-extract text from arXiv papers and other academic PDFs.
  • Data pipelines - replace a PDF tool, a Word tool and an Excel tool with a single step.
  • Change detection - the sha256 field tells you when a published document actually changed.

How to use it

  1. Click Try for free.
  2. Paste direct links to your documents into Document URLs, one per line.
  3. Optionally set RAG chunk size (for example 1500 characters) and turn on Save .md files.
  4. Click Start, then download the results as JSON, CSV or Excel, or read them through the API.

Input example

{
"documentUrls": [
"https://arxiv.org/pdf/1706.03762",
"https://example.com/files/annual-report.docx"
],
"chunkSize": 1500,
"chunkOverlap": 150,
"saveMarkdownFiles": true
}

documentUrls accepts plain strings or Apify-style objects - [{"url": "https://..."}] works too, so you can pass the output of another actor or a request list directly.

FieldWhat it doesDefault
documentUrlsDirect links to documents, one per line (strings or {"url": ...} objects)one example PDF
chunkSizeCharacters per RAG chunk; 0 = no chunking0
chunkOverlapCharacters repeated between consecutive chunks150
includeMarkdownPut the full Markdown into each resulttrue
saveMarkdownFilesAlso save a downloadable .md file per documentfalse
maxFileSizeMbSkip larger files (not charged)50
maxConcurrencyDocuments processed in parallel3
downloadTimeoutSecs / conversionTimeoutSecsPer-file time limits120 / 300

Local files: upload them anywhere that gives a direct link (an Apify key-value store record, S3, a pre-signed URL, a public share link) and pass that link.

Output example

One dataset item per document. Real output from a cloud run of this actor on the "Attention Is All You Need" paper (15-page PDF, downloaded and converted in 277 ms; markdown shortened, chunks from a test run with chunkSize: 1500):

{
"url": "https://arxiv.org/pdf/1706.03762",
"finalUrl": "https://arxiv.org/pdf/1706.03762",
"fileName": "1706.03762v7.pdf",
"format": "PDF",
"extension": ".pdf",
"contentType": "application/pdf",
"fileSizeBytes": 2215244,
"sha256": "bdfaa68d8984f0dc02beaca527b76f207d99b666d31d1da728ee0728182df697",
"title": null,
"pageCount": 15,
"charCount": 39846,
"wordCount": 6177,
"markdown": "<!-- Page 1 -->\nProvided proper attribution is provided, Google hereby grants permission to\nreproduce the tables and figures in this paper ...\nAttention Is All You Need\nAshish Vaswani∗\nGoogle Brain ...",
"chunks": [
{ "index": 0, "text": "<!-- Page 1 -->\nProvided proper attribution ...", "headingPath": [], "charCount": 1475 },
{ "index": 1, "text": "by over 2 BLEU. On the WMT 2014 English-to-French translation task, ...", "headingPath": [], "charCount": 1546 }
],
"markdownFileKey": null,
"processingTimeMs": 277,
"error": null
}

For Word, PowerPoint and EPUB files the Markdown keeps real headings (#, ##) and each chunk's headingPath shows the section it came from - useful as metadata in your vector store. In our test set a 6-slide PPTX, a Word paper, an Excel workbook (each sheet becomes a Markdown table), an EPUB and an HTML page all converted; a YouTube link and a PNG image were rejected with a clear error and not charged.

Supported formats

FormatExtensions
PDF (with a text layer).pdf
Word.docx
PowerPoint.pptx
Excel.xlsx, .xls
E-books.epub
Web pages.html, .htm
Data.csv, .json, .xml, .ipynb (Jupyter)
FeedsRSS, Atom
Email.msg (Outlook)
Text.txt, .md
Archives.zip containing any of the above

How much does it cost?

$4 per 1,000 converted documents ($0.004 each), pay-per-event, the same price for a 1-page memo and a 300-page manual. Apify platform compute is included. There is also a one-off start fee of $0.00005 per GB of run memory (the default 2 GB run = $0.0001 per run).

You convertYou pay
1 document$0.004
50 PDFs$0.20
1,000 documents$4.00
20,000 documents$80.00

What is free: any document that fails - download error, file too large, unsupported type, a scanned PDF with no text layer, a conversion error or timeout. Those rows come back with an error message and cost nothing. Only documents that produced Markdown are charged.

Cost cap: set Maximum cost per run in the run options; the actor stops cleanly when it is reached. Apify's free plan includes monthly platform credit you can use to try it.

How it compares

This actorPDF-only extractorsHosted document-AI / OCR services
FormatsPDF + Word, PowerPoint, Excel, EPUB, HTML, CSV and morePDFVaries
Price modelFlat $0.004 per document, any page countVaries (per file, per page)Usually per page
Scanned (image-only) PDFsNot supported (no OCR) - returned freeSome include OCRYes
RAG chunks with heading pathBuilt inVariesVaries
Runs inside your Apify account, results in your storageYesYesNo

Pick this actor for mixed office files and digital PDFs at a flat per-document price. If most of your files are scans or photos, use a tool with OCR.

Integrations and API

  • API: POST https://api.apify.com/v2/acts/kantolabs~document-to-markdown/run-sync-get-dataset-items?token=YOUR_TOKEN with the input JSON as the body returns the converted documents in one call.
  • LangChain / LlamaIndex: load the dataset with the Apify dataset loaders; use chunks[].text as the page content and headingPath as metadata.
  • Vector databases: Apify's Pinecone, Qdrant and other integrations can take the dataset directly.
  • AI agents (MCP): callable from Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server.
  • No-code: Make, Zapier, n8n, webhooks and schedules.

FAQ

Does it do OCR on scanned PDFs? No. Digitally created PDFs (almost all reports, papers and exports) have a text layer and work. A pure image scan has no text; it is returned with an error and is not charged.

Do I pay for files that fail? No. Only successfully converted documents are charged. Every failure is listed with its reason so you can see what happened.

Can I pass {"url": "..."} objects? Yes. documentUrls accepts strings, objects with a url field, or a mix. Anything else is reported in the log with a clear message.

How are PDFs handled? With PDFium (the PDF engine inside Chrome, via pypdfium2), which keeps word spacing intact and marks each page. Other formats use Microsoft's open-source MarkItDown converter.

Links without a file extension? They work - the type is detected from the downloaded bytes, and servers that send the wrong Content-Type are handled.

Is my data stored? Only in your own Apify run storage (dataset and key-value store), which you control and can delete.

Something converted badly? Open an issue on the Issues tab with the file URL.