{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper - Complete Results",
    "description": "Scrape Indeed jobs by keyword & location in 62 countries: full job description, salary, job type, benefits, skills, GPS, company website, size, revenue & rating. Measured 10,000 jobs in under 2 minutes. Returns the count you ask for, not page one. JSON, CSV, Excel, API.",
    "version": "0.0",
    "x-build-id": "194rHrQhCh3aHk4KL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidscripting~indeed-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidscripting-indeed-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/solidscripting~indeed-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidscripting-indeed-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/solidscripting~indeed-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidscripting-indeed-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": {
          "query": {
            "title": "Job title or keywords",
            "type": "string",
            "description": "What to search for, e.g. \"python developer\" or \"registered nurse\"."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, or \"City, ST\" in the US and Canada. Leave empty to search the whole country."
          },
          "queries": {
            "title": "Job titles (several)",
            "type": "array",
            "description": "Search several job titles in one run. Every title is searched in every location, results are deduplicated across all of them, and the run stops as soon as your target is met - so a long list costs nothing extra on a small run.\n\nUse this instead of starting one run per title.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (several)",
            "type": "array",
            "description": "Search several cities in one run - \"City, ST\" in the US and Canada, plain city names elsewhere. Each one is also expanded across nearby towns, and coverage is spread evenly across your list rather than exhausting the first city first.\n\nFifty cities in one run replaces fifty runs. If you also fill in the single Location field above, that city is searched as well.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "ie",
              "nz",
              "in",
              "sg",
              "hk",
              "my",
              "ph",
              "pk",
              "id",
              "th",
              "vn",
              "jp",
              "kr",
              "tw",
              "cn",
              "de",
              "fr",
              "nl",
              "be",
              "ch",
              "at",
              "es",
              "it",
              "pt",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "hu",
              "ro",
              "gr",
              "ua",
              "tr",
              "lu",
              "mx",
              "br",
              "ar",
              "cl",
              "co",
              "pe",
              "ve",
              "ec",
              "cr",
              "pa",
              "uy",
              "za",
              "ng",
              "eg",
              "ma",
              "ae",
              "sa",
              "qa",
              "kw",
              "bh",
              "om",
              "il"
            ],
            "type": "string",
            "description": "Which Indeed site to search. 63 sites supported; thirteen are verified on live runs. What arrives varies by market rather than by the scraper - Polish employers publish salary on about 3% of listings against 85% in the Netherlands. See the README country table.",
            "default": "us"
          },
          "maxItems": {
            "title": "Maximum jobs to return",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "How many jobs you want back. The scraper searches across nearby towns automatically to reach larger numbers - Indeed caps a single search at about one page, and this works past that. Raise maxSubLocations and radiusKm for very large runs.",
            "default": 50
          },
          "postedWithinDays": {
            "title": "Only jobs posted in the last N days",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Leave empty for all jobs regardless of age. Set it to 1 for jobs posted since yesterday, 7 for the last week, and so on.\n\nThis is the setting to use if you run this scraper on a schedule. Indeed applies it before sending results, so a daily run asks for a much smaller set of jobs and you are billed only for those - on one live search, 'nurse' around New York held 7,938 jobs in total but only 194 posted in the last day.\n\nIt also surfaces jobs a broad search hides. An unfiltered search is ordered by relevance and cuts off before it reaches the newest postings, so 40 of the 42 jobs returned for the last day were not in the unfiltered results at all.\n\nExpect far fewer results than an unfiltered run - that is the point of it, not a shortfall."
          },
          "includeDescription": {
            "title": "Include the full job description",
            "type": "boolean",
            "description": "On by default. Adds the complete job description (median ~4,000 characters) to every row, fetched in bulk with the employer's website, size, revenue and rating, so it does not reduce how many rows a run returns. Set false to leave the text out.\n\nIf the bulk fetch fails for a page and you set this to true explicitly, those rows fall back to fetching each job's page one by one, which is slower and returns fewer rows."
          },
          "radiusKm": {
            "title": "Search radius (km)",
            "minimum": 0,
            "maximum": 300,
            "type": "integer",
            "description": "How far around the location to expand when splitting the search across nearby towns. Location is the axis that actually partitions Indeed results, so a wider radius is the main way to reach larger result counts.",
            "default": 100
          },
          "maxSubLocations": {
            "title": "Maximum nearby towns to split across",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "How many nearby towns to search across. Indeed serves about 55 jobs per search and refuses to page deeper, so this is what sets your reach. Towns are chosen for geographic spread rather than size, so you get distinct job markets instead of four names for the same city. Searching stops as soon as your target is met, so a high number costs nothing on small runs.",
            "default": 120
          },
          "strictRelevance": {
            "title": "Only return jobs matching your search words",
            "type": "boolean",
            "description": "Off by default, which returns exactly what Indeed returns.\n\nIndeed's matching is loose: a search for \"nurse\" around New York also returns paramedics, EMTs and occasionally an electrician. Turning this on drops any job whose title and description do not contain your search words.\n\nWorth knowing before you turn it on: it will also drop \"RN\", because the word \"nurse\" does not appear in it. Abbreviated titles are the cost of strictness.",
            "default": false
          },
          "searchMethod": {
            "title": "Search method",
            "enum": [
              "auto",
              "pages"
            ],
            "type": "string",
            "description": "Auto (recommended) searches through Indeed's own job data service: fast, 100 jobs per request, full descriptions and company data included, and it falls back to reading search pages automatically if that is refused.\n\nPages reads Indeed's search pages directly. It is slower and returns fewer jobs per run, but it is the only way to get atsProvider, sponsored-placement data, applyCount, transit stops and the employer's required-versus-preferred skills split.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies are required. Indeed serves datacenter address ranges a hard 403 - including Apify's automatic proxy - so a run without residential returns nothing.\n\nRunning at high volume and already have a residential provider? Switch to Custom proxies and paste your own URLs. The scraper uses them instead, which usually works out cheaper per gigabyte than routing through the platform.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}