PDF to Text Extractor: Bulk PDF Scraper & Parser for RAG avatar

PDF to Text Extractor: Bulk PDF Scraper & Parser for RAG

Pricing

$5.00 / 1,000 pdf extracteds

Go to Apify Store
PDF to Text Extractor: Bulk PDF Scraper & Parser for RAG

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

Johto Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Security

Limited permissions

Share

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

  1. Add PDF URLs to startUrls. Each entry can be a URL string or an object with a url field.
  2. Keep the default file-size and page limits, or lower them for your documents.
  3. 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.

FieldMeaning
url, loadedUrlSupplied URL and final download URL; final URL is present on success
status, errorsuccess or error, with an error code on failure
textExtracted document text, with blank lines between pages
pageCountTotal number of PDF pages, including pages without text
wordCount, characterCountWhitespace-delimited word count and extracted text length
metadataTitle, author, subject, creator, producer and creation/modification dates, where present
fileSizeBytesDownloaded PDF byte count
extractedAtExtraction 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

FieldDefaultLimit
startUrlsRequired1 to 1,000 URLs
maxFileSizeMb201 to 50 MiB per download
maxPages3001 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 ApifyActorsTool
tool = 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.