# 🔥 Glassdoor Scraper (`silentflow/glassdoor-scraper-ppe`) Actor

Extract Glassdoor reviews, salaries, interviews, benefits, and company overviews from any URL. Pay per result only, residential proxies included, 23 country domains supported. Perfect for HR research, employer branding, salary benchmarking, and competitive analysis.

- **URL**: https://apify.com/silentflow/glassdoor-scraper-ppe.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Glassdoor Scraper

**Turn every Glassdoor company page into structured data.** Reviews, jobs, interviews, salaries, benefits, and full company overviews. 30+ fields per item, 23 country domains, residential proxies included. Pay only for the results you get.

### ✨ Why use this scraper?

Trying to compare 20 companies for a hiring pipeline? Writing a salary benchmark for your comp team? Need real interview questions for candidate prep? One URL in, structured data out.

- ⭐ **Reviews with full ratings.** Overall rating, sub-ratings (work-life, culture, career, comp, senior management, diversity), pros, cons, job title, employment status, and date.
- 🗣 **Interview experiences decoded.** Per-interview difficulty, experience sentiment, offer status, application description, and the full narrative with questions. Plus aggregate stats (positive percentage, difficulty score).
- 💰 **Salary reports at a glance.** Per-job-title min/median/max with currency, pay period, and report count. European and US formats both handled.
- 🎁 **Every single benefit, rated.** All benefit categories in one pass with their ratings, review counts, and category classification.
- 🏢 **Rich company overviews.** Name, website, founded year, ownership type, size, revenue, industry, headquarters, CEO name and approval rating, overall company rating, logo.
- 💼 **Legacy jobs search still included.** Keyword-based jobs search across 23 countries with 12+ filters, for teams that built pipelines on the original version.
- 🌍 **Multi-locale friendly.** Paste the .com URL and the scraper auto-routes to the locale that reliably responds.

### 🎯 Use cases

- **HR research & employer branding.** Pull reviews, ratings, and CEO approval for a competitor set to benchmark your own employer brand.
- **Salary benchmarking.** Build compensation bands by job title, location, and company size for comp and hiring teams.
- **Interview prep content.** Aggregate real interview experiences by role to power candidate preparation products.
- **Market intelligence.** Track company growth, headcount evolution, and sentiment shifts across a portfolio.
- **Recruiter tooling.** Enrich candidate profiles with the real rating and review volume of their current employer.
- **M&A due diligence.** Surface cultural risks, leadership approval, and employee sentiment on acquisition targets.

### 📥 Input parameters

- **🔗 Start URLs** (primary input): paste any Glassdoor URL. The scraper auto-detects the data type from the path.
- **Max items**: limit how many items to return per URL (default 50).
- **Include review stats / interview stats / benefit stats**: toggle aggregate stats emission per URL (on by default).
- **💼 Keywords / location / country / job type** (legacy jobs search): used only when Start URLs is empty.

#### Supported URL patterns

| Data type | URL example |
|---|---|
| Reviews | `https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm` |
| Jobs | `https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm` |
| Interviews | `https://www.glassdoor.com/Interview/Google-Interview-Questions-E9079.htm` |
| Salaries | `https://www.glassdoor.com/Salary/Google-Salaries-E9079.htm` |
| Benefits | `https://www.glassdoor.com/Benefits/Google-US-Benefits-EI_IE9079.0,6_IL.7,9_IN1.htm` |
| Overview | `https://www.glassdoor.com/Overview/Working-at-Google-EI_IE9079.11,17.htm` |

### 📊 Output data

Each item has a `dataType` field indicating its shape. Example reviews output:

