API review

ZoomInfo API review

Largest US-centric B2B contact/company database (100M+ companies, 500M+ professionals, 50+ signals) now sold headless as 'GTM AI by ZoomInfo': OAuth REST API at api.zoominfo.com/gtm, official MCP server, CLI, free search and pay-per-enrich credits. Best for free search/lookup/lookalikes before paying: credits only on enrich.

Verified 25 Oct 2026 · 34 endpoints listed · Official MCP server

What a call costs

The actions you pay for, as ZoomInfo prices them in credits.

ActionCostPer
Search / lookup / find similar / recommended contactsFreeper call
Enrich company or contact (or unlock intent record)1 data creditper new record (API up to 25 per call, MCP up to 10); free re-enrich for 12 months under Records Under Management
Data credit (self-serve)$0.38per credit at $1,000 spend tier
AI credit (account/contact research, agents)$0.05per credit; pricing page: ~1-20 credits per AI action, account research ~9-12; MCP credits doc: Account/Contact Research most calls 5-15, Conversation Intelligence at least 9
Load a record into a GTM Studio audience (Upsert Audience / Manage Audience Rows)1 data creditper new matched record; unmatched own-data rows free

Pricing, plan by plan

US dollars, as ZoomInfo's pricing page shows them on 25 Oct 2026. Monthly and annual billing are shown apart.

Free tier GTM AI Free: 1,000 data credits + 1,000 AI credits at signup, no credit card; MCP + API + CLI access (5 apps), 5 req/sec, audiences 5 x 500 rows; free search, lookup, find similar

GTM AI Free / pay-as-you-go

$0

Free

1,000 data + 1,000 AI credits free; top-ups from $20; data credits $0.38 each at the $1,000 spend tier (5,000 credits listed at $1,900 before a 70% first-purchase promo, $570 after); AI credits $0.05 flat

API included
Plan details

Top-up packs, no contract, no seats

GTM AI Enterprise

Custom quote

Annual volume + bonus credits; Records Under Management; unlimited apps; custom rate limits; audience waterfall (25+ vendors); mobile phone data; SSO/SAML; SLA support

API included
Plan details

Annual volume

ZoomInfo Professional (Sales)

One-off pack

Quote only; predetermined monthly credits per package

Plan details

Credits can be added

Copilot Advanced (Sales)

Custom quote

Quote only

Copilot Enterprise (Sales)

Custom quote

Quote only; lists 'Custom integrations'

Show all 8 plansShow fewer plans

ABM Enterprise

Custom quote

150K included credits; unlimited intent topics

Rate limits

Per tenant, three simultaneous windows (per-second, sliding per-hour, sliding per-day).

Builder: 5 req/s, 10,800/hour, 129,600/day
Standard: 25 req/s, 54,000/hour, 648,000/day (default)
Scaling: 35 req/s, 75,600/hour, 907,200/day
Data Distribution partner: 50 req/s by default
GTM AI Free tier: 5 req/sec, 5 apps (gtm.ai/pricing)
Credit-usage page variant: Default 25 r/s, Premium add-on 30 r/s, Premium+ add-on 35 r/s
More on limitsLess

Rejected requests do not consume quota. Headers X-RateLimit-Limit-/Remaining-Second|Hour|Day; on 429: Retry-After, X-RateLimit-Rejected-Bucket, X-RateLimit-Reset. Legacy X-RateLimit-Limit/Remaining removed 2027-01-01. Search returns up to 25 records per request via API, 10 via MCP/CLI.

How to get an API key

ZoomInfo uses OAuth. The steps below follow ZoomInfo's own docs.

  1. Create a ZoomInfo account. The GTM AI Free / pay-as-you-go plan includes API access.
  2. Create a Standard App: Enterprise customers in the Developer Portal (developer.zoominfo.com); GTM.ai self-serve customers in GTM Studio Developer tab (gtm-studio.zoominfo.com). Client credentials need an integration user. A test bearer token can be generated in the portal (real production calls, consumes credits).
  3. Send it with every request: header Authorization: Bearer <access_token>; token from POST https://api.zoominfo.com/gtm/oauth/v1/token (client_credentials with Basic auth, or Authorization Code + PKCE with refresh tokens). Scopes such as api:data:contact, api:data:company, api:data:intent, api:data:news, api:data:scoops.
  4. Make a first call: Search contacts (preview records with has* flags, accuracy score, DNC flags). Keep the key in an environment variable, never in the command.
    curl -X POST "https://api.zoominfo.com/gtm/data/v1/contacts/search" \
      -H "Authorization: Bearer $ZOOMINFO_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{}'

