Use Leadsets in Clay with an HTTP API column
Leadsets connects to Clay through an HTTP API column. Each row calls the Leadsets REST API at https://api.leadsets.ai/v1 with a bearer key, for example POST /v1/people/enrich, and writes back current role, company and a work email labelled verified, catch-all, unknown or invalid. Records count only when data comes back, on flat monthly plans from $29 with 1,000 free records to start.
What Leadsets does inside a Clay table
Clay is a GTM data enrichment and workflow platform built around spreadsheet-style tables. Leadsets lists Clay on its integrations page with one connection method: the HTTP API column. Each row calls the Leadsets REST API and gets structured JSON back, which you map into new columns.
Every Leadsets tool is available over REST, so a Clay table can use any of them:
- Fill people data:
enrich_person(POST /v1/people/enrich) returns current role, company and a verified work email when one exists. - Fill company data:
enrich_company(POST /v1/companies/enrich) returns firmographics for a domain, with source and freshness on every field. - Clean an email column:
verify_email(POST /v1/emails/verify) labels each address verified, catch-all, unknown or invalid with a confidence score. - Find new rows:
search_peopleandsearch_companiesreturn records with match reasons. - Add signals:
scrape_companyandscrape_jobsturn a homepage or careers page into structured fields (paid plans, scrape units).
Every record carries match reasons, verification status, confidence and the date each field was last checked, so the table shows what to trust, not just a value.
How to connect Leadsets to Clay
The Leadsets docs do not publish Clay-specific setup steps, so this section uses the generic REST setup from the quickstart. It does not describe menus or settings inside Clay.
- Get a key. Create a free Leadsets account and copy your key from the dashboard. Keys start with
ls_live_. Keep it server-side and out of shared cells or exports. - Pick the route. For work emails use
POST /v1/people/enrich; for domains usePOST /v1/companies/enrich; for an existing email column usePOST /v1/emails/verify. - Send the headers the API expects.
Authorization: Bearer ls_live_…on every call, plus anIdempotency-Keyon paid calls so a retry never counts records twice. - Build the JSON body from your columns. For people search, the documented filters are
title,seniority,function,company_domain,employees,industry,country,has_verified_email,limitandcursor. Request fields for each enrichment route are in the API reference in the docs. - Map the response back. Useful fields include the work email value, its
statusandconfidence, the current role and itschecked_atdate, plusmatch_reasons. Every response also includes ausageobject and arequest_id. - Test on a few rows first. Check the
usageobject, then run the rest of the table.
A people search body from the docs looks like this:
POST https://api.leadsets.ai/v1/people/search
{
"title": ["VP Sales"],
"country": ["US"],
"employees": "50-200",
"has_verified_email": true,
"limit": 25
}
Other ways in. The free Clay table enrichment skill is a SKILL.md playbook that calls Leadsets from a Clay HTTP column to fill emails and roles across a table. If you would rather have an agent do the work, connect the remote MCP server https://mcp.leadsets.ai (in Claude: Customize, Connectors, + Add, Add custom connector, then sign in with OAuth), run the enrichment there and move the result into your table as CSV, which Leadsets supports for import and export.
Example: enriching a webinar list
Maya Chen, VP Revenue Operations at Northwind Analytics (northwind.co), has a Clay table of 300 webinar sign-ups with name, company and domain. She is on the Solo plan, which allows 1,000 enrichment records per five hours and 5,000 per week.
- She adds an HTTP API column that calls
POST /v1/people/enrichfor each row, with her bearer key and anIdempotency-Keyper row. - She runs five rows, reads the
usageobject, then runs the table. - Suppose 260 rows come back with data (illustrative numbers). Those use 260 enrichment records. The 40 with nothing to enrich return
404 not_foundand use no records, though each still counts as a request. - She sorts by email status: verified rows go to her sequencer, catch-all rows go to a separate lower-volume segment, unknown rows are held as unconfirmed, and no invalid address is served as a contact email.
Because emails from enrich_person are already verified, she does not need a second verify_email column for those rows.
What to watch for
- Records and requests. Each row is one request. Records count only when data comes back. The request limit is five times the record allowance, so normal retries stay within it.
- Windows. Search and enrichment each have a rolling five-hour window and a weekly limit, listed on the limits page. A large table can fill a window: the API returns
429 window_fullwith aRetry-Aftertime, and the blocked call counts against nothing. Re-run those rows after the reset. - Concurrency. Solo allows 3 concurrent searches, Pro 5, Team and Max 8. Extra searches get
429 too_many_concurrent. - Free records. The free plan is 1,000 records once, shared across search and enrichment. When they run out the API returns
402 free_records_exhausted. Scraping is not on the free plan. - Verification labels. Filter on
status, not on whether an email cell is filled. Catch-all means no one can confirm the mailbox; unknown means the server gave no clear answer. See what a catch-all email is and the verification waterfall. Standaloneverify_emailcalls count toward the enrichment limit. - Idempotency. Keys last 24 hours. Reusing a key with a different body returns
409 idempotency_conflict.
The full list of error types and how to react is in errors and retries.
What it does not do
- No Clay-specific guide. Leadsets documents the HTTP API column as the connection method and does not publish Clay settings or menus.
- No phone numbers. Leadsets returns work emails, US personal emails on paid plans, roles and company data. Phone numbers are not offered yet.
- Not a CRM or sending tool. Leadsets feeds the tools you send from.
- Business data only. No consumer data, sensitive categories or home addresses, and nothing scraped from behind a login.
- Fair use applies. Sharing one key across separate companies or customers is not allowed, and embedding Leadsets data in a product you sell needs a separate written agreement.
- SOC 2 is planned, not done. Type I readiness is underway with a target of Q3 2027.
Questions and answers
Can I use Leadsets in Clay?
Yes. Leadsets connects to Clay through an HTTP API column that calls the Leadsets REST API at https://api.leadsets.ai/v1 with a bearer key. The same tools are also available over the Leadsets MCP server for agents.
Which Leadsets endpoint fills work emails in a Clay table?
Use POST /v1/people/enrich, the REST version of enrich_person. It returns current role, company and a work email with a verification status and confidence score, and those emails are already verified with no second bill.
Do Clay rows with no match use Leadsets records?
No. Records only count when data comes back, so an empty result or a 404 not_found uses no records. Every call still counts as one request, and the request limit is five times the record allowance.
What happens if a Clay table hits a Leadsets limit?
Leadsets returns a 429 with a Retry-After time and a machine-readable error type, and the blocked call counts against nothing. Re-run the affected rows after the window resets, using the same Idempotency-Key within 24 hours to avoid double counting.
Does Leadsets return phone numbers to Clay?
No. Leadsets does not offer phone numbers yet. It returns work emails, US personal emails on paid plans, roles and company data.
Is there a Leadsets skill for Clay?
Yes. The free, MIT-licensed Clay table enrichment skill calls Leadsets from a Clay HTTP column to fill emails and roles across a table. It is listed in the Leadsets skills library and works on the free key.