Clay Pricing in 2026: Plans, Data Credits, Actions and the Cost of a Twitter (X) Column

By TwitterAPI.io Team•14 min read
Diagram of Clay pricing: Data Credits and Actions meters, an HTTP API column, and the per-1,000-row bill for X profile data on TwitterAPI.io versus the official X API
Clay's two meters and where an X (Twitter) column fits. Study figures collected in 2026 on 50 B2B company handles.
TL;DR
  • Four plans: Free, Launch ($167/mo annual, $185/mo monthly), Growth ($446/mo annual, $495/mo monthly) and custom Enterprise, as shown on clay.com/pricing.
  • Two meters since March 11, 2026: Data Credits (marketplace data, from $0.05 each) and Actions (platform work, under $0.01 each). You size each one separately.
  • Failed lookups are free on both meters; a bring-your-own-key enrichment costs one Action and no Data Credits.
  • HTTP API columns need Growth or Enterprise. That is the column you use to call any outside API, including an X (Twitter) data API.
  • Measured on 50 B2B company handles: 45 resolved to the real brand account, 5 needed review; 78% of brand profiles carry a verifiedType, only 42% have isBlueVerified true.
  • X data bill per 1,000 rows: $0.18 for profiles and $3.00 for 20 latest posts each on TwitterAPI.io, against $10 and $100 on X's pay-per-use rate card, plus Clay's Actions either way.

Clay is a spreadsheet-shaped data enrichment tool used by sales, growth and RevOps teams: every row is a company or a person, and every column can call a data provider, an AI model or an outside API to fill in a field. That design makes its price hard to read at a glance, because you are not buying seats. You are buying two separate pools of usage, and the size of each pool sets the monthly figure on the pricing page.

This page reads Clay's pricing as clay.com/pricing and Clay's own pricing announcement show it this year, explains what consumes each meter, and then prices one concrete job end to end: adding X (Twitter) data to a list of company accounts. For that we made the same API calls a Clay HTTP API column makes, on 50 B2B company handles, and kept the bill.

Our angle is the Clay bill plus the X column inside it. If you are comparing workflow tools rather than enrichment tables, the Zapier and n8n pricing pages below cover those bills, and the Apify and PhantomBuster pages cover scraping-style vendors; we link them rather than repeat them.

of 50 guessed B2B company X handles resolved to the real brand account

45 of 50

01 — Section

Clay pricing at a glance: every plan, side by side

Clay's pricing page shows a monthly or annual toggle (annual is labeled "Save 10%") and four plans. The headline price on each paid plan is simply the smallest Actions tier plus the smallest Data Credits tier, so the real number depends on how much of each you buy.

PlanHeadline priceActions (entry tier)Data Credits (entry tier)
Free$0500 a month100 a month
Launch$167/mo annual, $185/mo monthly180K a year ($54/mo) or 15K a month ($60/mo)30K a year ($113/mo) or 2.5K a month ($125/mo)
Growth$446/mo annual, $495/mo monthly480K a year ($185/mo) or 40K a month ($205/mo)72K a year ($261/mo) or 6K a month ($290/mo)
EnterpriseCustomCustomCustom

The arithmetic behind the headline. Launch on annual billing is $54 for Actions plus $113 for Data Credits, which is the $167 headline; on monthly billing it is $60 plus $125, the $185 "starting at" figure Clay's FAQ and pricing announcement use. Growth works the same way: $185 plus $261 is $446 annual, and $205 plus $290 is $495 monthly. When you see two different Clay prices quoted for the same plan, this is why.

Bigger tiers. Each meter scales independently. On monthly billing, Launch Actions go 15K ($60/mo), 40K ($150/mo), 60K ($200 monthly), 100K ($290/mo) and 200K ($540/mo); Launch Data Credits go 2.5K ($125/mo), 6K ($290/mo), 10K ($460/mo), 20K ($880/mo) and 50K ($2,125/mo). Growth Actions go 40K ($205/mo), 60K ($290/mo), 100K ($450/mo) and 200K ($850/mo), with the same Data Credits ladder from 6K upward.

