Glassdoor Company Scraper - Most Comprehensive avatar

Glassdoor Company Scraper - Most Comprehensive

Pricing

from $0.40 / 1,000 companies

Go to Apify Store
Glassdoor Company Scraper - Most Comprehensive

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

Kai

Maintained by Community

Actor stats

0

Bookmarked

37

Total users

8

Monthly active users

3.6 hours

Issues response

a day ago

Last modified

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

GroupData in a full company record
Company profileIdentity, website, description, size, revenue, headquarters, industry, leadership, relationships, and recognition
Ratings and locationsOverall and detailed ratings, distributions, demographics, review locations, and offices
Company contentManaged profile content, company updates, and photos
Optional researchSalary 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

NeedSetResult
A nested company profile for researchKeep compactMode: falseCore company data, ratings, locations, and each enabled section
One flat row for a table or CSV fileSet compactMode: trueCore 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

FieldTypeDefaultDescription
urlsstring[][]Company page URLs. Overview, reviews, salaries, and other company-page URLs containing an employer ID are accepted.
employerIdsinteger[][]Employer IDs from 1 through 2,147,483,647.
searchQueriesstring[][]Company names or company website addresses.
maxSearchResultsinteger20Requested maximum matching companies per search query. A query can return fewer.
strictDomainMatchbooleantrueFor website searches, keep only results whose company website uses the same registered domain.
compactModebooleanfalseReturn a flat company row instead of the full nested record.
minReviewCountinteger0Skip companies with fewer reviews. 0 disables this filter.
minOverallRatingnumber0Skip companies below this rating. Accepted range is 0 through 5; 0 disables this filter.
includeRatingsbooleantrueInclude the detailed ratings section and distributions. The overall rating and review count remain in the core profile.
includeDemographicsbooleantrueInclude ratings grouped by demographic category.
includeReviewLocationsbooleantrueInclude cities and metro areas represented in reviews.
includeOfficeLocationsbooleantrueInclude company office locations.
includeManagedContentbooleantrueInclude company-managed profile content.
includeCompanyUpdatesbooleantrueInclude up to 50 recent company updates.
includePhotosbooleantrueInclude company photos.
includeSalariesbooleanfalseInclude salary estimates by job title.
maxSalariesinteger20Maximum salary entries per company. 0 collects all available entries.
includeBenefitsbooleanfalseInclude the benefits overview and benefit reviews.
maxBenefitReviewsinteger20Maximum benefit reviews per company. 0 collects all available reviews.
benefitsCountryIdinteger1Country used for benefits data. When benefits are enabled and available, benefitCountries lists the supported countries and IDs.
includeInterviewsbooleanfalseInclude interview experiences and aggregate statistics.
maxInterviewsinteger20Maximum interview entries per company. 0 collects all available entries.
includeJobsbooleanfalseInclude current jobs.
maxJobsinteger20Maximum job entries per company. 0 collects all available entries.
proxyConfigurationobject{"useApifyProxy":true}Optional connection settings for the run.

Company record reference

The default Dataset contains one record for each included employer.

ModeShapeSection behavior
Full (default)Nested company profileIncludes the enabled default and optional sections
CompactFlat core-company rowIgnores 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 fieldJSON type and nullability
recordTypestring; always company
modestring; full or compact
statusstring; complete or partial
failedSectionsstring[]; empty when status is complete
employerIdnumber
inputSourcestring or null
overallRating, reviewCountnumber or null; present in full and compact records
scrapedAtISO 8601 string
Compact: glassdoorUrl, name, revenue, size, type, website, headquarters, ceoName, industry, sector, descriptionstring or null
Compact: yearFoundednumber 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:

