{
  "openapi": "3.0.1",
  "info": {
    "title": "Glassdoor Jobs Scraper ⭐ (employer rating on every job)",
    "description": "Glassdoor job listings as JSON, with the hiring company's own Glassdoor star rating on every row, so you can ask for jobs at companies rated 4.0 and up in one pass. Title, company, rating, location, pay range, Easy Apply, posted date, skills and the apply link. No login, no API key.",
    "version": "0.1",
    "x-build-id": "KraRndtfxaFRpILoW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tagadanar~glassdoor-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tagadanar-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/tagadanar~glassdoor-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tagadanar-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/tagadanar~glassdoor-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tagadanar-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": "What (job titles or skills)",
            "type": "array",
            "description": "One entry per search, exactly what you would type in Glassdoor's job box: a job title, a skill, or a company name. Each entry runs as its own search. With several entries the searches take turns, one result page each, and share <b>Maximum jobs</b> evenly; the results are merged and de-duplicated. Leave empty to browse a whole location.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Where",
            "type": "string",
            "description": "A city (<code>Austin, TX</code>), a state (<code>Texas</code>) or a country (<code>United States</code>). The name is resolved against Glassdoor's own location list, and a name it does not know is reported by name instead of quietly returning zero jobs."
          },
          "minEmployerRating": {
            "title": "Only companies rated at least",
            "enum": [
              "any",
              "2.0",
              "2.5",
              "3.0",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "The headline filter. Every Glassdoor job carries the hiring company's own star rating, so you can ask for jobs at companies people actually rate well without a second scrape. Glassdoor's own filter is approximate (asking for 4.0 returns 3.9s and lets promoted listings through), so the exact bar is applied again on every row before you are charged for it.",
            "default": "any"
          },
          "includeUnratedEmployers": {
            "title": "Keep companies Glassdoor has not rated",
            "type": "boolean",
            "description": "About one job in six is posted by a company with no Glassdoor rating yet, often a small employer or a recruiter. Off, a minimum rating drops those rows. On, they are kept with an empty rating. Ignored when no minimum rating is set.",
            "default": false
          },
          "maxAgeDays": {
            "title": "Posted in the last",
            "enum": [
              "any",
              "1",
              "3",
              "7",
              "14",
              "30"
            ],
            "type": "string",
            "description": "Only listings posted recently. Set it to Today and schedule this actor daily to get a feed of brand-new postings and nothing else.",
            "default": "any"
          },
          "easyApplyOnly": {
            "title": "Easy Apply listings only",
            "type": "boolean",
            "description": "Keep only jobs you can apply to on Glassdoor itself, without being sent to the company's own application form.",
            "default": false
          },
          "remoteOnly": {
            "title": "Remote listings only",
            "type": "boolean",
            "description": "Keep only jobs Glassdoor labels as remote or work-from-home.",
            "default": false
          },
          "minSalary": {
            "title": "Paying at least (per year)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Lower end of the yearly pay in the location's currency, for example 120000. Glassdoor matches it against its own pay figure for the listing, which is an estimate on most ads."
          },
          "radiusMiles": {
            "title": "Within",
            "enum": [
              "0",
              "5",
              "10",
              "15",
              "25",
              "50",
              "100"
            ],
            "type": "string",
            "description": "How far around the location to look. Glassdoor's own default is 25 miles.",
            "default": "25"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date"
            ],
            "type": "string",
            "description": "Relevance is Glassdoor's default. Choose Newest first when you cap the results and want the most recent listings rather than the best-matching ones.",
            "default": "relevance"
          },
          "includeExpired": {
            "title": "Keep listings already marked closed",
            "type": "boolean",
            "description": "Glassdoor occasionally still returns a listing it has flagged as expired. Off, those rows are dropped and never billed. On, they are kept with an expiry flag.",
            "default": false
          },
          "searchUrls": {
            "title": "Or paste Glassdoor search links",
            "type": "array",
            "description": "Instead of a keyword and a location, paste the address bar from a Glassdoor search results page, for example <code>https://www.glassdoor.com/Job/austin-tx-software-engineer-jobs-SRCH_IL.0,9_IC1139761_KO10,27.htm</code>. The keyword and the location are read out of the link; the filters above still apply on top. Each link is its own search and takes its share of <b>Maximum jobs</b> like a keyword does.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many jobs across all searches. With several searches (keywords or pasted links) the total is split evenly between them, read one result page from each in turn: 300 across 3 keywords is about 100 each. A search that runs out of results or is blocked hands its unused share to the others, so the total is still met whenever any search has more. You are only charged for jobs actually delivered. Glassdoor shows up to ~900 job cards per search but reshuffles deep pages, so one search typically yields 350-500 unique jobs; to go deeper, split the search across several locations, keywords or filters.",
            "default": 200
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}