# Glassdoor Job Listing (`truefetch/glassdoor-job-listing`) Actor

Glassdoor Job Listing is a Glassdoor job listings API for 23 countries that returns 41 normalized job, salary, company, rating, application, and public contact fields without login.

- **URL**: https://apify.com/truefetch/glassdoor-job-listing.md
- **Developed by:** [TrueFetch](https://apify.com/truefetch) (community)
- **Categories:** Jobs, Automation, Integrations
- **Features:** Limited permissions
- **Stats:** 166 total users, 1 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: 3.54 out of 5 stars

## Pricing

from $3.38 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Glassdoor Job Listing

**Glassdoor Job Listing is a Glassdoor job listings API that searches Glassdoor across 23 countries and returns 41 normalized job, salary, employer, rating, application, and public contact fields without login, built for developers and data teams.**

- **23 supported Glassdoor markets.**
- **8 public inputs with 3 required.**
- **41 normalized Dataset fields.**
- **Salary and employer-rating fields when available.**

[**Run a one-result test**](https://apify.com/truefetch/glassdoor-job-listing) · [**View API**](https://apify.com/truefetch/glassdoor-job-listing/api)

Set `max_results` to `1`; the smallest published-result test bills a minimum $0.01000 Actor Start plus one $0.00450 Result, or $0.01450 on FREE.

### What does Glassdoor Job Listing do?

Glassdoor Job Listing is a TrueFetch Actor and Glassdoor jobs API for collecting public vacancies by keyword and country. Optional filters narrow the search by location, radius, posting age, and employment type. When Glassdoor exposes them, results can include salary ranges, company ratings, employer details, application signals, and full job descriptions.

Glassdoor's [official job-search guide](https://www.glassdoor.com/blog/guide/how-to-use-glassdoor/) describes location, salary, date, distance, and job-type filters alongside company and salary context.

The Actor is built for compensation research and employer-aware job analysis where a plain list of titles is not enough. Its normalized Dataset lets a team compare populated salary and company fields while retaining the Glassdoor listing URL and collection timestamp for source review.

Glassdoor Job Listing is independent of Glassdoor and is not an official Glassdoor API. It does not collect employee-review text, calculate salary estimates, access private accounts, submit applications, or guarantee that salary and rating fields exist. Source availability varies by role, employer, and country.

### How do I run Glassdoor Job Listing?

1. Open [Glassdoor Job Listing on Apify](https://apify.com/truefetch/glassdoor-job-listing).
2. Set the required `keyword`, `country`, and `max_results` values.
3. Add a location, distance, posting window, job type, or conversion currency only when needed.
4. Run one result first and confirm that the source fields suit your analysis.

The examples use one consistent scenario: find one full-time Compensation Analyst job near Toronto, Canada, posted in the last seven days, and convert usable salary values to CAD.

```json
{
  "keyword": "Compensation Analyst",
  "country": "Canada",
  "max_results": 1,
  "location": "Toronto",
  "distance": 50,
  "posted_since": "7 days",
  "job_type": "fulltime",
  "currency": "CAD"
}
```

`max_results` is a publication cap. Glassdoor may expose fewer accessible jobs for a narrow title, location, or date window.

### What data does Glassdoor Job Listing return?

The default Dataset defines **41 fields**. Salary, company rating, applicant, application, and contact values remain empty when the public listing does not supply reliable data.

| Field group | Fields |
| --- | --- |
| Processing | `processor`, `processed_at` |
| Source and application | `platform`, `platform_url`, `official_url`, `easy_apply` |
| Role details | `title`, `description`, `job_type`, `job_level`, `job_function`, `listing_type`, `skills`, `experience_range` |
| Location and work mode | `location`, `is_remote`, `work_mode` |
| Dates and volume | `posted_date`, `valid_through`, `applicant_count`, `vacancy_count` |
| Compensation | `salary_minimum`, `salary_maximum`, `salary_currency`, `salary_period` |
| Employer context | `company_name`, `company_type`, `company_founded`, `company_industry`, `company_url`, `company_website`, `company_logo`, `company_addresses`, `company_revenue`, `company_description`, `company_rating`, `employee_count`, `review_count` |
| Public contacts | `emails`, `phones`, `social_links` |

This abbreviated, illustrative item matches the Toronto scenario:

```json
{
  "platform": "Glassdoor",
  "platform_url": "https://www.glassdoor.ca/job-listing/compensation-analyst-example-JV_1234567890.htm",
  "official_url": "https://careers.example.ca/jobs/compensation-analyst",
  "title": "Compensation Analyst",
  "company_name": "Example Benefits Canada",
  "location": {
    "raw": "Toronto, ON",
    "locality": "Toronto",
    "region": "Ontario",
    "country": "Canada",
    "countryCode": "CA"
  },
  "job_type": "Full-time",
  "salary_minimum": 75000,
  "salary_maximum": 95000,
  "salary_currency": "CAD",
  "salary_period": "yearly",
  "company_rating": 4.1,
  "processor": "https://apify.com/truefetch/glassdoor-job-listing",
  "processed_at": "2026-07-21T12:00:00.000Z"
}
```

See the live [Output schema](https://apify.com/truefetch/glassdoor-job-listing/output-schema) for types and representative examples.

### What inputs can I configure?

Glassdoor Job Listing exposes 8 public inputs in schema order, with 3 required and the rest optional.

| Parameter | Type | Required | Description | Example |
| --- | --- | :---: | --- | --- |
| `max_results` | integer | Yes | Maximum number of normalized Glassdoor listings to return. | `7` |
| `keyword` | string | Yes | Job title, skill, or company query for Glassdoor. | `Accountant` |
| `country` | select | Yes | Country for the Glassdoor regional search. | `United Kingdom` |
| `location` | string | No | City, area, or postal code for Glassdoor. | — |
| `posted_since` | date | No | Earliest posting date where Glassdoor accepts the filter. | — |
| `distance` | integer | No | Radius in miles around the location sent to Glassdoor. | — |
| `job_type` | select | No | Employment type filter accepted by Glassdoor. | — |
| `currency` | select | No | Target currency for converting salary amounts returned by Glassdoor. | — |

`country` has 23 accepted values; `job_type` has 5 accepted values; `currency` has 166 accepted values. Optional fields have no request effect when omitted; use the [live Input schema](https://apify.com/truefetch/glassdoor-job-listing/input-schema) for types and accepted values.

### What platforms and markets does Glassdoor Job Listing cover?

Glassdoor Job Listing covers 23 country markets with location, distance, recency, employment, and currency controls.

The country selector contains 23 values: Argentina, Australia, Austria, Belgium, Brazil, Canada, France, Germany, Hong Kong, India, Ireland, Italy, Mexico, Netherlands, New Zealand, Portugal, Singapore, South Africa, Spain, Sweden, Switzerland, United Kingdom, United States.

Coverage states where the Actor can form a request; live inventory, relevance, language, and optional field availability still come from the selected public source.

### Why use Glassdoor Job Listing?

| Capability | Practical benefit |
| --- | --- |
| Glassdoor-focused source | Keep compensation and employer context tied to a known board. |
| Salary fields and target currency | Compare populated pay ranges in one currency without guessing missing compensation. |
| Employer rating and profile fields | Join hiring activity with public company context when Glassdoor exposes it. |
| Country-wide or local search | Move between national benchmarking and city-level investigation. |
| Source and official URLs | Preserve the board listing and a separate employer destination when available. |
| One-result test | Evaluate description, salary, and company coverage before increasing spend. |

The central trade-off is sparsity: Glassdoor may expose valuable salary and rating data, but those fields are not guaranteed for every job.

### Who is Glassdoor Job Listing for?

| Team | Typical use |
| --- | --- |
| Compensation analysts | Compare disclosed salary ranges by title, city, country, or employer. |
| Data teams | Build timestamped, source-attributed job and employer datasets. |
| Recruiting operations | Monitor public openings with company and application context. |
| Market researchers | Study role demand alongside populated company ratings and industries. |
| Product developers | Add Glassdoor-focused job discovery to a workflow or internal tool. |

The Actor is not appropriate for collecting review text, estimating undisclosed pay, identifying candidates, or treating a company rating as a universal measure of employer quality.

### How can I use Glassdoor Job Listing through the API or MCP?

The public Actor ID is **`OFdvsjf7TqVYuQPky`**; the name form **`truefetch/glassdoor-job-listing`** is also accepted. This synchronous HTTP example runs the shared Toronto search:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/OFdvsjf7TqVYuQPky/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "Compensation Analyst",
    "country": "Canada",
    "max_results": 1,
    "location": "Toronto",
    "distance": 50,
    "posted_since": "7 days",
    "job_type": "fulltime",
    "currency": "CAD"
  }'
```

For MCP clients, use the current [Apify MCP](https://docs.apify.com/integrations/mcp) Streamable HTTP configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=truefetch/glassdoor-job-listing",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}
```

Ask the connected client for the same Toronto Compensation Analyst scenario. The [API page](https://apify.com/truefetch/glassdoor-job-listing/api) provides asynchronous runs, SDK snippets, and OpenAPI details.

### How much does Glassdoor Job Listing cost?

Glassdoor Job Listing costs $0.00450 per Result on FREE plus $0.01000 per minimum Actor Start event, so the smallest one-result test totals $0.01450.

| Apify tier | Actor Start | Per Result |
| --- | ---: | ---: |
| FREE | $0.01000 | $0.00450 |
| BRONZE | $0.01000 | $0.00405 |
| SILVER | $0.01000 | $0.00360 |
| GOLD | $0.01000 | $0.00338 |
| PLATINUM | $0.01000 | $0.00338 |
| DIAMOND | $0.01000 | $0.00338 |

Result is billed once for each item written to the default Dataset. Actor Start event count depends on selected memory, with a minimum of one event.

Smallest useful test: $0.01000 + 1 × $0.00450 = **$0.01450** on FREE when one item is published. A zero-result run can still incur Actor Start. [Prices can change; check live pricing](https://apify.com/truefetch/glassdoor-job-listing/pricing) before scheduling volume.

### How does Glassdoor Job Listing compare with alternatives?

| Decision factor | Glassdoor Job Listing | LinkedIn or Indeed Actor | Multi-board Job Search |
| --- | --- | --- | --- |
| Source | Glassdoor | One different board | Several compatible boards |
| Differentiating context | Disclosed salary and Glassdoor employer rating | Source-specific role and company fields | Cross-board normalization |
| Market count | 23 countries | Actor-specific | Market-specific board set |
| Best use | Compensation and employer-aware analysis | A required alternative source | Breadth across boards |
| Trade-off | Salary and ratings can be sparse | Different source semantics | Less source-specific focus |

Choose Glassdoor Job Listing when Glassdoor compensation or rating context is central. Choose [Job Search](https://apify.com/truefetch/job-search) when one normalized request should cover several job boards.

### What are the limits and troubleshooting steps?

| Symptom or limit | Explanation | Next step |
| --- | --- | --- |
| Fewer results than requested | `max_results` is a cap; keyword, market, location, and recency control source availability. | Broaden one constraint and rerun one result. |
| Salary fields are empty | Many listings do not publish numeric pay. | Keep salary nullable and do not infer a range. |
| Company rating is empty | A rating is not always attached to the public job data. | Treat null as unavailable, not zero. |
| No remote-only control appears | The current public schema does not expose that filter. | Filter populated `is_remote` or `work_mode` values downstream. |
| Location is rejected | The place must resolve within the selected country. | Use a clear city, region, or postcode that matches the country. |
| Description or official URL is empty | Detail fields and employer destinations can be unavailable. | Retain `platform_url` and treat the run as partial source coverage. |
| A narrow recency window returns nothing | Small markets may have no matching recent job. | Expand `posted_since` or remove the local constraint. |

A successful run can legitimately return an empty Dataset when no public listing matches every selected constraint. That outcome answers the search without implying a service failure; monitor the terminal status separately, then broaden the keyword, location, distance, job type, or recency window if rows are required.

Reproduce issues with one keyword, one country, and `max_results: 1`, then include the run URL in [Apify Issues](https://apify.com/truefetch/glassdoor-job-listing/issues). Never share API tokens.

### Frequently asked questions

#### Can I use glassdoor job listings api without login?

Yes. Glassdoor Job Listing runs on Apify without asking for a source-site publisher credential; an Apify account and token are still required for authenticated API or MCP calls.

#### How do I get glassdoor jobs by keyword and country?

Set `keyword`, `country`, and `max_results`, then add only the optional fields present in this Actor's input table. Results are capped by source availability and relevance.

#### Does Glassdoor Job Listing require a source-site login?

No source-site username, password, cookie, or API key appears in the public input. The Actor collects accessible public listings independently of the source.

#### Why are salary, company, applicant, or contact values empty?

Those values are nullable because public listings do not expose the same detail. Empty means unavailable from the collected source, not zero or false.

#### Is there a free jobs API?

Apify accounts include platform usage under the current Apify plan, while this Actor bills Actor Start and Result events. Use the one-result calculation in Pricing to evaluate the smallest test.

#### Can I schedule runs to monitor Glassdoor job listings over time?

Yes. Test a small input first, then use Apify schedules and webhooks. Preserve `processed_at` and source URLs because listings can change, close, or reappear.

#### How is billing counted for Glassdoor Job Listing?

Billing uses Actor Start events and one Result event per default Dataset item. A requested result limit is a cap, not a prepaid bundle or a guarantee of source inventory.

### Related TrueFetch Actors

Glassdoor Job Listing has three nearby TrueFetch alternatives, each for a different source decision.

- [Job Search](https://apify.com/truefetch/job-search) — Use it for normalized coverage across several job boards.
- [LinkedIn Job Listing](https://apify.com/truefetch/linkedin-job-listing) — Use it for LinkedIn role and applicant signals.
- [Indeed Job Listing](https://apify.com/truefetch/indeed-job-listing) — Use it for wider Indeed country coverage.

### Support

Use the [Store page](https://apify.com/truefetch/glassdoor-job-listing) for the run interface, the [API page](https://apify.com/truefetch/glassdoor-job-listing/api) for generated clients, [Issues](https://apify.com/truefetch/glassdoor-job-listing/issues) for reproducible bugs, and the [TrueFetch community](https://t.me/TrueFetch) for usage questions.

[**Run a one-result test**](https://apify.com/truefetch/glassdoor-job-listing) · [**View API**](https://apify.com/truefetch/glassdoor-job-listing/api)

**Last Updated:** August 10, 2026

# Actor input Schema

## `max_results` (type: `integer`):

Maximum Glassdoor job rows to return

## `keyword` (type: `string`):

Job title, skill, or company query to search on Glassdoor

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

Country-specific Glassdoor market used for the search

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

Optional city, area, or postal code for the Glassdoor search

## `posted_since` (type: `string`):

Optional earliest posting date for the Glassdoor search

## `distance` (type: `integer`):

Optional search radius in miles around the Glassdoor location

## `job_type` (type: `string`):

Optional employment type for the Glassdoor search; `all` disables this filter

## `currency` (type: `string`):

Optional target currency for normalized Glassdoor salary amounts

## Actor input object example

```json
{
  "max_results": 7,
  "keyword": "Accountant",
  "country": "United Kingdom"
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset overview of normalized job listings and company fields collected by All Jobs Scraper.

# 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 = {
    "max_results": 7,
    "keyword": "Accountant",
    "country": "United Kingdom"
};

// Run the Actor and wait for it to finish
const run = await client.actor("truefetch/glassdoor-job-listing").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 = {
    "max_results": 7,
    "keyword": "Accountant",
    "country": "United Kingdom",
}

# Run the Actor and wait for it to finish
run = client.actor("truefetch/glassdoor-job-listing").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "max_results": 7,
  "keyword": "Accountant",
  "country": "United Kingdom"
}' |
apify call truefetch/glassdoor-job-listing --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,truefetch/glassdoor-job-listing"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OFdvsjf7TqVYuQPky/builds/AFYwrdvkFsAKFncZL/openapi.json