BranchJSON typePresence
ratings, ratingCountDistributionobjectOptional; added together after a successful ratings request.
filteredReviewsCountByLangobject[]Optional; added with ratings.
allReviewsCount, filteredReviewsCount, ratedReviewsCountnumberOptional; added with ratings.
demographicRatingsobject[] or nullOptional; controlled by includeDemographics.
reviewLocationsobject[]Optional; controlled by includeReviewLocations.
officeLocationsobject[]Optional; controlled by includeOfficeLocations.
employerManagedContentobject[]Optional; controlled by includeManagedContent.
companyUpdatesobject[]Optional; controlled by includeCompanyUpdates.
companyUpdatesTotalCountnumberOptional; added with companyUpdates.
photosobject[]Optional; controlled by includePhotos.
salariesobject[]Optional; controlled by includeSalaries.
salaryMetaobjectOptional; added after the first salary page succeeds.
benefitCountriesobject[]Optional; controlled by includeBenefits.
benefitsobject[] or nullOptional; controlled by includeBenefits.
benefitsOverallRating, benefitsTotalReviewsnumber or nullOptional; added when a benefit summary is available.
benefitEmploymentStatusesstring[]Optional; added with a benefit summary.
benefitReviewsobject[]Optional; added when benefit reviews are available.
interviewsobject[]Optional; controlled by includeInterviews.
interviewStatsobjectOptional; added after the first interview page succeeds.
jobs(object or null)[]Optional; controlled by includeJobs. A source listing without jobview adds a null item.
jobsCompanyFilterOptionsobject[]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:

FieldJSON type
primaryIndustry, bestProfile, overview, ceo, counts, links, coverPhotoobject
parentobject
officeAddresses, awards, bestPlacesToWork, bestLedCompanies, subsidiaries, siblingsobject[]

name is a string and is present in every saved record. Other profile scalars use these JSON types when present:

ScopeNumber fieldsString fieldsBoolean fields
Profile rootid, yearFounded, primaryIndustryIdshortName, headquarters, revenue, size, sizeCategory, website, type, activeStatus, approvalStatus, squareLogoUrl, regularLogoUrl, largeLogoUrlisValid
primaryIndustryindustryId, sectorIdindustryName, sectorNameโ€”
bestProfileidโ€”โ€”
overviewโ€”description, missionโ€”
ceoidname, title, photoUrlโ€”
countsbenefitCount, reviewCount, salaryCount, interviewCount, photoCount, globalJobCount.jobCountโ€”โ€”
linksโ€”benefitsUrl, interviewUrl, jobsUrl, overviewUrl, reviewsUrl, salariesUrlโ€”
coverPhotoโ€”hiResUrlโ€”
officeAddresses[]id, officeLocationId, country.id, country.continent.idaddressLine1, addressLine2, cityName, countryName, postalCode, administrativeAreaName1, country.name, country.continent.nameโ€”
awards[]yearname, sourcefeatured
bestPlacesToWork[]id, ranklistType, name, timePeriodisCurrent
bestLedCompanies[]id, rankname, timePeriodisCurrent

parent.employer, subsidiaries[].employer, and siblings[].employer use the same relationship shape:

Number fieldsString fieldsBoolean fields
id, ratings.overallRating, counts.reviewCount, counts.salaryCount, counts.globalJobCount.jobCountname, shortName, headquarters, squareLogoUrl, approvalStatusisValid

Ratings, demographics, and locations

ScopeNumber fieldsString fieldsOther fields
ratingsoverallRating, reviewCount, ceoRating, ceoRatingsCount, recommendToFriendRating, businessOutlookRating, cultureAndValuesRating, careerOpportunitiesRating, workLifeBalanceRating, seniorManagementRating, compensationAndBenefitsRating, diversityAndInclusionRatingโ€”ratedCeo: object or null
ratings.ratedCeoidname, title, regularPhoto, largePhotoโ€”
ratingCountDistributionValues under 1, 2, 3, 4, and 5; recommendToFriend.RECOMMEND; recommendToFriend.WONT_RECOMMENDโ€”overall, cultureAndValues, careerOpportunities, workLifeBalance, seniorManagement, compensationAndBenefits, diversityAndInclusion, and recommendToFriend are objects.
filteredReviewsCountByLang[]countisoLanguageโ€”
Rating counts at the record rootallReviewsCount, filteredReviewsCount, ratedReviewsCountโ€”โ€”
demographicRatings[]โ€”categorycategoryRatings: object[]
demographicRatings[].categoryRatings[]Rating fields listed for ratings, including reviewCountcategoryValueratings: object
reviewLocations[]idname, type; state and country are string or nullโ€”
officeLocations[]id, officeLocationId, country.id, country.continent.id, employerReviews.ratings.overallRatingaddressLine1, addressLine2, cityName, countryName, postalCode, administrativeAreaName1, country.name, country.continent.namecountry and employerReviews: object

Managed content, updates, and photos

