{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Jobs Scraper",
    "description": "Scrape Glassdoor jobs by keyword, location, company or search URL in any country. Full description, salary range, skills, apply link, company size, revenue and 9 ratings. Goes past Glassdoor's ~1,000-job limit, no duplicates, only-new-jobs mode.",
    "version": "0.1",
    "x-build-id": "QtRauVmf0mWcvQe8k"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epicscrapers~glassdoor-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epicscrapers-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/epicscrapers~glassdoor-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-epicscrapers-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/epicscrapers~glassdoor-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-epicscrapers-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": "Job titles or keywords",
            "type": "array",
            "description": "Enter job titles, skills or words, e.g. \"Software Engineer\", \"registered nurse\", \"Python\". Each keyword is its own search. Leave empty to get all jobs of the companies or locations.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Enter cities, metro areas, states or countries in any country, e.g. \"New York\", \"Texas\", \"London\", \"Germany\", \"Bengaluru\". Add the country when a name is ambiguous (\"Paris, France\", \"London, Ontario\"). Each location is searched with each keyword.<br><br>Glassdoor searches one country at a time. Empty = United States, so add a country (\"United Kingdom\", \"India\") for jobs elsewhere.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Get only jobs posted by these companies. Enter names (\"Google\"), Glassdoor company URLs (\"https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm\") or Glassdoor employer ids (\"9079\"). With no keyword, you get all of the company's open jobs in the locations (United States when empty).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Glassdoor URLs or job ids",
            "type": "array",
            "description": "Paste URLs from any Glassdoor domain:<br>• job search pages: the keyword, location and filters in the URL are used<br>• company jobs pages, e.g. \"https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm\"<br>• single job listings, e.g. \"https://www.glassdoor.com/job-listing/j?jl=1010273184996\", or just the job id, \"1010273184996\" (the <code>jobId</code> of an earlier run's results), to refresh jobs you already know<br><br>URLs and ids run on their own, next to the keywords and locations above.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max jobs per search",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Set the most jobs to save for each search (each keyword × location × company). 0 = as many as the Actor can find, up to 10,000 per search.<br><br>Glassdoor stops serving one search after about 800–1,100 jobs. Above that, the Actor splits the search by city, company size, job function, seniority, job type and date posted to find more.",
            "default": 1000
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Get only jobs posted in this period.",
            "default": ""
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Get only these employment types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "internship",
                "temporary"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Temporary"
              ]
            }
          },
          "seniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Get only these seniority levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "entrylevel",
                "midseniorlevel",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Entry level",
                "Mid-senior level",
                "Director",
                "Executive"
              ]
            }
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Get only remote / work-from-home jobs. Glassdoor lists remote jobs by country: use a country or no location, since a city returns few or none.",
            "default": false
          },
          "easyApplyOnly": {
            "title": "Easy Apply jobs only",
            "type": "boolean",
            "description": "Get only jobs you can apply to directly on Glassdoor.",
            "default": false
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Get only jobs paying at least this much per year, in the local currency (USD in the United States, GBP in the UK…). When set, jobs without a salary are left out."
          },
          "maxSalary": {
            "title": "Maximum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Get only jobs paying at most this much per year, in the local currency."
          },
          "minRating": {
            "title": "Minimum company rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Get only jobs at companies rated at least this on Glassdoor, e.g. 3.5. 0 = any rating.",
            "default": 0
          },
          "companySizes": {
            "title": "Company sizes",
            "type": "array",
            "description": "Get only companies with this many employees. Each size is a separate search, so Max jobs per search counts per size. Leave empty for all sizes.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1–200",
                "201–500",
                "501–1,000",
                "1,001–5,000",
                "5,001+"
              ]
            }
          },
          "radius": {
            "title": "Distance from city",
            "enum": [
              "",
              "0",
              "5",
              "10",
              "15",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "Choose how far around a city location to search.",
            "default": ""
          },
          "includeDetails": {
            "title": "Include full job details",
            "type": "boolean",
            "description": "Add the full job description (HTML and plain text), skills, education, the company's description and mission, and awards. Turn it off if you only need titles, companies, salaries and links: the run is about twice as fast, and the price is the same.",
            "default": true
          },
          "onlyNewJobs": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Use it for scheduled runs: skip jobs that the same search already saved in earlier runs, so each run returns, and charges for, new jobs only. The Actor remembers job ids in a key-value store named \"glassdoor-jobs-scraper-seen\" in your account.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Keep the default. Glassdoor limits requests per IP address, so the Actor spreads its requests over several proxy IPs and changes IP when one is limited. Datacenter proxy is enough.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}