Where the docs live

WhatWhere
Documentationdocs.gtm.ai/docs/overview
API referencedocs.gtm.ai/reference/api-overview
OpenAPI specdocs.zoominfo.com/openapi.md
llms.txtdocs.gtm.ai/llms.txt
Changeloggtm.ai/llms.txt
Base URLhttps://api.zoominfo.com/gtm
MCP serverhttps://mcp.zoominfo.com/mcp
SDKs@zoominfo/gtm-ai-cli (npm) / brew zoominfo/gtm-ai/gtm-ai-cli (gtm CLI), OpenAPI spec for SDK generation, Legacy: PKI/username auth libraries for Java, Python, NodeJS on github.com/Zoominfo

Strengths and limits

Where it fits

  • Free search/lookup/lookalikes before paying: credits only on enrich
  • Enterprise-depth enrichment: org charts, corporate hierarchy, technologies, intent (Intent SKU), scoops, news
  • Agent use: official remote MCP (mcp.zoominfo.com/mcp), Claude Code plugin, Codex plugin, ChatGPT/Claude/Perplexity connectors, gtm CLI
  • Re-enriching the same records within 12 months for free (Records Under Management, Enterprise only)
  • Self-serve testing: 1,000 data + 1,000 AI credits free at signup, top-ups from $20

Where it falls short

  • Large batch enrichment in one call (25 records per API enrich request; MCP enrich and MCP/CLI search 10 per request)
  • Teams that need mobile phones on self-serve (pricing page lists mobile phone data under Enterprise packages)
  • Budget-sensitive free-tier repeat enrichment: Records Under Management does not apply to the free tier, so re-enrich is re-charged
  • Classic push webhooks on the new API (event page describes Agent Team runs you poll)

Worth knowing

  • Rebrand: docs.zoominfo.com now redirects to docs.gtm.ai; 'GTM AI by ZoomInfo' (gtm.ai) is ZoomInfo's headless API/MCP/CLI product, and the docs' sample record shows ticker 'NASDAQ: GTM'. Current API: https://api.zoominfo.com/gtm, version v1.0, OAuth 2.0. Legacy Enterprise API (api-docs.zoominfo.com, PKI/username JWT auth, 1-hour tokens) is being deprecated.
  • Docs contradict on rate-limit headers: Credit Usage page says 'Rate-limit headers are not currently returned'; Rate Limits page (updated 2026-10-05) says X-RateLimit-* headers are on every response. Credit page also lists different tiers (Premium/Premium+ add-ons) than the Builder/Standard/Scaling table.
  • Pricing page contradicts itself on expiry: 'Credits never expire while your account is active' vs FAQ 'Credits expire 12 months after they are granted, whether free or purchased'.
  • 'Charged once per record per year' (Records Under Management) is an Enterprise benefit only; free/pay-as-you-go re-enrichment is charged again.
  • Enrich is 25 records per API call but only 10 per MCP enrich call; search API returns up to 25 per request (page[size] max 100 per OpenAPI); MCP and CLI only 10 per search request. Sources: docs.gtm.ai/reference/enrichinterface_enrichcontact; docs.gtm.ai/docs/rate-limits; gtm.ai/docs/mcp/tools (verified 2026-10-25)
11 moreShow fewer
  • Three meters on the API: credits (first enrich in 12 months), record limit (every enriched record, incl. each news article/scoop), request limit. LIMIT_EXCEEDED in Contact Enrich means data credits are exhausted.
  • Search endpoints reject unknown industry/metro/topic strings (422 per CLI page); resolve with Lookup first and pass IDs.
  • Intent search/enrich require the Intent SKU; 1 to 50 topics per request.
  • Test bearer tokens from the portal are real production calls and consume credits.
  • Data accessed via MCP may not be used for AI model training.
  • Enrich output includes *Alt fields with source 'waterfall', so some contact data may come from third-party vendors (Enterprise 'audience waterfall across 25+ vendors').
  • 70% first-purchase promo and $1,900 list price for 5,000 credits mean the advertised $0.38/credit is a tier price; actual price varies by spend tier.
  • Records Under Management scope contradicts across vendor pages: gtm.ai/pricing FAQ says RUM is Enterprise-only and not on the free tier; the MCP Credits & Billing doc (2026-09-25) describes RUM org-wide with no plan restriction. Treat free-tier re-enrichment as chargeable until proven. Sources: gtm.ai/pricing; gtm.ai/docs/mcp/credits (verified 2026-10-25)
  • Free-tier rate limit stated two ways on gtm.ai/pricing: '5 req/sec' in the Always-included strip vs 'Rate limits: Standard' in the plan table (Standard = 25 req/s on the Rate Limits page; 5 req/s is the Builder tier). Sources: gtm.ai/pricing; docs.gtm.ai/docs/rate-limits (verified 2026-10-25)
  • MCP cannot draw from older subscriptions' recurring monthly credits; it needs pooled (bulk) data credits. Enrichment via MCP counts as an export (charged) while viewing in ZoomInfo Copilot is not. Source: gtm.ai/docs/mcp/credits (verified 2026-10-25)
  • MCP Enrich Intent / Enrich Scoops / Enrich News are superseded by Enrich Company Signals (1 data credit per new signal returned, up to 10 companies per call). Source: gtm.ai/docs/mcp/tools (verified 2026-10-25)

