Company Job Postings API
Jobs from Workday, Greenhouse, Lever, Ashby, Workable and SmartRecruiters in one normalized schema.
Example request
curl -X POST https://radarbg.com/v1/ats-jobs-aggregator \
-H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
-d '{"companies": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite", "greenhouse:stripe", "lever:palantir", "ashby:ramp"], "includeRemoteWithLocations": true, "remoteOnly": false, "postedWithinDays": 0}'
Answer: {"ok": true, "count": N, "items": [...], "usage": {...}}. Failed calls are not counted.
Inputs
| Field | Type | Description |
|---|---|---|
companies | array | Leave EMPTY to search all 800+ indexed companies by Title keywords / Locations / Departments (search mode). Or one per line: a company name (Stripe, Scale AI), a careers URL (nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, boards.gre |
titleKeywords | array | Keep only jobs whose title contains any of these words (e.g. engineer, sales). Empty = all jobs. With an empty company list this searches every indexed company. |
excludeKeywords | array | Drop jobs whose title contains any of these words (e.g. senior, intern). |
locations | array | Keep jobs whose location contains any of these (e.g. London, Germany, New York). |
includeRemoteWithLocations | boolean | When a location filter is set, still include remote jobs. |
remoteOnly | boolean | Keep only remote jobs. |
departments | array | Keep jobs whose department or team contains any of these (e.g. Engineering, Marketing). |
postedWithinDays | integer | Keep only jobs posted in the last N days. 0 = any date. |
minSalary | integer | Keep jobs whose maximum listed salary is at least this amount (jobs without salary are dropped). 0 = no filter. |
maxSearchCompanies | integer | Only when Companies is empty: how many best-matching companies (most matching open jobs first) are read live from their job boards. Higher = more results, longer run. |
onlyNewJobs | boolean | Remember jobs from previous runs with the same company list and return only new ones. Ideal for scheduled monitoring. |
monitorId | string | Optional name for this monitor, e.g. 'remote-data-jobs'. Runs with the same Monitor ID share their 'already seen' memory, so you can change filters or companies without getting old jobs again. Empty = memory per company list / search. |
includeDescription | boolean | Add the full plain-text job description. |
includeHiringHistory | boolean | Adds firstSeenAt, daysOpen and openBeforeIndex to every job, and a 7-day trend per company (open jobs now vs 7 days ago, new and closed postings) to RUN_SUMMARY. Comes from our own daily snapshots of Greenhouse, Lever and Ashby boards (sinc |
Price
Included in every plan: 100 calls a month free, then from €9 a month for 3,000 calls across all APIs.