Guide
A cheap PDF API for n8n
PDFops is a PDF API with a community node for n8n, verified by n8n. It does the PDF jobs n8n cannot do on its own: listing a form's fields and filling them, merging, splitting, extracting, deleting and rotating pages, watermarks and page numbers, passwords, metadata, and building an invoice from JSON. It costs nothing up to 250 calls a month, and $16 a month for 4,000 after that. If you need OCR or AI extraction from scanned documents, it is the wrong tool, and this page says what to use instead.
What you can do in a workflow
| Operation | What it does |
|---|---|
| Inspect Fields | Lists a PDF's form fields (names, types, options, current values) and returns a paste-ready fill template. |
| Fill Form | Takes a PDF as binary plus your values and returns the filled PDF as binary. Flatten locks the values into the page. |
| Merge | Combines the PDFs from all incoming items, in item order, into one file. |
| Generate Invoice | Turns structured JSON (from, to, items, tax_rate, currency) into a complete invoice PDF, with no template to design. |
| Extract Pages | Keeps only the listed pages, in the order given, so it also reorders or duplicates them. |
| Delete Pages | Removes the listed pages or ranges. |
| Rotate Pages | Rotates all pages, or the listed ones, by 90, 180 or 270 degrees, clockwise or counter-clockwise. |
| Split PDF | Cuts one PDF into parts by page ranges or every N pages, and emits one item per part with its PDF binary. |
| Add Watermark | Stamps a text watermark on every page, with opacity and position options. |
| Add Page Numbers | Prints page numbers in a format you choose, such as Page {n} of {total}. |
| Unlock PDF | Removes the password and restrictions from a PDF you can already open. |
| Protect PDF | Adds a user or owner password and permission flags (AES-128). |
| Get Metadata | Returns page count, page sizes and rotation, the Info fields and encryption status as JSON. |
| Set Metadata | Writes title, author, subject, keywords and the other Info fields. |
| Get Usage | Returns your tier, quota and remaining calls, so a workflow can check headroom. Needs a key. |
Node 0.3.0, on npm since November 2026, carries all fifteen operations; the ten page and document operations arrived in that release. n8n's verified listing shows the version its review has approved, so if your Community Nodes panel shows an older version, update the node there. Every route is also callable from an HTTP Request node with a multipart body and an X-API-Key header: extract-pages, delete-pages, rotate, split, watermark, page-numbers, unlock, protect, metadata and set-metadata. Node and HTTP calls count against the same quota.
Fill, merge and invoice are deterministic: the same input gives a byte-identical PDF, so re-running a workflow never produces a false diff. There is no headless browser to host.
What it costs
| Plan | Calls per month | Price |
|---|---|---|
| No key | 100 per IP | $0 |
| Free key | 250 | $0, email only, no card |
| Indie | 4,000 | $16 a month |
| Pro | 25,000 | $79 a month |
Only successful calls count, so a rejected request does not use up your quota. Full details are on the pricing page.
Install it
On self-hosted n8n, go to Settings → Community Nodes → Install and enter n8n-nodes-pdfops. It runs without a credential, on a limit shared by everything calling from your IP. To add a key, create a PDFops API credential; getting a free key takes about a minute.
A typical workflow
Say a webhook or a Google Sheets row should produce a filled form. First, find the form's real field names, which are often nothing like the labels on the page: run Inspect Fields once on the blank PDF, or drop it into the free Form-Field Inspector. Then build the workflow:
Webhook or Sheets row
→ HTTP Request (download the blank form as a file)
→ Fill Form (the file, plus your data keyed by those field names)
→ Gmail or Drive
Fill Form works on the PDF in the incoming item, so the download comes straight before it. Turn on Flatten if the result should not stay editable. The n8n walkthrough covers a similar webhook flow in more detail.
Which route fits your job
| Your job | Use | Why |
|---|---|---|
| Read text from a digital PDF | Extract from File (built in) | Free, and no external service. |
| Read a scanned PDF | An OCR service or LLM step | PDFops does not do OCR. |
| Fill an existing PDF form | PDFops, or pdf-lib in a Code node | pdf-lib is free but needs self-hosting with external modules allowed, and you handle the edge cases. |
| Merge PDFs | PDFops, or pdf-lib in a Code node | Same trade-off. The node takes one item per PDF and returns a single binary. |
| Extract, delete, reorder or rotate pages | PDFops, or pdf-lib in a Code node | Node operations since 0.3.0: Extract Pages (which also reorders), Delete Pages and Rotate Pages. Each is also one multipart call: extract-pages, delete-pages, rotate. |
| Split a PDF into several files | PDFops, or pdf-lib in a Code node | The node's Split PDF emits one item per part with its PDF binary. The API route returns the parts as base64 in JSON, so from an HTTP Request node you decode each one into a file. |
| Add a watermark or page numbers | PDFops, or pdf-lib in a Code node | Text only, in standard Helvetica. See watermark and page-numbers. |
| Password-protect or unlock a PDF | PDFops | Protect adds a password; unlock removes restrictions from a file you can already open. Neither cracks passwords. |
| Read or set title, author and page count | PDFops | Metadata reads page sizes, Info fields and encryption status; set-metadata writes the Info fields. |
| Generate an invoice from data | PDFops | No HTML template or browser to run. |
| Design custom documents from HTML | An HTML-to-PDF service | PDFops has no template designer. |
| Keep PDFs on your own servers | pdf-lib on self-hosted n8n | PDFops is a hosted API, so files are sent to us. |
Frequently asked
What is the cheapest way to handle PDFs in n8n?
It depends on the job. Extract from File is built in and free for reading text. For filling forms, merging and invoices, a Code node with pdf-lib costs nothing but needs a self-hosted instance with external modules allowed. PDFops starts free: 100 calls per IP per month with no key, 250 with a free key, then $16 a month for 4,000 calls. Only successful calls count.
Can n8n fill PDF forms on its own?
Not without an external service or library. Extract from File reads text out of a PDF but cannot write into form fields. You need a service node such as n8n-nodes-pdfops, an HTTP Request to a form-filling service, or a Code node with pdf-lib.
How do I merge PDFs in n8n?
Add the PDFops node, choose Merge, and send it one item per PDF as binary data. It combines all incoming items, in item order, into a single output PDF. The node works without a credential.
Do I need an API key?
No. Every operation except Get Usage runs without a credential at 100 requests per IP per month, shared by everything calling from that IP. A free key raises that to 250 a month and needs only an email address, no card.
Can it read scanned PDFs or do OCR?
No. PDFops does not do OCR or AI extraction. For scanned documents, use an OCR service or an LLM step, then bring the extracted values to Fill Form if you need them written into a form.
What if my PDF has no form fields?
Fill Form needs real AcroForm fields. If the PDF is a flat scan or has no fields, add fields to the template once, which the free Make a PDF Fillable tool can do, or use Generate Invoice if an invoice is what you need.
Do my PDFs leave my n8n instance?
Yes. PDFops is a hosted API, so each PDF is sent to our service for processing. If your documents must stay on your own infrastructure, use pdf-lib in a Code node on a self-hosted instance.
Try it
Install n8n-nodes-pdfops and run your first call with no key. When you want more room, get a free API key: 250 calls a month, no card. You can also test your own PDF in the playground first.