Who should use it

Use ZoomInfo for
Free search/lookup/lookalikes before paying: credits only on enrich
Look elsewhere for
Large batch enrichment in one call (25 records per API enrich request; MCP enrich and MCP/CLI search 10 per request)

If ZoomInfo is not the answer

Other Sourcing tools in this directory, each with its own review.

Before you build

Four things to settle first, each read off ZoomInfo's own pages.

  • Confirm the API is on your planThe GTM AI Free / pay-as-you-go plan includes API access. Free tier: GTM AI Free: 1,000 data credits + 1,000 AI credits at signup, no credit card.
  • Keep the key out of your codeOAuth. It is sent as: header Authorization: Bearer <access_token>; token from POST https://api.zoominfo.com/gtm/oauth/v1/token (client_credentials with Basic auth, or Authorization Code + PKCE with refresh tokens). Scopes such as api:data:contact, api:data:company, api:data:intent, api:data:news, api:data:scoops..
  • Design around the rate limitPer tenant, three simultaneous windows (per-second, sliding per-hour, sliding per-day).
  • Know the catch before you scaleRebrand: docs.zoominfo.com now redirects to docs.gtm.ai; 'GTM AI by ZoomInfo' (gtm.ai) is ZoomInfo's headless API/MCP/CLI product, and the docs' sample record shows ticker 'NASDAQ: GTM'. Current API: https://api.zoominfo.com/gtm, version v1.0, OAuth 2.0. Legacy Enterprise API (api-docs.zoominfo.com, PKI/username JWT auth, 1-hour tokens) is being deprecated.

Want us to build it for you?

Tell us what you want ZoomInfo to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from gtm.ai/pricing, docs.gtm.ai/reference/api-overview and docs.gtm.ai/docs/rate-limits. Verified 25 Oct 2026.

All 34 endpointsFor developers: method, path, what it does and what it costs.

Base URL: https://api.zoominfo.com/gtm

Bulk and async: Enrich max 25 records per call (sync). Async: GTM Studio audience enrich jobs (202 + poll), audience bulk row upsert up to 500 rows, platform Data Exports. Legacy Enterprise API had a dedicated async Bulk API. Source: docs.gtm.ai/docs/pagination-batching-and-bulk

Webhooks: New API: 'Webhook and Events' page says webhooks are available via the Agents API and documents triggering Agent Team runs and polling results; no subscription or signature spec. Legacy Enterprise API (being deprecated) had a Webhooks API. Sources: docs.gtm.ai/docs/webhook-and-events, api-docs.zoominfo.com

