Indeed Job Scraper
Pricing
$19.99/month + usage
You can access the Indeed Job Scraper 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 Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "Bqu2AEHI7IqofiWSc" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/simpleapi~indeed-job-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-simpleapi-indeed-job-scraper", "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/simpleapi~indeed-job-scraper/runs": { "post": { "operationId": "runs-sync-simpleapi-indeed-job-scraper", "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/simpleapi~indeed-job-scraper/run-sync": { "post": { "operationId": "run-sync-simpleapi-indeed-job-scraper", "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", "properties": { "countryCode": { "title": "Country", "enum": [ "us", "ae", "ar", "au", "at", "bh", "be", "br", "ca", "cl", "cn", "co", "cr", "cz", "dk", "ec", "eg", "es", "fi", "fr", "de", "gr", "hk", "hu", "in", "id", "ie", "il", "it", "jp", "kr", "kw", "lu", "my", "mx", "ma", "nl", "nz", "ng", "no", "om", "pk", "pa", "pe", "ph", "pl", "pt", "qa", "ro", "ru", "sa", "sg", "za", "se", "ch", "tw", "th", "tr", "uk", "uy", "ve", "vn" ], "type": "string", "description": "Select the Indeed country domain to scrape from.", "default": "us" }, "query": { "title": "Query", "type": "string", "description": "Job search keywords (e.g. job title, skills). Required when using Option 1.", "default": "Sales" }, "location": { "title": "Location (city, state, zip code or 'remote')", "type": "string", "description": "Job location for search. Leave empty for remote or use 'remote'.", "default": "" }, "maxRows": { "title": "Max rows (listings)", "minimum": 1, "maximum": 1000, "type": "integer", "description": "Maximum number of jobs to scrape in total.", "default": 100 }, "radius": { "title": "Radius", "enum": [ "", "0", "5", "10", "15", "25", "35", "50", "100" ], "type": "string", "description": "Search radius from location.", "default": "" }, "remote": { "title": "Remote", "enum": [ "", "remote", "hybrid" ], "type": "string", "description": "Filter by remote or hybrid work.", "default": "" }, "level": { "title": "Job level", "enum": [ "", "entry_level", "mid_level", "senior_level" ], "type": "string", "description": "Experience level (US).", "default": "" }, "fromDays": { "title": "From days", "enum": [ "0", "1", "3", "7", "14", "30" ], "type": "string", "description": "Only jobs posted in the last N days.", "default": "0" }, "sort": { "title": "Sort", "enum": [ "", "relevance", "date" ], "type": "string", "description": "Sort results by relevance or date.", "default": "relevance" }, "jobType": { "title": "Job type", "enum": [ "", "fulltime", "parttime", "contract", "temporary", "internship", "volunteer", "permanent", "seasonal", "freelance" ], "type": "string", "description": "Filter by employment type.", "default": "" }, "urls": { "title": "Start URLs", "type": "array", "description": "List of Indeed search or job list URLs. You can specify multiple URLs; the scraper will use these pages. Option 1 is NOT ignored — the actor will also add the built search URL from Option 1 (when provided).", "items": { "type": "string" } }, "maxRowsPerUrl": { "title": "Max rows per URL", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum jobs to scrape per start URL (when using Option 2).", "default": 50 }, "includeSimilarJobs": { "title": "Include similar jobs", "type": "boolean", "description": "Include 'View similar jobs' cards in results.", "default": true }, "enableUniqueJobs": { "title": "Unique jobs only", "type": "boolean", "description": "Deduplicate by job ID across URLs.", "default": true }, "proxyConfiguration": { "title": "Proxy Configuration (optional)", "type": "object", "description": "By default no proxy is used and requests go directly to Indeed. If Indeed blocks or rejects the request, the actor falls back to datacenter proxy, then to residential proxy (with up to 3 retries). Once fallback occurs, the actor sticks with residential proxy for all remaining requests." } } }, "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 Indeed Job Scraper 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: