PDF to Markdown & Text Extractor
Pricing
$3.00 / 1,000 pdf processeds
PDF to Markdown & Text Extractor
Extract page-aware Markdown or text from public PDFs, including metadata, links, simple tables, and image-only page flags. Built for RAG and AI agents; no OCR for scanned text.
Pricing
$3.00 / 1,000 pdf processeds
Rating
0.0
(0)
Developer
Lintlab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
PDF to Markdown & Text
Convert public text-layer PDFs into page-aware Markdown or plain text for search, RAG preprocessing, and AI-agent workflows. One dataset item is written per input URL.
What you get
- Markdown page markers, inferred headings, obvious lists, and preserved links
- Best-effort simple Markdown tables with alignment confidence
- PDF metadata, page counts, hashes, and structured link records
- Image-only page detection with explicit warnings
- $0.003 per successfully processed PDF
No OCR: scanned or image-only pages are detected, but their text is not extracted.
Quick start
{"pdfUrls":[{"url":"https://example.com/report.pdf"}],"outputFormat":"markdown","includeTables":true}
Use with AI agents / MCP
Call lintlab/pdf-to-markdown through the Apify API or Apify MCP server, then read markdown, perPage, metadata, and imageOnlyPages from the default dataset before sending text to an LLM or indexer.
Overview
Convert public PDF URLs into page-aware Markdown or plain text with a pure JavaScript Apify Actor. It downloads each document safely, respects robots.txt, verifies that the response is a PDF, and writes one dataset item per URL.
What it does
- Extracts text without a browser or native PDF binary.
- Marks every Markdown page with
<!-- page N -->. - Infers headings from relative font sizes and preserves obvious lists.
- Converts consistently aligned text into simple Markdown tables and reports a best-effort confidence score.
- Converts link annotations into Markdown links and returns a structured link list.
- Returns document title, author, creator, producer, creation date, and modification date when embedded in the PDF.
- Reports pages with little or no extractable text as image-only instead of failing.
- Uses SSRF-safe downloads with DNS pinning, public-unicast-only addresses, redirect checks, byte limits, timeouts, and fail-closed robots handling.
PDFs are processed with concurrency 2. Password-protected or encrypted PDFs are reported as encrypted; the Actor never attempts to bypass encryption, DRM, paywalls, or logins.
Input
{"pdfUrls": [{ "url": "https://example.com/report.pdf" }],"maxPdfs": 50,"maxPagesPerPdf": 200,"maxPdfBytes": 26214400,"includeTables": true,"outputFormat": "markdown","timeoutSecs": 30}
outputFormat accepts markdown, text, or both. Duplicate URLs are removed. maxPdfs limits unique input URLs, and the run's maximum charge setting can lower the number attempted.
Output
Each input produces one dataset item, including failures:
{"url": "https://example.com/report.pdf","finalUrl": "https://cdn.example.com/report.pdf","status": 200,"bytes": 48192,"sha256": "54eaf...","pageCount": 2,"pagesProcessed": 2,"metadata": {"title": "Quarterly report","author": "Example organization","creator": null,"producer": null,"creationDate": null,"modDate": null},"markdown": "<!-- page 1 -->\n\n# Quarterly report\n\n...","perPage": [{ "page": 1, "chars": 831, "imageOnly": false },{ "page": 2, "chars": 0, "imageOnly": true }],"imageOnlyPages": [2],"links": [{ "page": 1, "text": "Source", "url": "https://example.com/source" }],"tables": 1,"tableConfidence": [{ "page": 1, "rows": 3, "columns": 2, "confidence": 1 }],"warnings": ["Pages 2 contain little or no extractable text and may be image-only. OCR is not supported."],"error": null}
The default key-value store also contains SUMMARY, a JSON run summary with processed, failed, charged, page, byte, and error counts.
Pricing
The Actor costs $0.003 per successfully processed PDF, or $3 per 1,000 PDFs. The dataset item is saved before charging. Failed downloads, robots-blocked URLs, non-PDF responses, oversized responses, parse failures, and encrypted PDFs are free. A clean image-only report is successful and chargeable because it identifies affected pages without failing.
Limits and responsible use
This first version does not perform OCR. Scanned or image-only pages are identified but have no extracted text. Heading, paragraph, list, link-label, and table reconstruction are geometry-based heuristics; complex layouts, multi-column prose, forms, and nested tables may not reproduce perfectly. Table detection is best effort, and its confidence measures alignment rather than semantic correctness.
Only process documents you own or are authorized to access and transform. The Actor honors robots.txt, accepts only public HTTP(S) destinations, and does not authenticate or bypass access controls.
Built by lintlab — small, reliable data tools. AI-assisted (Claude/Codex), reviewed before release. Support: lintlab.dev@gmail.com · https://github.com/lintlab