```json
{
  "reviewId": 103487004,
  "employerId": 9079,
  "ratingOverall": 5,
  "summary": "Good company to work for",
  "pros": "interesting fast stimulating rewarding good",
  "cons": "beaurocratic, chaotic, sometimes hectic, political",
  "jobTitle": "Software engineer",
  "employmentStatus": "CURRENT_EMPLOYEE",
  "isCurrentJob": true,
  "reviewDate": "2026-04-08",
  "url": "https://www.glassdoor.de/Bewertungen/Google-Bewertungen-E9079.htm#review-103487004",
  "dataType": "review",
  "scrapedAt": "2026-04-10T13:13:49Z"
}
````

Example overview output:

```json
{
  "employerId": 9079,
  "name": "Google",
  "website": "https://goo.gle/4ehVuXi",
  "foundedYear": 1998,
  "ownershipType": "PUBLIC",
  "companyType": "Publicly traded company (GOOG)",
  "sizeStr": "10000+ employees",
  "revenue": "More than $10 billion (USD)",
  "industry": "Internet and web services",
  "hqCity": "Mountain View",
  "hqCountry": "United States",
  "overallRating": 4.4,
  "reviewCount": 229,
  "ceoName": "Sundar Pichai",
  "ceoApprovalPct": 81,
  "logoUrl": "https://media.glassdoor.com/sql/9079/google-squarelogo-1441130773284.png",
  "dataType": "overview"
}
```

### 🗂️ Data fields

#### Reviews

| Field | Description |
|---|---|
| `reviewId` | Unique review identifier |
| `ratingOverall` | Overall rating (1 to 5) |
| `summary`, `pros`, `cons` | Review title and body text |
| `jobTitle` | Reviewer's job title |
| `employmentStatus` | CURRENT\_EMPLOYEE or FORMER\_EMPLOYEE |
| `reviewDate` | ISO date (YYYY-MM-DD) |

#### Review stats

| Field | Description |
|---|---|
| `overallRating` | Company average rating |
| `reviewCount` | Total reviews on Glassdoor |
| `recommendToFriendPct` | Percentage who recommend the company |
| `ceoApprovalPct` | Percentage approving of the CEO |
| `businessOutlookPct` | Percentage with positive outlook |
| `workLifeBalanceRating`, `cultureRating`, `careerOppRating`, `compBenefitsRating`, `seniorMgmtRating`, `diversityRating` | Sub-ratings per category |

#### Interviews

| Field | Description |
|---|---|
| `interviewId` | Unique interview identifier |
| `jobTitle` | Role interviewed for |
| `interviewDate` | ISO date |
| `difficulty` | EASY, AVERAGE, HARD |
| `experience` | POSITIVE, NEUTRAL, NEGATIVE |
| `offerStatus` | ACCEPTED, DECLINED, NO\_OFFER |
| `processDescription`, `outcome` | Narrative text including questions |

#### Salaries

| Field | Description |
|---|---|
| `jobTitle` | Role |
| `reportCount` | Number of salary reports |
| `currencyCode` | EUR, USD, GBP |
| `payPeriod` | ANNUAL, MONTHLY, HOURLY |
| `baseSalaryMin`, `baseSalaryMedian`, `baseSalaryMax` | Base salary range |

#### Benefits

| Field | Description |
|---|---|
| `name` | Benefit name |
| `category` | Inferred category (INSURANCE\_HEALTH, VACATION\_PTO, ...) |
| `rating` | Average rating by employees |
| `commentCount` | Number of benefit reviews |

#### Overview

| Field | Description |
|---|---|
| `name`, `shortName`, `website`, `logoUrl` | Basic info |
| `foundedYear` | Year founded |
| `ownershipType`, `companyType` | PUBLIC, PRIVATE, NONPROFIT, ... |
| `sizeStr`, `revenue` | Headcount and revenue brackets |
| `industry` | Industry sector |
| `hqCity`, `hqCountry` | Headquarters location |
| `overallRating`, `reviewCount` | Aggregate rating and review count |
| `ceoName`, `ceoApprovalPct` | CEO information |

### 🚀 Examples

#### Scrape reviews for one company

```json
{
  "startUrls": [
    {"url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"}
  ],
  "maxItems": 50,
  "includeReviewStats": true
}
```

#### Compare interviews at multiple companies

```json
{
  "startUrls": [
    {"url": "https://www.glassdoor.com/Interview/Google-Interview-Questions-E9079.htm"},
    {"url": "https://www.glassdoor.com/Interview/Amazon-Interview-Questions-E6036.htm"},
    {"url": "https://www.glassdoor.com/Interview/Meta-Interview-Questions-E40772.htm"}
  ],
  "maxItems": 30
}
```

#### Pull a full company profile

```json
{
  "startUrls": [
    {"url": "https://www.glassdoor.com/Overview/Working-at-Google-EI_IE9079.11,17.htm"},
    {"url": "https://www.glassdoor.com/Salary/Google-Salaries-E9079.htm"},
    {"url": "https://www.glassdoor.com/Benefits/Google-US-Benefits-EI_IE9079.0,6_IL.7,9_IN1.htm"}
  ]
}
```

#### Legacy jobs search

```json
{
  "keywords": ["Software Engineer"],
  "location": "San Francisco",
  "country": "US",
  "maxItems": 50
}
```

### 💻 Integrations

All integrations that work with any Apify actor work here: the Apify API, webhooks, scheduled runs, the JavaScript and Python clients, Make, Zapier, n8n, and Airbyte. Push your data to Google Sheets, BigQuery, S3, or any custom destination.

### 📈 Performance & limits

- Reviews: 3 items per page, paginated until max items is reached
- Interviews: 5 items per page, paginated
- Salaries: 10 items per page
- Benefits: all benefit categories in one page load (typically 40 to 60 items)
- Overview: one rich item per URL
- Aggregate stats emitted once per URL when the corresponding toggle is on

### 💡 Tips for best results

- **Use the .com URL**, the scraper will auto-route to the locale that responds reliably.
- **Get the employer ID from any company URL**. It is the `E` or `EI_IE` number near the end of the path.
- **For bulk runs**, combine 5 to 10 start URLs per actor run rather than a single massive one. This distributes load and makes retries cheaper.
- **Combine data types** in a single run to produce a complete company profile in one shot.
- **Higher max items costs more time**, not more money. Pay per result means you only pay for what comes back.

### ❓ FAQ

**Which URLs does it accept?**
Any Glassdoor URL under `/Reviews/`, `/Jobs/`, `/Interview/`, `/Salary/`, `/Benefits/`, or `/Overview/`. The data type is auto-detected from the path.

**Can I scrape multiple companies in one run?**
Yes. Put one URL per company in `startUrls`. The scraper processes them sequentially and emits all results to the same dataset.

**Does it work without a proxy?**
The legacy jobs search path works without a proxy. The new review/interview/salary/benefit/overview paths require residential proxy access which is included in all Apify paid plans.

**What about rate limits?**
The scraper paces itself between pages and retries automatically on transient errors. For large runs, expect roughly 3 to 10 items per second depending on data type.

**Can I get the original English content when scraping a non-English company?**
Content is returned in whatever language the original reviewer wrote it in, regardless of the routing domain. Most reviews for global companies are in English.

### 📬 Support

Feature requests and bug reports are welcome. Contact the author directly via the actor page for any questions.

# Actor input Schema

## `startUrls` (type: `array`):

Glassdoor URLs to scrape. Examples: /Reviews/Google-Reviews-E9079.htm, /Interview/Google-Interview-Questions-E9079.htm, /Salary/Google-Salaries-E9079.htm, /Benefits/..., /Overview/Working-at-Google-EI\_IE9079.11,17.htm

## `includeReviewStats` (type: `boolean`):

Emit an aggregate review-stats object per reviews URL.

## `includeInterviewStats` (type: `boolean`):

Emit an aggregate interview-stats object per interviews URL.

## `includeBenefitStats` (type: `boolean`):

Emit an aggregate benefit-stats object per benefits URL.

## `includeAllSalaries` (type: `boolean`):

When disabled, only the salary-stats aggregate is emitted (no per-role salary entries).

## `reviewSort` (type: `string`):

How Glassdoor should sort the reviews when fetching them.

## `reviewKeywords` (type: `array`):

Only emit reviews containing at least one of these words in the pros, cons, summary, advice, or job title (case-insensitive).

## `fromDate` (type: `string`):

Only emit reviews posted on or after this date (YYYY-MM-DD).

## `monitoringMode` (type: `boolean`):

When enabled, each run remembers the highest review ID seen per employer and subsequent runs only emit newer reviews. Saves cost on recurring schedules.

## `keywords` (type: `array`):

Job keywords to search. Each keyword runs a separate search and results are combined.

## `location` (type: `string`):

City, state, or country (e.g. 'San Francisco', 'London', 'Paris').

## `country` (type: `string`):

Glassdoor country domain to search on.

## `maxItems` (type: `integer`):

Maximum number of jobs to return.

## `fromAge` (type: `string`):

Only return jobs posted within this time period.

## `jobType` (type: `string`):

Filter by contract type.

## `seniorityType` (type: `string`):

Filter by experience level.

## `remoteWorkType` (type: `string`):

Filter by work location type.

## `companyName` (type: `string`):

Only return jobs from this company (e.g. 'Google', 'Microsoft').

## `minSalary` (type: `integer`):

Minimum salary in local currency.

## `maxSalary` (type: `integer`):

Maximum salary in local currency.

## `includeNoSalaryJob` (type: `boolean`):

Include jobs that don't have salary information.

## `applicationType` (type: `string`):

Filter by how to apply.

## `minRating` (type: `number`):

Only return jobs from companies rated above this (1.0 to 5.0).

## `radius` (type: `integer`):

Search radius around the location in kilometers.

## `industryType` (type: `string`):

Filter by industry sector.

## `employerSizes` (type: `string`):

Filter by number of employees.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"
    }
  ],
  "includeReviewStats": true,
  "includeInterviewStats": true,
  "includeBenefitStats": true,
  "includeAllSalaries": true,
  "reviewSort": "POPULAR",
  "monitoringMode": false,
  "country": "US",
  "maxItems": 50,
  "fromAge": "",
  "jobType": "",
  "seniorityType": "",
  "remoteWorkType": "",
  "minSalary": 0,
  "maxSalary": 0,
  "includeNoSalaryJob": true,
  "applicationType": "",
  "minRating": 0,
  "radius": 0,
  "industryType": "",
  "employerSizes": ""
}
```