What the plans unlock. Free covers unlimited seats and tables, up to 200 rows per table, waterfalls, Claygent and your own API keys, but not scheduled enrichment, CRM integrations or the HTTP API. Launch adds phone enrichment, signals such as job changes, reusable functions, email sending and scheduled enrichment. Growth adds CRM sync, HTTP API integrations, webhook-based and web-intent signals, Clay Sequencer and priority support. Enterprise adds SSO and SCIM, IP allowlists, credit budgeting, role-based access, data warehouse connections and a dedicated strategist.

Seats are not the price. Every plan lists unlimited seats, so adding teammates does not move the bill; usage does.

02 — Section

Data Credits vs Actions: what each meter pays for

Clay split its billing into two meters with the pricing change that took effect on March 11, 2026. Before that, older plans (Starter, Explorer and Pro, where Pro was $800/mo) used a single credit pool. Existing customers on those legacy plans can stay on them; the window to switch between legacy plans closed on April 10, 2026, and Enterprise customers move at renewal.

Data Credits pay for data you buy through Clay's marketplace: work emails, phone numbers, company firmographics and similar fields from Clay's partner providers. Clay's pricing page says they start at $0.05 each and get cheaper at larger tiers. A provider lookup that returns a value spends Data Credits; one that finds nothing does not.

Actions pay for the platform doing work: running an enrichment, running a table, calling an AI model, sending data to another tool and exporting. Clay's pricing page says Actions start at under $0.01 each. Clay's announcement adds that an Action counts only when the platform returns new information, and that enrichments returning nothing or hitting an API error consume neither meter.

Your own API key. If you connect your own account for a provider, Clay does not charge Data Credits for it, but each run still uses one Action. Clay notes that it does not break this spend down per key, so the provider's own console is where you see what each key cost.

AI columns. Per the pricing FAQ, about 80% of AI models cost a fixed number of Data Credits per task, while token-heavy models are billed on actual token use, shown as an estimate marked with a tilde.

MeterPays forStarts atCharged when nothing is found?
Data CreditsMarketplace data (emails, phones, company data)$0.05 eachNo
ActionsEnrich, run table, AI call, export, own-key runsUnder $0.01 eachNo

Rollover and top-ups. Actions reset every billing cycle. For Data Credits the comparison table says Launch and Growth roll over up to one month's credits or 15% of annual credits, while the FAQ says they can accumulate up to twice the monthly amount; the two statements on the same page do not match, so confirm with Clay before you count on rollover. Top-ups cost a 30% premium on Launch and Growth (down from 50% under the old pricing).

03 — Section

What one Clay enrichment costs, worked out

Clay does not publish a flat price per enrichment, because it depends on which meter the column spends and which tier you bought. You can still bound it from the tier prices on the pricing page.

Per Action, derived. Growth's entry Actions tier is 40,000 a month for $205, which works out to about $0.0051 per Action on monthly billing; on annual billing it is 480,000 a year for $185 a month, about $0.0046 per Action. Launch's entry monthly tier is 15,000 for $60, which is $0.004 per Action. These are our divisions of Clay's published tier prices, not prices Clay quotes per Action.

Per Data Credit, derived. Launch's entry monthly tier is 2,500 Data Credits for $125, which is $0.05 each, matching the "from $0.05" on the page; larger tiers bring it down (50,000 for $2,125 a month is $0.0425 each).

Enrichment typeClay meters spent per rowClay cost per 1,000 rows (Growth entry, monthly)
Own-key API column (HTTP API, BYO provider)1 Actionabout $5.13 in Actions
Marketplace lookup costing 1 Data CreditData Credits, plus Actions where the run uses themfrom $50 in Data Credits
Lookup that finds nothingnone$0

