API review

Clay API review

GTM orchestration spreadsheet with a 150+/200+ provider data marketplace and its own email Sequencer; programmable via inbound webhooks, the HTTP API column, a Public API (api.clay.com/public/v0), a CLI/agent plugin and an OAuth MCP server. Best for multi-provider waterfalls without building your own fallback logic.

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

What a call costs

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

ActionCostPer
Data creditfrom $0.05 each, cheaper with volumecredit
Actionless than $0.01 eachaction
Launch actions tier (monthly billing)15K $60, 40K $150, 60K $200, 100K $290, 200K $540per month
Launch data credits tier (monthly)2.5K $125, 6K $290, 10K $460, 20K $880, 50K $2,125per month
Growth actions tier (monthly)40K $205, 60K $290, 100K $450, 200K $850per month
HTTP API call1action
Data marketplace enrichmentdocs: 0.5-10+ data credits by data type; live app per-row costs range 0.1 (Scrape website) to 25 (FullEnrich phone); work email: waterfall ~1.1, Icypeas/Enrow 0.2, LeadMagic 0.3, Hunter/Datagma 0.4, Findymail/Prospeo/Wiza 0.5, Dropcontact 1, BetterContact/FullEnrich 1.5, SMARTe 6; mobile phone waterfall ~10; no charge when no resultper enrichment
Bring your own provider key0 data credits, Actions still chargedper enrichment
Show all 11 priced actionsHide the rest
ActionCostPer
Growth data credits tier (monthly billing)6K $290, 10K $460, 20K $880, 50K $2,125per month
Clay People/Company search via Public API0 data credits, 0 actions (counts against search result quota)per result
Clay-managed function Enrich Company / Enrich Person0.5 data credit + 1 action (measured via API for Enrich Company)per run

Pricing, plan by plan

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

