Integrations · Clay
Company change signals in a Clay column
One HTTP API column turns a list of company domains into dated facts: who is hiring for sales in Europe, who just won a public contract, who moved to a new ATS. No scraping, no code, no personal data.
Set up once
- Sign up with your work email; the key (
ak_live_...) is shown once. - In Clay, store it as a secret named
ARCADIUM_API_KEY(never in a table column). - Add an enrichment → HTTP API, paste the method, URL and headers of a column below, turn on continue on error and set concurrency to about 5.
- Map the outputs with the JSON paths in each table, then add the filter.
Errors share one shape, { "error": "<code>", "message": "..." }: 404 not_found (no data, do not retry), 429 (wait Retry-After seconds), 401 (missing or wrong key).
Recipe 1: EU SMBs hiring for sales roles
Sales-tooling, sales-recruiting and enablement vendors: small and mid-size European companies that are building a sales team right now.
Input: A table of company domains (column `domain`). Cost: 2 API calls per row.
Column “Arcadium profile”: GET /v1/companies/{{domain}}
{
"method": "GET",
"url": "https://api.arcadiumdata.io/v1/companies/{{domain}}",
"headers": {
"Authorization": "Bearer {{ARCADIUM_API_KEY}}",
"Accept": "application/json"
},
"continueOnError": true,
"maxConcurrentRequests": 5
}| Output column | JSON path | Meaning |
|---|---|---|
| ATS | hiring.ats | personio, teamtailor, recruitee, greenhouse, ... |
| Open jobs | hiring.openJobs | Open jobs on the primary career site |
| Top country | hiring.topCountries[0].name | ISO country with most open jobs |
| Net change 30d | signals.netChange30d | Open jobs now minus 30 days ago |
Column “Arcadium sales jobs”: GET /v1/jobs?domain={{domain}}&isco=24,33,52&q=sales&limit=10
{
"method": "GET",
"url": "https://api.arcadiumdata.io/v1/jobs?domain={{domain}}&isco=24,33,52&q=sales&limit=10",
"headers": {
"Authorization": "Bearer {{ARCADIUM_API_KEY}}",
"Accept": "application/json"
},
"continueOnError": true,
"maxConcurrentRequests": 5
}| Output column | JSON path | Meaning |
|---|---|---|
| Sales jobs | count | Open sales jobs returned (up to the limit of 10): "sales" in the ad, ISCO groups 24/33/52 |
| Sales job titles | data[*].title | Up to 10 titles |
| Sales countries | data[*].countries | Where the sales roles are |
Filter
- `ATS` is personio, teamtailor or recruitee (the career sites European SMBs use most).
- `Top country` is one of the EU-27: AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE.
- `Open jobs` below 250 (a size proxy; the API returns no headcount) and `Sales jobs` at least 1.
- Sort by `Sales jobs`, then `Net change 30d`.
Recipe 2: Companies that won a public contract over €1M
Vendors that sell to suppliers of the public sector (bid software, staffing, finance, subcontracting): who just won a large contract and has to deliver it.
Input: A table of company domains, or no table at all with the list variant. Cost: 1 API call per row.
Column “Arcadium contract awards”: GET /v1/companies/{{domain}}/pulse?types=tender_awarded
{
"method": "GET",
"url": "https://api.arcadiumdata.io/v1/companies/{{domain}}/pulse?types=tender_awarded",
"headers": {
"Authorization": "Bearer {{ARCADIUM_API_KEY}}",
"Accept": "application/json"
},
"continueOnError": true,
"maxConcurrentRequests": 5
}| Output column | JSON path | Meaning |
|---|---|---|
| Awards (90 days) | count | Contract awards in the last 90 days |
| Largest award EUR | max(data[*].evidence.valueEur) | Clay formula over the list |
| Latest buyer | data[0].evidence.buyer | Public buyer of the newest award |
| Latest award link | data[0].evidence.url | Official notice (TED, Find a Tender, national board) |
| Award day | data[0].occurredAt | Day the award was published |
Filter
- `Largest award EUR` greater than 1,000,000.
- Sort by `Award day`, newest first.
No list yet? Start from the signal
GET https://api.arcadiumdata.io/v1/pulse/events?types=tender_awarded&country=DE&since=2026-09-01&limit=500One call returns up to 500 award events across all companies (filter by `evidence.valueEur` > 1000000 in Clay); page on with `cursor`. Change `country` and `since`.
Recipe 3: Companies that switched ATS
ATS vendors and their partners, HR-tech integrators, recruiting agencies: a new ATS means a new contract, an implementation project and a hiring push.
Input: A table of company domains, or no table at all with the list variant. Cost: 1 API call per row.
Column “Arcadium ATS switch”: GET /v1/companies/{{domain}}/pulse?types=ats_switch
{
"method": "GET",
"url": "https://api.arcadiumdata.io/v1/companies/{{domain}}/pulse?types=ats_switch",
"headers": {
"Authorization": "Bearer {{ARCADIUM_API_KEY}}",
"Accept": "application/json"
},
"continueOnError": true,
"maxConcurrentRequests": 5
}| Output column | JSON path | Meaning |
|---|---|---|
| Switched | count | 1 or more = an ATS switch in the last 90 days |
| From ATS | data[0].evidence.from | Old system(s) |
| To ATS | data[0].evidence.to | New system |
| Switch day | data[0].occurredAt | Day the new board took over |
| Provisional | data[0].provisional | true = under 28 days of history |
Filter
- `Switched` at least 1.
- Optional: `To ATS` is the vendor you sell for, or `From ATS` the one you replace.
No list yet? Start from the signal
GET https://api.arcadiumdata.io/v1/ats/switches?fromAts=lever&toAts=ashby&since=2026-01&limit=100Dated switches since 2023 from our job-board archive, one row per company domain (`domain`, `fromAts`, `toAts`, `switchMonth`, `confidence`); leave out `fromAts`/`toAts` for all switches.
More signals for the same column
The same key reads every dataset: open jobs and posted pay, Company Pulse events (hiring up or down, a new country, first ad with pay, tools in job ads), Shopify store apps and review velocity. Track up to 100 companies on a free watchlist and read only what changed each morning: GET /v1/watchlists/{id}/changes. Where the data comes from: jobs, tenders, ATS switches.
Questions
What does one row cost?
Each HTTP column is one API call per row. The free plan includes 1,000 calls a month at no cost; on paid plans a call works out at €0.0020 (Starter), €0.0008 (Pro), €0.0005 (Business). A row the API has no data for still counts as a call, so filter your table before the second column.
Do I spend Clay credits?
An HTTP API column uses your own API key, so the data is billed by us on your plan, not in Clay credits. Clay may still count the column run under your Clay plan.
Is there personal data in the answers?
No. The API returns company-level facts keyed by website domain: no names, emails or phone numbers. Contacts for the companies you find come from your own Clay enrichments.
What happens for a company you do not cover?
The API answers 404 with error "not_found". Leave "continue on error" on so the row stays empty and the table keeps running.