A home office monitor showing code that calls actions across many connected apps

Zapier SDK: What It Is and What It Costs

The Zapier SDK lets code call actions across 9,000+ apps without you obtaining or storing a single OAuth token, and it is free while it stays in beta. It is TypeScript only, despite what a number of round-up posts claim, and it is aimed squarely at agents that write and run code.

What problem it actually solves

Giving an agent real reach is mostly an authentication problem. Every app means registering an OAuth client, handling the consent flow, storing tokens, refreshing them, and absorbing each vendor’s particular quirks. Ten apps is a project. Fifty is a team.

The SDK moves that work behind Zapier’s credential infrastructure. Your code asks for a connection and runs an action; Zapier handles “auth, token refresh, retries, and API quirks across 9,000+ integrations.” Zapier’s own framing is that “API keys never touch the model or your codebase,” which is the part that matters when the caller is a language model.

Alongside the catalog actions there is raw HTTP: a .fetch() method that makes authenticated calls against roughly 3,600 app APIs, for the cases where no packaged action fits.

The stated audience is “anyone building in code or using a coding agent (Cursor, Claude Code, VS Code, Codex).”

TypeScript only

Worth stating clearly, because it is widely reported wrong. The SDK ships as two npm packages:

npm install @zapier/zapier-sdk
npm install -D @zapier/zapier-sdk-cli

There is no Python package. Several 2026 guides describe the SDK as “TypeScript and Python”; Zapier’s own documentation and the published package are TypeScript. If you are working in Python, MCP or direct HTTP are the routes in.

Do not confuse this with zapier-platform-core, which is the older toolkit for building an integration that Zapier lists. The SDK is for consuming the catalog from your own code.

How the code reads

Authentication for local development is a browser login:

npx zapier-sdk login
npx zapier-sdk get-profile

For servers and CI you pass credentials instead:

import { createZapierSdk } from "@zapier/zapier-sdk";

const zapier = createZapierSdk({
  credentials: { clientId: "...", clientSecret: "..." },
});

From there the pattern is find a connection, then run an action against it:

const { data: connection } = await zapier.findFirstConnection({
  app: "notion",
  owner: "me",
  expired: false,
});

const { data } = await zapier.runAction({
  appKey: "NotionCLIAPI",
  actionType: "search",
  actionKey: "page_by_title",
  connection: connection.id,
  inputs: { title: "Meeting Notes", exact_match: "no" },
});

Actions come in three types: search to find data, write to create or update it, and read to list resources with pagination. An agent that does not know what is available can discover it at runtime with listActions() and inspect an action’s expected inputs with getActionInputFieldsSchema(), which matters because some apps have dynamic input fields that cannot be hardcoded.

Four sharp edges in the current beta

These are documented, and each one costs an afternoon if you meet it by surprise.

App keys are inconsistent between methods. runAction wants a CLIAPI-suffixed key such as "NotionCLIAPI", while the CLI and other methods accept the short slug "notion". Same app, two identifiers, depending on where you are calling from.

runAction always returns an array. The shape is { data: T[] } even when you fetched one thing. Code that assumes a single object will break on the first success rather than the first error.

Vendor rate limits are yours to handle. A 429 from the underlying app surfaces as ZAPIER_ACTION_ERROR, and retrying with a sleep is on you. Zapier retries its own transport, not the vendor’s throttle.

OAuth cannot be automated. A human authorizes in a browser, once, per connection. An agent can use an existing connection but cannot create one unattended, which shapes how any multi-user product has to onboard people.

Two more things are marked experimental rather than broken: Triggers and Permissions. And full raw-API coverage across all 9,000+ apps is explicitly “not in scope for open beta,” so check the app you care about rather than assuming.

What it costs

Currently nothing. Zapier’s task usage rates list the SDK with a Beta label and price actions at “Free in beta”, covering work run “through the SDK package, the CLI, or a Code by Zapier step.”

The more useful detail is what happens next. Zapier has already folded the SDK into its task model, saying “AI steps, code, and SDK now all follow the same task-based pricing model,” and states that tasks are shared across Zap workflows, AI steps, code, MCP, and the SDK, “with no separate task budgets by product.” So the meter exists and the SDK is sitting at a zero rate inside it, not outside it.

That makes the comparison against the other programmatic route unusually clean today:

RouteCurrent rate
Zapier SDK actionFree in beta
Zapier MCP tool call2 tasks per call
Standard Zap step1 task

For anything high-volume, the SDK is the cheapest way into Zapier’s catalog right now by a wide margin. It is also the one whose price is guaranteed to change, and Zapier says only that rates “may change over time” with notice before they apply. Budget for the SDK becoming metered.

One governance caveat while you are counting: direct calls made through .fetch() currently fall outside Zapier’s governance policies, with that gap on the roadmap. Enterprise accounts have the SDK off by default and must opt in.

SDK or MCP

They solve adjacent problems and the choice is mostly about who writes the call.

Use the SDK when you control a codebase: backend services, scheduled jobs, a coding agent that generates and runs code, anything where you want typed calls and version control. Use MCP when the caller is a chat assistant you did not build, such as Claude or ChatGPT reaching your apps mid-conversation.

Neither is a trigger. Both wait to be called, so an event that has to start work still needs a Zap or a scheduler on top.

If you want the automation without writing the code

The SDK is a builder’s tool, and it is a good one if a codebase is where you live.

If the goal is an assistant that runs your inbox, calendar, and follow-ups rather than a library to build one with, that is a different shape of product. Carly is set up by conversation instead of code and starts work on events rather than on calls. Free Zapier-style workflows; AI agents from $35/month.

Frequently asked questions

Is there a Python Zapier SDK?

No. The SDK is TypeScript, published as @zapier/zapier-sdk with a companion CLI. Reports of a Python package are inaccurate.

Is the Zapier SDK free?

It is free during the open beta. Zapier has already placed it inside its shared task-based pricing model at a zero rate, so expect metering once beta ends.

How is it different from the Zapier Platform CLI?

The Platform CLI and zapier-platform-core are for building an integration that Zapier lists. The SDK is for calling the existing catalog from your own code.

Can an agent create its own app connections?

No. OAuth requires a person to authorize in a browser. An agent can use connections that already exist but cannot make new ones unattended.

Does it cover raw API access for every app?

No. Raw .fetch() access covers roughly 3,600 apps, and full coverage across the whole catalog is out of scope for the open beta.


Related: Zapier MCP · Zapier pricing · What is MCP · MCP servers · Zapier alternatives

Ready to automate your busywork?

Carly schedules, researches, and briefs you—so you can focus on what matters.

See what people say

"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.

Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.

On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

Gus Ibrahim, Founder & Director, IHR