{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Jobs Scraper - Companies, Reviews, Salaries",
    "description": "Jobs and the employers behind them, in one run. Full descriptions, parsed salaries, company profiles, employee reviews, salary tables and Q&A — joined on Indeed's own employer id, not on company name. 62 countries, no login, pay per result. Only-new mode returns just what changed.",
    "version": "0.0",
    "x-build-id": "YZQ92NkHlcuiLCogY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/autofacts~indeed-jobs-scraper-companies-reviews-salaries/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-autofacts-indeed-jobs-scraper-companies-reviews-salaries",
        "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/autofacts~indeed-jobs-scraper-companies-reviews-salaries/runs": {
      "post": {
        "operationId": "runs-sync-autofacts-indeed-jobs-scraper-companies-reviews-salaries",
        "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/autofacts~indeed-jobs-scraper-companies-reviews-salaries/run-sync": {
      "post": {
        "operationId": "run-sync-autofacts-indeed-jobs-scraper-companies-reviews-salaries",
        "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": {
          "scrapeMode": {
            "title": "What to scrape",
            "enum": [
              "jobs",
              "company",
              "careerSalary"
            ],
            "type": "string",
            "description": "Which kind of work this run does. Jobs runs a keyword/location search. Company scrapes profiles, reviews, salaries and Q&A from company URLs. Career salary scrapes aggregate pay by job title. Fields belonging to the other modes are ignored, and the log names anything skipped.",
            "default": "jobs"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles, skills or company names. Each keyword is searched separately.",
            "default": [
              "software engineer"
            ],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state, ZIP or region. Leave empty to search the whole country.",
            "default": "New York, NY"
          },
          "country": {
            "title": "Country",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IE",
              "IN",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BE",
              "AT",
              "CH",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "PT",
              "GR",
              "CZ",
              "HU",
              "RO",
              "UA",
              "RU",
              "TR",
              "IL",
              "AE",
              "SA",
              "QA",
              "KW",
              "BH",
              "OM",
              "EG",
              "MA",
              "NG",
              "ZA",
              "JP",
              "CN",
              "HK",
              "TW",
              "SG",
              "MY",
              "TH",
              "VN",
              "PH",
              "ID",
              "PK",
              "NZ",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO",
              "PE",
              "EC",
              "UY",
              "VE",
              "CR",
              "PA",
              "LU"
            ],
            "type": "string",
            "description": "Which Indeed country domain to search. Sets the domain, currency and language.",
            "default": "US"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Any Indeed URL: a /jobs search (filters in the query string are honoured), a /viewjob job page, a /cmp company page or tab, or a /career salary page.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "jobKeys": {
            "title": "Job keys",
            "type": "array",
            "description": "Look up specific jobs by Indeed job key — the jk value in a job URL, e.g. fb2c1853dfef615a.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14"
            ],
            "type": "string",
            "description": "Only return jobs posted within this window.",
            "default": ""
          },
          "jobType": {
            "title": "Job type",
            "type": "array",
            "description": "Filter by employment type, using Indeed's own list. Indeed accepts one type per search, so selecting several runs one search per type — which widens coverage rather than narrowing it.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "temporary",
                "internship",
                "permanent",
                "new_grad",
                "commission"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Permanent",
                "New grad",
                "Commission"
              ]
            },
            "default": []
          },
          "remoteWork": {
            "title": "Remote",
            "enum": [
              "",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "Filter to remote or hybrid positions. Indeed filters remote server-side; it has no working hybrid filter, so hybrid is applied to the results instead and a hybrid run reads more pages for the same number of rows.",
            "default": ""
          },
          "education": {
            "title": "Education level",
            "enum": [
              "",
              "high_school_degree",
              "associate_degree",
              "bachelor_degree",
              "master_degree",
              "doctoral_degree"
            ],
            "type": "string",
            "description": "Filter by the education a job requires. Indeed supports this filter but few scrapers expose it.",
            "default": ""
          },
          "salaryMin": {
            "title": "Minimum salary",
            "type": "integer",
            "description": "Filter to jobs at or above this annual salary, in the country's currency. Uses Indeed's own estimate-based pay filter."
          },
          "onlyWithSalary": {
            "title": "Only jobs showing pay",
            "type": "boolean",
            "description": "Drop jobs with no stated or estimated pay. Applied by Indeed, so it costs nothing.",
            "default": false
          },
          "onlyExternalJobs": {
            "title": "Only jobs that apply off-site",
            "type": "boolean",
            "description": "Keep only jobs whose application happens on the employer's own site, not through Indeed Apply.",
            "default": false
          },
          "radius": {
            "title": "Search radius (miles)",
            "type": "integer",
            "description": "How far from the location to search, in miles. Only used when a location is set.",
            "default": 25
          },
          "radiusUnit": {
            "title": "Radius unit",
            "enum": [
              "miles",
              "km"
            ],
            "type": "string",
            "description": "Unit for the search radius.",
            "default": "miles"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance is Indeed's default ranking. Date returns the newest postings first.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Total jobs to return across all keywords and slices.",
            "default": 100
          },
          "maxPages": {
            "title": "Max pages per search",
            "type": "integer",
            "description": "Indeed serves 25 jobs per page and starts recycling results past about page 40, so 50 is a practical ceiling.",
            "default": 50
          },
          "fanOut": {
            "title": "Widen coverage automatically",
            "type": "boolean",
            "description": "When a search reports more results than pagination can reach, re-run it as narrower slices (by date, job type and work arrangement) to reach more of the set.",
            "default": true
          },
          "maxFanOutRequests": {
            "title": "Max extra searches from widening",
            "type": "integer",
            "description": "Caps how many extra searches widening may issue, so a broad query cannot run away.",
            "default": 50
          },
          "deepSearch": {
            "title": "Deep search (related queries)",
            "type": "boolean",
            "description": "Expand each keyword into related phrasings (seniority variants and title synonyms) to reach jobs the original wording never surfaces. Uses the widening budget.",
            "default": false
          },
          "deduplicate": {
            "title": "Remove duplicate jobs",
            "type": "boolean",
            "description": "Drop jobs already seen in this run. Slices overlap by design, so leaving this on is recommended.",
            "default": true
          },
          "strictMatch": {
            "title": "Strict keyword match",
            "type": "boolean",
            "description": "Drop jobs whose title and description do not contain your keywords. Indeed pads every result page with loosely-related and sponsored jobs.",
            "default": false
          },
          "uniqueCompanies": {
            "title": "One job per company",
            "type": "boolean",
            "description": "Return at most one job per employer, so every row is a distinct company.",
            "default": false
          },
          "resumeKeywords": {
            "title": "Your skills (resume matching)",
            "type": "array",
            "description": "Skills from a CV, one per line. Every job is scored against them and gains resumeMatchScore (0-100) plus matched and missing skill lists. Not a search filter — it does not change which jobs Indeed returns.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "storeName": {
            "title": "Memory store name",
            "type": "string",
            "description": "Name a store to remember which jobs this search has already returned, so scheduled runs can skip them. Use a distinct name per saved search — for example \"nurses-texas\". Leave empty for one-off runs."
          },
          "onlyNewJobs": {
            "title": "Only jobs not seen before",
            "type": "boolean",
            "description": "Return only postings no earlier run has returned. Requires a memory store name. Skipped jobs cost no requests and no per-result charge, which is what makes a daily schedule affordable.",
            "default": false
          },
          "seenRetentionDays": {
            "title": "Remember jobs for (days)",
            "type": "integer",
            "description": "How long a job stays remembered. Older entries are pruned, so a long-lived store stays small and a re-posted job can surface again.",
            "default": 30
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Fetched in batches of 40 jobs per request, so this is nearly free.",
            "default": true
          },
          "includeJobDetail": {
            "title": "Include extra job detail",
            "type": "boolean",
            "description": "Adds benefits, requirements and attributes. Costs one extra request per job — slower and more expensive.",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Adds industry, size, revenue, CEO and headquarters. Costs one extra request per unique company.",
            "default": false
          },
          "enrichEmails": {
            "title": "Find employer contact email",
            "type": "boolean",
            "description": "Read each employer's own public website for a business contact address (careers@, hr@, info@ and similar), adding contactEmails and contactWebsite to the company record. Requires company details, since that is where the website comes from. Fetches at most three pages per employer and never leaves the employer's own domain.",
            "default": false
          },
          "qualifyByPayment": {
            "title": "Detect payment processors",
            "type": "boolean",
            "description": "Requires the contact-email option. Reports which payment processors appear on the employer's site (Stripe, PayPal, Shopify and others) as a signal that the business transacts online. Reuses the pages already fetched, so it costs no extra requests.",
            "default": false
          },
          "companyUrls": {
            "title": "Company URLs",
            "type": "array",
            "description": "Indeed company pages, e.g. https://www.indeed.com/cmp/Google",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companyDataTypes": {
            "title": "Company data to collect",
            "type": "array",
            "description": "Which company data to collect. Profile and reviews are the default; salaries and Q&A each cost extra requests. Indeed serves interview content inside Q&A rather than as a separate dataset.",
            "items": {
              "type": "string",
              "enum": [
                "profile",
                "reviews",
                "salaries",
                "qna"
              ],
              "enumTitles": [
                "Profile",
                "Reviews",
                "Salaries",
                "Questions & answers"
              ]
            },
            "default": [
              "profile",
              "reviews"
            ]
          },
          "maxReviews": {
            "title": "Max reviews per company",
            "type": "integer",
            "description": "Reviews are returned 20 per page. Set 0 for no limit.",
            "default": 100
          },
          "maxQuestions": {
            "title": "Max questions per company",
            "type": "integer",
            "description": "Community questions are returned 10 per page. Set 0 for no limit.",
            "default": 50
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "YYYY-MM-DD. Leave empty for all reviews."
          },
          "salaryJobTitles": {
            "title": "Job titles for salary lookup",
            "type": "array",
            "description": "Used with the Career salary mode, e.g. \"software engineer\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "salaryLocations": {
            "title": "Locations for salary lookup",
            "type": "array",
            "description": "Optional locations to pair with each salary job title, e.g. \"New York, NY\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies are strongly recommended — Indeed challenges most datacenter traffic.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "sessionCookies": {
            "title": "Indeed session cookies",
            "type": "string",
            "description": "Optional. Paste cookies from a browser you are already signed in to Indeed with, either as the raw Cookie header (`CTK=…; SESSION_ID=…`) or as a JSON array of {name, value}. A signed-in run pages through the desktop site, which is closed to anonymous visitors. The actor never asks for your password, sends these cookies only to indeed.com, and never writes them to the log or the dataset. Leave empty to run signed out — that is the default and works for everything except desktop pagination."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "type": "integer",
            "description": "Lower values are gentler and less likely to be challenged.",
            "default": 5
          },
          "minConcurrency": {
            "title": "Min concurrency",
            "type": "integer",
            "description": "Minimum number of pages processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "type": "integer",
            "description": "How many times a blocked or failed request is retried on a fresh proxy session before giving up.",
            "default": 6
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}