PDF Text Extractor - Watch PDFs and Get Only What Changed avatar

PDF Text Extractor - Watch PDFs and Get Only What Changed

Pricing

from $3.65 / 1,000 pdf text extracteds

Go to Apify Store
PDF Text Extractor - Watch PDFs and Get Only What Changed

PDF Text Extractor - Watch PDFs and Get Only What Changed

For watching published price lists, tariffs, timetables and terms, and for feeding RAG pipelines: PDF links in, text out, one row per PDF with page count, title, author and dates. The IRS W-9 gave 21,855 characters on 2026-09-07. Watch the same URLs and a PDF returns only when its text changed.

Pricing

from $3.65 / 1,000 pdf text extracteds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

PDF Text Extractor — watch PDFs and get only what changed

For watching a published price list, a timetable, a set of terms, a tariff or a regulatory document: give it PDF links and it returns the text, the page count, the title, the author and the dates, one row per PDF — and it can watch the same PDFs and return one only when its text has actually changed.

Measured on 2026-09-07: IRS Form W-9 (irs.gov/pub/irs-pdf/fw9.pdf) — 6 pages, 21,855 characters from the first 3. Attention Is All You Need (arxiv.org/pdf/1706.03762) — 15 pages, 9,175 characters from the first 3.

A daily watch costs nothing on the days nothing moved, because unchanged PDFs are neither returned nor charged. You are charged per PDF that actually produced text: a 404, a 403, a password-protected file, a URL that answers with something that is not a PDF, and a file over the size limit each come back as their own row with the reason, and none of them are billed.

Take a page range (1-5, 2, 1-3,7) or the whole file, and optionally drop repeated headers and footers — the lines that appear on 70% or more of the pages, which is what a running header is. No API key. Export as JSON, CSV or Excel.

What it does not do

  • It does not read scanned paper. A PDF that is only images has no text layer. This Actor reports that as no-text, with the page count and the reason, and does not charge for it. It does not guess, and it does not return an empty document as if the PDF were blank.
  • It does not do OCR, and it does not render pages to images.

Measured on 2026-09-07

PDFPagesText
IRS Form W-9 (irs.gov/pub/irs-pdf/fw9.pdf)621,855 characters from the first 3 pages
Attention Is All You Need (arxiv.org/pdf/1706.03762)159,175 characters from the first 3 pages
W3C dummy.pdf115 characters

Each of those took between 0.1 and 1.4 seconds to download and read.

Four failure paths were checked against live URLs and each returns a reason instead of a blank row: HTTP 404, HTTP 403, a URL that answers with something that is not a PDF, and a file over the size limit.

Monitoring mode

Turn on Monitoring mode and the Actor remembers the text of every PDF it returned.

  • The first run returns every PDF and remembers it.
  • Every run after that returns a PDF only if its text is different.
  • Each returned row carries previousContentHash, previousCharCount and charCountDelta, so you can see how much of the document moved without diffing it yourself.
  • isFirstCheck says whether this URL had ever been seen before.
  • When nothing has changed, one row explains that and nothing is charged.

The key is the URL plus a hash of the extracted text. Re-uploading the same document under a new file name is treated as a new document; editing a document in place is treated as a change.

What comes back

One row per PDF:

FieldWhat it is
url, finalUrl, httpStatusThe link you gave, where it ended up after redirects, and the status
numPages, pagesExtractedHow many pages the PDF has, and how many were read (page range / limits)
title, author, subject, keywords, creator, producerThe PDF's own metadata, as it stores it
createdAt, modifiedAtThe dates inside the PDF, converted to ISO. null when the PDF does not carry them
pdfVersion, isEncrypted, sizeBytesThe file itself
charCount, wordCountSize of the extracted text
textThe whole document as one string
pagesPer-page text, when you ask for it
contentHashA short hash of the text — the thing monitoring compares
previousContentHash, previousCharCount, charCountDelta, isFirstCheckFilled in when monitoring
status, reasonok, or why this PDF could not be turned into text

A field the PDF does not state comes back as null. Nothing is filled in with a zero or an empty string.

Page range, limits and filters

  • Page range1-5, 2, or 1-3,7. Empty means every page.
  • Maximum pages per PDF — stop after N pages of each document.
  • Maximum PDF size (MB) — a larger file is reported with its real size instead of being downloaded in full.
  • Remove repeated headers and footers — drops lines that appear on 70% or more of the pages, which is what a running header or footer looks like. It only applies from 3 pages up, because below that there is nothing to compare against.
  • Keywords / Exclude keywords / Minimum characters — filter the documents you already fetched. Nothing extra is downloaded to apply them.

Pricing

Charged per PDF that actually produced text. A PDF that could not be read — a 404, a 403, a password-protected file, a scanned document with no text layer, or a file over your size limit — is returned with the reason and is not charged.

Notes

  • Passwords go in pdfPassword. A protected PDF without one is reported as password-required.
  • The PDF is identified by its %PDF- header, not by the file extension, so a URL without .pdf still works and a .pdf URL that serves an error page is reported as not-a-pdf.
  • Downloads run in parallel; set Max concurrency to be gentler on a server that hosts many of your files.