Read the table as a floor, not a quote. A real table chains columns (find the domain, find the person, verify the email, write to CRM), and each step spends its own meter. The useful habit is to price a 50-row test table, read the usage panel, and multiply.

04 — Section

Does Clay have a native X (Twitter) data provider?

We checked rather than assumed. Clay's public integrations directory lists 165 data providers this year, and none of them is an X or Twitter provider page. Older Clay University and integration pages for an "X.com integration" (an "Enrich profile details" action that took a handle and returned profile details and recent posts) return HTTP 404 when we fetched them this year, so we do not treat that action as available.

What Clay does show for X. Clay's data point catalog has an "X Profile URL" field (listed with Crunchbase as a source) and a "Twitter ID" field, which give you the address of an account, not live data from it. The Mixrank provider card says it can find emails from Twitter profiles. Neither returns follower counts, recent posts or engagement.

The two routes people use instead. One is a scraper actor run through Clay's Apify provider (apify.com), which bills on the scraper vendor's side. The other is Clay's HTTP API column pointed at an X data API with your own key. The second route is the one we priced below, because the bill is per result and you can see every field it maps.

If a native X action reappears in your workspace, price it on a small test table and read the usage before running the full list.

05 — Section

Adding an X (Twitter) column with Clay's HTTP API

Clay's HTTP API column calls any REST endpoint once per row. Clay University documents the setup: pick the method, paste the endpoint URL, add query parameters that reference other columns with a slash and the column name, add headers, and list the dot-separated field paths you want back as new columns. The HTTP API is listed for Growth and Enterprise only on the pricing comparison.

Keep the key out of the column. Clay warns that header values typed into a column are visible to anyone who can open it. Save X-API-Key in an HTTP API (Headers) account under Settings, Connections, and pick that account in the column.

Set the rate limit to your API tier. Clay lets you set a request limit and a duration in milliseconds. On TwitterAPI.io the limit is 0.2 requests per second before the first payment and 20 once paid (50 on Scale, 500 on Business), so a free-trial table should use 1 request per 5,000 ms and a paid one 20 per 1,000 ms.

Handle the two empty cases. An unknown handle comes back as HTTP 200 with status set to error and msg set to user not found; a suspended or withheld account comes back with status success and data.unavailable true. Map status and msg into columns and use a run condition so later columns skip those rows.

Add posts only where they will be read. A second HTTP API column on /twitter/user/last_tweets returns the 20 latest posts. Gate it on the profile column so look-alike handles never trigger it.

text
Column type:   Add enrichment -> HTTP API -> Configure
Method:        GET
Endpoint:      https://api.twitterapi.io/twitter/user/info
Query params:  userName = /X Handle          (column reference; strip the @ in a formula column first)
Headers:       pick an "HTTP API (Headers)" account that holds  X-API-Key: <your key>
Field paths:   data.followers, data.description, data.url, data.location,
               data.verifiedType, data.createdAt, status, msg
Rate limit:    1 request per 5000 ms before your first payment (0.2 requests/s),
               20 requests per 1000 ms once paid
Run condition: only when /X Handle is not empty
Test:          run one row, then the table

# second column, latest posts
Endpoint:      https://api.twitterapi.io/twitter/user/last_tweets
Query params:  userName = /X Handle
Field paths:   data.tweets.0.createdAt, data.tweets.0.text, data.tweets.0.likeCount,
               data.tweets.0.viewCount
Run condition: /X Followers is at least 1000 and /X Status is "success"
06 — Section

What the X column returned for 50 B2B company handles

To see what a real Clay table would get, we took 50 well-known B2B software companies (the kind of account list a GTM team enriches), guessed each one's X handle from the brand name the way a formula column would, and ran the two columns: one profile lookup per handle, then one page of latest posts for every handle that resolved to the brand.

