ATS Jobs & Change Feed
Pricing
from $1.00 / 1,000 results
Go to Apify Store
ATS Jobs & Change Feed
Normalize public Greenhouse, Lever, Lever EU, and Ashby job boards, then emit stable job-change events.
ATS Jobs & Change Feed
Pricing
from $1.00 / 1,000 results
Normalize public Greenhouse, Lever, Lever EU, and Ashby job boards, then emit stable job-change events.
You can access the ATS Jobs & Change Feed programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "EkC2O7wnA8amnfdbm" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/sapph1re~public-ats-job-change-feed/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-sapph1re-public-ats-job-change-feed", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/sapph1re~public-ats-job-change-feed/runs": { "post": { "operationId": "runs-sync-sapph1re-public-ats-job-change-feed", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/sapph1re~public-ats-job-change-feed/run-sync": { "post": { "operationId": "run-sync-sapph1re-public-ats-job-change-feed", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "sources" ], "properties": { "sources": { "title": "ATS job boards", "minItems": 1, "maxItems": 50, "type": "array", "description": "One object per public job board. boardName is the token used in the provider's public job-board URL.", "items": { "type": "object", "additionalProperties": false, "properties": { "provider": { "title": "Provider", "description": "Public ATS API provider and region.", "type": "string", "editor": "select", "enum": [ "greenhouse", "lever", "lever-eu", "ashby" ], "enumTitles": [ "Greenhouse", "Lever (global)", "Lever (EU)", "Ashby" ] }, "boardName": { "title": "Board name", "description": "The public board token, for example stripe, spotify, or ashby.", "type": "string", "editor": "textfield", "minLength": 1, "maxLength": 120 }, "companyName": { "title": "Company name", "description": "Optional display name used when the provider does not return one.", "type": "string", "editor": "textfield", "maxLength": 200 } }, "required": [ "provider", "boardName" ] }, "default": [ { "provider": "greenhouse", "boardName": "stripe", "companyName": "Stripe" }, { "provider": "lever", "boardName": "spotify", "companyName": "Spotify" }, { "provider": "ashby", "boardName": "ashby", "companyName": "Ashby" } ] }, "outputMode": { "title": "Output mode", "enum": [ "snapshot", "changes" ], "type": "string", "description": "snapshot returns all current jobs; changes returns NEW and UPDATED jobs plus optional REMOVED and UNCHANGED events.", "default": "snapshot" }, "previousJobs": { "title": "Previous snapshot", "type": "array", "description": "Optional prior normalized items used to calculate change events. Use this or previousDatasetId, not both.", "items": { "type": "object" }, "default": [] }, "previousDatasetId": { "title": "Previous snapshot dataset ID", "pattern": "^[A-Za-z0-9_-]*$", "maxLength": 80, "type": "string", "description": "Recommended for recurring change feeds. Select the dataset reported as current_snapshot_dataset_id by the preceding run." }, "emitUnchanged": { "title": "Emit unchanged jobs", "type": "boolean", "description": "Include UNCHANGED records when outputMode is changes.", "default": false }, "emitRemoved": { "title": "Emit removed jobs", "type": "boolean", "description": "Include jobs present in previousJobs but absent from the current boards.", "default": true }, "query": { "title": "Keyword filter", "type": "string", "description": "Case-insensitive substring matched against title, company, and description.", "default": "" }, "location": { "title": "Location filter", "type": "string", "description": "Case-insensitive substring matched against normalized location text.", "default": "" }, "remoteOnly": { "title": "Remote jobs only", "type": "boolean", "description": "Return only records explicitly marked remote by the ATS.", "default": false }, "publishedAfter": { "title": "Published after", "type": "string", "description": "Optional ISO 8601 timestamp. Jobs without a published timestamp are excluded when this is set.", "default": "" }, "maxJobsPerSource": { "title": "Maximum jobs per source", "minimum": 1, "maximum": 5000, "type": "integer", "description": "Deterministic per-board output ceiling after normalization and filtering.", "default": 1000 }, "maxTotalJobs": { "title": "Maximum total jobs", "minimum": 1, "maximum": 10000, "type": "integer", "description": "Hard ceiling across all boards, applied before change events are emitted.", "default": 5000 }, "maxConcurrency": { "title": "Maximum concurrency", "minimum": 1, "maximum": 10, "type": "integer", "description": "Number of public boards fetched at once.", "default": 5 }, "includeRaw": { "title": "Include provider response", "type": "boolean", "description": "Attach the original provider record for debugging. Off by default to keep datasets compact.", "default": false } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for ATS Jobs & Change Feed from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: