{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Scraper — Jobs, Salaries & Companies",
    "description": "Scrape Indeed jobs by keyword + location or search URL, 20+ countries: title, company, rating, remote/hybrid, salary min/max/period, job type, benefits, posted date, apply type, full description.",
    "version": "0.1",
    "x-build-id": "HKx9I1t2I4eqQzzDp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~indeed-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-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/tortuga~indeed-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-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/tortuga~indeed-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-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": {
          "keywords": {
            "title": "Keywords (job title, skill or company)",
            "type": "array",
            "description": "One search per keyword, e.g. \"software engineer\", \"registered nurse\", \"amazon\". Leave empty to list every job in the location.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, region or postcode as you would type it on Indeed, e.g. \"New York, NY\", \"London\", \"Berlin\", \"Remote\". Leave empty to search the whole country."
          },
          "country": {
            "title": "Country (Indeed site)",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "DE",
              "FR",
              "NL",
              "IE",
              "NZ",
              "SG",
              "ES",
              "IT",
              "CH",
              "AT",
              "BE",
              "BR",
              "MX",
              "ZA",
              "PH"
            ],
            "type": "string",
            "description": "Which Indeed site to search for the keywords. For other Indeed sites, paste a search URL into Start URLs.",
            "default": "US"
          },
          "startUrls": {
            "title": "Start URLs (Indeed search pages)",
            "type": "array",
            "description": "Optional: Indeed search URLs from any country site, with any filters you set on Indeed, e.g. https://www.indeed.com/jobs?q=data+analyst&l=Chicago%2C+IL&fromage=7. Single job pages (/viewjob) are not accepted.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14"
            ],
            "type": "string",
            "description": "Only jobs posted within this many days.",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "temporary",
              "internship",
              "permanent",
              "temptohire",
              "seasonal",
              "apprenticeship",
              "freelance"
            ],
            "type": "string",
            "description": "Indeed's job type filter. Permanent, apprenticeship and freelance exist on some country sites only.",
            "default": ""
          },
          "remote": {
            "title": "Remote / hybrid",
            "enum": [
              "",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Only remote jobs or only hybrid jobs.",
            "default": ""
          },
          "minSalary": {
            "title": "Minimum pay",
            "type": "string",
            "description": "Indeed's Pay filter, written the way the site shows it, e.g. \"$80,000\" on indeed.com or \"£40,000\" on uk.indeed.com. Indeed matches it against stated and estimated pay."
          },
          "radius": {
            "title": "Distance from location",
            "enum": [
              "",
              "0",
              "5",
              "10",
              "15",
              "25",
              "35",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Search radius around the location in miles (kilometres on metric sites). Empty = Indeed's default (usually 25).",
            "default": ""
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance (Indeed's default) or newest first.",
            "default": "relevance"
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "entry",
              "mid",
              "senior"
            ],
            "type": "string",
            "description": "Indeed's experience level filter (offered on indeed.com and a few other sites).",
            "default": ""
          },
          "easyApplyOnly": {
            "title": "Only \"Easily apply\" jobs",
            "type": "boolean",
            "description": "Only jobs you can apply to on Indeed (Indeed Apply).",
            "default": false
          },
          "includeSponsoredGroups": {
            "title": "Include sponsored job groups (indeed.com)",
            "type": "boolean",
            "description": "On indeed.com, page 1 also shows carousels of sponsored jobs grouped by career (e.g. \"Careers in DevOps engineering\"), 10 jobs each and often unrelated to your keyword. Off by default; turn on to save them too (they carry a sponsoredGroup label).",
            "default": false
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total (you pay per job saved).",
            "default": 100
          },
          "maxItemsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap for each keyword / start URL, so one search does not use the whole Max jobs budget."
          },
          "expandSearch": {
            "title": "Collect more than Indeed's first page",
            "type": "boolean",
            "description": "Indeed shows visitors who are not signed in only the first page of a search (15 jobs). With this on, the actor repeats the search through Indeed's own filters (newest first, date posted, job type, remote, pay, experience, ...) and keeps the jobs it has not seen yet. Each extra page is one request.",
            "default": true
          },
          "includeDetails": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Open each job for the full description (text and HTML), street address with coordinates, shifts and the employer's response rate. One extra request per job, so runs are slower and use more proxy traffic.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new jobs or jobs whose title or pay changed. Use with a Schedule; unchanged jobs are not charged. With this on, Max jobs (and Max jobs per search) is the number of jobs checked per run; sort by date to watch the newest jobs.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxy is required: Indeed shows datacenter IPs a Cloudflare check. The actor picks a residential IP in the Indeed site's country automatically. Each search page is about 0.3 MB of residential traffic (about $0.0025 at $8/GB) and returns 15-45 jobs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}