ZoomInfo API review
Enterprise depth, now with a self-serve API
POST https://api.zoominfo.com/gtm/oauth/v1/token # grant_type=client_credentials, returns a Bearer token POST https://api.zoominfo.com/gtm/data/v1/contacts/search # free: no emails or phones in the result, 0 credits POST https://api.zoominfo.com/gtm/data/v1/contacts/enrich # 1 data credit per new record, up to 25 records a call
Does ZoomInfo have an API? It has two, and the first thing to know is which one you are reading about. The ZoomInfo Enterprise API, documented at api-docs.zoominfo.com, now carries the title "ZoomInfo API - Legacy" and a note that it is being deprecated. New work goes to the ZoomInfo GTM API at docs.zoominfo.com, which uses OAuth 2.0, ships webhooks, and sits behind the same backend as ZoomInfo's MCP server and its CLI.
The second thing is that the ZoomInfo API now has a published price. For years the only route in was a sales call, and every comparison in this directory had to treat ZoomInfo as quote only. GTM AI, ZoomInfo's self-serve route, changed that: 1,000 data credits and 1,000 AI credits free at signup with no card, then pay-as-you-go top-ups from $20, at $0.38 a data credit on the $1,000 spend tier.
The unit is clean. Searching companies and contacts is free, and so are lookups and the find-similar calls. Enriching a record costs one data credit the first time, and the ZoomInfo Enrich API takes up to 25 records a call. On an enterprise package an enriched record is then under management for 12 months, so enriching it again costs nothing.
What the self-serve price does not buy is the part ZoomInfo is famous for on the phone. Mobile phone data, annual volume pricing, records under management and SSO are Enterprise features, and the Enterprise packages are still quoted. So the honest summary is that ZoomInfo API access is now something you can try on a web page, and the ZoomInfo API cost of a dialable contact is still something you negotiate.
The rest of the category is in the Enrichment APIs listing.
What each call costs, in data credits and AI credits
ZoomInfo runs two currencies. Data credits pay for records: enriching a contact, a company or a company's intent signals. AI credits pay for research agents that read across ZoomInfo data and your CRM and write a briefing back. Everything you use to find records is free.
| Operation | What it returns | Cost |
|---|---|---|
| Search Contacts, Search Companies | Matching records, with hints of what data exists but no emails or phones | Free |
| Lookup, Lookup Search and Enrich Fields | The valid filter values, such as industries and metros | Free |
| Find Similar Companies, Find Similar Contacts, Recommended Contacts | Ranked lookalikes and outreach-ready people at an account | Free |
| Search Intent, Search Scoops | Companies showing buyer intent, or real-world business events | Free |
| Enrich Contacts, Enrich Companies | The full record, up to 25 per request | 1 data credit per new record |
| Enrich Intent, Enrich Scoops, Enrich News | Signals and coverage for a specific company | Data credits |
| Account Research, Contact Research | An AI-written briefing on a company or a person | AI credits, about 1 to 20 an action |
Two prices sit behind that table. A data credit is $0.38 at the $1,000 spend tier, and ZoomInfo's own worked example prices 500 enrichments at $215, which is $0.43 each, so the rate falls as the purchase grows. An AI credit is a flat $0.05, and the pricing page sizes 2,000 of them at about 200 account or contact research calls, roughly ten credits, or 50 cents, a call.
The pricing page leads with "charged once per record per year", and its own FAQ qualifies it. Records under management, the guarantee that an enriched record is not charged again for 12 months across the API, MCP and CLI, "is an Enterprise benefit and does not apply to the free tier." On self-serve, design as if every enrichment is billed, keep the ZoomInfo ID of every record you have paid for, and do not re-enrich on a schedule.
ZoomInfo API pricing, plan by plan
ZoomInfo API pricing now comes in two forms: a published pay-as-you-go rate through GTM AI, and quoted annual packages for everything else.
Free
- 1,000 data credits and 1,000 AI credits
- API, MCP and CLI access, up to 5 apps
- 5 requests a second, no card
Pay as you go
- Top-ups from $20, no contract and no seat fees
- AI credits a flat $0.05 each
- Credits expire 12 months after they are granted
Enterprise
- Mobile phone data and records under management
- Custom rate limits, SSO and SAML
- SLA-backed support and an audience waterfall across 25+ vendors
| Package | What it adds | Price |
|---|---|---|
| ZoomInfo Professional | Contact and company profiles, mobile numbers and business email, CRM integrations, Chrome extension | Quote, free trial offered |
| Copilot Advanced | Buyer intent signals, website visitors, champion tracking, job posting changes, account fit score | Quote, free trial offered |
| Copilot Enterprise | Real-time and custom intent, earnings call signals, custom integrations, AI account summaries | Quote, free trial offered |
| Marketing Demand | 75,000 included credits, 25 intent topics, audiences and retargeting | Quote, demo |
| ABM Enterprise | 150,000 included credits, display network, LinkedIn and Facebook advertising | Quote, demo |
The packages and the self-serve route meter the same unit differently. The API documentation says package customers buy credits in bulk on an annual basis. The pricing page FAQ describes a package as including "a predetermined number of monthly credits" and adds that what a credit costs depends on the depth of data the package covers. Read both as the same thing from two sides: an annual purchase, drawn down month by month, at a price per credit set by what the package unlocks.
New accounts get 70% off their first data credit purchase, which turns 5,000 credits at $1,900 into $570, about 11 cents each. It is a launch promotion, labeled limited, and it applies once. Size a pipeline on $0.38 a credit, and treat the discounted first pack as the cheapest match-rate test ZoomInfo has ever offered.
Three windows at once, set by package
ZoomInfo API rate limits are checked against three windows simultaneously, per second, per hour and per day, and a request has to fit all three. The hourly and daily caps sit well below what the per-second rate would allow if you held it all day, which is deliberate.
| Package | Per second | Per hour | Per day |
|---|---|---|---|
| Builder | 5 | 10,800 | 129,600 |
| Standard | 25 | 54,000 | 648,000 |
| Scaling | 35 | 75,600 | 907,200 |
| GTM AI self-serve | 5 | Not stated on the pricing page | Not stated on the pricing page |
Read which window rejected you
The 429 says which bucket ran out.
- X-RateLimit-Rejected-Bucket names the window: second, hour or day.
- Retry-After can be hundreds or thousands of seconds when an hourly or daily cap is spent.
- Rejected requests do not consume quota, so a retry loop does not burn budget.
- A value of -1 in a remaining header means the quota service was briefly unavailable, not an error.
Records per request, not requests
Throughput is the rate times the page size.
- The direct API returns up to 25 search records a request.
- The MCP server and the CLI return up to 10.
- At the Standard 25 a second that is 625 records a second through the API and 250 through MCP.
- For bulk work the API is the faster route by a factor of two and a half.
The rate limits page says X-RateLimit-* headers come back on every response, with per-second, per-hour and per-day values. The credit usage page says rate-limit headers "are not currently returned" and that clients should back off on any 429. Write the client to read the headers when they are there and to back off with jitter when they are not, and it is correct under both.
The ZoomInfo API rate limits are generous for enrichment, where 25 records a call at 25 calls a second outruns any credit budget a self-serve account will hold. They matter for search-heavy agents, where the daily cap on a Builder-sized allowance is the number to plan around.
How to create a ZoomInfo API key
How to get a ZoomInfo API key: in the new API there is no static key. ZoomInfo uses OAuth 2.0, so you create an application in the ZoomInfo Developer Portal and exchange its credentials for a short-lived token. Your subscription decides which scopes and endpoints the application can reach, which is what ZoomInfo API access means in practice.
Server to server
The client credentials flow.
- Create a Standard application in the Developer Portal and choose an integration user to attribute calls to.
- POST the client ID and secret to https://api.zoominfo.com/gtm/oauth/v1/token with grant_type=client_credentials.
- Send the returned token as a Bearer token; the example response expires in 1,000 seconds, so refresh it.
- Request only the scopes you need; they must be a subset of the scopes on the application.
On behalf of a person
Authorization code with PKCE.
- Use the authorization code flow when calls should be attributed to the signed-in user.
- Partner applications, built for other companies' accounts, go through ZoomInfo review first and support only this flow.
- The MCP server and the CLI both sign in through the browser with the same OAuth, with no secret to paste.
- The CLI stores its token under ~/.config/gtm-ai at mode 0600.
Integrations built on the legacy API authenticate differently: an admin generates a Client ID and Private Key under Admin Portal, API, and a library turns them into a JWT valid for one hour, or a username and password are exchanged for the same JWT. If you inherit one of those integrations, budget for the move to OAuth, because the legacy API is the one being deprecated.
For a scheduled enrichment job, client credentials on a dedicated integration user is the whole setup. Anything an assistant does on a person's behalf belongs on the authorization code flow or the MCP server, where ZoomInfo can see who asked.
What a ZoomInfo API call looks like
The base URL is api.zoominfo.com/gtm, bodies follow the JSON:API convention with the application/vnd.api+json content type, and the pattern is search, then enrich. Search is free and returns IDs and hints of what data exists; enrich spends a credit per new record and returns the email and phone.
# 1. free: find the people, no contact data yet POST https://api.zoominfo.com/gtm/data/v1/contacts/search?page[size]=25 Authorization: Bearer $ZOOMINFO_TOKEN Content-Type: application/vnd.api+json # 2. paid: enrich only the IDs you kept, 25 at most POST https://api.zoominfo.com/gtm/data/v1/contacts/enrich # 1 data credit per record enriched for the first time
Where the ZoomInfo API documentation lives
The ZoomInfo API documentation now lives on two hosts, and the ZoomInfo API docs most search results surface are the old ones. docs.zoominfo.com redirects to docs.gtm.ai, which is the current reference for the GTM API, the MCP server and the CLI, and serves every page as Markdown with an llms.txt index. api-docs.zoominfo.com is the legacy ZoomInfo Enterprise API, still documented and marked as being deprecated.
| Surface | Where | What it answers |
|---|---|---|
| Overview | docs.gtm.ai/docs/overview | The two app types, the two OAuth flows and where to start. |
| Rate limits | docs.gtm.ai/docs/rate-limits | The three windows, the packages and the 429 headers. |
| Credit usage and limits | docs.gtm.ai/docs/credit-usage-and-limits | Which calls are free and what an enrichment costs. Read this first. |
| OAuth scopes | docs.gtm.ai/docs/zoominfo-oauth-scopes | Every scope an application can request. |
| MCP server | docs.gtm.ai/docs/connect-to-zoominfo-mcp | Setup for Claude Code, Codex, Cursor and the consumer clients. |
| CLI | docs.gtm.ai/docs/zoominfo-cli | The gtm binary, its auth and every command. |
| Legacy Enterprise API | api-docs.zoominfo.com | The old Search, Enrich, Bulk, WebSights and Compliance APIs. |
| Agent index | docs.gtm.ai/llms.txt | Every page as Markdown, for an agent or a quick grep. |
Two of the legacy names still carry search demand. The ZoomInfo WebSights API resolves an IP address to a company and is documented in the legacy reference beside the Compliance API, which handles opt-outs for contacts in the ZoomInfo database. The ZoomInfo developer API in the new sense is the Developer Portal at developer.zoominfo.com, where applications are created, and the OpenAPI specification can be downloaded from the new reference for Postman or any other client.
The MCP page lists ZoomInfo's MCP access alongside the others in this directory.
ZoomInfo's own walkthrough of the API
ZoomInfo publishes this on its own channel, so it is ZoomInfo's account of ZoomInfo, not ours. It is here because a rate card cannot show you the thing moving, and a few minutes of the product is faster than any paragraph on this page at telling you whether the shape of it fits yours.
YouTube · ZoomInfo Building an Enrichment App in 2 Hours with ZoomInfo API | In Your Corner 4:24 · Published March 2026Four minutes of ZoomInfo's founder building an enrichment app against the Enterprise API with Claude Code. It is a demo of what an AI assistant does with the API, and the description names the walls it hit: a bad authentication flow, the wrong endpoint and a field name that broke every contact match. It shows nothing about credits, rate limits or price, and the Enterprise API it uses is the one ZoomInfo now marks as legacy, so read this page's request and pricing sections rather than the video for those.
Published 20 March 2026 on ZoomInfo, the channel ZoomInfo's own pages link to, and read on 23 October 2026. Nothing in it is a source for a price or a limit on this page: every figure in the tables above comes from a ZoomInfo page.
Strengths and limits
ZoomInfo is still the depth answer in this directory, and the self-serve route has removed the worst of the old objection.
What it does well
- A published API price for the first time: 1,000 free data credits, then $0.38 a credit at the $1,000 tier.
- Search, lookup and find-similar are free, so filtering before you pay costs nothing.
- One unit: a data credit buys one newly enriched record, and enrich takes 25 records a call.
- An official MCP server at mcp.zoominfo.com/mcp, a CLI, and an Anthropic plugin for Claude Code.
- OAuth 2.0 with both server-to-server and per-user flows, and documented scopes.
- Rate limits published per package, with a header that names the window you exceeded.
- Intent, scoops, news, org charts and research agents in the same credit pool.
- Documentation served as Markdown with an llms.txt index.
Where it falls short
- Mobile phone data is Enterprise only, and Enterprise is still a quote.
- Records under management, the no-recharge guarantee, does not apply to the free tier.
- Credits expire 12 months after they are granted, whether free or bought.
- Self-serve runs at 5 requests a second and 5 apps.
- Two documentation hosts, and the legacy one still ranks for the obvious searches.
- Two ZoomInfo pages disagree about whether rate-limit headers are returned.
The two columns describe a vendor in the middle of changing how it sells. The API, the MCP server and the price are now the kind of thing a developer can evaluate alone, and the fields that made ZoomInfo expensive, the mobiles above all, are still where the sales call starts.
Who should actually use this
Use the ZoomInfo API through GTM AI when you want to test ZoomInfo's data against your own rows without a sales process. A thousand free data credits is the largest free allowance of any enrichment vendor in this directory, the search calls cost nothing, and the MCP server means an agent can be pointed at it in one command. That is the right first step even for a team that expects to end up on a package.
Do not pick it on unit price. At $0.38 a data credit the self-serve rate is about nineteen times Apollo's $0.0196 and well above Lusha, RocketReach or LeadMagic for an email, and it carries no mobile numbers at all. ZoomInfo earns its cost on depth, on North American enterprise accounts, org charts and intent, and the self-serve price is for proving that depth rather than for buying volume.
If phones are the job, budget for the Enterprise conversation from the start, and take the match rate you measured on the free credits into it. The published price has changed what a ZoomInfo negotiation starts from: the vendor now has a public number for the email-and-firmographics row, and the quote for everything else has to be argued against it.
Before you build against it
Five things to settle first, each one read off ZoomInfo's own pages. The ticks are remembered in this browser, so you can come back to a half-finished integration.
Where the data comes from, and what you may do with it
The question that arrives late and expensively is who is allowed to hold the data. These are the fields it returns, the coverage it claims and the compliance it publishes.
| Provider | Fields returned | Coverage | Compliance | Redistribution |
|---|---|---|---|---|
| ZoomInfo | Work email, Mobile phone, Firmographics, Technographics, Intent and news, Job changes | Strongest in NA | GDPR DPA CCPA | Not stated |
ZoomInfo states no redistribution position on its pricing or docs pages. Internally that never matters. Put the rows in something your customers can see and it becomes the question your legal team asks first.
Two practical notes. A compliance badge describes the vendor rather than your use of it, so a GDPR DPA does not give you a lawful basis for the outreach you send. And the vendor runs its own opt-out, which means a person who asks you to delete their record has to be removed from your copy as well as from theirs.
If ZoomInfo is not the answer
Four providers in the Enrichment APIs listing that solve the same problem differently. Each one is a trade, and the trade is named.
Apollo
$49/seat/moA published price, a free plan and the whole motion behind one key. $0.0196 a credit against $0.38 on ZoomInfo's self-serve route.
Cognism
Quote onlyThe like-for-like on coverage, and the only vendor here selling a compliance posture rather than a dataset. It will not publish a price either.
People Data Labs
$98/moThe one self-serve provider here whose standard terms cover showing enriched records inside a product you sell. Priced per record, and published.
Lusha
$37.45/mo annualEvery operation has a stated credit cost and there is a free plan to measure on. The opposite of a quoted package in every respect.
The full set, organized by the reason people leave, is on the ZoomInfo alternatives page.
ZoomInfo against the obvious rival
Same rate cards, read side by side, with the arithmetic done on a worked volume rather than left to you: Apollo vs ZoomInfo, Cognism vs ZoomInfo and Lusha vs ZoomInfo.
The same again, against the rest of the field: UpLead vs ZoomInfo, RocketReach vs ZoomInfo and Clearbit vs ZoomInfo. Every pairing in the directory is on the compare hub.
Apollo vs ZoomInfo
CompareA published $49 seat with a free tier against $0.38 a self-serve data credit, with mobiles still quoted.
Cognism vs ZoomInfo
CompareA quote-only database against one that now sells a self-serve credit, strongest on opposite sides of the Atlantic.
Lusha vs ZoomInfo
CompareLusha publishes what every operation costs and not how fast you may ask. ZoomInfo now publishes both, and quotes the mobile.
Calling these APIs one by one? Run them from one Clay table.
Clay runs a waterfall across 150+ data providers from one table, without a separate contract with each. A lookup that finds nothing costs no data credit, and the free plan includes 500 actions a month.
Frontal is a Clay Elite Studio Partner.
Nothing worth quoting yet
We searched Reddit for threads about the ZoomInfo API and have found none worth quoting yet. When one turns up, it goes here, and nothing on this page leans on an unquoted paraphrase.
ZoomInfo API, answered
Is the ZoomInfo API free?
1,000 data and 1,000 AI credits at signup, no card. Credits expire after 12 months. Paid use starts at $0.38/data credit.
How much does the ZoomInfo API cost?
ZoomInfo starts at $0.38/data credit, metered at $0.38 per data credit. It bills per seat, pay as you go, by subscription or by credit pack, with a free tier. Read from ZoomInfo's own pricing page on 24 October 2026.
What are the ZoomInfo API rate limits?
Self-serve 5 requests a second; packages 5, 25 or 35, with hourly and daily caps.
How do I get a ZoomInfo API key?
How to get a ZoomInfo API key: in the new API there is no static key. Requests authenticate with OAuth 2.0: client credentials for server-to-server, or authorization code with PKCE. The current steps are in ZoomInfo's own documentation, which is authoritative on anything that has changed since 24 October 2026.
Does ZoomInfo have an MCP server?
Yes. mcp.zoominfo.com/mcp. It is listed with the others on the MCP page.