PDF to Markdown Converter avatar

PDF to Markdown Converter

Pricing

$2.00 / 1,000 results

Go to Apify Store
PDF to Markdown Converter

PDF to Markdown Converter

Convert PDF links or files to clean Markdown: one row per page, per chunk or per file. Use when you need PDF text as Markdown for RAG, LLM prompts or search.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Plain Pipe

Plain Pipe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

Convert PDF files or links to clean Markdown, with headings, lists and paragraphs rebuilt from the text layer. Get one row per page, one row per chunk of about N words, or one row per PDF.

Use when: you need the text of PDFs as Markdown for a RAG pipeline, an LLM prompt or a search index, with page numbers kept.

Why this one

  • $2.00 per 1,000 results. Each dataset row is one result, so you control the cost with the output mode.
  • Pick pages ("1-3,7"), get one row per PDF (outputMode: "document"), or RAG-sized chunks (chunkWords) with chunkIndex, all in one Actor.
  • Every row carries page, pages, words and characters, ready for citations and chunk planning.
  • No browser and no proxy: plain HTTP fetch plus a text-layer parser, so the prefilled sample finishes in seconds. The prefilled input is tested daily.

What it does

Give it PDF links or upload a PDF. It reads the text layer of each page, rebuilds lines and paragraphs from the text positions, turns larger-font lines into # / ## headings and numbered section titles such as 2.1 Results into ### headings, joins words split by end-of-line hyphens, and turns bullet lines into Markdown lists. By default each page with text becomes one dataset row with its Markdown, page number, page count, word count and character count. You can limit the run to some pages, join all pages of a file into one row, or split long pages into chunks.

Pages without a text layer (scanned images) are skipped and not charged. Links that fail, return a web page instead of a PDF, or point at a damaged file are skipped with a warning, so one bad link does not stop a batch.

Use cases

  • Split reports, manuals and papers into Markdown chunks of about 300 words for a RAG pipeline or vector database.
  • Get one Markdown row per PDF for a wiki page or a single LLM prompt.
  • Convert only the pages you need, such as the summary on pages 1-2.
  • Turn PDF documentation into Markdown for a wiki, static site or note app.
  • Prepare PDF content for an LLM prompt without layout noise, with page numbers kept for citations.
  • Count words and characters per page before translation or editing work.
  • Run a nightly batch over a list of PDF links and feed the rows into another tool through the Apify API.

How to use it

  1. Paste direct PDF links into PDF URLs, one per line, or upload a file in Upload a PDF.
  2. Optional: set Pages (for example 1-3,7), pick Output mode, set Chunk size (words), or lower Max results.
  3. Click Start. Each page (or chunk, or PDF) appears as one row in the dataset.
  4. Export the rows as JSON, CSV or Excel, or read them through the Apify API.

Input

FieldWhat it isDefaultExample
pdfUrlsDirect links to PDF files, one per line. The link must return the PDF itself, not a viewer page.none["https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"]
pdfFileOne uploaded PDF, instead of or in addition to links.nonea file picked in the input form
pagesPages to convert in every file: numbers and ranges, from 1. Empty = all pages.all"1-3,7"
outputMode"page" = one row per page. "document" = one row per PDF, pages joined with \n\n---\n\n."page""document"
chunkWordsPage mode only. 0 = off. Otherwise split long pages into chunks of about this many words, cut between paragraphs, one row per chunk. Allowed: 0 or 20 to 100000.0300
maxItemsStop after this many results (rows) in total, across all files.100020

Example input:

{
"pdfUrls": ["https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"],
"maxItems": 5
}

Output

In page mode (the default), one row per page that has text. Real output of the example input above:

{
"source": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"page": 1,
"pages": 1,
"markdown": "Dummy PDF file",
"characters": 14,
"words": 3
}
FieldMeaning
sourceThe link (or uploaded file) the page came from.
pagePage number in the file, starting at 1.
pagesTotal number of pages in the file.
markdownThe page as Markdown: headings, paragraphs and lists.
characters / wordsSize of the Markdown, for chunking and cost planning.
chunkIndex / chunksOnly when chunkWords is set: position of this chunk in its page (from 0) and the number of chunks for that page.
pageCount / pageNumbersOnly in document mode: how many pages with text were joined into this row, and which ones.

In document mode a row looks like {"source": "...", "pages": 15, "pageCount": 3, "pageNumbers": [1, 2, 3], "markdown": "...page 1...\n\n---\n\n...page 2...", "characters": 9000, "words": 1400}. With chunkWords a row is a page row plus chunkIndex and chunks.

A single-line page with body-size text (like the sample) comes out as a plain paragraph; pages with larger titles get # and ## headings.

Pricing

Pay per result: $2.00 per 1,000 results ($0.002 per result). You only pay for results the Actor returns. Set a maximum total charge on the run to cap your spend.

Each dataset row is one result. What a row is depends on the output mode:

  • Page mode (default): one result per page with text.
  • Page mode with chunkWords: one result per chunk, so a page split into 3 chunks costs 3 results.
  • Document mode: one result per PDF, however many pages it has.

Pages without text and links that fail are not charged.

Limits

  • Text layer only, no OCR: scanned pages without text are skipped and not charged.
  • Tables come out as plain text lines, not Markdown tables. Images are not extracted.
  • Headings are guessed from font size, so unusual layouts may get fewer or extra headings.
  • Multi-column pages are read line by line across the page, so columns can be interleaved.
  • Files up to 50 MB. Links must point straight at the PDF file (the response must start with %PDF-); redirects are followed.
  • Encrypted (protected) PDFs cannot be opened and are skipped.

FAQ

How much does a 100-page PDF cost? In page mode at most 100 results, so $0.20. In document mode it is 1 result, so $0.002. With chunks it is one result per chunk. Pages without text are not counted. Set Max results or a maximum total charge to cap a run.

Why did my link fail with "did not return a PDF file"? The link opens a web page or an online viewer, not the file. Open the PDF in your browser, copy the address of the file itself (it usually ends in .pdf), and use that.

Can it read scanned PDFs? No. It reads the text that is stored in the PDF. Scanned pages are images; run OCR on them first, then convert the result.

Can I get one row per file instead of per page? Yes. Set outputMode to "document". All selected pages are joined in page order, separated by a --- line, and pageCount tells you how many pages were joined.

What happens with an invalid page range? A range such as "5-2" or "abc" stops the run before anything is fetched, with a clear error, and nothing is charged.

Can I run it on a schedule or from my own code? Yes. Use Apify schedules for recurring runs, or start runs and read the dataset through the Apify API, the JavaScript or Python client, or integrations such as Make, Zapier and webhooks.

This Actor processes only what you give it or public, non-personal technical data. It does not log in anywhere, does not collect personal data, and does not bypass paywalls, CAPTCHAs or access controls. You are responsible for having the right to process the inputs you provide.

Support

Open an issue on the Issues tab. Issues are answered within 14 days. Please include the run ID and, if you can, a link to the PDF that gave the wrong result.

Other Plain Pipe document tools: DOCX to Markdown & Text Converter, EPUB to Markdown & Text Converter, PDF Merge & Split Tool, PDF Watermark & Page Number Tool, Markdown to HTML Converter, Markdown Table Converter (CSV, JSON, HTML).

Built and maintained by Plain Pipe.