PDF Text Extractor - Watch PDFs and Get Only What Changed
Pricing
from $3.65 / 1,000 pdf text extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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
| Pages | Text | |
|---|---|---|
IRS Form W-9 (irs.gov/pub/irs-pdf/fw9.pdf) | 6 | 21,855 characters from the first 3 pages |
Attention Is All You Need (arxiv.org/pdf/1706.03762) | 15 | 9,175 characters from the first 3 pages |
W3C dummy.pdf | 1 | 15 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,previousCharCountandcharCountDelta, so you can see how much of the document moved without diffing it yourself. isFirstChecksays 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:
| Field | What it is |
|---|---|
url, finalUrl, httpStatus | The link you gave, where it ended up after redirects, and the status |
numPages, pagesExtracted | How many pages the PDF has, and how many were read (page range / limits) |
title, author, subject, keywords, creator, producer | The PDF's own metadata, as it stores it |
createdAt, modifiedAt | The dates inside the PDF, converted to ISO. null when the PDF does not carry them |
pdfVersion, isEncrypted, sizeBytes | The file itself |
charCount, wordCount | Size of the extracted text |
text | The whole document as one string |
pages | Per-page text, when you ask for it |
contentHash | A short hash of the text — the thing monitoring compares |
previousContentHash, previousCharCount, charCountDelta, isFirstCheck | Filled in when monitoring |
status, reason | ok, 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 range —
1-5,2, or1-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 aspassword-required. - The PDF is identified by its
%PDF-header, not by the file extension, so a URL without.pdfstill works and a.pdfURL that serves an error page is reported asnot-a-pdf. - Downloads run in parallel; set Max concurrency to be gentler on a server that hosts many of your files.