{
  "openapi": "3.0.1",
  "info": {
    "title": "Indeed Company Reviews Scraper - Employee Reviews, Ratings",
    "description": "Scrape Indeed company reviews (employer reviews) by name or URL. One row per employee review: rating, 5 sub-ratings, text, pros, cons, job title, location, employer reply. Free: employer ratings, industry, size. Filters: rating, date, job title, location. Only-new mode for monitoring. 44 countries.",
    "version": "1.1",
    "x-build-id": "t2bJLdy15yIZpH3ge"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kestrel~indeed-company-reviews/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kestrel-indeed-company-reviews",
        "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/kestrel~indeed-company-reviews/runs": {
      "post": {
        "operationId": "runs-sync-kestrel-indeed-company-reviews",
        "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/kestrel~indeed-company-reviews/run-sync": {
      "post": {
        "operationId": "run-sync-kestrel-indeed-company-reviews",
        "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": {
          "companies": {
            "title": "Indeed companies",
            "uniqueItems": true,
            "type": "array",
            "description": "Companies: plain names, Indeed slugs or company URLs, e.g. [\"Home Depot\", \"Google\", \"https://www.indeed.com/cmp/Starbucks/reviews\"]. A plain name is enough: Indeed resolves it itself (\"Home Depot\" -> The-Home-Depot, \"Facebook\" -> Meta, \"EY\" -> Ey) and every row shows the match in `company` and `company_name`. An unknown name costs nothing: its status row lists the closest names Indeed knows in `suggestions`. A URL on a country domain (uk.indeed.com/cmp/...) is read for that country only.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerCompany": {
            "title": "Max reviews per company",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Reviews to deliver per company, e.g. 200. Default 100. 0 = every review the chosen countries list. Counted AFTER the filters: 50 with jobTitleContains \"nurse\" = 50 nurse reviews, fewer only when fewer exist. The cost cap: at most N x $0.002 per company. Set a number unless the user asks for all: large employers hold 10,000 to 280,000 reviews (Amazon 56,000, Walmart 283,000). For company ratings without the reviews pass 1. Maximum 100000 ($200).",
            "default": 100
          },
          "countries": {
            "title": "Indeed country domains",
            "uniqueItems": true,
            "type": "array",
            "description": "Default [\"us\"] (kept so saved inputs keep working) = only reviews filed under the United States. Pass [\"all\"] for every country in one walk: for \"all reviews\", non-US employers, and whenever the user names no country. Another code = only that country, in its language, e.g. [\"uk\"] for UK employees: ca, uk, ie, au, nz, in, sg, ph, za, ae, hk, id, th, vn, lu, ch, be, de, at, fr, nl, es, it, pt, br, mx, ar, cl, co, pe, pl, se, dk, no, fi, tr, gr, hu, cz, ro, ua, jp, tw. A review is charged once.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Review order",
            "enum": [
              "newest",
              "helpfulness",
              "rating_desc",
              "rating_asc"
            ],
            "type": "string",
            "description": "Order of the reviews: \"newest\" (default), \"helpfulness\" (most helpful first), \"rating_asc\" (lowest rated first), \"rating_desc\" (highest rated first). With maxReviewsPerCompany N it decides which N you get. Use \"rating_asc\" + maxRating 2 for complaints or the worst reviews, \"rating_desc\" + minRating 4 for the best. Any other value is rejected before anything is charged.",
            "default": "newest"
          },
          "onlyNewReviews": {
            "title": "Only new reviews (monitoring mode)",
            "type": "boolean",
            "description": "true = monitoring mode for a schedule: each run delivers and bills only the reviews that appeared since the previous run; a day with nothing new costs $0. The first run is the baseline: the newest maxReviewsPerCompany reviews (default 100), so keep a number there — 0 would bill the whole history once. The memory is kept in your Apify account per company, country and filter set, so the input never needs editing. Use it for \"new reviews every day/week\". Needs sort \"newest\". Default false.",
            "default": false
          },
          "sinceDate": {
            "title": "Only reviews published on or after",
            "type": "string",
            "description": "Only reviews published on or after this date: \"2026-01-01\" (YYYY-MM-DD), or relative to the day the run starts: any number of days, weeks, months or years, e.g. \"30 days\", \"12 months\". Empty (default) = no date limit. Use it for \"reviews from the last 12 months\". With sort \"newest\" the run stops at the first page that is entirely older. For \"new reviews every day\" on a schedule use onlyNewReviews instead: \"1 day\" means yesterday and today, so a daily run would deliver some reviews twice.",
            "default": ""
          },
          "minRating": {
            "title": "Only reviews at or above this rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Lowest star rating to keep, 1 to 5, e.g. 4 = only 4- and 5-star reviews. 0 (default) = no minimum. Applied before maxReviewsPerCompany and before billing. Pair with sort \"rating_desc\" so the run stops as soon as the reviews fall below it.",
            "default": 0
          },
          "maxRating": {
            "title": "Only reviews at or below this rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Highest star rating to keep, 1 to 5, e.g. 2 = only 1- and 2-star reviews (complaints). 0 (default) = no maximum. Applied before maxReviewsPerCompany and before billing. Pair with sort \"rating_asc\" so the run stops as soon as the reviews rise above it.",
            "default": 0
          },
          "jobTitleContains": {
            "title": "Only reviews from job titles containing",
            "type": "string",
            "description": "Only reviews whose job title contains this text, case-insensitive, e.g. \"nurse\", \"engineer\", \"driver\". Several alternatives with |: \"nurse|RN|LVN\" keeps a review that has any of them. Empty (default) = every job. Applied before the cap and before billing: the run reads on until maxReviewsPerCompany matching reviews are found or the company runs out, so a rare title at a huge employer takes longer but costs no more.",
            "default": ""
          },
          "locationContains": {
            "title": "Only reviews from locations containing",
            "type": "string",
            "description": "Only reviews whose location contains this text, case-insensitive, e.g. \"Austin\", \"London\", or a US state as Indeed writes it: \", CA\", \", TX\" (locations read \"Mountain View, CA\"). Several alternatives with |: \"Austin|Dallas\". Empty (default) = everywhere. Applied before the cap and before billing, like jobTitleContains; both can be combined.",
            "default": ""
          },
          "requireText": {
            "title": "Only reviews with a written text",
            "type": "boolean",
            "description": "true = drop reviews that have no written text before billing. Default false. Nearly every Indeed review has text, so this rarely removes anything.",
            "default": false
          },
          "includeCompanyRow": {
            "title": "Include a company row",
            "type": "boolean",
            "description": "true (default) = one extra FREE row per company (type \"company\"): overall rating, review count, 1-5 star histogram and average ratings for work-life balance, pay and benefits, job security, management and culture — company-wide figures, the same whatever `countries` says — plus top pros and cons, industry, company size, headquarters, website, founded year, revenue, CEO. Use it for \"compare employers\" or \"company ratings\". false = review rows only.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave the default {\"useApifyProxy\": true}. The actor tests the account's datacenter IPs, keeps the ones Indeed serves and switches to residential IPs by itself when none does.",
            "default": {
              "useApifyProxy": true
            }
          },
          "sessions": {
            "title": "Parallel sessions",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Parallel proxy sessions, 1 to 16. Default 2 = typically about 1,200 reviews a minute for one company (20 reviews a page, one page a second per session). Raise to 4-8 for an employer with more than 50,000 reviews or for many companies at once. Does not change the price.",
            "default": 2
          },
          "perIp": {
            "title": "Requests per second per session",
            "minimum": 0.1,
            "maximum": 5,
            "type": "number",
            "description": "Requests per second per session, 0.1 to 5. Default 1. Leave it.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}