tidewell/ats-jobs-api
tidewell--ats-jobs-apiThis tool calls the Actor "tidewell/ats-jobs-api" and retrieves its output results. Actor description: Returns one row per open job: title, department, location, remote flag, employment type, posted date, salary and apply URL, from Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and BambooHR. Input: careers URLs, board slugs, domains or company names. $3 per 1,000 jobs.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"companies": "<companies>"
},
"name": "tidewell--ats-jobs-api"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxJobs | No | Stop the whole run after this many jobs. Leave empty for no limit. You can also cap spend with the run's maximum cost setting. | |
| keywords | No | Keep jobs whose title, department or team contains any of these words (whole-word, case-insensitive; use * as a wildcard), e.g. 'engineer', 'data', 'account executive', 'develop*'. | |
| stateKey | No | Name for the seen-jobs memory, so separate feeds don't share it (e.g. 'uk-data-jobs'). Letters, digits and hyphens. Example values: "default" | default |
| waitSecs | No | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. | |
| companies | Yes | **REQUIRED** One per line. Accepts a careers or job-board URL (boards.greenhouse.io/airtable, jobs.lever.co/palantir, jobs.ashbyhq.com/1password, apply.workable.com/fe-fundinfo, careers.smartrecruiters.com/ServiceNow, bunq.recruitee.com, acme.jobs.personio.de, acme.bamboohr.com/careers), an 'ats:slug' such as greenhouse:stripe, a company website such as notion.so (the job board linked from the site is used), or a company name such as Monzo (the likely board slug is tried on every supported ATS). Example values: ["https://boards.greenhouse.io/airtable","https://jobs.lever.co/palantir","https://jobs.ashbyhq.com/1password","https://apply.workable.com/fe-fundinfo"] | |
| locations | No | Keep jobs whose location text contains any of these (case-insensitive), e.g. 'London', 'United Kingdom', 'GB', 'Berlin', 'Remote'. | |
| defaultAts | No | When an input line is a bare slug or company name, 'Auto' tries every supported ATS and keeps the board with the most open jobs. Pick one ATS to skip the guessing. Example values: "auto" | auto |
| remoteOnly | No | Keep only jobs the ATS marks as remote, or whose location says Remote / Anywhere / Work from home. | |
| departments | No | Keep jobs whose department or team contains any of these (case-insensitive), e.g. 'Engineering', 'Sales', 'Marketing'. | |
| onlyNewJobs | No | Skip jobs this actor already returned in a previous run with the same state key. Job IDs are kept for 365 days in your named key-value store 'ats-jobs-state'. | |
| maxConcurrency | No | Total parallel HTTP requests. A per-host limit of 4 also applies, so ATS servers are never hammered. Example values: 8 | |
| excludeKeywords | No | Drop jobs whose title contains any of these words (whole-word; * is a wildcard), e.g. 'intern*' (intern, internship), 'senior', 'manager'. | |
| postedWithinDays | No | Keep jobs first published in the last N days. Jobs with no published date are dropped when this is set. | |
| maxJobsPerCompany | No | Stop after this many matching jobs from one board. Leave empty for no limit. | |
| includeDescription | No | Add description_html and description_text to each row. Off by default to keep rows small. Salary is still extracted from descriptions when it is not published as a structured field. | |
| searchInDescription | No | Also match keywords against the full job description (for skills like 'Python' or 'Kubernetes'). For SmartRecruiters this needs one extra request per job, so it is slower. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tip | No | Advisory guidance RAG Web Browser wrote to its key-value store under the reserved "TIP" key | |
| runId | Yes | Actor run ID | |
| stats | No | Run statistics | |
| status | Yes | Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED | |
| actorId | Yes | Stable Apify Actor ID from the run record | |
| summary | Yes | Past-tense summary of the run state | |
| exitCode | No | Actor process exit code; populated for terminal states (especially FAILED) | |
| nextStep | Yes | One primary follow-up action with identifiers interpolated | |
| storages | Yes | Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry. | |
| actorName | No | "username/actor-name" | |
| startedAt | No | ISO timestamp when the run started | |
| finishedAt | No | ISO timestamp when the run finished (terminal states only) | |
| statusMessage | No | Pass-through from Apify run.statusMessage | |
| apifyConsoleUrl | No | Personalized Apify Console link to the run; present only for Console sessions |