45 of 50 handles (90%) resolved to the brand. The other 5 need a human or a rule: 3 resolved to accounts with under 1,000 followers that are not the company (two near-empty look-alike accounts and one personal account), 1 came back unavailable, and 1 did not exist. A follower floor of 1,000 caught all three look-alikes in this sample.

Field (brand profiles)FilledWhat to map it to in Clay
description (bio)100%positioning, keywords for scoring
url (website)100%domain match against the row's company domain
location82%region routing
verifiedType set78%company-account check ("Business" on 35 of 45)
canDm true69%whether the inbox is open
isBlueVerified true42%subscription check mark only

Use verifiedType, not isBlueVerified, to spot company accounts. Most organization accounts carry the Business type with isBlueVerified false, so a filter on the blue flag alone would drop more than half of the real brands in this list.

Audience size. Followers ranged from 2,981 to 3,262,147, with a median of 97,278; 19 accounts sit between 10K and 100K and 19 between 100K and 1M. The median account is 14.7 years old with 13,686 posts.

Activity. On the latest-posts column, the median account had posted 0.7 days before collection; 76% had posted within 7 days and 84% within 30 days, while 6 had been silent for more than 90 days. That last group is the signal a sales team usually wants: a company that has gone quiet on X. The median of each account's median likes per own post was 11, at a median of 2,276 views.

Bar charts: 45 of 50 company handles resolved to the brand; field fill rates on brand profiles for bio, website, location, verifiedType, canDm and isBlueVerified
Profile column results on 50 B2B company handles, collected in 2026 via /twitter/user/info.
07 — Section

The full bill: Clay Actions plus X data per 1,000 rows

An X column costs money in two places: Clay counts one Action per row run on your own key, and the X data API bills for what it returns. On TwitterAPI.io the price is per result: 18 credits per profile ($0.18 per 1,000 profiles) and 15 credits per tweet returned ($0.15 per 1,000 tweets), where $1 is 100,000 credits.

Column per 1,000 rowsX data on TwitterAPI.ioX data on the official X APIClay Actions (Growth, monthly entry)
Profile (1 per row)$0.18$10 ($0.010 per user read)about $5.13
Latest posts (20 per row)$3.00$100 ($0.005 per post read)about $5.13
Both columns$3.18$110about $10.26

Where the official numbers come from. X's pay-per-use rate card at docs.x.com/x-api/getting-started/pricing lists $0.005 per post read and $0.010 per user read, capped at 3 million post reads a month, with Enterprise above that. Per 1,000 tweets that is $5 against $0.15 on TwitterAPI.io, about 33 times apart. X also gives $20 of credits on a first card purchase and matches the first auto-recharge up to $50.

What our study actually cost. The 97 requests returned 48 profiles and 900 posts, 14,364 credits in all, or $0.14. Every one of the 45 timelines came back full at 20 posts, which is why the measured posts column matches the $3.00 full-page figure. We did not separately measure how the five not-found or unavailable lookups were billed, so budget them at the profile price.

The empty-result floor. A lookup that returns no tweets is billed at the 15-credit minimum, $0.00015. That only matters if you schedule the posts column to re-run on thousands of rows, which is where Clay's own scheduled enrichment (Launch and up) and our price meet: re-running a 20-post column on 1,000 rows every week is about $13 a month in X data at full pages, before Actions.

Trying it first. New TwitterAPI.io accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days), enough for this whole 50-row study several times over. Purchased credits never expire. Monthly plans run from Starter at $29 to Business at $1,499; see the pricing page for what each tier includes.

Bar chart on a log scale: X data cost per 1,000 Clay rows, $0.18 and $3.00 on TwitterAPI.io versus $10 and $100 on the official X API pay-per-use rate card
X data cost per 1,000 Clay rows, before Clay Actions. Study collected in 2026; X prices from X's pay-per-use rate card.
08 — Section

Which Clay plan fits an X enrichment workflow

