PDF Invoice Extractor
Pricing
from $1.00 / 1,000 result items
PDF Invoice Extractor
Turn PDF invoices into structured data from URLs. Extract vendor, invoice number, dates, line items, tax/VAT, subtotal, total, and currency. Uses pdfplumber for reliable text extraction — no upload, no API key, no manual entry. Built for accountants, bookkeepers, and expense managers.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
soot
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Turn PDF invoices into structured data — paste a URL, get clean JSON. No upload, no API key, no manual entry.
Built for accountants, bookkeepers, and expense managers who need reliable invoice data extraction at scale. Drop in one or a hundred PDF URLs and get back vendor, invoice number, dates, line items, tax, totals, and currency — all in a clean, analysis-ready JSON dataset.
Why this Actor?
| Feature | PDF Invoice Extractor | Competitors |
|---|---|---|
| Input method | Direct URL (no upload needed) | Often requires file upload or base64 |
| Processing engine | pdfplumber (reliable, fast text extraction) | pdfjs, OCR-only, or external AI APIs |
| Batch support | ✅ Multiple URLs per run | Often single-document only |
| Line items | ✅ Structured table extraction | Often raw text only |
| Tax/VAT | ✅ Separate tax field extraction | Mixed with total |
| Confidence score | ✅ Per-document extraction confidence | Rarely provided |
| Pricing | $0.05 start + $0.001/result | $0.01–$0.10 per document |
The URL input advantage: No need to download, store, or upload PDFs. If you can link to an invoice, this Actor can parse it. Works with public URLs from supplier portals, email attachments, cloud storage — anywhere a PDF is accessible via HTTP(S).
What it does
- Downloads PDF from the URL(s) you provide
- Extracts text using pdfplumber (handles native PDFs, not just scanned images)
- Parses structured fields: vendor, invoice number, date, subtotal, total, tax/VAT, currency
- Extracts line items from PDF tables with description and amount
- Scores confidence so you know which results need manual review
- Outputs a clean JSON dataset ready for CSV export, accounting software, or further processing
Features
- 🔗 URL input only — no file upload, no storage needed
- 📊 Structured line items — table rows with description + amount
- 🧾 Tax/VAT extraction — separate tax field, not buried in total
- 🌍 Multi-currency — detects USD, EUR, GBP and explicit currency codes
- 📈 Confidence scoring — per-document extraction quality indicator
- ⚡ Batch processing — hundreds of URLs in a single run
- 🔒 No external APIs — runs entirely within Apify infrastructure
- 💰 Pay-per-event — $0.05 start fee + $0.001 per result item
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
pdfUrls | array[string] | Yes* | — | Direct URLs to PDF invoices or receipts. |
pdfUrl | string | Yes* | — | Single PDF URL (convenience alternative to pdfUrls). |
includeRawText | boolean | No | false | Include the full extracted text in the output (useful for debugging). |
*Provide either pdfUrls (array) or pdfUrl (single string).
Input example
{"pdfUrls": ["https://example.com/inv-2024-001.pdf","https://example.com/inv-2024-002.pdf","https://example.com/receipt-march.pdf"],"includeRawText": false}
Output
Each result contains:
| Field | Type | Description |
|---|---|---|
vendor | string | Vendor/supplier name (first line or detected from "From"/"Seller" patterns) |
invoiceNumber | string | Invoice or bill number |
date | string | Invoice date (ISO or common formats) |
subtotal | string | Net amount before tax |
total | string | Total amount due |
tax | string | Tax/VAT/GST amount |
currency | string | Detected currency (USD, EUR, GBP, or explicit code) |
lineItems | array | Structured line items with description, raw cells, and amount |
confidence | number | Extraction confidence 0.0–1.0 (based on key fields found) |
pages | integer | Number of PDF pages |
sourceUrl | string | Original PDF URL |
characterCount | integer | Total extracted characters |
rawText | string | Full extracted text (only if includeRawText: true) |
Output example
{"vendor": "Acme Supplies Inc.","invoiceNumber": "INV-2024-001","date": "2024-03-15","subtotal": "1,250.00","total": "1,375.00","tax": "125.00","currency": "USD","lineItems": [{"description": "Widget A — 10 units","raw": ["Widget A", "10", "50.00", "500.00"],"amount": "$500.00"},{"description": "Widget B — 5 units","raw": ["Widget B", "5", "150.00", "750.00"],"amount": "$750.00"}],"confidence": 1.0,"pages": 1,"sourceUrl": "https://example.com/inv-2024-001.pdf","characterCount": 842}
Usage
Via Apify CLI
apify call sootesting/pdf-invoice-extractor --input '{"pdfUrls": ["https://example.com/invoice.pdf"]}'
Via cURL
curl -X POST "https://api.apify.com/v2/acts/sootesting~pdf-invoice-extractor/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"pdfUrls": ["https://example.com/invoice.pdf"]}'
Via Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("sootesting/pdf-invoice-extractor").call(run_input={"pdfUrls": ["https://example.com/invoice.pdf"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Pricing
| Event | Price | Description |
|---|---|---|
| Actor start | $0.05 | Charged once per run (1 GB memory) |
| Per result | $0.001 | Charged per successfully extracted document |
Example: Processing 100 invoices costs $0.05 + $0.10 = $0.15 total.
Limitations
- Requires publicly accessible PDF URLs (no authentication-protected links)
- Works best with text-based PDFs (not scanned images — for scanned documents, use an OCR-based extractor)
- Very complex multi-page tables may have incomplete line item extraction
- Confidence score < 0.5 suggests manual review recommended
Related
- Invoice & Receipt Data Extractor — OCR-based, supports images
- Receipt & Invoice OCR — PDF + image to JSON/CSV
- PDF Table Extractor — table-focused extraction
Built with pdfplumber for reliable text extraction. No external AI APIs, no per-token costs.