# Actor output Schema

## `jobs` (type: `string`):

Complete job listing data including: job\_title, company\_name, company\_logo, job\_location (city/state/country), job\_url, job\_apply\_url, job\_posted\_date, job\_job\_types (Full-time/Part-time/Contract), job\_levels (Entry/Mid/Senior), job\_salary (min/max/currency), job\_industry, job\_sponsored, company\_url, company\_website, company\_sizes\_str, company\_revenue, job\_description.

## `jobsCSV` (type: `string`):

CSV format export of all job listings for spreadsheet analysis

## `jobsExcel` (type: `string`):

Excel format export of all job listings

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/glassdoor-scraper-ppe").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm" }] }

# Run the Actor and wait for it to finish
run = client.actor("silentflow/glassdoor-scraper-ppe").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"
    }
  ]
}' |
apify call silentflow/glassdoor-scraper-ppe --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=silentflow/glassdoor-scraper-ppe",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🔥 Glassdoor Scraper",
        "description": "Extract Glassdoor reviews, salaries, interviews, benefits, and company overviews from any URL. Pay per result only, residential proxies included, 23 country domains supported. Perfect for HR research, employer branding, salary benchmarking, and competitive analysis.",
        "version": "1.0",
        "x-build-id": "acozgdWWyPYx2v8ka"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/silentflow~glassdoor-scraper-ppe/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-silentflow-glassdoor-scraper-ppe",
                "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/silentflow~glassdoor-scraper-ppe/runs": {
            "post": {
                "operationId": "runs-sync-silentflow-glassdoor-scraper-ppe",
                "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/silentflow~glassdoor-scraper-ppe/run-sync": {
            "post": {
                "operationId": "run-sync-silentflow-glassdoor-scraper-ppe",
                "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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Glassdoor URLs to scrape. Examples: /Reviews/Google-Reviews-E9079.htm, /Interview/Google-Interview-Questions-E9079.htm, /Salary/Google-Salaries-E9079.htm, /Benefits/..., /Overview/Working-at-Google-EI_IE9079.11,17.htm",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "includeReviewStats": {
                        "title": "Include company review stats",
                        "type": "boolean",
                        "description": "Emit an aggregate review-stats object per reviews URL.",
                        "default": true
                    },
                    "includeInterviewStats": {
                        "title": "Include company interview stats",
                        "type": "boolean",
                        "description": "Emit an aggregate interview-stats object per interviews URL.",
                        "default": true
                    },
                    "includeBenefitStats": {
                        "title": "Include company benefit stats",
                        "type": "boolean",
                        "description": "Emit an aggregate benefit-stats object per benefits URL.",
                        "default": true
                    },
                    "includeAllSalaries": {
                        "title": "Include individual salary entries",
                        "type": "boolean",
                        "description": "When disabled, only the salary-stats aggregate is emitted (no per-role salary entries).",
                        "default": true
                    },
                    "reviewSort": {
                        "title": "Sort order",
                        "enum": [
                            "POPULAR",
                            "DATE"
                        ],
                        "type": "string",
                        "description": "How Glassdoor should sort the reviews when fetching them.",
                        "default": "POPULAR"
                    },
                    "reviewKeywords": {
                        "title": "Keyword filter",
                        "type": "array",
                        "description": "Only emit reviews containing at least one of these words in the pros, cons, summary, advice, or job title (case-insensitive).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fromDate": {
                        "title": "From date",
                        "type": "string",
                        "description": "Only emit reviews posted on or after this date (YYYY-MM-DD)."
                    },
                    "monitoringMode": {
                        "title": "Monitoring mode (incremental)",
                        "type": "boolean",
                        "description": "When enabled, each run remembers the highest review ID seen per employer and subsequent runs only emit newer reviews. Saves cost on recurring schedules.",
                        "default": false
                    },
                    "keywords": {
                        "title": "🔎 Keywords",
                        "type": "array",
                        "description": "Job keywords to search. Each keyword runs a separate search and results are combined.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "City, state, or country (e.g. 'San Francisco', 'London', 'Paris')."
                    },
                    "country": {
                        "title": "🌍 Country",
                        "enum": [
                            "US",
                            "UK",
                            "CA",
                            "CA_FR",
                            "FR",
                            "DE",
                            "IN",
                            "AU",
                            "SG",
                            "BR",
                            "AR",
                            "AT",
                            "BE_NL",
                            "BE_FR",
                            "ES",
                            "HK",
                            "IE",
                            "IT",
                            "MX",
                            "NL",
                            "NZ",
                            "CH_DE",
                            "CH_FR"
                        ],
                        "type": "string",
                        "description": "Glassdoor country domain to search on.",
                        "default": "US"
                    },
                    "maxItems": {
                        "title": "Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of jobs to return.",
                        "default": 50
                    },
                    "fromAge": {
                        "title": "📅 Posted Within",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "14",
                            "30"
                        ],
                        "type": "string",
                        "description": "Only return jobs posted within this time period.",
                        "default": ""
                    },
                    "jobType": {
                        "title": "💼 Job Type",
                        "enum": [
                            "",
                            "fulltime",
                            "parttime",
                            "contract",
                            "temporary",
                            "internship"
                        ],
                        "type": "string",
                        "description": "Filter by contract type.",
                        "default": ""
                    },
                    "seniorityType": {
                        "title": "📊 Seniority Level",
                        "enum": [
                            "",
                            "entrylevel",
                            "midseniorlevel",
                            "director",
                            "executive"
                        ],
                        "type": "string",
                        "description": "Filter by experience level.",
                        "default": ""
                    },
                    "remoteWorkType": {
                        "title": "🏠 Remote Work",
                        "enum": [
                            "",
                            "true",
                            "false"
                        ],
                        "type": "string",
                        "description": "Filter by work location type.",
                        "default": ""
                    },
                    "companyName": {
                        "title": "🏢 Company Name",
                        "type": "string",
                        "description": "Only return jobs from this company (e.g. 'Google', 'Microsoft')."
                    },
                    "minSalary": {
                        "title": "Minimum Salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum salary in local currency.",
                        "default": 0
                    },
                    "maxSalary": {
                        "title": "Maximum Salary",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum salary in local currency.",
                        "default": 0
                    },
                    "includeNoSalaryJob": {
                        "title": "Include Jobs Without Salary",
                        "type": "boolean",
                        "description": "Include jobs that don't have salary information.",
                        "default": true
                    },
                    "applicationType": {
                        "title": "🔗 Application Type",
                        "enum": [
                            "",
                            "1"
                        ],
                        "type": "string",
                        "description": "Filter by how to apply.",
                        "default": ""
                    },
                    "minRating": {
                        "title": "⭐ Min Company Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only return jobs from companies rated above this (1.0 to 5.0).",
                        "default": 0
                    },
                    "radius": {
                        "title": "📏 Search Radius (km)",
                        "minimum": 0,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Search radius around the location in kilometers.",
                        "default": 0
                    },
                    "industryType": {
                        "title": "🏭 Industry",
                        "enum": [
                            "",
                            "200063",
                            "200064",
                            "200065",
                            "200066",
                            "200067"
                        ],
                        "type": "string",
                        "description": "Filter by industry sector.",
                        "default": ""
                    },
                    "employerSizes": {
                        "title": "👥 Company Size",
                        "enum": [
                            "",
                            "1to50",
                            "51to200",
                            "201to500",
                            "501to1000",
                            "1001to5000",
                            "5001plus"
                        ],
                        "type": "string",
                        "description": "Filter by number of employees.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