Free. Good for testing Clay itself, but the 200-row table limit and the missing HTTP API mean you cannot run an X column on it. You can still paste in X handles you collected elsewhere.

Launch. Adds scheduled enrichment and signals, but the pricing comparison lists HTTP API integrations as not included, so an X column through the HTTP API is still out of reach. On Launch, one workable route is to enrich X data outside Clay (a script such as the one below) and import the CSV.

Growth. The first plan with the HTTP API column and CRM sync. If X data is a column in your table, this is the plan the workflow needs. At the entry tier you get 40,000 Actions a month, enough for both X columns on about 20,000 rows if nothing else in the table spends Actions.

Enterprise. Adds credit budgeting and data warehouse connections; worth it when several teams share one Clay account and you need spend caps per team.

The alternative path. If the only reason to upgrade is the HTTP API column, compare the plan difference with running the enrichment in a short script and importing the result. The script below does exactly what the two Clay columns do, writes a CSV and prints the X data bill.

09 — Section

How we collected this

Question. If a Clay table holds a list of B2B company X handles and an HTTP API column calls TwitterAPI.io for each row, what comes back and what does it cost?

Accounts. 50 public organization accounts of well-known B2B software companies, with handles guessed from the brand name, plus two control handles that should not exist.

Method. One /twitter/user/info lookup per handle, then one page (20 posts, replies excluded) of /twitter/user/last_tweets for each of the 45 handles that resolved to an account with at least 1,000 followers. 97 requests in total through our rate-limited study client, collected in 2026.

Clay pricing facts. Read from clay.com/pricing, Clay's pricing announcement and Clay University's HTTP API documentation this year; derived per-Action and per-credit figures are our own division of Clay's tier prices.

What the sample cannot show. It is one list of well-known software brands, so fill rates and activity will be lower on long-tail or person-level lists. It does not measure Clay's own billing of an HTTP API column in a live workspace; that figure comes from Clay's published rule (one Action per own-key run).

Privacy. Aggregates only. Organization accounts only; the three look-alike handles (including one personal account) were counted but not analyzed, and no reposted or mentioned authors were studied. The de-identified per-account rows are in the study folder.

python
import csv
import requests

API_KEY = "YOUR_TWITTERAPI_IO_KEY"          # keep it in an env var or a secrets store in real use
BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": API_KEY}


def profile(handle):
    """The Clay 'profile' column: one profile = 18 credits = $0.18 per 1,000 profiles."""
    r = requests.get(f"{BASE}/twitter/user/info", headers=HEADERS,
                     params={"userName": handle}, timeout=30)
    r.raise_for_status()
    body = r.json()
    if body.get("status") == "error":            # unknown handle: HTTP 200, msg "user not found"
        return {"x_status": body.get("msg")}
    u = body.get("data") or {}
    if u.get("unavailable"):                     # suspended or withheld: status success, no profile
        return {"x_status": "unavailable"}
    return {
        "x_status": "ok",
        "x_name": u.get("name"),
        "x_bio": u.get("description"),
        "x_website": u.get("url"),
        "x_location": u.get("location"),
        "x_followers": u.get("followers"),
        "x_verified_type": u.get("verifiedType"),   # "Business" on most company accounts
        "x_blue": u.get("isBlueVerified"),
        "x_created_at": u.get("createdAt"),
        "x_posts_total": u.get("statusesCount"),
    }


def latest_posts(handle, max_pages=1):
    """The Clay 'latest posts' column: 15 credits per post returned, 20 posts per page."""
    posts, cursor = [], ""
    for _ in range(max_pages):
        params = {"userName": handle}
        if cursor:
            params["cursor"] = cursor
        r = requests.get(f"{BASE}/twitter/user/last_tweets", headers=HEADERS,
                         params=params, timeout=30)
        r.raise_for_status()
        body = r.json()
        posts += (body.get("data") or {}).get("tweets") or []   # tweets sit under data
        if not body.get("has_next_page"):                        # paging keys are top-level
            break
        cursor = body.get("next_cursor") or ""
        if not cursor:
            break
    own = [t for t in posts if not t.get("retweeted_tweet")]
    return {
        "x_latest_post_at": posts[0]["createdAt"] if posts else None,
        "x_latest_post_text": own[0]["text"][:280] if own else None,
        "x_latest_post_likes": own[0].get("likeCount") if own else None,
        "x_posts_returned": len(posts),
    }


