Use Glassdoor Review Export - Ratings, Pros, Cons & Replies with Python
Get Glassdoor employee reviews for any company with overall and sub-category ratings, pros, cons, advice to management, job title and employment status.
1. Choose the data you need
Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.
2. Prepare a source-based input
This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.
{
"companies": [
"https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"
],
"employmentType": "any",
"includeCompanyProfile": false,
"includeWorldwideReviews": false,
"jobFunction": "any",
"jobTitleKeywords": "",
"keyword": "",
"language": "eng",
"location": "",
"maxItems": 3,
"maxReviewsPerCompany": 0,
"onlyCurrentEmployees": false,
"onlyWithEmployerResponses": false,
"postedWithinDays": "any",
"rating": "any",
"sortBy": "mostRecent"
}
Download input.example.json and save your reviewed copy as input.json.
| Field | Type | Required | Description |
|---|---|---|---|
companies | array | optional | Glassdoor company Review or Overview URLs, company names, or employer ids. Add one item per company. Example: https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm or Google or 9079. |
maxItems | integer | optional | Maximum number of reviews to save across all companies. |
maxReviewsPerCompany | integer | optional | Maximum reviews to save for each company. Set to 0 for no per-company limit. |
sortBy | string | optional | Order in which Glassdoor returns reviews. |
location | string | optional | City, state, metro area, or country to filter reviews by, such as New York, NY or London. Leave empty for all locations. The value is resolved automatically through Glassdoor's location search. |
jobFunction | string | optional | Only keep reviews whose job function matches this category. |
postedWithinDays | string | optional | Only keep reviews posted within this many days. Uses newest-first order and stops when older reviews are reached. |
rating | string | optional | Only keep reviews with this exact overall star rating. |
employmentType | string | optional | Only keep reviews with this employment status. |
onlyCurrentEmployees | boolean | optional | Only keep reviews written by current employees. |
onlyWithEmployerResponses | boolean | optional | Only keep reviews that have an official employer response. |
jobTitleKeywords | string | optional | Only keep reviews whose job title matches these words. Glassdoor may also return closely related titles, such as software developer for software engineer. |
keyword | string | optional | Only keep reviews that mention this word or phrase. |
language | string | optional | Language of the reviews to collect. Choose all languages to include every language Glassdoor exposes. |
includeWorldwideReviews | boolean | optional | Remove Glassdoor's default review criteria and include reviews from all countries. This raises the review ceiling but can add much older or non-local reviews. |
includeCompanyProfile | boolean | optional | Add company profile fields such as website, headquarters, size, revenue, industry, CEO, and company sub-ratings to each review. This makes one extra request per company. |
3. Start an Actor run
Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.
Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.
import json
import os
import urllib.request
# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
actor_input = json.load(stream)
token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
"https://api.apify.com/v2/acts/5lWwuQH8dZ6LpE4AU/runs?timeout=120&maxTotalChargeUsd=0.50",
data=json.dumps(actor_input).encode("utf-8"),
headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.
4. Inspect the actual results
Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.
Employee reviews scraped from Glassdoor with ratings, pros and cons, reviewer context, language data, employer responses, and company context.
Questions before you run
Which inputs are required?
No top-level fields are marked required in the published schema. Conditional requirements can still apply; check the README.
What does this guide verify?
The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.
What if the run request times out?
Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.
Generated from source build r9rX1xNG8Nnn7RlAc and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.