34 endpoints
MethodPathWhat it doesCost
POST/data/v1/contacts/searchSearch contacts (preview records with has* flags, accuracy score, DNC flags)Free (no credits, no record limit); counts against rate and request limits
POST/data/v1/companies/searchSearch companies by firmographics, technology, location, etc.Free
POST/data/v1/intent/searchSearch intent signals across companies0 credits; each intent signal returned counts as a Record and the response as a Request; requires Intent SKU
POST/data/v1/news/searchSearch news articlesFree (does not consume credits)
POST/data/v1/scoops/searchSearch Scoops (business events) across companiesFree (does not consume credits)
POST/data/v1/contacts/enrichEnrich up to 25 contacts (by personId, or email/phone/name+company match)1 data credit per new contact record not already Under Management (12 months); no charge on no-match/error; every enriched record counts against record limit; LIMIT_EXCEEDED when credits exhausted
POST/data/v1/companies/enrichEnrich up to 25 companies (id, domain, name, ticker, website)1 data credit per new company record not Under Management
POST/data/v1/companies/corporate-hierarchy/enrichCorporate hierarchy for up to 25 companies1 credit per record returned unless Under Management; none on NoMatch
POST/data/v1/companies/org-chart/enrichOrg chart contacts for a company by departmentA credit counted for the enriched company, when applicable
POST/data/v1/companies/technologies/enrichTechnologies installed at a company1 credit for the enriched company; company counts as a Record
POST/data/v1/companies/hashtags/enrichPredefined hashtags for a company1 credit for the enriched company
POST/data/v1/intent/enrichIntent signals for one companyBulk data credits; requires Intent SKU
POST/data/v1/news/enrichNews for one company1 credit for the company if applicable; each article counts as a Record
POST/data/v1/scoops/enrichScoops for one company1 credit for the company if applicable; each scoop counts as a Record
GET/data/v1/lookup/{fieldName}Valid filter values (industries, metros, management levels, departments, intent topics, tech vendors/products)Free
GET/data/v1/lookup/searchAvailable search fields by entityFree (Lookup listed free on the credit table; no charge stated on the reference page)
GET/data/v1/lookup/enrichAvailable enrich output fields by entityFree (Lookup listed free on the credit table; no charge stated on the reference page)
GET/data/v1/users/usageCurrent user's API usage and limitsFree
POST/copilot/v1/companies/insightsSales signals (funding, leadership changes, intent spikes, hiring anomalies) for up to 50 companies by typeNot stated
GET/copilot/v1/companies/lookalikesFind similar companiesFree
GET/copilot/v1/contacts/lookalikesFind similar contactsFree
GET/copilot/v1/contacts/recommendationsRecommended outreach-ready contacts for an accountFree
GET/POST/copilot/v1/companies/{companyId}/account-summary (+ /actions/ask)AI account summary and Q&A on itNot stated on reference page. MCP Account Research (the AI equivalent) costs most calls 5 to 15 AI credits
GET/POST/DELETE/copilot/v1/{customer-buyer-personas|customer-competitors|ideal-company-profile|products|customer-settings}[/{id}][/actions/archive|unarchive]Context API: manage buyer personas, competitors, ICPs, products/services, settings that drive lookalikes and recommendations (grouped, ~27 operations)Not stated
GET/POST/PATCH/DELETE/studio/v1/{folders|audiences}[/{id}], /studio/v1/audiences/{id}/{columns|rows}/...GTM Studio audiences: folders, audiences, columns, rows (upsert up to 50 sync; bulk upsert up to 500 per call), filter metadata, match criteria (grouped, ~20 operations)Structure calls free; loading records costs 1 data credit per NEW record loaded into an audience (own-data rows charged only when they match a ZoomInfo record; unmatched rows free). Free tier: 5 audiences x 500 rows
POSTasync/studio/v1/audiences/{audienceId}/actions/enrichAsync enrichment of an audience (scope AUDIENCE or ROW)Not stated on reference page (data credits presumably apply)
GET/studio/v1/audiences/{audienceId}/jobs/{jobId}Poll async audience job statusFree
GET/POST/PUT/DELETE/marketing/v1/audiences[/{id}][/uploads[/{uploadId}]]Marketing API audiences and uploads (grouped, 7 operations)Not stated
GET/POSTasync/platform/v1/exports, /exports/{exportId}, /exports/{exportId}/actions/execute, /exports/executions/{executionId}Data exports: list, inspect, execute against person or company IDs (async, 202 PENDING), poll statusNot stated
GET/POST/DELETE/platform/v1/engagements/content-interactions[/{id}]Engagements (beta): upsert/get/delete content interaction recordsNot stated
GET/POSTasync/agent/v1/agents[/{agentId}][/runs[/{runId}]][/stream]Agent API: list agents, get inputs, start runs (async or SSE stream), list/get runs, resume stream (7 operations)Not stated (AI credits likely; see pricing)
POST/data-quality/v1/prepareParse/validate/normalize phones, emails, addresses, job titles, names in bulkNot stated
GET/POST/PATCH/DELETE/data-quality/v1/{prepare/normalize|score|segment}/configs[/{configId}], /score/actions/run, /segment/actions/runData Quality: normalize, score and segment configs and synchronous batch runs (grouped, 17 operations)Not stated
POSThttps://api.zoominfo.com/gtm/oauth/v1/tokenOAuth token (client_credentials; PKCE authorization code and refresh flows also supported)Free