Skip to main content
The Glassdoor Listing Scraper API allows you to retrieve job listings from Glassdoor based on various search parameters.
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.

Get Your API Key

Sign in at hasdata.com, 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: 5 API Credits
  • Credits are deducted only for successful requests.
  • Your total available credits depend on your active plan.
You can use your credits across all HasData APIs. The same credit balance is shared platform-wide.
Unused credits do not roll over. Any remaining credits expire at the end of the current billing period.
To monitor your credit usage and remaining balance, sign in to your account dashboard at app.hasdata.com.

Make Your First Request

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' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <your-api-key>'
hasdata glassdoor-listing \
  --keyword 'software engineer' \
  --location 'New York, NY' \
  --sort recent \
  --domain www.glassdoor.com
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'
  },
  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);
}
import requests

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

querystring = {"keyword":"software engineer","location":"New York, NY","sort":"recent","domain":"www.glassdoor.com"}

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

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

print(response.json())
<?php

$params = [
    "keyword" => "software engineer",
    "location" => "New York, NY",
    "sort" => "recent",
    "domain" => "www.glassdoor.com",
];

$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;
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")
  .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();
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";

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);
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",
}
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
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")])
        .header("Content-Type", "application/json")
        .header("x-api-key", "<your-api-key>")
        .send()?
        .text()?;
    println!("{}", res);
    Ok(())
}
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")

	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))
}

API Parameters

ParameterDefault ValueRequiredDescription
keywordsoftware engineerYesThe keyword used to search for job listings.
locationNew York, NYYesThe location to search for job listings.
sortrecentNoThe sorting option for the search results.
domainwww.glassdoor.comNoThe domain of the Glassdoor site (optional).
nextPageToken-NoToken for fetching the next page of jobs.