PDF Toolkit API – Merge, Split, Compress, PDF to Image
Pricing
$3.00 / 1,000 output files
PDF Toolkit API – Merge, Split, Compress, PDF to Image
Merge, split, compress, rotate and extract pages from PDFs by URL, convert PDF to PNG/JPG images or read PDF info (pages, metadata, encryption, text layer). Download links for every file. No API key, no uploads to third parties. Pay per output file.
Pricing
$3.00 / 1,000 output files
Rating
0.0
(0)
Developer
Fast Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
PDF Toolkit API – Merge, Split, Compress, Rotate, Extract Pages, PDF to Images
Do the everyday PDF jobs in one API call: merge PDFs, split a PDF, extract pages, compress / shrink a PDF, rotate pages, convert PDF to PNG or JPG, or read PDF info (page count, size, encryption, metadata, text layer). Give it PDF URLs; you get one dataset row per result file, each with a direct download link.
- No API key, no account at a third-party PDF service, no file uploads to "free PDF" websites.
- Runs on CPU in an isolated Apify container with PyMuPDF. Your files stay in your own Apify storage.
- Pay only for files that were actually produced: $0.003 per output file. 404s, broken, too-large and password-protected PDFs are free and reported with a status.
Who it's for
- n8n / Make / Zapier automations that receive PDFs from e-mail, forms, CRMs or cloud drives.
- Back-office teams merging invoices, splitting scanned batches, shrinking attachments.
- Developers and AI agents that need a simple PDF API without running Ghostscript, Poppler or a server.
Operations
| operation | What it does | Output |
|---|---|---|
merge | Combines all pdfUrls into one PDF, in the given order | 1 PDF |
split | One PDF every everyNPages pages, or one PDF per range in ranges ("1-3,4-6,7-") | 1 PDF per part |
extract | Keeps only pages ("1-3,5,last") in a new PDF | 1 PDF per source |
compress | Downsamples and recompresses images, subsets fonts, removes unused/duplicate objects, thumbnails and XMP, packs object streams. compressionLevel: low (smallest), medium, high (print-friendly). If the result would be bigger, the original is kept. | 1 PDF per source + savedPercent |
rotate | Rotates pages (empty = all) by degrees (90/180/270, -90) | 1 PDF per source |
toImages | Renders pages to PNG or JPG at dpi (36–400), up to maxPages per PDF, optional pages filter | 1 image per page |
info | Pages, PDF version, size, encrypted?, password required?, text layer?, likely scanned?, page size (A4/Letter...), form fields, bookmarks, title/author/producer/dates | 1 row per PDF, no file |
Why this actor
- One actor for all PDF basics instead of one actor (and one price) per operation.
- Cheap and predictable: $0.003 per file, about 3x cheaper than comparable PDF actors charging $0.01 per merge/compress.
- Robust: a bad URL or encrypted PDF never breaks the run; in a merge, the other PDFs are still merged and the bad one gets an error row.
- Flat, AI-friendly output: same fields for every operation, ready for spreadsheets, n8n and LLM tools.
- Size cap (
maxFileSizeMb, default 100 MB) protects you from surprise downloads.
Input example
{"operation": "merge","pdfUrls": ["https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf","https://raw.githubusercontent.com/mozilla/pdf.js/master/examples/learning/helloworld.pdf"],"outputName": "invoices-october"}
More examples:
{ "operation": "split", "ranges": "1-3,4-", "outputName": "paper", "pdfUrls": ["https://example.com/report.pdf"] }{ "operation": "compress", "compressionLevel": "medium", "pdfUrls": ["https://example.com/brochure.pdf"] }{ "operation": "toImages", "dpi": 150, "imageFormat": "jpg", "maxPages": 10, "pdfUrls": ["https://example.com/deck.pdf"] }{ "operation": "rotate", "degrees": 90, "pages": "2,4", "pdfUrls": ["https://example.com/scan.pdf"] }
Output example
Real rows from test runs:
{"operation": "merge","status": "ok","fileName": "merged.pdf","url": "https://api.apify.com/v2/key-value-stores/LRlb1h92peZhGvvRh/records/merged.pdf?signature=...","pages": 2,"sizeBytes": 12459,"originalSizeBytes": 13942,"inputFiles": 2,"sourceUrls": ["https://www.w3.org/.../dummy.pdf", "https://raw.githubusercontent.com/.../helloworld.pdf"]}
{"operation": "compress","status": "ok","fileName": "tracemonkey-compressed.pdf","url": "https://api.apify.com/v2/key-value-stores/fsFGXB74KKBsaO2NG/records/tracemonkey-compressed.pdf?signature=...","pages": 14,"sizeBytes": 815272,"originalSizeBytes": 1016315,"savedPercent": 19.8,"qualityLevel": "low"}
{"operation": "info","status": "ok","fileName": "dummy.pdf","sizeBytes": 13264,"pages": 1,"pdfVersion": "1.4","encrypted": false,"passwordRequired": false,"hasTextLayer": true,"likelyScanned": false,"pageSize": "A4","author": "Evangelos Vlachogiannis","producer": "OpenOffice.org 2.1","creationDate": "2007-02-23T17:56:37"}
Failed items look like {"operation": "info", "status": "not_found", "error": "HTTP 404: the file does not exist at this URL.", "sourceUrls": [...]}. Possible statuses: ok, not_found, access_denied, not_a_pdf, too_large, encrypted, invalid_pdf, page_out_of_range, invalid_input, download_failed.
Files are stored in the run's default key-value store; the url field is a ready-to-use download link. Text-heavy PDFs (like the test paper above) shrink less than PDFs with large photos or scans, where 60–90 % savings are typical.
Use cases (n8n, Make, Zapier)
- Merge invoices: collect the month's invoice PDFs from Gmail / Drive and merge them into one file for your accountant.
- Split scans: a scanner produces one long PDF; split it every 2 pages or by ranges and file each document in the right folder.
- Shrink attachments before e-mail: compress PDFs over 10 MB so they pass mail-server limits.
- Extract the signature page of a contract or the first page of each report.
- Fix sideways scans with
rotate. - Thumbnails and previews:
toImageswithmaxPages: 1for a cover image; 300 DPI PNGs as input for OCR or vision LLMs. - Triage incoming PDFs with
info: is it encrypted, scanned (no text layer), how many pages?
Pricing
Pay per event: $0.003 per output file (each merged/split/extracted/compressed/rotated PDF, each page image, or each PDF analysed with info). Failed, missing, too-large and encrypted PDFs are not charged. Example: merging 20 invoices = $0.003; converting a 10-page PDF to images = $0.03. Apify platform usage is billed by Apify as usual and is very low (a few seconds of CPU for typical files).
API usage
curl -X POST "https://api.apify.com/v2/acts/fast_data_asap~pdf-toolkit-merge-split-compress/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"operation":"compress","compressionLevel":"medium","pdfUrls":["https://example.com/file.pdf"]}'
The response is the list of result rows; download each file from its url.
n8n / Make: use the Apify node/app, action "Run Actor and get dataset items" with actor fast_data_asap/pdf-toolkit-merge-split-compress, pass the input JSON, then use an HTTP Request module on each row's url to fetch the file.
MCP (Claude, Cursor, AI agents): add https://mcp.apify.com?tools=fast_data_asap/pdf-toolkit-merge-split-compress as an MCP server so your agent can merge, split or compress PDFs on demand.
Limits and notes
- Input must be a direct link that returns the PDF (not an HTML viewer page). Private links need to be signed/shared download links.
- Password-protected PDFs (user password) cannot be opened and return
status: encryptedfor free. PDFs with only an owner password (printing/copy restrictions) are processed. - Default file-size cap is 100 MB per PDF (
maxFileSizeMb). For very large PDFs or many 300-DPI images, increase run memory. - Compression works best on image-heavy PDFs; vector/text-only PDFs are already compact.