{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Scraper — Reviews, Salaries, Culture & Jobs",
    "description": "Scrape Glassdoor without login: reviews with sub-ratings and employer replies, salary percentiles by role, interviews, benefits, jobs, offices and culture ratings by demographic group.",
    "version": "0.0",
    "x-build-id": "BwcsenCCA58NC9W5K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/brilliant_gum~glassdoor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-brilliant_gum-glassdoor-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/brilliant_gum~glassdoor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-brilliant_gum-glassdoor-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/brilliant_gum~glassdoor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-brilliant_gum-glassdoor-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Modes",
            "type": "array",
            "description": "What to scrape. Each selected mode runs for every resolved company/URL. company-overview & locations read the Overview page (firmographics + offices); reviews & culture read the reviews page (reviews / demographic ratings); salaries, interviews, jobs and benefits use their own pages.",
            "items": {
              "type": "string",
              "enum": [
                "reviews",
                "salaries",
                "company-overview",
                "interviews",
                "jobs",
                "benefits",
                "culture",
                "locations"
              ],
              "enumTitles": [
                "Reviews",
                "Salaries",
                "Company overview",
                "Interviews",
                "Jobs",
                "Benefits",
                "Culture & diversity",
                "Locations / offices"
              ]
            },
            "default": [
              "reviews"
            ]
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Company names to resolve to Glassdoor employers via search (e.g. \"Google\", \"Netflix\"). The best-matching employer is used.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Direct Glassdoor URLs (any tab / country domain). Reviews, Salary, Interview, Jobs or Overview URLs are all accepted; the employer id (E12345) is extracted automatically.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "companySearchQuery": {
            "title": "Company search query",
            "type": "string",
            "description": "Free-text company search. Resolves the top matching employer(s)."
          },
          "searchDomain": {
            "title": "Glassdoor domain (TLD)",
            "type": "string",
            "description": "Glassdoor domain to use, e.g. www.glassdoor.com, www.glassdoor.co.uk, www.glassdoor.ca.",
            "default": "www.glassdoor.com"
          },
          "minCompanyRating": {
            "title": "Min company rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Skip companies whose overall rating is below this (1-5). 0 = no filter.",
            "default": 0
          },
          "companySize": {
            "title": "Company size",
            "type": "string",
            "description": "Optional company-size filter label (informational / jobs search)."
          },
          "industryId": {
            "title": "Industry id",
            "type": "integer",
            "description": "Glassdoor industry id filter (jobs / search)."
          },
          "sectorId": {
            "title": "Sector id",
            "type": "integer",
            "description": "Glassdoor sector id filter (jobs / search)."
          },
          "searchKeyword": {
            "title": "Jobs: keyword",
            "type": "string",
            "description": "Jobs mode: keyword to search."
          },
          "searchLocation": {
            "title": "Jobs: location",
            "type": "string",
            "description": "Jobs mode: location text."
          },
          "radius": {
            "title": "Jobs: radius (miles)",
            "type": "integer",
            "description": "Jobs mode: search radius in miles."
          },
          "matchKeywordInTitle": {
            "title": "Jobs: keyword must be in title",
            "type": "boolean",
            "description": "Only keep jobs whose title contains the keyword.",
            "default": false
          },
          "jobType": {
            "title": "Jobs: type",
            "enum": [
              "",
              "fulltime",
              "parttime",
              "contract",
              "internship",
              "temporary"
            ],
            "type": "string",
            "description": "fulltime | parttime | contract | internship | temporary.",
            "default": ""
          },
          "maxDaysOld": {
            "title": "Jobs: max age (days)",
            "type": "integer",
            "description": "Only keep jobs posted within this many days. 0 = any.",
            "default": 0
          },
          "remoteWorkType": {
            "title": "Jobs: remote type",
            "enum": [
              "",
              "onsite",
              "remote",
              "hybrid"
            ],
            "type": "string",
            "description": "onsite | remote | hybrid.",
            "default": ""
          },
          "easyApplyOnly": {
            "title": "Jobs: Easy Apply only",
            "type": "boolean",
            "description": "Return only jobs that support Easy Apply.",
            "default": false
          },
          "minSalary": {
            "title": "Jobs: min salary",
            "type": "integer",
            "description": "Minimum salary filter for job search."
          },
          "maxSalary": {
            "title": "Jobs: max salary",
            "type": "integer",
            "description": "Maximum salary filter for job search."
          },
          "sortBy": {
            "title": "Jobs: sort",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "date | relevance.",
            "default": "date"
          },
          "resumeKeywords": {
            "title": "Jobs: resume keywords",
            "type": "array",
            "description": "Skills/keywords to compute a match score against each job description.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "Reviews: min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep reviews with overall rating >= this (1-5). 0 = no filter.",
            "default": 0
          },
          "reviewJobTitle": {
            "title": "Reviews: job title filter",
            "type": "string",
            "description": "Filter reviews by the reviewer's job title."
          },
          "reviewLocation": {
            "title": "Reviews: location filter",
            "type": "string",
            "description": "Filter reviews by location."
          },
          "reviewsStartDate": {
            "title": "Reviews: start date",
            "type": "string",
            "description": "Keep reviews on/after this date (YYYY-MM-DD) or relative like '30 days'."
          },
          "employmentStatus": {
            "title": "Reviews: employment status",
            "enum": [
              "any",
              "current",
              "former"
            ],
            "type": "string",
            "description": "current | former | any.",
            "default": "any"
          },
          "languageId": {
            "title": "Reviews: language",
            "type": "string",
            "description": "ISO language code (e.g. eng) or 'all'.",
            "default": "eng"
          },
          "includeAllReviews": {
            "title": "Reviews: all languages",
            "type": "boolean",
            "description": "Pull reviews in every language (overrides the language filter above). Off = only the language set in 'Reviews: language' (default English).",
            "default": false
          },
          "includeCompanyReviewStats": {
            "title": "Company review stats (overview)",
            "type": "boolean",
            "description": "For company-overview: attach reviewStats — the per-subrating 1-5 rating histogram (ratingCountDistribution), aggregate ratings and numberOfPages.",
            "default": false
          },
          "includeCompanyInterviewStats": {
            "title": "Company interview stats (interviews)",
            "type": "boolean",
            "description": "For interviews mode: emit one interview-stats record per company — overall interview difficulty (mean), the experience distribution (positive/neutral/negative) and the 'getting an interview' channel breakdown (applied online / recruiter / employee referral / campus / staffing agency).",
            "default": false
          },
          "sortReviewsBy": {
            "title": "Reviews: sort",
            "enum": [
              "DATE",
              "RELEVANCE"
            ],
            "type": "string",
            "description": "DATE (most recent) or RELEVANCE.",
            "default": "DATE"
          },
          "keywordFilter": {
            "title": "Reviews: keyword filter",
            "type": "string",
            "description": "Only keep reviews whose pros/cons/summary contain this keyword."
          },
          "salaryJobTitle": {
            "title": "Salaries: job title",
            "type": "string",
            "description": "Filter salaries by job title."
          },
          "salaryLocation": {
            "title": "Salaries: location",
            "type": "string",
            "description": "Filter salaries by location."
          },
          "seniority": {
            "title": "Salaries: seniority",
            "type": "string",
            "description": "Filter salaries by seniority level."
          },
          "currency": {
            "title": "Salaries: currency",
            "type": "string",
            "description": "Currency code for salary values (e.g. USD)."
          },
          "salaryDetail": {
            "title": "Salaries: enrich (bonus + individual pay)",
            "type": "boolean",
            "description": "For each salary row, fetch the job-title detail page to add the additional-pay breakdown (cash bonus, stock, commission, profit-sharing, tips, total additional pay) and recent individual salary submissions (with years-of-experience + city). Adds one request per row — bounded by 'Salaries: max detail rows'.",
            "default": true
          },
          "maxSalaryDetail": {
            "title": "Salaries: max detail rows",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on how many salary rows get the per-title detail enrichment (protects run time / cost on uncapped pulls).",
            "default": 50
          },
          "enrichEmails": {
            "title": "Company: harvest contact emails",
            "type": "boolean",
            "description": "For company-overview: collect the company's role-based contact addresses (info@, hr@, careers@ …) from its own website and verify the domain accepts mail. Personal mailboxes are never collected.",
            "default": false
          },
          "maxResults": {
            "title": "Max results per company/mode",
            "type": "integer",
            "description": "Maximum records per company per mode. 0 = everything available. Reviews are collected in bulk well past the first page.",
            "default": 100
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "type": "integer",
            "description": "First results page to fetch (1-based). Use with maxResults to window large pulls.",
            "default": 1
          },
          "deduplicate": {
            "title": "Deduplicate",
            "type": "boolean",
            "description": "Drop records whose dedupKey was already produced (within run, and across runs if a key store is set).",
            "default": true
          },
          "deduplicateKeyStore": {
            "title": "Cross-run dedup key store",
            "type": "string",
            "description": "Named store that remembers records seen in previous runs, so scheduled runs return only what is new. Leave as is unless you run several independent monitors on one account — then give each its own name.",
            "default": "glassdoor-seen"
          },
          "monitoringMode": {
            "title": "Monitoring mode (new only)",
            "type": "boolean",
            "description": "Return only records not seen in previous runs of this Actor. Pairs with the store name below.",
            "default": false
          },
          "maxChallengeRetries": {
            "title": "Max challenge retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry a blocked request before giving up on it.",
            "default": 3
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Proxies are configured automatically — leave this empty."
          },
          "reviewSentiment": {
            "title": "Review sentiment",
            "type": "boolean",
            "description": "Add sentiment {score,label} to each review (lexicon-based, no external AI).",
            "default": true
          },
          "themeExtraction": {
            "title": "Theme extraction",
            "type": "boolean",
            "description": "Tag each review with aspect themes (comp, management, WLB, culture, career, DEI...) and polarity.",
            "default": true
          },
          "salaryPercentiles": {
            "title": "Salary percentiles",
            "type": "boolean",
            "description": "Compute p10/p25/p50/p75/p90 for salary results.",
            "default": true
          },
          "employerScorecard": {
            "title": "Employer scorecard",
            "type": "boolean",
            "description": "Emit one cross-mode roll-up row per company (rating + sentiment + salary median + churn signal).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}