Free tier Free plan: 500 Actions/mo + 100 Data Credits/mo, up to 200 rows per table, no phone enrichment, no HTTP API/webhooks. New workspaces start on a 14-day trial shown in-app as Growth 'Trialing': 5,000 actions + 1,000 data credits, no card; HTTP API and webhooks work, phone enrichments do not (docs: 'Phone number enrichments aren't available during the trial period').

Free

$0

Free

500 actions/mo, 100 data credits/mo

API included
Plan details

no top-ups

Launch

$185/mo

billed monthly

$167/mo

billed annually

from 15,000 actions/mo + 2,500 data credits/mo (annual: 180K actions/yr + 30K data credits/yr).

API included
Plan details

Monthly = $60 actions + $125 data credits. Action tiers monthly 15K $60 / 40K $150 / 60K $200 / 100K $290 / 200K $540; annual 180K/yr $54/mo, 480K $135, 720K $180, 1.2M $261, 2.4M $486. Data credit tiers monthly 2.5K $125 / 6K $290 / 10K $460 / 20K $880 / 50K $2,125; annual 30K/yr $113/mo, 72K $261, 120K $414, 240K $792, 600K $1,913. Up to 50,000 rows per table.

data-credit top-ups at a 30% premium (actions cannot be topped up; move to a higher action tier). Rollover: monthly billing up to 1 month's credits (bank max 2x monthly); annual billing up to 15% of annual credits on renewal at same or higher tier

Growth

$495/mo

billed monthly

$446/mo

billed annually

from 40,000 actions/mo + 6,000 data credits/mo (annual: 480K actions/yr + 72K data credits/yr).

API included
Plan details

Monthly = $205 actions + $290 data credits. Action tiers monthly 40K $205 / 60K $290 / 100K $450 / 200K $850; annual 480K/yr $185/mo, 720K $261, 1.2M $405, 2.4M $765. Data credit tiers monthly 6K $290 / 10K $460 / 20K $880 / 50K $2,125; annual 72K/yr $261/mo, 120K $413, 240K $792, 600K $1,913.

data-credit top-ups at a 30% premium (actions cannot be topped up; move to a higher action tier). Rollover: monthly billing up to 1 month's credits (bank max 2x monthly); annual billing up to 15% of annual credits on renewal at same or higher tier

Enterprise

One-off pack

custom, annual commitment; pricing FAQ: 'Includes 100,000+ Data Credits and 200,000+ Actions/mo'

API included
Plan details

top-ups at custom price; rollover 'Custom' in the comparison table, FAQ says up to 15% of prior year's purchased credits if renewed at equal or higher commitment

Rate limits

Public API: per-workspace request limit; 429 with Retry-After and X-RateLimit-Limit/Remaining/Reset; CLI exits code 4.

LimitFreeTrialPaid (Launch/Growth)Legacy Starter/Explorer/ProEnterprise
Search Results50 per request, 100 per 30 days50 per request, 10,000 for trial500 per request, 1,000,000 per 30 days500 per request, 1,000,000 per year (resets Jan 1 UTC)500 per request, 10,000,000 per 30 days
More on limitsLess

Docs publish no numeric limit; our live calls carried X-RateLimit-Limit: 300 (window undocumented; Remaining stayed 29 across 10 calls). Search result caps: Free 50/request, 50/search, 100 per 30 days; Trial 50/request, 10,000 for the trial (confirmed live: period_quota.limit 10000); Paid 500/request, 1,000,000 per rolling 30 days; legacy Starter/Explorer/Pro 1,000,000 per calendar year; Enterprise 10,000,000 per 30 days. Exceeding a cap returns HTTP 402.

How to get an API key

Clay uses API key. The steps below follow Clay's own docs.

  1. Create a Clay account. The Free plan includes API access.
  2. Clay app → API and CLI → API keys → Add API key (Name + Scopes: 'Public API' and/or 'Account prioritization', at least one required), or clay api-keys create --name <name>; key is shown once and starts clay_scoped_. The OpenAPI securityScheme text still says 'Settings → Account' (stale; the docs page and live app say API and CLI → API keys). Legacy key (Settings → Account) is still used by older integrations such as Zapier.
  3. Send it with every request: header clay-api-key (Public API); MCP uses OAuth 2.1 with dynamic client registration, scope mcp; webhook sources take an optional auth token header.
  4. Make a first call: Authenticated user + workspace. Keep the key in an environment variable, never in the command.
    curl -X GET "https://api.clay.com/public/v0/me" \
      -H "clay-api-key: $CLAY_API_KEY"

Where the docs live

WhatWhere
Documentationdevelopers.clay.com
API referencedevelopers.clay.com/llms.txt
OpenAPI specdevelopers.clay.com/openapi.json
llms.txtdevelopers.clay.com/llms.txt
Base URLhttps://api.clay.com/public/v0
MCP serverhttps://api.clay.com/v3/mcp
SDKsClay CLI + agent plugin (github.com/clay-run/agent-plugins) for Claude Code / Codex / Cursor; Mac/Linux, Windows via WSL only

Strengths and limits

Where it fits

  • Multi-provider waterfalls without building your own fallback logic
  • Receiving events from other tools via a webhook table and enriching them row by row
  • Calling any REST API from a table with the HTTP API column (Growth+)
  • Running packaged Clay functions/Claygents from your own code or agent via the Public API routines endpoints

Where it falls short

  • High-volume raw API data pulls on Free/Launch: HTTP API and webhook automation are Growth+ only
  • Unlimited inbound webhooks on non-Enterprise plans: each webhook source caps at 50,000 submissions, even after deleting rows
  • Reading existing table data over the API unless on Enterprise (Tables API is Enterprise only)

Worth knowing

  • 'API access' has three meanings: the Public API/CLI/MCP work on every plan with plan-level caps (Free has search result limits, so it is reachable on Free); the HTTP API enrichment column is Growth+; the Tables API is Enterprise only. The pricing FAQ lists 'Clay API access' under Enterprise, so confirm limits before promising API use on lower plans
  • HTTP API column and 'automate any signal via webhook' are Growth+ only; Free and Launch cannot call arbitrary APIs
  • A webhook source stops at 50,000 submissions forever (deleting rows does not reset it); you must create a new webhook unless Enterprise Auto-delete is on
  • Two meters: Actions (platform work, reset each cycle, no rollover, cannot be topped up) and Data Credits (marketplace data). Data Credits roll over: monthly billing up to 1 month's credits (bank max 2x monthly), annual billing up to 15% of annual credits on renewal. BYOK skips Data Credits but still burns Actions
  • Top-ups cost a 30% premium on Launch/Growth
8 moreShow fewer
  • Pricing-page header prices are annual billing ($167 Launch, $446 Growth); monthly billing is $185 / $495
  • Search API caps are plan-level and return HTTP 402 (not 429) when exceeded; Free gets only 100 results per 30 days
  • filters-mode search is deprecated; use query-mode
  • Legacy Starter/Explorer/Pro get Growth-level MCP/CLI/API only until 31 Dec 2026, then drop to free-plan limits
  • One MCP prompt can fan out into several charged operations; set per-rep credit limits (reset 1st of month UTC)
  • Clay's 'clay.earth' MCPs found by web search are a different product
  • The 14-day trial is Growth-level (HTTP API, webhooks) with 5,000 actions + 1,000 data credits, but phone enrichments carry an Upgrade badge until you pay
  • Clay's own docs disagree on tier ceilings: the pricing page sells data-credit tiers up to 50K/mo on Launch and Growth, while plans-and-billing says Launch 2,500-10,000 and Growth 6,000-100,000 per month. Confirm in the plan selector before quoting

Our take

We use Clay with clients who work in Clay or want to: building account lists, enrichment and applying signals in one table. For some of our own high-volume list builds we run the same steps in our database instead. On one client build, Clay's Find People search capped each search at 50,000 people, so we split the fit companies into 16 batches to stay under it.

Who should use it

Use Clay for
Multi-provider waterfalls without building your own fallback logic
Look elsewhere for
High-volume raw API data pulls on Free/Launch: HTTP API and webhook automation are Growth+ only

If Clay is not the answer

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

Before you build

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

  • Confirm the API is on your planThe Free plan includes API access. Free tier: Free plan: 500 Actions/mo + 100 Data Credits/mo, up to 200 rows per table, no phone enrichment, no HTTP API/webhooks.
  • Keep the key out of your codeAPI key. It is sent as: header clay-api-key (Public API); MCP uses OAuth 2.1 with dynamic client registration, scope mcp; webhook sources take an optional auth token header.
  • Design around the rate limitPublic API: per-workspace request limit; 429 with Retry-After and X-RateLimit-Limit/Remaining/Reset; CLI exits code 4.
  • Know the catch before you scale'API access' has three meanings: the Public API/CLI/MCP work on every plan with plan-level caps (Free has search result limits, so it is reachable on Free); the HTTP API enrichment column is Growth+; the Tables API is Enterprise only. The pricing FAQ lists 'Clay API access' under Enterprise, so confirm limits before promising API use on lower plans

Want us to build it for you?

Tell us what you want Clay 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 clay.com/pricing, developers.clay.com/llms.txt and developers.clay.com/public-api/rate-limits. Verified 25 Oct 2026.

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

Base URL: api.clay.com/public/v0

Bulk and async: Public API: routines run-batch over an uploaded JSONL file. In-app 'Bulk enrichment' (up to 25 million records per source, results sent out without storing in Clay) is Enterprise only; Launch/Growth tables cap at 50,000 rows

13 endpoints
MethodPathWhat it doesCost
GET/meAuthenticated user + workspacefree (measured: no balance change)
GET/credits/balanceWorkspace credit balancesfree (reading balances does not consume credits)
POSTasync/routines/{routine_id}/runRun a Clay-managed or custom function against 1-100 itemssame Actions + Data Credits as the equivalent in-app work (measured: Clay-managed Enrich Company = 0.5 data credit + 1 action per item)
GET/routines/run/{routine_run_id}/resultsPoll status + paginated results of a routine runfree (polling)
POST/routines/{routine_id}/run-batch/upload-urlPresigned PUT URL for a JSONL batch inputNot stated
POSTasync/routines/{routine_id}/run-batch/startStart async batch run over uploaded JSONLsame as in-app
GET/routines/run-batch/{routine_run_id}/resultsBatch run progress + resultsNot stated
POST/search/query-modeCreate a people/company search from a Clay advanced search query0 data credits, 0 actions (measured); each returned result counts against the plan's search result quota; over-quota = HTTP 402
POST/search/query-mode/{search_id}/runNext page of a query-mode search0 credits; counts against result quota (measured)
GET/search/query-mode/referenceQuery grammar + queryable fields (markdown)free (measured)
POST/search/filters-modeDEPRECATED structured-filter search (plus GET /search/filters-mode/fields and POST /search/filters-mode/{search_id}/run for paging old searches)Not stated
POST/tables/queryStructured query across known Clay tables (Enterprise only)Not stated
POST/workflows/runs/querySearch workflow runs (beta); GET /workflows/runs/query/reference for grammarNot stated