PDF Text Extractor & Change Monitor avatar

PDF Text Extractor & Change Monitor

Pricing

from $0.05 / 1,000 pdf page extracteds

Go to Apify Store
PDF Text Extractor & Change Monitor

PDF Text Extractor & Change Monitor

Extract text, page content, metadata, and RAG-ready chunks from PDFs. Monitor content, page, and metadata changes across runs.

Pricing

from $0.05 / 1,000 pdf page extracteds

Rating

0.0

(0)

Developer

ProdukDigitalAli

ProdukDigitalAli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract searchable text, per-page content, metadata, hashes, and optional RAG-ready chunks from public PDFs. Turn on monitoring to detect exactly when a document is new, its text changes, pages are added/removed, or metadata changes.

This Actor is designed for recurring document intelligence rather than one-off PDF parsing: regulatory documents, product catalogs, tender PDFs, research reports, public policies, manuals, supplier price lists, and knowledge-base sources can be re-run on a schedule with stable change events.

Key features

  • Batch public PDF URLs plus an easy Apify file-upload input
  • Full normalized text and optional per-page text
  • PDF title/author/creator/producer/date metadata
  • Stable document ID, file hash, content hash, metadata hash, and per-page hashes
  • Optional page-aware RAG chunks with stable chunk IDs
  • Detects likely scanned/textless PDFs without pretending OCR succeeded
  • Password support for PDFs you are authorized to access
  • Monitoring events: NEW, CONTENT_CHANGED, PAGE_ADDED, PAGE_REMOVED, METADATA_CHANGED, UNCHANGED
  • Safe monitoring: failed/unavailable PDFs retain prior state and are never treated as removed
  • Private/local network URLs are blocked

Quick start

{
"pdfUrls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
],
"includeFullText": true,
"includePageText": true,
"includeChunks": false,
"monitorMode": false
}

Monitor PDF changes

Run the same document identity repeatedly using the same monitorKey:

{
"documents": [
{
"url": "https://example.com/regulation.pdf",
"documentId": "regulation-2026",
"label": "Regulation 2026"
}
],
"monitorMode": true,
"emitChangesOnly": true,
"monitorKey": "regulatory-watch"
}

A stable explicit documentId is recommended for signed URLs or URLs whose query string changes between runs.

RAG-ready chunks

{
"pdfUrls": ["https://example.com/manual.pdf"],
"includeChunks": true,
"chunkSizeCharacters": 1800,
"chunkOverlapCharacters": 200
}

Chunks are page-aware and include chunkId, pageNumber, chunkIndex, text, textHash, and characterCount.

Important output fields

  • documentId, label, inputUrl, finalUrl
  • pageCount, textPageCount, characterCount
  • fullText, pageTexts[], chunks[]
  • metadata
  • fileHash, contentHash, metadataHash
  • likelyScanned, ocrRecommended, textTruncated
  • changeType, changedPages, pageDiffs[], addedLineCount, removedLineCount
  • previousPageCount, previousContentHash, previousMetadataHash, previousFileHash

Monitoring semantics

  • NEW: no previous state exists for this document identity
  • CONTENT_CHANGED: one or more page text hashes changed while page count stayed the same; bounded line-level added/removed snippets are emitted when previous text is stored
  • PAGE_ADDED: current PDF has more pages than the previous successful observation
  • PAGE_REMOVED: current PDF has fewer pages than the previous successful observation
  • METADATA_CHANGED: extracted text/pages are unchanged but PDF metadata changed
  • UNCHANGED: meaningful monitored fields are unchanged

Monitoring state is stored per document rather than as one giant batch record, so adding PDFs to an existing monitor does not reset baselines and large batches do not create an oversized state record.

If a PDF download or parse fails, its previous state is preserved. A transient network problem will not be reported as a removed document.

Scanned PDFs / OCR

Version 1 intentionally does not perform OCR. A PDF with no extractable text, or a document where most pages are textless and the remaining extracted text is sparse, is marked with likelyScanned: true and ocrRecommended: true. Short digital PDFs that still contain extractable text are not flagged just because they have a low character count. This keeps normal extraction fast, cheap, and predictable. OCR can be added later as a separately priced feature if demand justifies it.

Pricing

This Actor is designed for transparent workload-based Pay Per Event pricing:

  • PDF megabyte processed: $0.0003 per started MiB (1,048,576 bytes) of each successfully processed PDF.
  • PDF page processed: $0.00005 per page of each successfully processed PDF.
  • The standard Apify Actor-start event may also apply.

For example, a PDF smaller than 1 MiB with 3 pages costs about $0.00045 in document-processing events. A batch of 1,000 similar PDFs is about $0.45, plus the small run-start event.

Why two workload units? File size tracks network-transfer cost while page count tracks extraction work, so small PDFs stay inexpensive without making very large or very long PDFs economically unsafe.

A successfully checked monitoring document is processed work even when emitChangesOnly=true suppresses an UNCHANGED dataset row. Failed PDFs are reported in RUN_SUMMARY and are not charged by these custom workload events.

Performance sanity check

A controlled Apify Cloud benchmark using a 3-page public PDF with full text, per-page text, and RAG chunks enabled completed 10/50/100-document batches successfully. The 100-document batch produced 100 results / 300 pages / 700 chunks in about 15 seconds in that test. Real-world speed varies with PDF size, page count, origin-server latency, and concurrency.

Responsible use

Process only documents you are authorized to access. The Actor works with public URLs or files supplied by the user and does not bypass authentication or access controls.