Resolve402 / services
Hiring signals
GET /api/hiring-signals · $0.01 per call (USDC on Base or Solana, x402)
Hiring signals of a company: open jobs read from its public ATS board (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, Workable, Teamtailor, Workday), summarized as buying signals (volume, last 30 days, functions hiring, seniority mix, leadership roles); each job carries its function and seniority (intern to c-level). From a domain, a French SIREN or a company name. Chain with /api/decision-makers to get who to contact. Charged only if open jobs are found.
Problem solved
You want to know if a company is hiring, how much and in which functions (a buying signal), before contacting its decision makers.
Use cases
- Prioritize accounts: a company hiring sales or data people is more likely to buy tools for those teams.
- Chain: GET /api/hiring-signals?domain=doctolib.fr, then /api/decision-makers?company=doctolib to know who to write to.
Input
GET /api/hiring-signals?domain=<domain> | ?siren=<9 digits> | ?company=<name> [&limit=50]
| Parameter | Where | Type | Description |
|---|---|---|---|
domain | query | string | Company web domain, e.g. acme.com |
siren | query | string | 9-digit French SIREN (alternative to domain) |
company | query | string | French company name (alternative to domain) |
limit | query | integer | Max jobs returned (1-200, default 50) |
Output
Finds the company's public ATS board (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, Workable, Teamtailor, Workday) and returns open jobs plus signals: open_jobs, posted_last_30d, hiring_intent (low/medium/high), by_function (sales, engineering, data_ai...), by_seniority, leadership_roles. "next" gives the /api/decision-makers call to chain. 404 = no public board or no open jobs, not charged.
Price
$0.01 per call. Charged only if open jobs are found: 404 (company or domain not found, no public ATS board, no open jobs) is not charged.
Example
GET https://resolve402.dev/api/hiring-signals?domain=doctolib.fr
{
"domain": {
"domain": "acme.com",
"confidence": "high",
"evidence": "caller"
},
"ats": {
"provider": "lever",
"board": "acme",
"confidence": "high",
"evidence": "ats_link_on_/careers"
},
"signals": {
"open_jobs": 42,
"posted_last_30d": 11,
"hiring_intent": "high",
"by_function": {
"engineering": 18,
"sales": 9
},
"by_seniority": {
"mid": 25,
"senior": 10,
"lead": 4,
"head_director": 2,
"junior": 1
},
"leadership_roles": [
{
"title": "Head of Sales France"
}
]
},
"jobs": [
{
"title": "Account Executive",
"department": "Sales",
"location": "Paris",
"posted_at": "2026-09-28T00:00:00.000Z",
"url": "https://jobs.lever.co/acme/1",
"function": "sales",
"seniority": "mid"
}
]
}Bazaar discovery example served in the production 402 (the response shows the shape on an illustrative acme.com board).
Sources
- Public job-board APIs of the company's ATS (Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, Workable, Teamtailor, Workday)
- French registry (recherche-entreprises.api.gouv.fr) to resolve a SIREN or company name to a domain
Limits
- Only sees public ATS boards: no LinkedIn, Indeed or Welcome to the Jungle.
- ats.confidence "low" = board name guessed from the domain.
- Workday boards: the first 100 jobs are analyzed; open_jobs is the board's full count.
- SIREN and company name inputs resolve French companies only; a domain works for any country.
Use it
- HTTP + x402: call the URL, pay the 402 with any x402 v2 client, retry with the PAYMENT-SIGNATURE header.
- OpenAPI: /openapi.json (operation
hiringSignals) - MCP:
npx -y resolve402-mcp, toolhiring_signals(npm) - Agent guide: /llms.txt · skill: /SKILL.md