{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Jobs Scraper – Jobs, Salaries & Company Ratings",
    "description": "Scrape Glassdoor job listings in 20 countries by keyword and location or Glassdoor URL. Salary ranges (incl. Glassdoor estimates), company rating, logo, easy apply, full description, remote, seniority and skills. Deep search beyond the first page, new-job alerts, no login.",
    "version": "1.0",
    "x-build-id": "GGPkRHG3mxcMhxz0M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/liveclaude~glassdoor-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-liveclaude-glassdoor-jobs-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/liveclaude~glassdoor-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-liveclaude-glassdoor-jobs-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/liveclaude~glassdoor-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-liveclaude-glassdoor-jobs-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": "🔎 Job titles or keywords",
            "type": "array",
            "description": "What to search on Glassdoor, one per line – e.g. `data analyst`, `product manager`, `nurse`. Every keyword is searched in every location.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "📍 Locations",
            "type": "array",
            "description": "City, state or region – e.g. `New York`, `London`, `Berlin`. Leave empty for the whole country.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "🌍 Glassdoor country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "nl",
              "be",
              "ch",
              "at",
              "ie",
              "es",
              "it",
              "in",
              "sg",
              "nz",
              "hk",
              "mx",
              "br",
              "ar"
            ],
            "type": "string",
            "description": "Which Glassdoor site to search (glassdoor.com, glassdoor.co.uk, glassdoor.de, …).",
            "default": "us"
          },
          "startUrls": {
            "title": "🔗 Glassdoor URLs (optional)",
            "type": "array",
            "description": "Paste Glassdoor job search URLs (`…SRCH_…htm`) or single job URLs (`/job-listing/…?jl=…`).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "24h",
              "3d",
              "week",
              "month"
            ],
            "type": "string",
            "description": "Only recently posted jobs.",
            "default": "any"
          },
          "workplace": {
            "title": "Workplace",
            "enum": [
              "any",
              "remote",
              "hybrid",
              "onsite"
            ],
            "type": "string",
            "description": "Remote, hybrid or on-site jobs.",
            "default": "any"
          },
          "employmentType": {
            "title": "Employment type",
            "enum": [
              "any",
              "full-time",
              "part-time",
              "contract",
              "internship"
            ],
            "type": "string",
            "description": "Type of contract.",
            "default": "any"
          },
          "experience": {
            "title": "Experience level",
            "enum": [
              "any",
              "internship",
              "junior",
              "mid",
              "senior",
              "director"
            ],
            "type": "string",
            "description": "LinkedIn experience filter.",
            "default": "any"
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Search radius around the location."
          },
          "minSalaryEur": {
            "title": "Min. yearly salary (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip jobs whose salary range is below this (converted to yearly EUR). Jobs without a salary are kept unless 'Only jobs with salary' is on."
          },
          "onlyWithSalary": {
            "title": "Only jobs with salary",
            "type": "boolean",
            "description": "Keep only jobs that show a salary or salary estimate.",
            "default": false
          },
          "titleMustInclude": {
            "title": "Title must include (any)",
            "type": "array",
            "description": "Keep only jobs whose title contains one of these words.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Skip jobs whose title or company contains any of these words, e.g. <code>werkstudent</code>, <code>praktikum</code>.",
            "items": {
              "type": "string"
            }
          },
          "locationMustInclude": {
            "title": "Location must include (any)",
            "type": "array",
            "description": "Keep only jobs whose location contains one of these words - useful for career sites, e.g. <code>Germany</code>, <code>Remote</code>.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Skip jobs from these companies (e.g. staffing agencies).",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "date",
              "relevance"
            ],
            "type": "string",
            "description": "Order of job board results.",
            "default": "date"
          },
          "maxJobsPerSearch": {
            "title": "Max. jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum jobs per keyword × location. Glassdoor shows visitors only the first result page, so the actor slices the search (by date, job type, seniority, radius, sort) and merges the slices without duplicates – typically 100–300 unique jobs per search.",
            "default": 100
          },
          "includeDetails": {
            "title": "➕ Full job description",
            "type": "boolean",
            "description": "Loads each job page for the full description, employment type, posting and expiry dates. Charged as a separate event.",
            "default": false
          },
          "companySignals": {
            "title": "📈 Company hiring signals",
            "type": "boolean",
            "description": "Adds one record per company with the number of open jobs, departments, locations, top skills and median salary – useful for lead generation.",
            "default": false
          },
          "minJobsPerCompany": {
            "title": "Min. jobs for a company signal",
            "minimum": 1,
            "type": "integer",
            "description": "Only companies with at least this many jobs get a signal record.",
            "default": 2
          },
          "onlyNewJobs": {
            "title": "🔔 Only new jobs (monitoring)",
            "type": "boolean",
            "description": "Schedule the actor (e.g. hourly or daily): each run returns only jobs that were not returned before for this monitor. Jobs already seen are not charged again.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional name to keep separate memories for different monitors."
          },
          "emitOnFirstRun": {
            "title": "Return all jobs on the first run",
            "type": "boolean",
            "description": "Turn off to only save a baseline on the first run.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max. concurrency",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Parallel requests.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}