Glassdoor Company Scraper - Most Comprehensive
Pricing
from $0.40 / 1,000 companies
Glassdoor Company Scraper - Most Comprehensive
๐ฅ ~$0.5/1K companies ๐ฅ Scrape comprehensive Glassdoor company data including profile, ratings, demographics, salaries, interviews, benefits, and job listings.
Pricing
from $0.40 / 1,000 companies
Rating
5.0
(1)
Developer
Kai
Maintained by CommunityActor stats
0
Bookmarked
37
Total users
8
Monthly active users
3.6 hours
Issues response
a day ago
Last modified
Categories
Share
Glassdoor Company Scraper
Collect Glassdoor company profiles by company page URL, employer ID, company name, or website. Each Dataset item can include company details, ratings, locations, salaries, benefits, interviews, photos, updates, and current jobs.
Company profile coverage
| Group | Data in a full company record |
|---|---|
| Company profile | Identity, website, description, size, revenue, headquarters, industry, leadership, relationships, and recognition |
| Ratings and locations | Overall and detailed ratings, distributions, demographics, review locations, and offices |
| Company content | Managed profile content, company updates, and photos |
| Optional research | Salary estimates, benefits and benefit reviews, interview data, and current jobs |
Compact mode returns the core company fields as one flat row. Full mode keeps the nested sections and their source relationships.
Choose full or compact records
| Need | Set | Result |
|---|---|---|
| A nested company profile for research | Keep compactMode: false | Core company data, ratings, locations, and each enabled section |
| One flat row for a table or CSV file | Set compactMode: true | Core fields only; section switches are ignored |
Collect a company from its page
{"urls": ["https://www.glassdoor.com/Overview/Working-at-Nucor-EI_IE489.htm"]}
Any supported Glassdoor company page that contains the employer ID can identify the company.
Collect a company by employer ID
{"employerIds": [489]}
Find a company by name or website
{"searchQueries": ["Nucor", "https://www.nucor.com"],"maxSearchResults": 1}
maxSearchResults applies to each search value. With a website value,
strictDomainMatch can keep results that use the same registered domain.
Create flat rows for a table
{"employerIds": [489],"compactMode": true}
Add salary, benefit, interview, and job data
Enable only the research sections that you need:
{"employerIds": [489],"includeSalaries": true,"maxSalaries": 20,"includeBenefits": true,"maxBenefitReviews": 20,"includeInterviews": true,"maxInterviews": 20,"includeJobs": true,"maxJobs": 20}
Input reference
Provide at least one non-empty urls, employerIds, or searchQueries
list. The Actor resolves duplicate sources to one company record.
Complete input example
Enable only the sections that you need. The limits keep the optional arrays short.
{"urls": ["https://www.glassdoor.com/Overview/Working-at-Nucor-EI_IE489.htm"],"employerIds": [489],"searchQueries": ["https://www.nucor.com"],"maxSearchResults": 1,"strictDomainMatch": true,"compactMode": false,"minReviewCount": 1,"minOverallRating": 1,"includeRatings": true,"includeDemographics": true,"includeReviewLocations": true,"includeOfficeLocations": true,"includeManagedContent": true,"includeCompanyUpdates": true,"includePhotos": true,"includeSalaries": true,"maxSalaries": 21,"includeBenefits": true,"maxBenefitReviews": 21,"benefitsCountryId": 1,"includeInterviews": true,"maxInterviews": 21,"includeJobs": true,"maxJobs": 21,"proxyConfiguration": {"useApifyProxy": true}}
For a normal run, use only one source method. Compact mode ignores all section switches.
Field reference
| Field | Type | Default | Description |
|---|---|---|---|
urls | string[] | [] | Company page URLs. Overview, reviews, salaries, and other company-page URLs containing an employer ID are accepted. |
employerIds | integer[] | [] | Employer IDs from 1 through 2,147,483,647. |
searchQueries | string[] | [] | Company names or company website addresses. |
maxSearchResults | integer | 20 | Requested maximum matching companies per search query. A query can return fewer. |
strictDomainMatch | boolean | true | For website searches, keep only results whose company website uses the same registered domain. |
compactMode | boolean | false | Return a flat company row instead of the full nested record. |
minReviewCount | integer | 0 | Skip companies with fewer reviews. 0 disables this filter. |
minOverallRating | number | 0 | Skip companies below this rating. Accepted range is 0 through 5; 0 disables this filter. |
includeRatings | boolean | true | Include the detailed ratings section and distributions. The overall rating and review count remain in the core profile. |
includeDemographics | boolean | true | Include ratings grouped by demographic category. |
includeReviewLocations | boolean | true | Include cities and metro areas represented in reviews. |
includeOfficeLocations | boolean | true | Include company office locations. |
includeManagedContent | boolean | true | Include company-managed profile content. |
includeCompanyUpdates | boolean | true | Include up to 50 recent company updates. |
includePhotos | boolean | true | Include company photos. |
includeSalaries | boolean | false | Include salary estimates by job title. |
maxSalaries | integer | 20 | Maximum salary entries per company. 0 collects all available entries. |
includeBenefits | boolean | false | Include the benefits overview and benefit reviews. |
maxBenefitReviews | integer | 20 | Maximum benefit reviews per company. 0 collects all available reviews. |
benefitsCountryId | integer | 1 | Country used for benefits data. When benefits are enabled and available, benefitCountries lists the supported countries and IDs. |
includeInterviews | boolean | false | Include interview experiences and aggregate statistics. |
maxInterviews | integer | 20 | Maximum interview entries per company. 0 collects all available entries. |
includeJobs | boolean | false | Include current jobs. |
maxJobs | integer | 20 | Maximum job entries per company. 0 collects all available entries. |
proxyConfiguration | object | {"useApifyProxy":true} | Optional connection settings for the run. |
Company record reference
The default Dataset contains one record for each included employer.
| Mode | Shape | Section behavior |
|---|---|---|
| Full (default) | Nested company profile | Includes the enabled default and optional sections |
| Compact | Flat core-company row | Ignores section switches such as includeSalaries and includeJobs |
A filtered company, a missing company, or a search with no match produces no Dataset record.
The examples shorten long arrays to one item. Empty arrays and null values
keep their original meaning.
Compact record
This compact-field projection contains every documented compact key. Its
scrapedAt value dates the point-in-time record to 16 August 2026.
{"recordType": "company","mode": "compact","status": "complete","failedSections": [],"employerId": 489,"inputSource": "https://www.nucor.com","glassdoorUrl": "https://www.glassdoor.com/Overview/Working-at-Nucor-EI_IE489.11,16.htm","name": "Nucor Corporation","overallRating": 3.9,"reviewCount": 876,"revenue": "$10+ billion (USD)","size": "10000+ Employees","type": "Company - Public","yearFounded": 1971,"website": "https://www.nucor.com","headquarters": "Charlotte, NC","ceoName": "Leon Topalian","industry": "Metal & Mineral Manufacturing","sector": "Manufacturing","description": "Nucor continues to electrify the steel industry with a simple concept: The minimill is mighty. At its various minimills, Nucor produces about 15 million tons of steel annually, including hot- and cold-rolled steel, steel joists, and metal buildings. North America's largest recycler of scrap metal, Nucor produces steel by melting scrap in electric arc furnaces. Most of its products are sold to steel service centers, manufacturers, and fabricators. Subsidiaries such as Vulcraft -- one of the US's largest producers of steel joists, girders, and decking -- use the balance of the steel. The company has grown mainly through acquisition since 2006, including spending $1 billion to buy The David J. Joseph Company.","scrapedAt": "2026-08-16T15:12:05.665Z"}
Full record with optional sections
This field-shape projection contains point-in-time values dated 16 August 2026. It includes salary, benefit, interview, and job sections. Long arrays keep one item, so the JSON is not a complete full record.
Common and compact fields
| Output field | JSON type and nullability |
|---|---|
recordType | string; always company |
mode | string; full or compact |
status | string; complete or partial |
failedSections | string[]; empty when status is complete |
employerId | number |
inputSource | string or null |
overallRating, reviewCount | number or null; present in full and compact records |
scrapedAt | ISO 8601 string |
Compact: glassdoorUrl, name, revenue, size, type, website, headquarters, ceoName, industry, sector, description | string or null |
Compact: yearFounded | number or null |
Full profile fields
Full mode copies the current Glassdoor profile fields and adds the selected
sections. Glassdoor can add child keys. In the child tables below, the type is
the JSON type of a non-null value. A source child can be absent or null.
Arrays can be empty. The Actor does not remove new source keys.
The top-level section branches have these contracts:
| Branch | JSON type | Presence |
|---|---|---|
ratings, ratingCountDistribution | object | Optional; added together after a successful ratings request. |
filteredReviewsCountByLang | object[] | Optional; added with ratings. |
allReviewsCount, filteredReviewsCount, ratedReviewsCount | number | Optional; added with ratings. |
demographicRatings | object[] or null | Optional; controlled by includeDemographics. |
reviewLocations | object[] | Optional; controlled by includeReviewLocations. |
officeLocations | object[] | Optional; controlled by includeOfficeLocations. |
employerManagedContent | object[] | Optional; controlled by includeManagedContent. |
companyUpdates | object[] | Optional; controlled by includeCompanyUpdates. |
companyUpdatesTotalCount | number | Optional; added with companyUpdates. |
photos | object[] | Optional; controlled by includePhotos. |
salaries | object[] | Optional; controlled by includeSalaries. |
salaryMeta | object | Optional; added after the first salary page succeeds. |
benefitCountries | object[] | Optional; controlled by includeBenefits. |
benefits | object[] or null | Optional; controlled by includeBenefits. |
benefitsOverallRating, benefitsTotalReviews | number or null | Optional; added when a benefit summary is available. |
benefitEmploymentStatuses | string[] | Optional; added with a benefit summary. |
benefitReviews | object[] | Optional; added when benefit reviews are available. |
interviews | object[] | Optional; controlled by includeInterviews. |
interviewStats | object | Optional; added after the first interview page succeeds. |
jobs | (object or null)[] | Optional; controlled by includeJobs. A source listing without jobview adds a null item. |
jobsCompanyFilterOptions | object[] | Optional; added with jobs. |
If the first request for a section fails, its branch can be absent. If a later
page fails, photos, benefitReviews, salaries, interviews, or jobs can
keep the items collected before the failure. The record then has
status: "partial", and failedSections names the incomplete section.
Profile and relationships
The profile source can contain these containers:
| Field | JSON type |
|---|---|
primaryIndustry, bestProfile, overview, ceo, counts, links, coverPhoto | object |
parent | object |
officeAddresses, awards, bestPlacesToWork, bestLedCompanies, subsidiaries, siblings | object[] |
name is a string and is present in every saved record. Other profile scalars
use these JSON types when present:
| Scope | Number fields | String fields | Boolean fields |
|---|---|---|---|
| Profile root | id, yearFounded, primaryIndustryId | shortName, headquarters, revenue, size, sizeCategory, website, type, activeStatus, approvalStatus, squareLogoUrl, regularLogoUrl, largeLogoUrl | isValid |
primaryIndustry | industryId, sectorId | industryName, sectorName | โ |
bestProfile | id | โ | โ |
overview | โ | description, mission | โ |
ceo | id | name, title, photoUrl | โ |
counts | benefitCount, reviewCount, salaryCount, interviewCount, photoCount, globalJobCount.jobCount | โ | โ |
links | โ | benefitsUrl, interviewUrl, jobsUrl, overviewUrl, reviewsUrl, salariesUrl | โ |
coverPhoto | โ | hiResUrl | โ |
officeAddresses[] | id, officeLocationId, country.id, country.continent.id | addressLine1, addressLine2, cityName, countryName, postalCode, administrativeAreaName1, country.name, country.continent.name | โ |
awards[] | year | name, source | featured |
bestPlacesToWork[] | id, rank | listType, name, timePeriod | isCurrent |
bestLedCompanies[] | id, rank | name, timePeriod | isCurrent |
parent.employer, subsidiaries[].employer, and siblings[].employer use the
same relationship shape:
| Number fields | String fields | Boolean fields |
|---|---|---|
id, ratings.overallRating, counts.reviewCount, counts.salaryCount, counts.globalJobCount.jobCount | name, shortName, headquarters, squareLogoUrl, approvalStatus | isValid |
Ratings, demographics, and locations
| Scope | Number fields | String fields | Other fields |
|---|---|---|---|
ratings | overallRating, reviewCount, ceoRating, ceoRatingsCount, recommendToFriendRating, businessOutlookRating, cultureAndValuesRating, careerOpportunitiesRating, workLifeBalanceRating, seniorManagementRating, compensationAndBenefitsRating, diversityAndInclusionRating | โ | ratedCeo: object or null |
ratings.ratedCeo | id | name, title, regularPhoto, largePhoto | โ |
ratingCountDistribution | Values under 1, 2, 3, 4, and 5; recommendToFriend.RECOMMEND; recommendToFriend.WONT_RECOMMEND | โ | overall, cultureAndValues, careerOpportunities, workLifeBalance, seniorManagement, compensationAndBenefits, diversityAndInclusion, and recommendToFriend are objects. |
filteredReviewsCountByLang[] | count | isoLanguage | โ |
| Rating counts at the record root | allReviewsCount, filteredReviewsCount, ratedReviewsCount | โ | โ |
demographicRatings[] | โ | category | categoryRatings: object[] |
demographicRatings[].categoryRatings[] | Rating fields listed for ratings, including reviewCount | categoryValue | ratings: object |
reviewLocations[] | id | name, type; state and country are string or null | โ |
officeLocations[] | id, officeLocationId, country.id, country.continent.id, employerReviews.ratings.overallRating | addressLine1, addressLine2, cityName, countryName, postalCode, administrativeAreaName1, country.name, country.continent.name | country and employerReviews: object |
Managed content, updates, and photos
| Scope | Number fields | String fields | Boolean fields and containers |
|---|---|---|---|
employerManagedContent[] | โ | โ | managedContent: object[] |
managedContent[] | id | body, type, title | media: object[] |
managedContent[].media[] | โ | caption, source, mediaType | โ |
companyUpdates[] | employerId, likes; id can be a number or string | text, date | isLiked: boolean; media and category: object |
companyUpdates[].media | โ | title, description, linkUrl, linkDomain, imageUrl, videoUrl | โ |
companyUpdates[].category | id | name | โ |
photos[] | โ | caption, photoUrl2x | โ |
Salaries and benefits
| Scope | Number fields | String fields | Boolean fields and containers |
|---|---|---|---|
salaries[] | basePayStatistics.mean, totalAdditionalPayStatistics.mean | payPeriod | currency, employer, jobTitle, basePayStatistics, totalAdditionalPayStatistics, and totalPayStatistics: object |
salaries[].currency | id | code | โ |
salaries[].employer | id, ratings.overallRating, counts.globalJobCount.jobCount | name, shortName, squareLogoUrl | ratings and counts: object |
salaries[].jobTitle | id, gocId, mgocId | text | โ |
salaries[].totalPayStatistics.percentiles[] | value | ident | โ |
salaryMeta | resultCount, numPages | โ | queryLocation: object or null |
salaryMeta.queryLocation | id | name, type | โ |
benefitCountries[] | id | name | โ |
benefits[] | rating can be a number or null; reviewCount | category, name | verified: boolean |
| Benefit summary at the record root | benefitsOverallRating and benefitsTotalReviews can be a number or null | โ | benefitEmploymentStatuses: string[] |
benefitReviews[] | id, rating | createDate, userEnteredJobTitle | currentJob: boolean; city: object; benefitComments: object[] |
benefitReviews[].city | โ | name, state.name, metro.name, country.name | state, metro, and country: object |
benefitReviews[].benefitComments[] | helpfulVotes, id | comment | โ |
Interviews
| Scope | Number fields | String fields | Boolean fields and containers |
|---|---|---|---|
interviews[] | id, countHelpful | advice, difficulty, experience, negotiationDescription, outcome, processDescription, reviewDateTime, source | featured: boolean; employer, jobTitle: object; employerResponses, userQuestions: object[] |
interviews[].employer | โ | name, squareLogoUrl | โ |
interviews[].employerResponses[] | โ | response, responseDateTime | โ |
interviews[].jobTitle | โ | text | โ |
interviews[].userQuestions[] | answerCount | question | โ |
interviewStats | difficultySubmissionCount, difficultySum, filteredInterviewCount, totalInterviewCount | โ | interviewExperienceCounts, interviewObtainedChannelCounts: object[] |
interviewStats.interviewExperienceCounts[], interviewStats.interviewObtainedChannelCounts[] | count, percentage | type | โ |
Jobs
Each jobs item is an object or null. A non-null item can contain job,
header, and overview objects.
| Scope | Number fields | String fields | Boolean fields and containers |
|---|---|---|---|
jobs[].job | listingId | jobTitleText, description | โ |
jobs[].header | ageInDays, categoryMgocId, sgocId, locId, rating, jobCountryId | goc, normalizedJobTitle, locationName, locationType, employerNameFromSearch, payPeriod, salarySource, payCurrency, jobViewUrl, jobLink, applyUrl, serpUrlForJobListing | easyApply, expired, isSponsoredJob, isSponsoredEmployer: boolean; employer, coverPhoto, payPeriodAdjustedPay, urgencySignal, indeedJobAttribute: object or null; occupations: object[]; remoteWorkTypes: string[] or null |
jobs[].header.employer | id | name, shortName, squareLogoUrl | โ |
jobs[].header.coverPhoto | employerId, sgocId | url | โ |
jobs[].header.payPeriodAdjustedPay | p10, p50, p90 | โ | โ |
jobs[].header.occupations[] | โ | key | โ |
jobs[].header.urgencySignal | normalizedCount | labelKey, messageKey | โ |
jobs[].header.indeedJobAttribute.extractedJobAttributes[] | โ | key, value | โ |
jobs[].overview.primaryIndustry | industryId, sectorId | industryName, sectorName | โ |
jobsCompanyFilterOptions[] | id | name, squareLogoUrl, shortName | โ |
Company resolution and result behaviour
- A company or section can be unavailable for a country or employer. Missing
optional objects can be
null, empty, or absent. - A full record has
status: partialwhen a requested section does not complete.failedSectionscan containratings,demographicRatings,reviewLocations,officeLocations,employerManagedContent,companyUpdates,photos,benefits,benefitReviews,salaries,interviews, orjobs. Check this list before you use an optional section. - Glassdoor can add or remove nullable child fields. Use the field reference as a guide and allow new keys in your data pipeline.
- A company that does not match the rating or review filters produces no Dataset item. A missing company or a search with no match also produces no item.
- A search term can match more than one employer. Use
maxSearchResultsandstrictDomainMatchto limit website searches. - A maximum value of
0collects all available entries and can increase the result size and run time for large employers.