Scrapers / Developer & File Tools

PDF to Text & Markdown
hipersoft/pdf-to-text-extractor
Extract clean text or Markdown from PDFs in bulk — with an optional per-page JSON view. Feed the output straight into RAG pipelines, LLM prompts and n8n/Make/Zapier steps.
Total users
2Monthly users
1Total runs
76Per pdf extracted
$0.004Last rebuilt
Oct 26, 2026Overview
Turn a list of PDF links into clean, ready-to-use text or Markdown — in bulk. Extract the text layer from every PDF, save each result as a file, and get a tidy dataset row per document.
What it does
- Extracts clean text from the text layer of each PDF.
- Outputs plain text, Markdown, or per-page JSON (page number → text).
- Saves one result file per PDF and returns pages, characters and words for each.
- Processes many PDFs in one run — one dataset row per document.
Use cases
- RAG pipelines — extract, then feed the text to your embedding/indexing step.
- LLM prompts — drop clean document text straight into your AI step for summaries, Q&A or classification.
- n8n / Make / Zapier — run this as a step, then pass the text on to your AI or database node.
- Content & research — pull the readable text out of reports, invoices, papers and manuals at scale.
Input
{
"pdfUrls": [
"https://example.com/report.pdf",
"https://example.com/invoice.pdf"
],
"output": "text"
}
| Field | Type | Description |
|---|---|---|
pdfUrls |
array | Direct links to the PDF files to extract text from. |
output |
string | text, markdown, or pages (per-page JSON). |
Output
Each PDF produces one dataset row, plus a saved result file you can download.
{
"url": "https://example.com/report.pdf",
"pages": 12,
"chars": 18540,
"words": 3120,
"resultUrl": "https://api.apify.com/v2/key-value-stores/.../records/doc-0001.txt",
"ok": true
}
Output schema
| Field | Type | Description |
|---|---|---|
url |
string | The source PDF URL. |
pages |
integer | Number of pages in the PDF. |
chars |
integer | Character count of the extracted text. |
words |
integer | Word count of the extracted text. |
resultUrl |
string | Link to the saved text / Markdown / JSON file. |
ok |
boolean | Whether extraction succeeded for this PDF. |
FAQ
Does it work on scanned PDFs? It reads the embedded text layer. Image-only scans with no text layer will return little or no text.
Can I automate it? Yes — via integrations on the Apify platform (including n8n, Make and Zapier) and the Apify API.
How am I charged? A flat fee per PDF processed.
Notes
Original clean-room implementation.
Input
| Field | Type | Description |
|---|---|---|
pdfUrls requiredPDF URLs | array | List of direct links to PDF files to extract text from. Each URL should point to a downloadable PDF. |
outputOutput format | string · text, markdown, pages | Choose the saved format: plain text, Markdown, or a per-page JSON file (page number → text). Default: "text" |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~pdf-to-text-extractor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"pdfUrls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/pdf-to-text-extractor").call(run_input={
"pdfUrls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/pdf-to-text-extractor').call({
"pdfUrls": [
"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| PDF Extracted Charged per PDF processed to text/markdown. | $0.004 | $0.002 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Bulk Image Downloader
Download thousands of images from a list of URLs and store each in the key-value store with a public link. Returns content type, size, dimensions and SHA-256 per image. Bulk-ready. Great for datasets, backups and media pipelines.
8,102 runs · 103 users · $0.056 / url processedText to Speech
Convert any text to natural-sounding speech as an MP3 download. 300+ premium neural voices across 70+ languages, adjustable rate, pitch and volume. Great for voiceovers, videos, accessibility and audio content. No setup.
278 runs · 22 users · $0.01 / audio generatedGoogle Maps Email Extractor
Search Google Maps for businesses, then crawl each business website to extract emails, social profiles and extra phone numbers. Turns any Maps search into a ready lead list. No setup.
159 runs · 8 users · $0.006 / business lead scrapedWebsite Screenshot
Capture full-page or viewport screenshots of any URL as PNG or JPEG, at any device size. For monitoring, previews, thumbnails and automation workflows.
156 runs · 3 users · $0.004 / screenshot capturedBulk URL Status Checker
Check thousands of URLs over plain HTTP: status codes, broken links (404/410/5xx), full redirect chains, response time, content type, page title and SSL certificate expiry.
154 runs · 13 users · $0.002 / url checkedGoogle Search Scraper
Scrape Google Search results (organic listings) for any query: title, URL, displayed URL, snippet and position. Multi-query, per-country/language, pagination. Uses Google SERP proxy — reliable, no captcha, no setup.
121 runs · 8 users · $0.001 / result scrapedSend the site and the fields. We build it and you get it first.