{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper",
    "description": "Scrapes live job listings from Indeed across 21 country sites: title, company, rating, location, parsed salary range, job types, remote model, benefits and posting age. Sponsored ads are flagged and excluded by default, and each summary row reports whether your location filter really applied.",
    "version": "0.1",
    "x-build-id": "D1y9Rl6rkqE9wJJqX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~indeed-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-indeed-jobs-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/scrapyx~indeed-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-indeed-jobs-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/scrapyx~indeed-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-indeed-jobs-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Job titles or keywords, e.g. \"python developer\". Each query is crawled independently and gets its own summary row. Leave empty to crawl the unfiltered board for the location and filters below.",
            "default": [
              "python developer"
            ],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "uk",
              "ca",
              "au",
              "de",
              "fr",
              "in",
              "sg",
              "nl",
              "es",
              "it",
              "br",
              "jp",
              "mx",
              "ie",
              "ph",
              "za",
              "ae",
              "pl",
              "se",
              "ch"
            ],
            "type": "string",
            "description": "Which Indeed country site to search. Each country is a separate job board with its own listings; use the local language in your query for non-English sites.",
            "default": "us"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or postcode, e.g. \"Austin, TX\" or \"London\". IMPORTANT: Indeed does not reject a place name it cannot resolve - it drops the filter and returns the whole country while echoing your text back. Every summary row carries locationMatchRatio so you can see whether the filter actually applied.",
            "default": "Austin, TX"
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "permanent",
              "commission",
              "apprenticeship"
            ],
            "type": "string",
            "description": "Employment type filter. Leave empty for any. Unknown values are silently ignored by Indeed, so this actor refuses anything outside the list.",
            "default": ""
          },
          "datePosted": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14"
            ],
            "type": "string",
            "description": "Only jobs posted in the last N days. Leave empty for any age.",
            "default": ""
          },
          "radius": {
            "title": "Search radius (miles/km)",
            "enum": [
              "",
              "0",
              "5",
              "10",
              "15",
              "25",
              "35",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Distance around the location. Indeed's own radio buttons only - other values are not honoured predictably. Leave empty for Indeed's default (25).",
            "default": ""
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "",
              "date"
            ],
            "type": "string",
            "description": "Result ordering. Relevance is Indeed's default; date puts the newest postings first.",
            "default": ""
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Apply Indeed's own Remote facet. Be aware this is a very aggressive filter - a query matching 3,386 jobs dropped to 8 with it on.",
            "default": false
          },
          "includeSponsored": {
            "title": "Include sponsored (advertised) jobs",
            "type": "boolean",
            "description": "Off by default. On the US site, 25 of page 1's 40 cards are paid placements rather than organic search results. They are always counted in the summary row; this switch decides whether they also become job rows.",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs per query",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many job rows per search query. Set 0 for no cap (still bounded by the page ceiling below).",
            "default": 100
          },
          "maxPagesPerQuery": {
            "title": "Max pages per query",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Search result pages to fetch per query, 1-10. Ten is a hard ceiling, not a default: Indeed's robots.txt permits AI agents start=0 through start=90 and disallows deeper paging. That is roughly 150 organic jobs per query - split into narrower queries to cover more.",
            "default": 10
          },
          "minRequestInterval": {
            "title": "Min seconds between requests",
            "type": "string",
            "description": "Politeness pacing between request starts. This, not maxConcurrency, is the honest speed control - once the rate cap binds, extra concurrency buys nothing.",
            "default": "1.2"
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Upper bound on in-flight requests across all queries.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Residential is recommended on the platform; pass an empty object to go direct.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}