PayScale Salary & Company Culture Scraper avatar

PayScale Salary & Company Culture Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
PayScale Salary & Company Culture Scraper

PayScale Salary & Company Culture Scraper

Scrape PayScale.com salary research pages: company compensation & culture ratings, employee reviews, and job-title salary data by company, city, gender, degree, and experience. Free, no login required.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Scrape PayScale.com — one of the largest crowdsourced compensation databases on the web. Get a company's salary ranges, culture ratings, benefits, and gender pay-gap stats; read real employee reviews; look up salary data for any job title, skill, certification, degree, US state, or city; or trace a job's likely career-path promotions. No login, no API key, no paid proxy.

What this actor does

  • Nine modes: companySalary, companyReviews, jobTitleSalary, jobTitleReviews, skillSalary, certificationSalary, degreeSalary, stateSalary, locationSalary
  • Automatic company-name resolution — type Google or Tesla, no need to know PayScale's exact listing name
  • Rich compensation data — salary percentiles (10th–90th), bonus, commission, hourly rate, and total compensation
  • Culture & satisfaction ratings — Fair Pay, Overall Employee Satisfaction, Manager Communication, Company Outlook, and more
  • Gender pay-gap & benefits data — male/female percentage split, retirement & health benefit lists
  • Salary breakdowns by job title, city, gender, degree/major, years of experience, employer, and employer type (public/private/government/nonprofit) — each row tagged annual or hourly pay unit
  • Career-path transitions — for jobTitleSalary, the likely next-step roles (and their next steps) with the share of people who made that move and their compensation
  • Related entities — similar companies, related job titles, related skills/certifications/degrees, or nearby cities, each with a comparison salary
  • Employee reviews — either about a specific company (companyReviews) or about a job title across every company that reports it (jobTitleReviews)
  • Global — 10 countries supported (US, UK, Australia, Canada, India, Germany, New Zealand, Philippines, South Africa, Singapore)
  • Empty fields are omitted — every field present in a record has a real value

Output: entity summary (all *Salary modes)

One summary record per run for companySalary, jobTitleSalary, skillSalary, certificationSalary, degreeSalary, stateSalary, and locationSalary — they all share the same shape:

  • parentTypecompany / jobTitle / skill / certification / degree / state / location
  • name, slug, country, category — PayScale's own axis label (Employer, Job, Skill, Certification, Degree, State, Location)
  • currencyCode
  • averageSalary, salaryP10, salaryP25, salaryP75, salaryP90, salaryProfileCount
  • averageBonus, averageHourlyRate, averageTotalComp, averageCommission, averageProfitSharing
  • rating<Category> — one field per PayScale culture metric (e.g. ratingFairPay, ratingOverallEmployeeSatisfaction, ratingManagerCommunication) — company pages only
  • genderMalePercentage, genderFemalePercentage, satisfactionRating, stressRating
  • relatedEntities[] — similar/related items for this axis (similar companies, related job titles, related skills/certs/degrees, or nearby cities), each {name, url, medianSalary, profileCount}
  • relatedCompanyNames[] — company mode only: culture-comparison peer companies
  • benefitsDescription, retirementBenefits[], healthBenefits[] — company mode only
  • topLocations[] — cities with reported salary data
  • payNarrative — company mode only: PayScale's own plain-text pay summary
  • jobDescription — job-title mode only: narrative description of the role
  • occupationalCategory, topSkills[] — job-title mode only: O*NET/SOC occupational category and top associated skills
  • industries[], foundedYear, employeeCountMin, employeeCountMax, website, organizationType, logoUrl — company mode only
  • reviewCount — job-title mode only
  • lastUpdated, sourceUrl
  • recordType — matches the mode name (e.g. "companySalary", "skillSalary"), scrapedAt

Every *Salary run also emits breakdown rows (see below), and jobTitleSalary additionally emits career-path rows (see below).

Output: salary breakdown (all *Salary modes)

  • parentType, parentName, parentSlug — the entity this breakdown belongs to
  • dimensionTypejob, city, gender, degree, yearsExperience, company, or employerType (public/private/government/nonprofit)
  • dimensionLabel, dimensionName — e.g. dimensionType=job, dimensionName="Software Engineer"
  • payUnitannual or hourly; PayScale reports some breakdowns (e.g. hospitality, healthcare) as an hourly rate instead of an annual salary
  • dimensionUrl — link to that breakdown's own PayScale page
  • profileCount — number of contributing salary submissions
  • medianSalary, p10, p25, p75, p90 — in payUnit units
  • isEstimated — true when PayScale flags the figure as statistically estimated
  • sourceUrl, recordType: "salaryByDimension", scrapedAt

Output: career-path step (mode = jobTitleSalary)

  • parentJobTitle — the job title that was queried
  • fromJobTitle, toJobTitle — the transition (level 1 = directly from the queried title; level 2 = a further step)
  • toJobUrl, transitionPercent (% of people who made this move), toCompensation, toIsHourly, toCurrency
  • level1 or 2
  • sourceUrl, recordType: "careerPathStep", scrapedAt

Output: company employee review (mode = companyReviews)

  • companyName, companySlug
  • jobTitle, city, country
  • questionPrompt — the prompt the review answers
  • reviewTitle, reviewBody, reviewPros, reviewCons
  • reviewDate
  • sourceUrl, recordType: "companyReview", scrapedAt

Output: job-title employee review (mode = jobTitleReviews)

Reviews about a job title across every reporting company (not one specific employer):

  • jobTitle, jobSlug
  • employerName — the specific company the reviewer worked at (when PayScale reports it)
  • city, country
  • questionPrompt, reviewTitle, reviewBody, reviewPros, reviewCons, reviewDate
  • sourceUrl, recordType: "jobReview", scrapedAt

