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.

Get a free API key API reference

Set up once

  1. Sign up with your work email; the key (ak_live_...) is shown once.
  2. In Clay, store it as a secret named ARCADIUM_API_KEY (never in a table column).
  3. 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.
  4. 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 columnJSON pathMeaning
ATShiring.atspersonio, teamtailor, recruitee, greenhouse, ...
Open jobshiring.openJobsOpen jobs on the primary career site
Top countryhiring.topCountries[0].nameISO country with most open jobs
Net change 30dsignals.netChange30dOpen 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 columnJSON pathMeaning
Sales jobscountOpen sales jobs returned (up to the limit of 10): "sales" in the ad, ISCO groups 24/33/52
Sales job titlesdata[*].titleUp to 10 titles
Sales countriesdata[*].countriesWhere 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 columnJSON pathMeaning
Awards (90 days)countContract awards in the last 90 days
Largest award EURmax(data[*].evidence.valueEur)Clay formula over the list
Latest buyerdata[0].evidence.buyerPublic buyer of the newest award
Latest award linkdata[0].evidence.urlOfficial notice (TED, Find a Tender, national board)
Award daydata[0].occurredAtDay 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=500

One 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 columnJSON pathMeaning
Switchedcount1 or more = an ATS switch in the last 90 days
From ATSdata[0].evidence.fromOld system(s)
To ATSdata[0].evidence.toNew system
Switch daydata[0].occurredAtDay the new board took over
Provisionaldata[0].provisionaltrue = 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=100

Dated 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.

Get a free API key Pricing

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.