Clay email verification

A Clay-managed email validation costs about $0.05 to $0.07 in data credits. Call MailExchange from an HTTP API column instead, and pay $0.0058 or less per email.

Updated 2026-10-17

TL;DR

  • A Clay-managed validation costs about $0.05-0.07 in data credits. 10,000 checks is roughly $500-700.
  • MailExchange costs $0.0058 per email or less: 10,000 checks is $49, and credits never expire.
  • Connect it with Clay's HTTP API column (Growth plan and above), or export the table as CSV and verify in bulk.
The MailExchange API is in early access. Ask for a key and we'll set you up with free credits to test in Clay. Until then, the CSV route below works today on any Clay plan.

Why verify outside Clay's credits?

Clay is great at finding emails through waterfalls. Validating every found email with a Clay-managed provider adds a data credit per row, and Clay's pricing page says data credits start at $0.05. On the Growth plan the effective rate is near $0.07. On a 10,000-row table that's a few hundred dollars just to check addresses you've already paid to find.

Calling MailExchange directly costs a fraction of that, and you get the full result: state, reason, and flags for catch-all, role and disposable addresses.

Set up the HTTP API column

Clay's HTTP API integration lets a column call any endpoint, send headers, and reference other columns in the JSON body.

  1. In your table, add a column that uses the HTTP API integration.
  2. Set the method to POST and the URL to https://mailexchange.com/api/v1/verify.
  3. Add a header: Authorization with the value Bearer mx_live_your_key. Clay can store it as a workspace-level account so it isn't pasted into every table.
  4. Set the body, referencing your email column (string references need quotes):
    {"email": "/Work Email"}
  5. Use field extraction to pull state, reason and accept_all from the response into their own columns.
  6. Add a run condition so the column only runs when the email column isn't empty. That saves a call on every row the waterfall didn't fill.
  7. Test on one row, then run the column on the whole table.

A response looks like this:

{
  "email": "[email protected]",
  "state": "deliverable",
  "reason": "accepted_email",
  "accept_all": false,
  "role": false,
  "disposable": false
}

Steps follow Clay's HTTP API integration guide. Plan availability from clay.com/pricing. Both checked 2026-10-17.

Use the result in your table

  • deliverable: push to your sequencer (Instantly, Smartlead, lemlist).
  • risky with reason low_deliverability: a catch-all domain. Route these to a separate, slower campaign or skip them. See should you send to catch-all emails?
  • undeliverable: drop the row, or send it back into the waterfall to try another provider.
  • unknown: retry later. The credit is refunded.

Where to put it in your waterfall

Run the verification column after your email-finding waterfall, on the single email the waterfall settles on. If the result is undeliverable, a second waterfall pass can try the next provider, and you only verify again when a new address actually turns up. Checking every candidate from every provider multiplies the cost for no gain.

Keep the reason column. "Catch-all" and "rejected" need different handling downstream, and a single valid/invalid flag throws that difference away.

No Growth plan? Use the CSV route

Clay's pricing page lists HTTP API integrations on Growth and Enterprise only. On other plans:

  1. Export the table as CSV.
  2. Verify it in MailExchange. Your columns are kept, and each row gets a state and reason.
  3. Import the result back into Clay, or straight into your sending tool.

Cost: Clay credits vs MailExchange

OptionPer email10,000 emails100,000 emails
Clay-managed validation (1 data credit)about $0.05-0.07about $500-700about $5,000-7,000
MailExchange (pay as you go)$0.0058 → $0.0030$49$299

Clay data credit price from clay.com/pricing ("Data Credits start at $0.05 each"), checked 2026-10-17. Compare your own volume in the verification cost calculator.

Related