{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper - Complete Results",
    "version": "0.0",
    "x-build-id": "yGZ7g0nTChLjmsWx4"
  },
  "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": "Fetch the full job description",
            "type": "boolean",
            "description": "Off by default. Adds the complete job description text to every row - typically around 3,500 characters, against the 200-character 'snippet' you get otherwise.\n\nRead this before turning it on. The description is not on the search page, so each job needs its own page fetched: one request per job, instead of one request per fifty jobs. Indeed limits how many requests it will answer, so a run with descriptions returns far fewer jobs before it starts being refused - expect hundreds rather than thousands.\n\nUse it with a modest 'Maximum jobs to return'. If you want volume, leave this off and use the 'snippet' field, or run it in batches."
          },
          "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
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}