PDF Toolkit – Merge, Split, Compress, Rotate & Unlock PDFs
Pricing
from $3.00 / 1,000 pdf outputs
PDF Toolkit – Merge, Split, Compress, Rotate & Unlock PDFs
Merge PDFs, split by page, ranges, every N pages or bookmarks, extract and reorder pages, rotate, compress (image recompression, size before/after), add or remove a password, strip metadata, get page count and info. URLs or uploads. $3 per 1,000 files + $0.20 per 1,000 pages.
Pricing
from $3.00 / 1,000 pdf outputs
Rating
0.0
(0)
Developer
Cemal Atakli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Merge PDF files, split PDFs, extract or reorder pages, rotate, compress, add or remove a password, strip metadata and get the page count, all in one Apify Actor. Paste PDF links or upload files from your computer. Each output PDF is saved with a public download link, and you get one clean dataset row per file. No Ghostscript, no browser, no sign-up on a third-party site. It runs on open-source qpdf (pikepdf) and Pillow.
Price: $3 per 1,000 output files + $0.20 per 1,000 pages. Merging two PDFs into a 7-page file costs $0.0044. Errors are free.
What it does
| Operation | What you get |
|---|---|
Merge (merge) | Many PDFs into one, in the order you list them, with an optional bookmark per source file. Form fields and internal links are kept |
Split (split) | One PDF per page, per custom range (1-3, 4-6, 7-), every N pages, or per top-level bookmark/chapter. Optional ZIP of all parts |
Extract pages (extract) | A new PDF with the pages you choose, in your order (1-3, 5, -1 = last page, odd, even) |
Rotate (rotate) | Rotate all pages or selected ones by 90°, 180° or 270° |
Reorder (reorder) | Any new order, reverse, or duplicates (3, 1, 2, 4-) |
Compress (compress) | Re-encodes large images as JPEG at the quality you pick, downscales oversized images, and compresses the structure (object streams, Flate). Text and vector graphics stay sharp. Reports size before and after. If the result is not smaller, you get the original back |
Add password (encrypt) | AES-256 encryption with an open password and/or owner password, and print/copy/edit permissions |
Remove password (decrypt) | Removes the open password (you supply it) or permission restrictions from your own PDFs |
Remove metadata (remove-metadata) | Removes author, title, creator, producer and dates, XMP metadata and app private data |
Info (info) | Page count, page size (A4/Letter…), PDF version, encryption and permissions, image count, bookmarks, forms, metadata. No output file |
Use cases
- Automation and no-code: merge invoices or reports in Make, Zapier or n8n, then email the merged link.
- OCR and AI pipelines: split long PDFs into chapters or N-page chunks before OCR or LLM processing. Get page counts first with
info. - Back office: compress scanned PDFs for email limits (often 90%+ smaller), protect contracts with a password, strip author metadata before publishing.
- Bulk cleanup: rotate sideways scans, reorder pages, extract the signed page.
Input example
{"operation": "split","pdfUrls": ["https://www.irs.gov/pub/irs-pdf/fw9.pdf"],"splitMode": "ranges","splitRanges": "1-3, 4-6","createZip": true}
More examples:
- Merge:
{"operation": "merge", "pdfUrls": ["https://…/a.pdf", "https://…/b.pdf"], "outputFileName": "report"} - Compress:
{"operation": "compress", "pdfUrls": ["https://…/scan.pdf"], "compressionLevel": "high"} - Password:
{"operation": "encrypt", "pdfUrls": ["https://…/contract.pdf"], "userPassword": "…", "allowCopying": false}
Files can be direct PDF URLs (Google Drive, Dropbox and GitHub share links are converted automatically), uploaded files ("Or upload PDFs"), or both. For merge, the order of the list is the page order (URLs first, then uploads).
Output example
One row per output file. The PDF itself is in the run's key-value store, and pdfUrl is its download link.
{"type": "pdf","status": "ok","operation": "compress","fileName": "scan-compressed.pdf","pdfUrl": "https://api.apify.com/v2/key-value-stores/…/records/scan-compressed.pdf","pages": 3,"bytes": 210086,"sourceUrl": "https://example.com/scan.pdf","sourceFileName": "scan.pdf","sourcePages": 3,"compressionLevel": "medium","imagesRecompressed": 3,"sizeBefore": 20457108,"sizeAfter": 210086,"reductionPct": 99.0}
Merge rows also list sources (file, first page, pages). Split rows have pageRange, part, partsTotal and zipUrl. info rows have pages, pdfVersion, encrypted, permissions, pageSize, images, bookmarks, hasForm and metadata. Errors are rows with type: "error", an errorCode and a message, and they are not charged. A SUMMARY record in the key-value store has the run totals.
Pricing
Pay per event: $0.003 per output file + $0.0002 per page in the output. An info report is $0.003 with no page charge. Errors, ZIPs and skipped files are free. Set a maximum charge per run and the Actor stops cleanly when it is reached.
| Task | This Actor | Alternatives on Apify Store |
|---|---|---|
| Merge 2 PDFs (7 pages) | $0.0044 | autofacts/universal-web-printer: $0.01 per merge |
| Split a 10-page PDF into 10 files | $0.032 | – |
| Compress a 20-page PDF | $0.007 | – |
| Page count of 1,000 PDFs | $3 | – |
Typical desktop web tools limit free use and need an upload to their servers. Here everything runs in your own Apify account, and output files stay in your run storage, following your data-retention settings.
FAQ
Is compression lossy? Only for raster images. They are re-encoded as JPEG only when that makes them smaller. Choose lossless to optimise the structure only. Text, fonts and vector graphics are never rasterised.
Why did compress return almost the same size? Text-only or already optimised PDFs have little to remove. The row says so, and you get the original back if the result was not smaller.
Can it unlock any PDF? No. To remove an open password you must know it and enter it in "Password of the input PDF(s)". PDFs that open without a password but block printing or copying can have those restrictions removed. Use this only for files you own or are allowed to modify.
Are my files private? Input files are downloaded into the run and output PDFs are stored in your run's key-value store. Passwords are secret inputs (encrypted by Apify) and are never written to the dataset or logs.
What is the maximum file size? 100 MB by default (maxFileSizeMb, up to 500). The limit is also capped at a third of the run memory (170 MB at 512 MB), so give the run more memory for very large files. Too-large files get a free error row.
Does merge keep fillable forms and links? Yes. Form fields are carried over (renamed if two files use the same field names), and so are named destinations.
Split by bookmarks? splitMode: "bookmarks" cuts at each top-level bookmark (chapter). Pages before the first bookmark become front-matter. PDFs without bookmarks get a free no-bookmarks error.
Which URLs are refused? Local or private network addresses (SSRF protection), web pages that are not PDFs, and non-PDF files. Each gets a free error row.
Use with AI agents / Apify MCP
Add this Actor to Claude, Cursor or any MCP client through the Apify MCP server (gazidev/pdf-toolkit). An agent can then call, for example, "merge these three PDF links", "split this PDF into 20-page chunks" or "how many pages does this PDF have", and get public download links back. With the Apify API, start a run with POST /v2/acts/gazidev~pdf-toolkit/run-sync-get-dataset-items and the input JSON above, and read pdfUrl from each row.
Related Actors
- Image to PDF & PDF to Image Converter: JPG/PNG/WebP/HEIC to PDF, and PDF pages to images.
- Media Metadata Remover: remove EXIF/GPS from photos and videos.