{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper: Search, Company Pages, 60+ Countries",
    "description": "Scrape Indeed job listings with full descriptions and salaries, no login. Search by keyword and location in 60+ countries, pull every open role from a company page, or check job keys. One flat row per job. Pay per job.",
    "version": "0.1",
    "x-build-id": "AhRSQfNLKefHahBlQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leadproof~indeed-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leadproof-indeed-jobs",
        "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/leadproof~indeed-jobs/runs": {
      "post": {
        "operationId": "runs-sync-leadproof-indeed-jobs",
        "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/leadproof~indeed-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-leadproof-indeed-jobs",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles, skills or company names to search for. Each keyword is searched separately for every location and the results are merged and deduplicated by job key. Indeed's advanced syntax works, for example title:(\"software engineer\") -intern.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "City, state, postal code or region, as you would type it on Indeed. Leave empty to search the whole country.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "uk",
              "ca",
              "au",
              "de",
              "fr",
              "nl",
              "be",
              "ch",
              "at",
              "ie",
              "es",
              "it",
              "pt",
              "pl",
              "cz",
              "se",
              "no",
              "dk",
              "fi",
              "gr",
              "hu",
              "ro",
              "tr",
              "ua",
              "il",
              "ae",
              "sa",
              "qa",
              "kw",
              "bh",
              "om",
              "eg",
              "ma",
              "ng",
              "za",
              "in",
              "pk",
              "id",
              "my",
              "sg",
              "ph",
              "th",
              "vn",
              "tw",
              "hk",
              "cn",
              "jp",
              "kr",
              "nz",
              "mx",
              "br",
              "ar",
              "cl",
              "co",
              "pe",
              "ec",
              "cr",
              "pa",
              "uy",
              "ve",
              "lu",
              "mt",
              "cy",
              "hr",
              "si",
              "sk",
              "ee",
              "lv",
              "lt",
              "bg",
              "bd"
            ],
            "type": "string",
            "description": "Which Indeed country site to search. Two-letter code: us, uk, ca, au, de, fr, il, in, and 60 more.",
            "default": "us"
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs Indeed listed in the last N days. Indeed cannot combine this with its job type and remote filters, so when it is set those two are applied to the results after the search.",
            "default": ""
          },
          "remote": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Keep only jobs Indeed tags as remote.",
            "default": false
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Keep only these job types.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "internship"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship"
              ]
            },
            "default": []
          },
          "radiusMiles": {
            "title": "Radius (miles)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Search radius around each location.",
            "default": 50
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance is Indeed's default order. Date returns the newest postings first, which is the right choice for daily runs.",
            "default": "relevance"
          },
          "maxJobsPerSearch": {
            "title": "Max jobs per keyword and location",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each keyword x location search after this many jobs. Indeed serves a few hundred results per search at most; use several keywords or locations to go wider.",
            "default": 100
          },
          "maxJobs": {
            "title": "Max jobs total",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on rows written and charged in this run, across all modes.",
            "default": 500
          },
          "companies": {
            "title": "Company pages",
            "type": "array",
            "description": "Company mode: Indeed company slugs or full company page URLs (https://www.indeed.com/cmp/Ascension). Returns every open role listed on the company's jobs tab. Can be combined with keyword search.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobKeys": {
            "title": "Job keys",
            "type": "array",
            "description": "Lookup mode: Indeed job keys (the jk= value in a job URL). Returns the description for each key that is still live; keys Indeed no longer serves are reported in SUMMARY as missing.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Add the description_html column next to the plain text one.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Indeed's search API answers from Apify datacenter proxies (the cheap default); its HTML pages (company pages, job key lookups) refuse them, so the scraper switches to residential proxies in the search country by itself when a request is refused. Pick RESIDENTIAL here to use residential for everything, or bring your own proxies.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}