{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Scraper — Glassdoor Jobs API with Salaries",
    "description": "Scrape Glassdoor jobs by keyword, location or Glassdoor URL: title, company, Glassdoor rating, salary range (min, median, max), job type, remote flag, Easy Apply, skills, posting age and optional full description. No login, proxy included. Export CSV, JSON or Excel.",
    "version": "0.2",
    "x-build-id": "6BO37gyJUpQ0fEg1I"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~glassdoor-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-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/glasswing~glassdoor-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-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/glasswing~glassdoor-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Job titles or skills to search, one per line, as you would type them into Glassdoor's job search (for example `registered nurse`, `python developer`). Each line is one search. The built-in `software engineer` example is skipped when you paste your own search URLs.",
            "default": [
              "software engineer"
            ],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, state or country, as you would type it into Glassdoor's location box (for example `Chicago, IL`, `Texas`, `London`, `United Kingdom`, `Remote`). The best match from Glassdoor's own location list is used. Leave empty to search all locations."
          },
          "radius": {
            "title": "Radius (miles)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Distance around a city location, in miles (Glassdoor offers 0, 5, 10, 15, 25, 50 and 100). Leave empty for Glassdoor's default."
          },
          "datePosted": {
            "title": "Date posted",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only jobs posted on Glassdoor within this many days.",
            "default": "any"
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "fulltime",
              "parttime",
              "contract",
              "internship",
              "temporary"
            ],
            "type": "string",
            "description": "Only jobs Glassdoor lists with this job type.",
            "default": "any"
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Only jobs Glassdoor marks as remote.",
            "default": false
          },
          "easyApplyOnly": {
            "title": "Easy Apply only",
            "type": "boolean",
            "description": "Only jobs with Glassdoor's Easy Apply button.",
            "default": false
          },
          "minRating": {
            "title": "Minimum company rating",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4"
            ],
            "type": "string",
            "description": "Only jobs at companies with at least this Glassdoor rating.",
            "default": "any"
          },
          "minSalary": {
            "title": "Minimum yearly salary",
            "minimum": 1,
            "type": "integer",
            "description": "Only jobs whose yearly pay range reaches at least this amount, in the search country's currency (for example `100000`). Uses Glassdoor's own salary filter, so jobs without any pay information are left out. Leave empty for all jobs."
          },
          "seniorityLevel": {
            "title": "Seniority",
            "enum": [
              "any",
              "internship",
              "entrylevel",
              "midseniorlevel",
              "director",
              "executive"
            ],
            "type": "string",
            "description": "Only jobs Glassdoor lists at this seniority level.",
            "default": "any"
          },
          "companySize": {
            "title": "Company size",
            "enum": [
              "any",
              "1-200",
              "201-500",
              "501-1000",
              "1001-5000",
              "5001+"
            ],
            "type": "string",
            "description": "Only jobs at companies of this size (employees, as Glassdoor counts them).",
            "default": "any"
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total; the Actor never saves more. With several keywords or URLs it is split evenly between them. Each job saved with status `ok` is one billable result.",
            "default": 20
          },
          "includeDescription": {
            "title": "Include full description",
            "type": "boolean",
            "description": "Also fetch each job's full description (`description`, plain text), billed as a separate `job-details` event only for jobs whose description was actually fetched. The run opens one browser session first (see the README for measured times), then adds one request per job. Without it every job still has a short `snippet`.",
            "default": false
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "With full descriptions on: also save the description as HTML (`descriptionHtml`).",
            "default": false
          },
          "includeEmployerStats": {
            "title": "Include employer stats",
            "type": "boolean",
            "description": "Add company-level stats from each employer's public Glassdoor page to its jobs: review count, CEO approval %, recommend-to-a-friend %, business outlook %, sub-ratings (culture, work/life balance, compensation, career, management, diversity), size, industry, sector, year founded, headquarters city, revenue band, ownership type and website. One extra page per employer (not per job), remembered across runs (see the next option), so it adds a few seconds per new employer. No extra event, and no people's data is read. Available from 2026-11-02, together with the new result price; before that date rows come back without the stats and `companyStatsError` says so.",
            "default": false
          },
          "employerStatsCacheDays": {
            "title": "Reuse employer stats for (days)",
            "minimum": 0,
            "maximum": 90,
            "type": "integer",
            "description": "Employer stats read by one of your runs in the last this many days are reused instead of read again (kept in the named key-value store `glassdoor-employer-stats` on your account). `0` reads every employer fresh in each run.",
            "default": 14
          },
          "dedupeAcrossSearches": {
            "title": "Remove duplicate jobs",
            "type": "boolean",
            "description": "A job found by several keywords, search URLs or pages (Glassdoor repeats sponsored jobs) is saved once, and the duplicates are not billed. Turn off to keep one row per search that found the job.",
            "default": true
          },
          "onlyNewSinceLastRun": {
            "title": "Only jobs new since the last run",
            "type": "boolean",
            "description": "For scheduled monitoring: skip jobs that an earlier run with this option already delivered (never billed again). The delivered job ids are kept in a named key-value store on your account (see the next option). A run that finds nothing new saves one free `not_found` row per search instead of failing.",
            "default": false
          },
          "seenJobsStoreName": {
            "title": "Memory store name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered jobs for 'Only jobs new since the last run'. Use a different name for each monitor that must not share its memory.",
            "default": "glassdoor-jobs-seen"
          },
          "startUrls": {
            "title": "Glassdoor search URLs (optional)",
            "uniqueItems": true,
            "type": "array",
            "description": "Glassdoor job search URLs, for example `https://www.glassdoor.com/Job/chicago-il-us-registered-nurse-jobs-SRCH_IL.0,13_IC1128808_KO14,30.htm`. Each URL keeps its own keyword, location and filters (`fromAge`, `jobType`, `minRating`, `applicationType`, `remoteWorkType`, `radius`). Clear the example if you only want your keywords.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}