PDF Text Extractor - OCR, Markdown & JSON avatar

PDF Text Extractor - OCR, Markdown & JSON

Pricing

from $0.75 / 1,000 pdf page extracteds

Go to Apify Store
PDF Text Extractor - OCR, Markdown & JSON

PDF Text Extractor - OCR, Markdown & JSON

Extract clean text, Markdown and JSON from public PDF URLs, including scanned pages with OCR for research, automation and AI workflows.

Pricing

from $0.75 / 1,000 pdf page extracteds

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Share

Extract clean text, Markdown, or structured JSON from direct public PDF URLs. Process digital and scanned PDFs in one workflow, with optional OCR, page analysis, and one Dataset item per submitted document.

What this Actor does

PDF Text Extractor - OCR, Markdown & JSON downloads public PDF files, verifies their format and size, extracts up to 5,000 pages per document, and returns the content in the selected format. It can identify pages that need OCR, read scanned pages in 20 supported languages, expose page-level layout analysis, and continue after an individual PDF fails.

Use cases

  • Prepare PDF content for search, RAG, and AI pipelines.
  • Convert reports, manuals, research papers, and forms to Markdown or text.
  • Extract scanned documents with language-specific OCR.
  • Audit page counts, OCR candidates, likely tables, and document layout.

How to use

  1. Open the Actor in Apify Console.
  2. Add one or more direct public PDF URLs.
  3. Choose Markdown, JSON, or plain text and configure OCR and page limits.
  4. Click Start and open the Dataset when the run finishes.

Input

FieldTypeRequiredDescription
pdfUrlsarrayYesFrom 1 to 50 direct public HTTP(S) PDF URLs. Duplicate URLs are processed once.
outputFormatstringNomarkdown, json, or text; default markdown.
ocrEnabledbooleanNoRead pages identified as scans or image-only pages; default true.
ocrLanguagestringNoMain OCR language; default eng. The input selector offers 20 supported languages.
maxPagesintegerNoMaximum pages processed per PDF, from 1 to 5,000; default 50.
includePageDatabooleanNoInclude detailed page blocks, coordinates, annotations, forms, and layout data; default false.
maxDownloadMbintegerNoMaximum download size per PDF, from 1 to 500 MB; default 100.

Use a direct file URL that returns PDF bytes. Web pages containing an embedded viewer are not direct PDF URLs and cannot be processed.

This input was used for the complete real output example below:

{
"pdfUrls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
],
"outputFormat": "markdown",
"ocrEnabled": true,
"ocrLanguage": "eng",
"maxPages": 50,
"includePageData": false,
"maxDownloadMb": 100
}

Output

The default Dataset normally contains one item per unique PDF URL. Successful items have status: "ok" and include file metadata, hashes, total and processed page counts, OCR and table hints, page summaries, duration, and extracted content. Failed downloads or unreadable files produce status: "error" items so other documents can still succeed. SUMMARY in the default key-value store reports run-level totals and items that could not be published because of the run charge limit.

This is the complete Dataset item from a real successful run:

{
"status": "ok",
"sourceUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"finalUrl": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"filename": "001_dummy.pdf",
"sha256": "3df79d34abbca99308e79cb94461c1893582604d68329a41fd4bec1885e6adb4",
"fileSizeBytes": 13264,
"format": "markdown",
"totalPages": 1,
"processedPages": 1,
"textChars": 16,
"ocrPages": [
1
],
"tableLikelyPages": [],
"pages": [
{
"page": 1,
"textChars": 14,
"needsOcr": true,
"reasons": [
"no-text"
],
"tableLikely": false,
"columnCount": 1,
"contentBounds": null
}
],
"durationSeconds": 0.456,
"content": "# Dummy PDF file"
}

With markdown or text, content is a string. With json, it is the parser's structured object. totalPages is the PDF's reported page count, while processedPages reflects the pages actually extracted.

Pricing

The Actor charges each successfully processed page once. A page handled with OCR replaces the normal page charge; failed downloads and unreadable files are free. Apify selects your account tier automatically.

Apify plan tierPrice per normal pagePrice per OCR pageEquivalent per 1,000 normal pagesEquivalent per 1,000 OCR pages
Free$0.001$0.002$1.00$2.00
Bronze$0.0009$0.0018$0.90$1.80
Silver$0.0008$0.0016$0.80$1.60
Gold$0.00075$0.0015$0.75$1.50
Platinum$0.00075$0.0015$0.75$1.50
Diamond$0.00075$0.0015$0.75$1.50

Use maxPages, disable OCR when it is unnecessary, and set Apify's maximum charge per run to control cost.

ActorBest for
Bulk Website Screenshot & PDF GeneratorCreating PDF files or full-page screenshots from public web pages before document processing.
Content Style & Brand Voice CheckerAuditing extracted text or public page content against editorial and terminology rules.

Limits and data quality

Each run accepts up to 50 unique PDF URLs. Each file can be limited to 1–5,000 pages and 1–500 MB. URLs must be publicly reachable without a login or browser session. A download that is not actually a PDF is rejected.

OCR quality depends on scan resolution, contrast, rotation, fonts, and selected language. Table detection and column counts are analysis hints, not guarantees of perfect structure. includePageData can make Dataset items substantially larger. Public files can change after collection, so hashes and extracted content represent the downloaded version.

Frequently asked questions

Which output format should I choose?

Use Markdown for AI and readable structure, plain text for simple indexing, and JSON for structured automation or page-aware processing.

Does every page use OCR?

No. With OCR enabled, only pages identified as needing OCR are candidates. Digital pages with selectable text are extracted normally.

Why does processedPages differ from totalPages?

totalPages reports the document size; processedPages respects maxPages and is the number actually extracted.

Can I submit a PDF viewer page?

No. Submit the direct public URL of the PDF file itself.

Responsible use

Process only documents you are allowed to access and use. You are responsible for complying with applicable copyright, privacy, data-protection requirements, and the hosting website's terms. Do not submit confidential or personal documents unless your handling is authorized and appropriate.

Support

Open an issue in the Actor's Issues tab and include a reproducible input and run ID. Mention the affected PDF URL, expected result, and observed result so the issue can be investigated.