| keywords | No | Keep only jobs whose title contains at least one of these words or phrases (case-insensitive substring match, e.g. 'engineer', 'product manager'). Leave empty to keep all titles. | |
| 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** Required. One entry per company career board. The ATS platform is auto-detected from the URL.
[Description truncated]
Example values: ["https://job-boards.greenhouse.io/stripe","https://jobs.lever.co/spotify","https://jobs.ashbyhq.com/ramp","https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"] | |
| locations | No | Keep only jobs with at least one location matching any of these: city, region/state, country name or ISO 3166-1 alpha-2 country code (e.g. 'London', 'California', 'Canada', 'US'). Leave empty for all locations. Combine with 'Remote only' for remote jobs in a given country. | |
| maxRetries | No | How many times to retry a request after HTTP 429, 5xx or a timeout, with exponential backoff.
Example values: 4 | |
| remoteOnly | No | If true, keep only remote jobs (flagged remote by the ATS, workplace type REMOTE, or 'Remote' in the location). | |
| departments | No | Keep only jobs whose department or team contains any of these (case-insensitive substring, e.g. 'engineering', 'sales', 'marketing'). Workday boards do not expose departments, so this filter removes all Workday jobs when set. | |
| maxConcurrency | No | Maximum number of HTTP requests in flight at once across all boards. The default of 5 is polite and fast enough for most runs.
Example values: 5 | |
| stateStoreName | No | Name of the key-value store that keeps delivered job IDs for 'Only new jobs'. Runs that share a name share history. Use a different name for each independent feed or alert.
Example values: "ats-job-feed-state" | ats-job-feed-state |
| emitRemovedJobs | No | Only used with 'Only new jobs'. If true, jobs that disappeared from a board since the last run are output as free records with changeType='removed', firstSeenAt and removedDetectedAt. Requires a complete board listing (for Workday: no cap or keyword pre-filter). | |
| excludeKeywords | No | Drop jobs whose title contains any of these words or phrases (case-insensitive substring match, e.g. 'intern', 'senior'). | |
| firstRunEmitsAll | No | Only used with 'Only new jobs'. When a board is seen for the first time: true (default) outputs all its current jobs once; false records them silently as a baseline so you only get jobs posted later.
Example values: true | |
| postedWithinDays | No | Keep only jobs posted in the last N days (e.g. 7). Jobs without a posted date are kept. Leave empty for any date. | |
| maxJobsPerCompany | No | Maximum number of jobs returned per board, after filters. With 'Only new jobs' it caps new jobs per board per run (held-back jobs come in later runs). Leave empty for no cap. Use a small value (e.g. 10-100) for quick tests and to control cost ($0.0015 per job). On the Apify Free plan, the first 50 job results per account are free while the monthly free pool lasts; after that the normal price applies.
Example values: 25 | |
| includeDescription | No | If true (default), each job includes the full description as HTML (descriptionHtml) and plain text (descriptionText). Set false for a smaller, faster dataset with metadata only.
Example values: true | |
| onlyNewSinceLastRun | No | If true, the Actor remembers which job IDs it already delivered per board (in the named key-value store below) and outputs only jobs not delivered before, marked changeType='new'. Use for scheduled job alerts and change feeds. If false (default), every matching job is returned on every run. | |