PDF to Text & Markdown Converter - Bulk Extractor for RAG avatar

PDF to Text & Markdown Converter - Bulk Extractor for RAG

Pricing

$2.00 / 1,000 pdf converteds

Go to Apify Store
PDF to Text & Markdown Converter - Bulk Extractor for RAG

PDF to Text & Markdown Converter - Bulk Extractor for RAG

Convert PDF URLs into clean plain text and LLM-ready Markdown with headings and lists, plus metadata and per-page text. Bulk, fast, page ranges, password PDFs. $2 per 1,000 PDFs.

Pricing

$2.00 / 1,000 pdf converteds

Rating

0.0

(0)

Developer

Wood Between Studio

Wood Between Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

PDF to Text & Markdown Converter: Bulk PDF Extractor for LLMs & RAG

Turn PDF URLs into clean plain text and LLM-ready Markdown in bulk. Headings, paragraphs and bullet lists are rebuilt from the PDF layout. Metadata and optional per-page text come with every document. No API key and no setup.

Why use it?

  • Markdown built for AI. Headings are detected from font sizes, broken lines are joined back into paragraphs, lists are restored and page numbers are dropped. You can feed the output straight to embeddings, vector databases or prompts.
  • Bulk and fast. Process many PDFs in parallel. A typical 15-page paper takes about a second.
  • Page ranges. Extract 1-5, 8, 12- instead of paying for a 400-page manual when you need three pages.
  • Password-protected PDFs are supported.
  • Rich metadata: title, author, subject, keywords, creator, producer, PDF version, and ISO creation and modification dates.
  • Scanned-PDF detection. Image-only documents are flagged with likelyScanned: true, so you know which ones need OCR.
  • Low, flat price: $2 per 1,000 PDFs. Failed downloads are never charged.

Use cases

  • RAG pipelines and AI agents (LangChain, LlamaIndex, custom GPTs and MCP clients)
  • Research: batch-convert arXiv papers, reports and theses
  • Legal and compliance: make filings, policies and contracts searchable
  • Data pipelines: send text to Make, Zapier, n8n, Google Sheets or your own code through the Apify API

Input

FieldDefaultNotes
urls—Direct links to .pdf files
includeMarkdowntrueMarkdown rendition
includeFullTexttruePlain text
includePerPageTextfalsepages: [{page, text}]
pageRangealle.g. 1-5, 8, 12-
maxPagesPerPdf500Safety cap
pdfPassword—For protected files (stored as a secret)
maxConcurrency4Parallel PDFs
maxPdfSizeMb100Larger files are skipped and not charged

Example

{ "urls": ["https://arxiv.org/pdf/1706.03762"], "pageRange": "1-5", "includePerPageText": true }

Output

{
"url": "https://www.irs.gov/pub/irs-pdf/fw9.pdf",
"status": "success",
"pageCount": 6,
"extractedPageCount": 6,
"metadata": { "title": "Form W-9 (Rev. March 2024)", "author": "SE:W:CAR:MP", "creationDate": "2024-03-...", "producer": "..." },
"wordCount": 6284,
"likelyScanned": false,
"text": "Form W-9 (Rev. March 2024) ...",
"markdown": "## Form W-9\n\n# Request for Taxpayer Identification Number and Certification\n\n..."
}

Failed items have status: "failed" and a clear error, such as HTTP 404, not a PDF, wrong password or too large.

Pricing

$2.00 per 1,000 PDFs converted ($0.002 per PDF). Platform usage is included. Failed PDFs are free. Set a maximum charge per run if you want a hard cap.

Limits

  • Tables come out as text lines, not cells. Images aren't extracted.
  • Scanned image-only PDFs have no text layer. They're flagged rather than OCRed.
  • Very large documents (over about 3 million characters) are truncated to fit one dataset row and flagged with truncated: true. Use pageRange to split them.

Responsible use

Only process PDFs you have the right to access. The Actor doesn't bypass logins, paywalls or DRM.

Support

Want OCR, table extraction or file uploads? Open an issue on the Issues tab. We read every one.

Call it from curl, JavaScript or Python

You can run this Actor in the Apify Console with no code, or call it as an API from curl, JavaScript or Python. Replace YOUR_TOKEN with an Apify API token.

curl

curl "https://api.apify.com/v2/acts/wood-between-studio~pdf-to-markdown/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://arxiv.org/pdf/1706.03762"], "pageRange": "1-5"}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wood-between-studio/pdf-to-markdown').call({
"urls": [
"https://arxiv.org/pdf/1706.03762"
],
"pageRange": "1-5"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wood-between-studio/pdf-to-markdown").call(run_input={
"urls": [
"https://arxiv.org/pdf/1706.03762"
],
"pageRange": "1-5"
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

You can also schedule the Actor, cap the spend per run, and send the dataset to Google Sheets, Slack or a webhook from the Console. Store page: apify.com/wood-between-studio/pdf-to-markdown.