ScopeNumber fieldsString fieldsBoolean fields and containers
employerManagedContent[]โ€”โ€”managedContent: object[]
managedContent[]idbody, type, titlemedia: object[]
managedContent[].media[]โ€”caption, source, mediaTypeโ€”
companyUpdates[]employerId, likes; id can be a number or stringtext, dateisLiked: boolean; media and category: object
companyUpdates[].mediaโ€”title, description, linkUrl, linkDomain, imageUrl, videoUrlโ€”
companyUpdates[].categoryidnameโ€”
photos[]โ€”caption, photoUrl2xโ€”

Salaries and benefits

ScopeNumber fieldsString fieldsBoolean fields and containers
salaries[]basePayStatistics.mean, totalAdditionalPayStatistics.meanpayPeriodcurrency, employer, jobTitle, basePayStatistics, totalAdditionalPayStatistics, and totalPayStatistics: object
salaries[].currencyidcodeโ€”
salaries[].employerid, ratings.overallRating, counts.globalJobCount.jobCountname, shortName, squareLogoUrlratings and counts: object
salaries[].jobTitleid, gocId, mgocIdtextโ€”
salaries[].totalPayStatistics.percentiles[]valueidentโ€”
salaryMetaresultCount, numPagesโ€”queryLocation: object or null
salaryMeta.queryLocationidname, typeโ€”
benefitCountries[]idnameโ€”
benefits[]rating can be a number or null; reviewCountcategory, nameverified: boolean
Benefit summary at the record rootbenefitsOverallRating and benefitsTotalReviews can be a number or nullโ€”benefitEmploymentStatuses: string[]
benefitReviews[]id, ratingcreateDate, userEnteredJobTitlecurrentJob: boolean; city: object; benefitComments: object[]
benefitReviews[].cityโ€”name, state.name, metro.name, country.namestate, metro, and country: object
benefitReviews[].benefitComments[]helpfulVotes, idcommentโ€”

Interviews

ScopeNumber fieldsString fieldsBoolean fields and containers
interviews[]id, countHelpfuladvice, difficulty, experience, negotiationDescription, outcome, processDescription, reviewDateTime, sourcefeatured: boolean; employer, jobTitle: object; employerResponses, userQuestions: object[]
interviews[].employerโ€”name, squareLogoUrlโ€”
interviews[].employerResponses[]โ€”response, responseDateTimeโ€”
interviews[].jobTitleโ€”textโ€”
interviews[].userQuestions[]answerCountquestionโ€”
interviewStatsdifficultySubmissionCount, difficultySum, filteredInterviewCount, totalInterviewCountโ€”interviewExperienceCounts, interviewObtainedChannelCounts: object[]
interviewStats.interviewExperienceCounts[], interviewStats.interviewObtainedChannelCounts[]count, percentagetypeโ€”

Jobs

Each jobs item is an object or null. A non-null item can contain job, header, and overview objects.

ScopeNumber fieldsString fieldsBoolean fields and containers
jobs[].joblistingIdjobTitleText, descriptionโ€”
jobs[].headerageInDays, categoryMgocId, sgocId, locId, rating, jobCountryIdgoc, normalizedJobTitle, locationName, locationType, employerNameFromSearch, payPeriod, salarySource, payCurrency, jobViewUrl, jobLink, applyUrl, serpUrlForJobListingeasyApply, expired, isSponsoredJob, isSponsoredEmployer: boolean; employer, coverPhoto, payPeriodAdjustedPay, urgencySignal, indeedJobAttribute: object or null; occupations: object[]; remoteWorkTypes: string[] or null
jobs[].header.employeridname, shortName, squareLogoUrlโ€”
jobs[].header.coverPhotoemployerId, sgocIdurlโ€”
jobs[].header.payPeriodAdjustedPayp10, p50, p90โ€”โ€”
jobs[].header.occupations[]โ€”keyโ€”
jobs[].header.urgencySignalnormalizedCountlabelKey, messageKeyโ€”
jobs[].header.indeedJobAttribute.extractedJobAttributes[]โ€”key, valueโ€”
jobs[].overview.primaryIndustryindustryId, sectorIdindustryName, sectorNameโ€”
jobsCompanyFilterOptions[]idname, 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: partial when a requested section does not complete. failedSections can contain ratings, demographicRatings, reviewLocations, officeLocations, employerManagedContent, companyUpdates, photos, benefits, benefitReviews, salaries, interviews, or jobs. 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 maxSearchResults and strictDomainMatch to limit website searches.
  • A maximum value of 0 collects all available entries and can increase the result size and run time for large employers.