> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hasdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Glassdoor Listing Scraper API

The Glassdoor Listing Scraper API allows you to retrieve job listings from Glassdoor based on various search parameters.

<Info>
  HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Glassdoor. Glassdoor is a trademark of its respective owner. This API works with publicly available data only.
</Info>

## Get Your API Key

Sign in at [hasdata.com](https://app.hasdata.com/sign-in), go to your account settings, and copy your API key.
All requests must include your key in the `x-api-key` header.

## Request Cost and API Credits

Each request to the Glassdoor Listing Scraper API consumes **API Credits** from your account balance.

* **Cost per request:** 10 API Credits
* Credits are deducted only for successful requests.
* Your total available credits depend on your active plan.

<Tip>You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.</Tip>
<Warning>**Unused credits do not roll over.** Any remaining credits expire at the end of the current billing period.</Warning>

To monitor your credit usage and remaining balance, sign in to your account dashboard at [app.hasdata.com](https://app.hasdata.com/sign-in).

## Make Your First Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET -G \
    --url 'https://api.hasdata.com/scrape/glassdoor/listing' \
    --data-urlencode 'keyword=software engineer' \
    --data-urlencode 'location=New York, NY' \
    --data-urlencode 'sort=recent' \
    --data-urlencode 'domain=www.glassdoor.com' \
    --data-urlencode 'datePosted=7' \
    --data-urlencode 'radius=25' \
    --data-urlencode 'minSalary=90000' \
    --data-urlencode 'maxSalary=150000' \
    --data-urlencode 'minRating=4' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: <your-api-key>'
  ```

  ```bash HasData CLI theme={null}
  hasdata glassdoor-listing \
    --keyword 'software engineer' \
    --location 'New York, NY' \
    --sort recent \
    --domain www.glassdoor.com \
    --date-posted 7 \
    --radius 25 \
    --min-salary 90000 \
    --max-salary 150000 \
    --min-rating 4
  ```

  ```javascript Node.js theme={null}
  const axios = require('axios').default;

  const options = {
    method: 'GET',
    url: 'https://api.hasdata.com/scrape/glassdoor/listing',
    params: {
      keyword: 'software engineer',
      location: 'New York, NY',
      sort: 'recent',
      domain: 'www.glassdoor.com',
      datePosted: '7',
      radius: '25',
      minSalary: '90000',
      maxSalary: '150000',
      minRating: '4'
    },
    headers: {'Content-Type': 'application/json', 'x-api-key': '<your-api-key>'}
  };

  try {
    const { data } = await axios.request(options);
    console.log(data);
  } catch (error) {
    console.error(error);
  }
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.hasdata.com/scrape/glassdoor/listing"

  querystring = {"keyword":"software engineer","location":"New York, NY","sort":"recent","domain":"www.glassdoor.com","datePosted":"7","radius":"25","minSalary":"90000","maxSalary":"150000","minRating":"4"}

  headers = {
      "Content-Type": "application/json",
      "x-api-key": "<your-api-key>"
  }

  response = requests.get(url, headers=headers, params=querystring)

  print(response.json())
  ```

  ```php PHP theme={null}
  <?php

  $params = [
      "keyword" => "software engineer",
      "location" => "New York, NY",
      "sort" => "recent",
      "domain" => "www.glassdoor.com",
      "datePosted" => "7",
      "radius" => "25",
      "minSalary" => "90000",
      "maxSalary" => "150000",
      "minRating" => "4",
  ];

  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.hasdata.com/scrape/glassdoor/listing?" . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => [
      "Content-Type: application/json",
      "x-api-key: <your-api-key>",
    ],
  ]);

  $response = curl_exec($curl);
  curl_close($curl);

  echo $response;
  ```

  ```java Java theme={null}
  OkHttpClient client = new OkHttpClient();

  HttpUrl url = HttpUrl.parse("https://api.hasdata.com/scrape/glassdoor/listing")
    .newBuilder()
    .addQueryParameter("keyword", "software engineer")
    .addQueryParameter("location", "New York, NY")
    .addQueryParameter("sort", "recent")
    .addQueryParameter("domain", "www.glassdoor.com")
    .addQueryParameter("datePosted", "7")
    .addQueryParameter("radius", "25")
    .addQueryParameter("minSalary", "90000")
    .addQueryParameter("maxSalary", "150000")
    .addQueryParameter("minRating", "4")
    .build();

  Request request = new Request.Builder()
    .url(url)
    .get()
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "<your-api-key>")
    .build();

  Response response = client.newCall(request).execute();
  ```

  ```csharp C# theme={null}
  using System.Net.Http;
  using System.Web;

  var client = new HttpClient();

  var query = HttpUtility.ParseQueryString(string.Empty);
  query["keyword"] = "software engineer";
  query["location"] = "New York, NY";
  query["sort"] = "recent";
  query["domain"] = "www.glassdoor.com";
  query["datePosted"] = "7";
  query["radius"] = "25";
  query["minSalary"] = "90000";
  query["maxSalary"] = "150000";
  query["minRating"] = "4";

  var url = $"https://api.hasdata.com/scrape/glassdoor/listing?{query}";

  var request = new HttpRequestMessage(new HttpMethod("GET"), url);
  request.Headers.Add("x-api-key", "<your-api-key>");

  using var response = await client.SendAsync(request);
  response.EnsureSuccessStatusCode();
  var content = await response.Content.ReadAsStringAsync();
  Console.WriteLine(content);
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'uri'

  uri = URI("https://api.hasdata.com/scrape/glassdoor/listing")
  params = {
    "keyword" => "software engineer",
    "location" => "New York, NY",
    "sort" => "recent",
    "domain" => "www.glassdoor.com",
    "datePosted" => "7",
    "radius" => "25",
    "minSalary" => "90000",
    "maxSalary" => "150000",
    "minRating" => "4",
  }
  uri.query = URI.encode_www_form(params)

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri)
  request["Content-Type"] = 'application/json'
  request["x-api-key"] = '<your-api-key>'

  response = http.request(request)
  puts response.read_body
  ```

  ```rust Rust theme={null}
  use reqwest::blocking::Client;

  fn main() -> Result<(), Box<dyn std::error::Error>> {
      let client = Client::new();
      let res = client
          .get("https://api.hasdata.com/scrape/glassdoor/listing")
          .query(&[("keyword", "software engineer")])
          .query(&[("location", "New York, NY")])
          .query(&[("sort", "recent")])
          .query(&[("domain", "www.glassdoor.com")])
          .query(&[("datePosted", "7")])
          .query(&[("radius", "25")])
          .query(&[("minSalary", "90000")])
          .query(&[("maxSalary", "150000")])
          .query(&[("minRating", "4")])
          .header("Content-Type", "application/json")
          .header("x-api-key", "<your-api-key>")
          .send()?
          .text()?;
      println!("{}", res);
      Ok(())
  }
  ```

  ```go Go theme={null}
  package main

  import (
  	"fmt"
  	"io"
  	"net/http"
  	"net/url"
  )

  func main() {
  	params := url.Values{}
  	params.Set("keyword", "software engineer")
  	params.Set("location", "New York, NY")
  	params.Set("sort", "recent")
  	params.Set("domain", "www.glassdoor.com")
  	params.Set("datePosted", "7")
  	params.Set("radius", "25")
  	params.Set("minSalary", "90000")
  	params.Set("maxSalary", "150000")
  	params.Set("minRating", "4")

  	u := "https://api.hasdata.com/scrape/glassdoor/listing?" + params.Encode()

  	req, _ := http.NewRequest("GET", u, nil)
  	req.Header.Add("Content-Type", "application/json")
  	req.Header.Add("x-api-key", "<your-api-key>")

  	res, _ := http.DefaultClient.Do(req)
  	defer res.Body.Close()

  	body, _ := io.ReadAll(res.Body)
  	fmt.Println(string(body))
  }
  ```
</CodeGroup>

## API Parameters

| Parameter | Default Value | Required | Description |
| - | - | - | - |
| `keyword` | software engineer | Yes | The keyword used to search for job listings. |
| `location` | New York, NY | Yes | The location to search for job listings. |
| `sort` | recent | No | The sorting option for the search results. |
| `domain` | [www.glassdoor.com](http://www.glassdoor.com) | No | The domain of the Glassdoor site (optional). |
| `datePosted` | 7 | No | Returns only jobs posted within the given number of days. |
| `radius` | 25 | No | Search radius around the location, in miles. `0` keeps only jobs in the location itself. Glassdoor uses 25 miles when this is not set. |
| `minSalary` | 90000 | No | Lower bound of the yearly pay range. A job is kept when its estimated pay range overlaps the requested one; hourly and monthly pay are converted to yearly. Jobs without a pay estimate are excluded when a salary filter is set. |
| `maxSalary` | 150000 | No | Upper bound of the yearly pay range, must be greater than `minSalary`. Can be used on its own. |
| `minRating` | 4 | No | Returns jobs from companies rated at least this high. Glassdoor applies the filter approximately, so a few companies rated slightly below the value can appear. |
| `easyApplyOnly` | - | No | Returns only jobs that can be applied to directly on Glassdoor. Defaults to false. |
| `remoteOnly` | - | No | Returns only remote jobs. Defaults to false. |
| `nextPageToken` | - | No | Token for fetching the next page of jobs, taken from the pagination of a previous response. The token keeps the filters of the search it came from, so they do not need to be sent again. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.