PDF to Text Extractor: Bulk PDF Scraper & Parser for RAG
Pricing
$5.00 / 1,000 pdf extracteds
PDF to Text Extractor: Bulk PDF Scraper & Parser for RAG
Bulk PDF text extraction API. Give PDF URLs, get text, page count and metadata in one row per PDF for LLM, RAG and search pipelines. Text-layer PDFs only, no OCR. Failed PDFs are free. $5 per 1,000 PDFs.
Pricing
$5.00 / 1,000 pdf extracteds
Rating
0.0
(0)
Developer
Johto Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Security
Limited permissionsShare
Bulk PDF text extraction API: turn a list of PDF URLs into clean text, page counts and metadata, one row per PDF. Built for LLM, RAG, search indexing and document pipelines.
What does PDF to Text do?
Extract text, page count and document metadata from a list of public PDF URLs. PDF to Text uses pypdf to read the existing text layer. It does not perform OCR, summarize documents or use a language model.
Pricing
$5.00 per 1,000 successfully extracted PDFs, using the pdf pay-per-event event. A PDF is successful only when it produces nonempty text. Error rows, blocked URLs and documents without extractable text do not trigger that event.
Example: 2,000 successful PDFs cost $10.00 in PDF events. The intended Store configuration has no start event, no automatic dataset-item event and no additional platform-usage charge. Check the live Pricing tab before running.
Quick start
- Add PDF URLs to
startUrls. Each entry can be a URL string or an object with aurlfield. - Keep the default file-size and page limits, or lower them for your documents.
- Press Start. Read the dataset or export it as JSON, CSV or Excel.
Example input using a Federal Register PDF:
{"startUrls": [{ "url": "https://www.govinfo.gov/content/pkg/FR-2026-11-06/pdf/2026-22789.pdf" }],"maxFileSizeMb": 20,"maxPages": 300}
The Actor downloads only the supplied URLs and their redirects. It does not crawl links inside documents. Identical input URLs are processed once per run. A comma inside a URL remains part of that URL.
Output
One dataset item is written per unique input URL processed before a budget or run limit stops the run.
| Field | Meaning |
|---|---|
url, loadedUrl | Supplied URL and final download URL; final URL is present on success |
status, error | success or error, with an error code on failure |
text | Extracted document text, with blank lines between pages |
pageCount | Total number of PDF pages, including pages without text |
wordCount, characterCount | Whitespace-delimited word count and extracted text length |
metadata | Title, author, subject, creator, producer and creation/modification dates, where present |
fileSizeBytes | Downloaded PDF byte count |
extractedAt | Extraction timestamp, ISO 8601 |
Example item from a real run on Nov 8, 2026:
{"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf","status": "success","fileSizeBytes": 13264,"text": "Dummy PDF file","pageCount": 1,"metadata": {"title": null,"author": "Evangelos Vlachogiannis","subject": null,"creator": "Writer","producer": "OpenOffice.org 2.1","creationDate": "D:20070223175637+02'00'","modificationDate": null},"characterCount": 14,"wordCount": 3,"extractedAt": "2026-11-09T03:17:58.732482+00:00"}
Metadata comes from the PDF itself, is not verified, and may be absent or inaccurate. PDF date strings are returned as stored rather than normalized.
An error item has status: "error", a code such as robots_disallowed, http_404, encrypted_pdf or no_extractable_text, and null text, page count and metadata. Other URLs continue processing.
Input options
| Field | Default | Limit |
|---|---|---|
startUrls | Required | 1 to 1,000 URLs |
maxFileSizeMb | 20 | 1 to 50 MiB per download |
maxPages | 300 | 1 to 1,000 pages per PDF |
Files exceeding these limits are rejected, not partially extracted. Extraction is also limited to 2 million characters and an isolated worker with a 50-second wall-clock timeout, a 40-second CPU limit and a 512 MiB address-space limit. Downloads have a 60-second timeout and follow at most five redirects.
API and use cases
Use the Apify API or the Actor's API tab to submit the same JSON input and retrieve its dataset. Text can be passed to a search index, document archive or a separate RAG pipeline. The Actor does not create embeddings or guarantee an LLM context size.
Use with AI agents and automation
Apify MCP server (Claude, Cursor, ChatGPT, any MCP client). Add https://mcp.apify.com?tools=johto.data/pdf-to-text as a remote MCP server. The agent gets one tool that takes the input below and returns one row per PDF with text, page count and metadata.
API, one call. Runs and returns the dataset in the same request:
curl -X POST "https://api.apify.com/v2/acts/johto.data~pdf-to-text/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://www.govinfo.gov/content/pkg/FR-2026-11-06/pdf/2026-22789.pdf"}]}'
LangChain (Python).
from langchain_apify import ApifyActorsTooltool = ApifyActorsTool("johto.data/pdf-to-text")
n8n, Make, Zapier. Use the Apify app or node, choose Run Actor, enter johto.data/pdf-to-text and paste the input JSON. Then map dataset fields into Sheets, a CRM or a database.
FAQ
How does the price compare? $5.00 per 1,000 successful PDFs, no start fee, and failed PDFs are free. Other PDF text extractors in the Store list $5 to $20 per 1,000 PDFs plus start or page fees (checked Nov 8, 2026). Those include OCR, which this Actor does not.
What about scanned PDFs? They have no text layer, so they return an error row and are not charged.
How long does a run take? The prefilled input finishes in about 3 seconds.
Limitations and responsible use
Scanned image-only PDFs need OCR and return an uncharged error here. Encrypted, damaged or unusually complex PDFs may also fail. Multi-column layouts, tables and font encodings can affect reading order and accuracy. The Actor does not preserve visual layout or produce structured tables.
Caller is responsible for the target site's terms. robots.txt is respected. Explicitly disallowed paths and robots server errors are skipped. A missing or unreachable robots file is treated as allowing access; that is not a content license. Robots rules are checked again at redirect destinations. Private-network destinations, URL credentials and nonstandard ports are blocked. There is no proxy or access-control bypass.
Process only documents you own, are licensed to use, or have permission to process. Public availability does not grant rights to redistribution or model training. Preserve source attribution and license notices. Text and PDF author metadata may contain personal data. Ensure a lawful basis before storing or reusing it. Transformed Federal Register text is not an official legal edition.
Support
Open an issue in the Issues tab with a public example URL and the error code. Do not include API tokens, private documents or personal data. Built by Johto Data.