Input

FieldTypeDefaultDescription
modestringcompanySalarycompanySalary / companyReviews / jobTitleSalary / jobTitleReviews / skillSalary / certificationSalary / degreeSalary / stateSalary / locationSalary
companyNamestringGoogleFree-text company name (mode=companySalary/companyReviews)
companySlugstringExact PayScale slug, bypasses name resolution (advanced)
jobTitlestringSoftware EngineerFree-text job title (mode=jobTitleSalary/jobTitleReviews)
skillNamestringPythonFree-text skill (mode=skillSalary)
certificationNamestringProject Management Professional (PMP)Free-text certification (mode=certificationSalary)
degreeNamestringBachelor of Science (BS / BSc)Free-text degree/major (mode=degreeSalary)
stateNamestringCaliforniaUS state dropdown (mode=stateSalary)
stateSlugOverridestringExact PayScale State= slug for non-US provinces, e.g. Ontario (advanced)
cityNamestringSan FranciscoFree-text US city (mode=locationSalary)
stateAbbrstringCAUS state abbreviation dropdown for cityName (mode=locationSalary)
locationSlugOverridestringExact PayScale Location= slug for non-US cities, e.g. Toronto-Ontario (advanced)
countrystringUSUS/UK/AU/CA/IN/DE/NZ/PH/ZA/SG
dimensionTypestringOnly emit this breakdown type: job/city/gender/degree/yearsExperience/company/employerType
payUnitstringOnly emit breakdown rows reported as annual or hourly
minSalary / maxSalaryintDrop breakdown rows outside this median-salary range
minProfileCountintDrop breakdown rows with fewer contributing submissions
reviewPagesint3Pages of reviews to fetch, ~7 per page (mode=companyReviews/jobTitleReviews)
maxItemsint50Hard cap on emitted records (1–1000)

Example: company salary + culture snapshot

{
"mode": "companySalary",
"companyName": "Salesforce",
"maxItems": 30
}

Example: employee reviews for a company

{
"mode": "companyReviews",
"companyName": "Netflix",
"reviewPages": 5,
"maxItems": 30
}

Example: job-title salary across all companies

{
"mode": "jobTitleSalary",
"jobTitle": "Data Scientist",
"dimensionType": "city",
"maxItems": 30
}

Example: UK company salary data

{
"mode": "companySalary",
"companyName": "Google",
"country": "UK",
"maxItems": 20
}

Example: salary premium for a skill

{
"mode": "skillSalary",
"skillName": "Python",
"maxItems": 30
}

Example: salary by certification

{
"mode": "certificationSalary",
"certificationName": "Project Management Professional (PMP)",
"maxItems": 30
}

Example: salary by US state

{
"mode": "stateSalary",
"stateName": "Texas",
"payUnit": "annual",
"maxItems": 30
}

Example: salary in a specific city

{
"mode": "locationSalary",
"cityName": "Austin",
"stateAbbr": "TX",
"maxItems": 30
}

Example: job-title reviews + career path

{
"mode": "jobTitleReviews",
"jobTitle": "Software Engineer",
"reviewPages": 3,
"maxItems": 20
}

Use cases

  • Job seekers & recruiters — benchmark compensation before an offer or negotiation
  • Compensation & HR analytics — build a market-rate salary database by role and location
  • Company research & due diligence — check culture ratings, gender pay gap, and benefits before joining or investing
  • Competitive intelligence — compare your company's pay and ratings against named competitors
  • Career-content publishers — power "how much does X pay?" articles and job-title guides

FAQ

What is the data source? PayScale.com's public salary-research pages, which are crowdsourced from anonymous employee salary submissions and surveys.

Is this affiliated with PayScale? No — this is an independent third-party actor using PayScale's publicly viewable research pages.

Why does my company search return no results? PayScale lists employers under a specific legal-entity name (e.g. Google, Inc. rather than Google). This actor automatically tries several common name variants; if none resolve, find the exact name on payscale.com/research and pass it via the advanced companySlug field.

How accurate are the salary figures? Figures are self-reported by individuals and aggregated statistically by PayScale; they're a market-rate estimate, not a guarantee for any specific role or offer.

How fresh is the data? Each summary record includes lastUpdated, PayScale's own last-refresh timestamp for that page.

Why do some records have fewer fields than others? Fields are only included when PayScale reports a value for that company/job/breakdown. A newer or smaller company will naturally have fewer contributing salary submissions and therefore fewer populated breakdown dimensions.

Can I get salary data for a specific job title at a specific company? Run jobTitleSalary for the role and inspect the salaryByDimension rows with dimensionType: "company", or run companySalary for the company and inspect rows with dimensionType: "job".

What's the difference between annual and hourly breakdown rows? PayScale reports some job titles and companies primarily as an hourly rate (common for hospitality, retail, and healthcare roles) instead of an annual salary. Every salaryByDimension row is tagged payUnit: "annual" or payUnit: "hourly" so the two are never mixed together — use the payUnit input filter to request only one.

How does locationSalary/stateSalary work for non-US countries? stateName and stateAbbr are curated US dropdowns. For non-US provinces/cities (e.g. Canadian provinces), pass the exact PayScale slug via stateSlugOverride or locationSlugOverride instead — copy it from the State=/Location= segment of the matching payscale.com/research URL.

What is a career-path row? For jobTitleSalary, PayScale predicts the roles people in this job most often move into next (and their next moves after that), with the share of people who made each transition and the resulting compensation. These are emitted as recordType: "careerPathStep" rows alongside the salary summary and breakdowns.

Is a cost-of-living comparison available? Not currently. PayScale's cost-of-living calculator requires a from/city and to/city pair submitted through an interactive form rather than a stable, guessable URL, so it isn't included in this actor.