The comparison in brief
To be upfront: I write automations in Python and I don't use n8n, Make or Zapier. What I say about those tools comes from their documentation and pricing pages (links at the bottom of the page), and the comparison with code comes from my own work. If a ready-made tool will do the job for you, I'll tell you so.
| Zapier | Make | n8n | Python script | |
|---|---|---|---|---|
| Where it runs | The provider's cloud | The provider's cloud | The provider's cloud or your own server | Your server or computer, or the cloud |
| What you pay for | Tasks (each step executed) | Operations (each module in a scenario) | In the cloud, executions; on your own server, the server | Writing it and changes; the runs themselves cost nothing |
| Ready-made integrations | The most | Many | Fewer, but there is an HTTP node for any API | No ready-made blocks, but it connects to anything with an API, a file or a database |
| Complex logic | Basic | Extensive, visual | Extensive, plus your own code | Anything |
| Who changes the flow | Anyone after a short introduction | Someone who learns the tool | A technical person | A developer |
| Data stays in the company | No | No | Yes, when self-hosted | Yes |
The pricing of these tools changes often, so I don't give amounts. Compare on your own example: count how many steps your flow has and how many times a month it runs.
What an automation in Python looks like
It's usually a short program that does one thing: it fetches data (from email, a form, a file, a database or an API), processes it by your rules and saves it or sends it on. It runs by itself on a schedule, for example every 15 minutes, or when something happens.
# simplified sketch: new enquiries go to the spreadsheet and to the right person
for enquiry in new_enquiries(since=last_run()):
append_to_sheet(enquiry)
send_email(to=owner_of(enquiry.topic),
subject=f"New enquiry: {enquiry.company}",
body=enquiry.description)
save_run()- It runs on your server or computer, so the data doesn't pass through anyone else's servers.
- It keeps a log and sends an error alert: if something fails, you know straight away, not a week later.
- The code sits in a repository with a history of changes, so you can see who changed a rule and when.
- It also connects to things ready-made tools have no blocks for: a program's database, files on a network drive, accounts in Active Directory.
The downsides, honestly: someone has to write and maintain the script, and changing a rule means changing code, not dragging a block. That's why at handover you get a description of what the script does, where it runs and how to start it.
How to work out the cost on your own example
Take one specific flow, for example: a new enquiry from the form, saving it to a spreadsheet, a chat notification and an email to the client. That's four steps.
- In Zapier each step executed after the trigger is a task, so 200 enquiries a month means several hundred tasks.
- In Make each module that runs is an operation, so it comes out in a similar order of magnitude.
- In n8n cloud, 200 enquiries are 200 executions regardless of the number of steps, and on your own server you only pay for the server.
- A Python script costs the same for 200 and for 20,000 enquiries: you pay for writing it, for changes and for the server, which you often already have.
With multi-step flows and many runs, the cost differences become clear. With a few dozen runs a month, what counts is mainly convenience and who will be changing the flow.
When to choose which
- Zapier
You have a few simple connections between popular apps, nobody in the company wants to learn a tool, and the data may pass through the provider's servers in the USA.
- Make
The flows have conditions, branches, loops over lists and data processing. You want to see the whole scenario on one screen.
- n8n
The data must stay in the company, or there are many flows and runs, and there's a technical person in the company who will look after the server and updates.
- Python script
The process matters to the business, has unusual rules or touches a system without a ready-made connection (an older program, a database, files on a drive). You need tests and a history of changes, or a ready-made tool would need too many workarounds.
A ready-made tool and a script don't rule each other out. Often the simplest option is to keep the simple connections in Zapier or Make and write in code only the one step the tool can't handle.
What to watch out for
- The access keys to your programs are stored in the tool or in the script's configuration: turn on two-factor sign-in and grant only the permissions needed.
- Set up error notifications. A flow that stopped working on Friday can lose a whole weekend of orders.
- Write down what each flow does and who is responsible for it. A year later nobody remembers where the emails at three in the morning come from.
- Check the n8n licence before commercial use: it's a fair-code licence with conditions worth reading.
Don't paste client data into test flows in the cloud just to see whether it works. Use made-up data for testing.
Terms from this guide
- API
The way programs talk to each other: one program sends a request in an agreed format, the other replies with data. APIs let you connect systems without retyping data by hand.
- Webhook
A notification one system sends to another the moment something happens, for example “a new order has arrived”. Instead of asking every now and then whether anything changed, the system is told straight away.
- System integration
Connecting the programs a company already uses so that they pass data to each other by themselves.
- n8n
A tool for building automations from ready-made blocks that can run in the cloud or on your own server.
Questions and answers
Why do you write automations in Python rather than in n8n?
Because the tasks I come across usually have unusual rules or involve systems with no ready-made blocks: internal databases, Active Directory, programs without a public API. In code I have full control over that, plus tests and a history of changes. When a ready-made tool is enough, I'll recommend it.
Is n8n free?
The community edition can run on your own server without licence fees per execution, but you pay for the server and its upkeep. It's worth checking the licence terms for commercial use in the n8n documentation.
Can an automation be moved from Zapier to a script?
Yes, but not automatically: the flow has to be rebuilt in code. That usually goes quickly because the logic has already been thought through and it's clear what should happen.
Which is more secure?
Security depends more on configuration than on the tool: key permissions, two-factor sign-in and updates. Your own server, with n8n or with a script, gives you control over the data, but also makes updates your job.
Sources and documentation
- n8n: ways to use it (cloud and self-hosted)docs.n8n.io
- n8n: installing on your own serverdocs.n8n.io
- Fair-code: the principles of the licence n8n usesfaircode.io
- Make: pricingmake.com
- Zapier: pricingzapier.com
- Python: official documentationdocs.python.org