{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper — Indeed API Alternative, Salary, Vacancies",
    "description": "Indeed API alternative: Indeed jobs by keyword or search URL — title, company, location, salary, posted date and apply link on every row, exact-country results (UK means UK). From $1.50 per 1,000 job listings. A row cap and a deadline stop the run exactly there. Never pay for an undelivered job.",
    "version": "1.0",
    "x-build-id": "H58khRUdGERTYhh7m"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyfetch~indeed-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyfetch-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/steadyfetch~indeed-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyfetch-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/steadyfetch~indeed-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyfetch-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Job titles or keywords (for example \"software engineer\"). You can also paste a full Indeed search URL such as https://uk.indeed.com/jobs?q=data+analyst — a pasted search keeps its own country and filters. No result fee for a search that matches nothing, a blocked or removed listing, or a listing this account already has. A company's own careers page belongs in steadyfetch/company-jobs-by-domain; Indeed and company boards merged into one feed is steadyfetch/multi-job-board-scraper. Called with no input at all (an empty {} from the API or an agent), the run is a 5-listing sample — \"software engineer\" on Indeed US — charged like any run, and setting only the filters below leaves that sample running under them.",
            "default": [
              "_demo"
            ],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Which Indeed country sites to search. Each country is a separate search, so two terms across two countries is four searches. United States, United Kingdom and Germany are verified end to end; other countries use Indeed's own country site and any listing that comes back outside the country you asked for is reported and never charged.",
            "items": {
              "type": "string",
              "enum": [
                "US",
                "GB",
                "DE",
                "CA",
                "AU",
                "IE",
                "NZ",
                "FR",
                "ES",
                "IT",
                "NL",
                "BE",
                "CH",
                "AT",
                "SE",
                "DK",
                "NO",
                "FI",
                "PL",
                "PT",
                "GR",
                "IN",
                "SG",
                "JP",
                "AE",
                "ZA",
                "MX",
                "BR",
                "TR"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Germany",
                "Canada",
                "Australia",
                "Ireland",
                "New Zealand",
                "France",
                "Spain",
                "Italy",
                "Netherlands",
                "Belgium",
                "Switzerland",
                "Austria",
                "Sweden",
                "Denmark",
                "Norway",
                "Finland",
                "Poland",
                "Portugal",
                "Greece",
                "India",
                "Singapore",
                "Japan",
                "United Arab Emirates",
                "South Africa",
                "Mexico",
                "Brazil",
                "Turkey"
              ]
            },
            "default": [
              "US"
            ]
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or postcode to search near, as you would type it on Indeed (for example \"Austin, TX\"). Leave empty to search the whole country."
          },
          "radiusKm": {
            "title": "Radius",
            "minimum": 1,
            "type": "integer",
            "description": "How far around the location to search, in kilometres. Only used when a location is set. Indeed's own radius selector stops at 160 km (100 miles), so ask for more and the run continues at 160, with one uncharged row saying so."
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Only jobs Indeed posted in the last N days. Indeed's own window stops at 30 days, so ask for a longer one and the run continues at 30, with one uncharged row saying so."
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Ask Indeed to order results by date instead of relevance. The value or the name of the order both work — date and \"Date posted\" are the same sort.",
            "default": "relevance"
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Keep only listings Indeed marks as remote. Listings that are filtered out are never charged.",
            "default": false
          },
          "includeDescription": {
            "title": "Fetch the full description for every job",
            "type": "boolean",
            "description": "Off by default. When on, each delivered full description costs one extra Full description charge — and only when a description actually comes back; a description that cannot be fetched is reported on its row and never charged. If this option is not yet active on this listing, the run says so and charges nothing extra.",
            "default": false
          },
          "maxItems": {
            "title": "Max job listings for the whole run",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on delivered job listings across every search in this run. This actor delivers up to 10,000 listings in one run; ask for more and the run continues at 10,000, with one uncharged row saying so.",
            "default": 100
          },
          "maxRunSeconds": {
            "title": "Max run seconds",
            "type": "integer",
            "description": "The run stops cleanly before this many seconds and reports what is left, instead of being killed by a timeout. A run is given between 30 and 3,600 seconds; ask for more or less and the run continues at whichever of the two is nearer, with one uncharged row saying so.",
            "default": 900
          },
          "includeSeen": {
            "title": "Include listings you already have",
            "type": "boolean",
            "description": "OFF (default): a listing already delivered to your account is skipped before it takes a row slot — not delivered again, not charged, not counted against your row cap. ON: those rows come back anyway from the search page, marked `repeat: true` with `firstSeenAt` and `firstSeenRunId` naming the run that first delivered them, and still not charged. A handed-back row carries no full description: that text was delivered with it in the earlier run and is not fetched (or charged) a second time, and the row says so.",
            "default": false
          },
          "resumeFromDatasetId": {
            "title": "Continue from an earlier run's dataset",
            "type": "string",
            "description": "The default dataset ID of an earlier run of this actor. Leave empty to start fresh. If the dataset cannot be read, the run stops before fetching anything and charges nothing, rather than risk billing you twice."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}