Coldlytics in Clay
Ready-made HTTP API columns: company by domain, person by email or LinkedIn URL, find email, find the decision-maker.
Clay runs enrichments one row at a time and chains providers in waterfalls. Coldlytics fits that shape: every call answers one record, a miss is free and leaves the cell empty so the next provider runs, and credits are only spent when a verified email or a direct dial is delivered.
Clay's HTTP API column (Growth plan and above) is all you need. Each setup below is one column; save it as a template in Clay to reuse it across tables.
Before you start
- Create an API key under Integrations → API & MCP in the dashboard with the scopes
search:read(lookups) andreveals:write(emails and dials). - In Clay, add an HTTP API column and set one header on it:
Authorization: Bearer cl_live_YOUR_KEY. Clay stores it at workspace level, so later columns reuse it. - Give every column a conditional run such as "only run if Domain is not empty".
- Rate limit setting per column: 100 requests per 60,000 ms for the lookups (we allow 120 a minute), 25 per 60,000 ms for reveals and finds (we allow 30). On a
429Clay waits for theRetry-Afterheader and retries.
Clay references your columns as /Column Name inside the URL, query parameters and JSON body, and maps outputs by JSON field path (for example data.person.email).
1. Company enrichment by domain
| Setting | Value |
|---|---|
| Method | GET |
| URL | https://api.coldlytics.com/v3/companies/lookup |
| Query parameter | domain = /Domain (a full website URL is fine) |
| Cost | Free, outside the monthly search allowance |
Outputs to map:
| Field path | What it is |
|---|---|
data.found |
true or false |
data.company.name, data.company.categories |
Company name, business categories |
data.company.headcount, data.company.revenue, data.company.founded_year |
Size and age |
data.company.location_count, data.company.website.franchise |
Branches; franchise or national chain |
data.company.customer_type |
residential, commercial or both (trades and home services) |
data.company.google.review_count, data.company.google.review_score, data.company.google.claimed |
Google Business Profile |
data.company.technologies, data.company.ad_pixels |
Website technologies; Facebook, Google, LinkedIn, TikTok pixels |
data.company.website.website_grade |
AI-assessed website quality, 1 to 10 |
data.company.website.features |
video, online_booking, live_chat, online_payments, online_store, online_ordering |
data.company.website.service_offerings |
emergency_24_7, free_estimates, financing, maintenance_plans, published_pricing |
data.company.website.hiring.now, data.company.website.hiring.functions |
Hiring now, and what for |
data.company.website.credentials, data.company.website.brands, data.company.website.languages |
Credentials, brands carried, languages served |
data.company.website.read_at |
When the website was last read; null means not read yet, so the signals above are unknown rather than absent |
data.locations[0].phone, data.locations[0].address.city, data.locations[0].address.state |
Primary location |
data.company.contact_count, data.people |
People on file, with names, titles and whether an email or dial can be revealed |
2. Person enrichment by email
| Setting | Value |
|---|---|
| Method | GET |
| URL | https://api.coldlytics.com/v3/people/lookup |
| Query parameter | email = /Email |
| Cost | Free, outside the monthly search allowance |
Outputs: data.found, data.person.first_name, data.person.last_name, data.person.job_title, data.person.seniority, data.person.department, data.person.linkedin_url, data.person.location.city, data.person.location.state, data.person.has_dial, data.person.contact_id, data.company.name, data.company.domain, data.company.categories, data.company.phone.
To add the person's direct dial, send data.person.contact_id to a reveal column (see the end of section 5) with include_dial set to true.
3. Person enrichment by LinkedIn URL
The same column as section 2 with the query parameter linkedin_url = /LinkedIn URL. Any linkedin.com/in/… form works, with or without www, a country subdomain or a trailing slash.
4. Find a work email from name and domain
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://api.coldlytics.com/v3/emails/find |
| Headers | Authorization (above), Content-Type: application/json |
| Cost | 1 credit when a VALID email is delivered; catch-all and misses free |
Body:
{
"first_name": "/First Name",
"last_name": "/Last Name",
"domain": "/Domain"
}
Outputs: data.found, data.email, data.email_status (VALID or CATCHALL), data.source (database or pattern), data.job_title, data.linkedin_url, data.direct_dial, data.credits_charged. A miss carries data.reason: company_unknown, pattern_unknown, catch_all_domain, not_verified, no_email or daily_limit (100 live verifications per account per day).
5. Find the decision-maker at a domain and reveal their email
| Setting | Value |
|---|---|
| Method | POST |
| URL | https://api.coldlytics.com/v3/people/find |
| Headers | Authorization (above), Content-Type: application/json |
| Cost | 1 credit when a VALID email is delivered, plus 1 for a dial with include_dial; at most one person per row; owned people and misses free |
Body (owners and founders first; drop seniorities to accept anyone on file, or add "departments": ["MARKETING"] or "job_titles": ["manager"]):
{
"domain": "/Domain",
"seniorities": ["OWNERS_FOUNDERS", "DIRECTORS_EXECUTIVES"],
"reveal": true,
"include_dial": false
}
Outputs: data.found, data.person.first_name, data.person.last_name, data.person.job_title, data.person.seniority, data.person.email, data.person.email_status, data.person.direct_dial, data.person.linkedin_url, data.person.credits_charged, data.alternates (up to five other people at the company). With "reveal": false the column only picks the person, free, and returns data.person.contact_id for a later reveal.
To reveal a specific person you got from column 1 or 2 instead: POST https://api.coldlytics.com/v3/reveals with the body { "contact_id": /Contact Id, "include_dial": true }; outputs data.email, data.email_status, data.direct_dial, data.credits_charged.
Good to know
- Re-running a column never charges twice: a person your account already owns comes back as a free receipt with the same email and dial.
- Every reveal is saved to your Coldlytics Contacts as well, so the data is yours to export or push elsewhere.
- Full reference: api.coldlytics.com/docs. The same setups in plain text, for pasting into Clay's template notes: api.coldlytics.com/docs/clay.
- Questions, higher limits, or a Clay listing enquiry: support@coldlytics.com.