PDF Text Extractor for LLMs: text per page from PDF URLs avatar

PDF Text Extractor for LLMs: text per page from PDF URLs

Pricing

$1.00 / 1,000 page extracteds

Go to Apify Store
PDF Text Extractor for LLMs: text per page from PDF URLs

PDF Text Extractor for LLMs: text per page from PDF URLs

Plain text extraction from PDF files by URL, up to 200 files per run: one row per page (or one per file) with the text, page count, title, author, dates, producer and file size, plus whether the page has a text layer at all. Pay per page delivered.

Pricing

$1.00 / 1,000 page extracteds

Rating

0.0

(0)

Developer

Steadydata Team

Steadydata Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

PDF Text Extractor: text per page from PDF URLs, with metadata

Plain text from PDF files by URL, up to 200 files per run: one row per page (or one per file) with the text, page count, title, author, dates, producer and file size, plus whether the page has a text layer at all. Pay per page delivered.

Why this scraper

  • Only delivered results are charged. Inputs that fail come back as clear error records at no cost.
  • Pure Python parsing, no browser and no OCR engine: a 15-page research paper comes back page by page in a few seconds. Measured on the platform: two files, six pages, for a hundredth of a cent.
  • One row per page (or one per file), with the character count and a hasTextLayer flag per page, so scanned pages show up as exactly that instead of silently empty. The document's own metadata rides along: title, author, subject, creation and modification dates as ISO timestamps, producer, file size, encryption flag. Every URL is checked against its host's robots.txt before the file is fetched, and files above 50 MB are refused for free.

Who this is for

Paste direct PDF links in urls (up to 200 per run). Leave mergePages off for one row per page, or switch it on for one row per file with all pages joined (that row counts as one delivered page). maxPagesPerFile caps the cost per file. Every row carries the URL, file name, page number, page count, text, character count, text-layer flag, title, author, subject, dates, producer, file size and encryption flag.

Who this is not for

This reads the text layer; a scanned PDF (images of pages) comes back with empty text and hasTextLayer false on every page, because there is nothing to read without OCR. Title, author and subject are whatever the producing software wrote into the file, and most files carry no title or subject at all (a research paper from LaTeX has a producer but no author field). Reading order follows the PDF's internal order, which can differ from the visual layout in multi-column documents. Password-protected files and pages that pypdf cannot parse are reported, not charged.

Input example

{
"urls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
],
"mergePages": false,
"maxPagesPerFile": 200
}

Output example

  • url
  • fileName
  • page
  • pageCount
  • text
  • characters
  • hasTextLayer
  • title
  • author
  • subject
  • createdAt
  • modifiedAt
  • producer
  • fileBytes
  • encrypted

Error codes: INVALID_URL, ROBOTS_DISALLOWED, NOT_A_PDF, FETCH_FAILED, TOO_LARGE, BLOCKED.

One delivered row looks like this:

{
"url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"fileName": "dummy.pdf",
"pageCount": 1,
"title": null,
"author": "Evangelos Vlachogiannis",
"subject": null,
"createdAt": "2007-02-23T17:56:37",
"modifiedAt": null,
"producer": "OpenOffice.org 2.1",
"fileBytes": 13264,
"encrypted": false,
"page": 1,
"text": "Dummy PDF file",
"characters": 14,
"hasTextLayer": true,
"status": "ok"
}

Pricing

Pay per event: one page-extracted event per delivered result. No charge for inputs that fail, no separate platform-usage surcharge.

Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.

Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.

FAQ

Does it do OCR? No. It extracts the existing text layer; the hasTextLayer flag tells you which pages would need OCR.

Can I get the whole document as one text? Yes, switch on mergePages; you pay one event for the file instead of one per page.

What about very large files? Files above 50 MB are refused as a free error row; use maxPagesPerFile to cap long documents.

Where do the URLs come from? Any direct PDF link: your own site, the Sitemap URLs actor below, a search result. A page that returns HTML instead of a PDF is a free NOT_A_PDF error row.

Do I pay for a file that fails? No. Only delivered pages (or merged files) are charged.

Is personal data collected? page is 1-based, or 0 for a merged file; characters counts the cleaned text; createdAt and modifiedAt are the PDF info dates as ISO timestamps without a time zone.

What happens when the source changes? Sources change from time to time; that is the nature of this work. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered results cost anything.