with open("companies.csv") as f:                    # one column: x_handle
    rows = list(csv.DictReader(f))

profiles = posts = 0
for row in rows:
    p = profile(row["x_handle"].lstrip("@"))
    row.update(p)
    if p["x_status"] == "ok":
        profiles += 1
        if (p["x_followers"] or 0) >= 1000:          # skip look-alike handles before paying for posts
            lp = latest_posts(row["x_handle"].lstrip("@"))
            row.update(lp)
            posts += lp["x_posts_returned"]

with open("companies_enriched.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=sorted({k for r in rows for k in r}))
    w.writeheader()
    w.writerows(rows)

credits = profiles * 18 + posts * 15
print(f"{profiles} profiles, {posts} posts -> {credits} credits = ${credits / 100_000:.4f}")

Researching this?Free starter credits cover end-to-end testing — Google sign-in, no card. Get a key.

10 — Questions

Questions readers ask

How much does Clay cost per month?

Clay has a Free plan, Launch from $167/mo on annual billing ($185/mo on monthly billing), Growth from $446/mo annual ($495/mo monthly) and a custom Enterprise plan. Those are entry prices; each paid plan is the sum of an Actions tier and a Data Credits tier, and both can be sized up.

What is the difference between Clay Data Credits and Actions?

Data Credits pay for data bought from Clay's marketplace providers and start at $0.05 each. Actions pay for platform work such as enriching a row, running a table, calling an AI model and exporting, and start at under $0.01 each. Enrichments that return nothing cost neither.

Does Clay charge for failed enrichments?

No. Clay's pricing announcement says enrichments that return no result or hit an API error consume neither Data Credits nor Actions.

Which Clay plan includes the HTTP API?

The pricing comparison lists HTTP API and CRM integrations on Growth and Enterprise only. Free and Launch do not include it.

Does Clay have a Twitter (X) integration?

We found no X or Twitter data provider in Clay's integrations directory this year, and older X.com integration pages return 404. Clay has X profile URL and Twitter ID data points, and Mixrank can find emails from Twitter profiles. For follower counts, bios and recent posts, teams use an HTTP API column pointed at an X data API.

How much does an X (Twitter) enrichment cost in Clay?

With an HTTP API column on your own key, Clay counts one Action per row (about $5 per 1,000 rows at Growth's entry monthly tier, by our division), and TwitterAPI.io bills $0.18 per 1,000 profiles or $3.00 per 1,000 rows for 20 latest posts each.

Do Clay credits roll over?

Actions reset every billing cycle. Data Credits on Launch and Growth roll over in part, but the pricing page states the limit two ways (up to one month's or 15% of annual credits in the table, up to twice the monthly amount in the FAQ), so confirm with Clay.

Are Clay's old Starter, Explorer and Pro plans still available?

Existing customers can stay on them. New pricing took effect on March 11, 2026, the window to switch between legacy plans closed on April 10, 2026, and anyone can move to Launch or Growth.

11 — Further reading

Continue

Sources & further reading
More from this series

Writing about something you built with TwitterAPI.io? Our community rewards program pays API credits for honest tutorials, build logs and videos.

Build it

Stop reading. Start building.

Starter credits cover real testing on real data. Google sign-in, no card, no application queue.

Get an API key

Already building with TwitterAPI.io? Publish an honest tutorial or build log about it and earn up to $200 a month in API credits.