{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Salary Jobs Scraper",
    "description": "Extract Indeed jobs with normalized salary ranges, pay period, company, location, remote status, posted date, and apply URLs. Filter by minimum or maximum pay, salary period, remote work, job type, and freshness for recruiting alerts and compensation research. Pay per matching job.",
    "version": "0.1",
    "x-build-id": "PaxOQUx4wjp2xsdX0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/schnellscrapers~indeed-salary-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-schnellscrapers-indeed-salary-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/schnellscrapers~indeed-salary-jobs/runs": {
      "post": {
        "operationId": "runs-sync-schnellscrapers-indeed-salary-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/schnellscrapers~indeed-salary-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-schnellscrapers-indeed-salary-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": {
          "searches": {
            "title": "Searches",
            "type": "array",
            "description": "List of Indeed searches to run. Each entry accepts `query`, `location`, `country`, `remoteOnly`, `postedWithinDays`, `jobType`, `radius`, and `sort`. Leave a field blank to broaden the search."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional: paste fully formed Indeed search URLs (for example, `https://www.indeed.com/jobs?q=data+analyst&l=Remote`). Used in addition to `searches`.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "position": {
            "title": "Search keyword",
            "type": "string",
            "description": "Shortcut for one search when `searches` and `startUrls` are empty. Use a role, skill, or company name such as `data analyst`."
          },
          "query": {
            "title": "Query",
            "type": "string",
            "description": "Alias of `position` for a single search, such as `registered nurse`."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, ZIP, locality, or `Remote`. Pairs with `position` or `query`."
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code such as `us`, `uk`, `de`, `ca`, `au`, `fr`, or `in`. Selects the Indeed country domain.",
            "default": "us"
          },
          "jobType": {
            "title": "Job type filter",
            "enum": [
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "permanent"
            ],
            "type": "string",
            "description": "Restrict the single-search shortcut to fulltime, parttime, contract, temporary, internship, or permanent jobs."
          },
          "radius": {
            "title": "Search radius",
            "minimum": 0,
            "type": "integer",
            "description": "Distance from `location` in miles in the US or kilometers in most other countries."
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Order results by `date` for newest postings or `relevance` for Indeed's default order.",
            "default": "relevance"
          },
          "fromDays": {
            "title": "Posted within last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Filter the single-search shortcut to listings posted within N days, for example `7` for the last week."
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 0,
            "type": "integer",
            "description": "Alias of `fromDays` for the single-search shortcut. Use `7` to limit results to the last week."
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Restrict the single-search shortcut to listings Indeed marks as remote.",
            "default": false
          },
          "requireSalary": {
            "title": "Require disclosed salary",
            "type": "boolean",
            "description": "Keep only listings with a numeric employer-posted salary range. Turn off to include jobs where Indeed does not show pay.",
            "default": true
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "number",
            "description": "Keep salary ranges that reach this amount in the selected pay period. For a range, the upper bound must meet the minimum."
          },
          "maxSalary": {
            "title": "Maximum salary",
            "minimum": 0,
            "type": "number",
            "description": "Keep salary ranges that overlap this amount in the selected pay period. For a range, the lower bound must be at or below the maximum."
          },
          "salaryPeriod": {
            "title": "Salary period",
            "enum": [
              "HOURLY",
              "DAILY",
              "WEEKLY",
              "MONTHLY",
              "YEARLY"
            ],
            "type": "string",
            "description": "Match one normalized pay period: hourly, daily, weekly, monthly, or yearly."
          },
          "maxItems": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on matching job records across all searches. Indeed returns about 15 jobs per page; set this above your expected salary-match count.",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Maximum records per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Alias for `maxItems` when one search is provided."
          },
          "maxPagesPerSearch": {
            "title": "Maximum pages per search",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Cap pages fetched per search. Indeed returns about 15 jobs per page, so 5 pages is roughly 75 candidates before salary filtering.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "**Residential proxy is required.** Indeed blocks plain HTTPS and datacenter IPs within a few requests. Use the `RESIDENTIAL` Apify Proxy group.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "dryRun": {
            "title": "Dry run",
            "type": "boolean",
            "description": "Parse and filter pages while logging candidate and match counts without writing dataset records.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}