{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Scraper: Jobs, Salaries, Ratings & Companies",
    "description": "Extract Glassdoor jobs across 20+ countries. Returns title, company, rating (1-5), review count, salary (min/max/currency + estimated flag), location, employment type, workplace type, description, apply URL, easy_apply. Optional employer profile: about, HQ, size, industry, CEO.",
    "version": "3.3",
    "x-build-id": "kkbsb7OaZrwf7K3OI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/santamaria-automations~glassdoor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-santamaria-automations-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/santamaria-automations~glassdoor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-santamaria-automations-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/santamaria-automations~glassdoor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-santamaria-automations-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",
        "properties": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "One or more job search terms (e.g. ['software engineer', 'product manager']). Each keyword runs as a separate search combined with 'location' and 'country'. Results are deduplicated by Glassdoor's jobListingId. Leave empty if you use searchUrls, directUrls, companyUrls or startUrls instead.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search URLs (SERP)",
            "type": "array",
            "description": "Glassdoor SERP URLs to crawl. Preserves any filters you set in Glassdoor's own UI (salary range, distance, remote, easy-apply, etc.). Supports query-string shape (https://www.glassdoor.com/Job/jobs.htm?sc.keyword=...) and slug shape (https://www.glassdoor.com/Job/new-york-software-engineer-jobs-SRCH_IL.0,8_IC1132348_KO9,26.htm). Pagination is applied automatically.",
            "items": {
              "type": "string"
            }
          },
          "directUrls": {
            "title": "Direct job-listing URLs",
            "type": "array",
            "description": "Glassdoor job-listing detail page URLs to fetch individually, skipping SERP. Shape: https://www.glassdoor.com/job-listing/...-JV_...htm?jl=<id>. Each URL produces one fully-enriched row. Charges one job-detail-result event per URL.",
            "items": {
              "type": "string"
            }
          },
          "companyUrls": {
            "title": "Company profile URLs",
            "type": "array",
            "description": "Glassdoor company profile URLs. Scrapes all jobs listed under each company AND populates company_* enrichment fields automatically. Shapes: https://www.glassdoor.com/Overview/Working-at-Google-EI_IE9079.htm or https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm. includeCompanyDetails is implicitly true for these.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (mixed-shape convenience input)",
            "type": "array",
            "description": "Mixed-shape convenience input — a polymorphic router. Each URL is classified by its shape and dispatched to the correct handler: job-listing URLs go to directUrls handler, company Overview/Jobs URLs go to companyUrls handler, SERP URLs go to searchUrls handler. Use searchUrls, directUrls and companyUrls for precise routing. Existing customers passing SERP URLs here continue to work unchanged.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region or country text (e.g. 'New York, NY', 'London', 'Berlin'). Applied to every keyword in searchQueries. Ignored when using searchUrls or startUrls."
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "uk",
              "gb",
              "ca",
              "au",
              "ie",
              "in",
              "de",
              "fr",
              "nl",
              "es",
              "it",
              "br",
              "mx",
              "ar",
              "sg",
              "hk",
              "ch",
              "at",
              "be"
            ],
            "type": "string",
            "description": "Which Glassdoor domain to search (us -> glassdoor.com, uk -> glassdoor.co.uk, de -> glassdoor.de, etc.).",
            "default": "us"
          },
          "maxResults": {
            "title": "Max results (total)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Total cap on jobs pushed to the dataset across all queries and URLs.",
            "default": 5
          },
          "maxResultsPerQuery": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on jobs pushed per individual keyword or search URL.",
            "default": 5
          },
          "includeJobDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Fetch each job's detail page for the full description (plain text + HTML + Markdown), a direct apply URL, and richer structured fields. Adds a separate 'job-detail-result' charge per enriched job.",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include employer profile details",
            "type": "boolean",
            "description": "Resolve each unique employer to its Glassdoor company page for enriched about text, headquarters, size, founded year, industry, CEO, rating breakdowns (culture, comp, opportunities, senior leadership, work-life balance), recommend-to-friend %, and active job list. Deduped per employer. Charges a 'company-detail-result' event ($0.005 each). Auto-enables includeJobDetails.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "relevance"
            ],
            "type": "string",
            "description": "'newest' = newest first (adds date_desc sort). 'relevance' = Glassdoor's default ranking.",
            "default": "newest"
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of parallel HTTP requests for detail and company page fetches. Each worker uses an independent UNBLOCKER session with its own cookie jar for block safety. Higher values speed up large runs with includeJobDetails=true.",
            "default": 3
          },
          "descriptionFetchTimeoutSec": {
            "title": "Detail fetch timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Per-request timeout in seconds for job-detail and company-detail page fetches. Default 20s. Increase if you see timeout errors on slow networks; decrease to fail-fast and rotate to a fresh proxy session sooner.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}