Comparably $1๐Ÿ’ฐ Ratings, Culture, Reviews & Salaries Scraper avatar

Comparably $1๐Ÿ’ฐ Ratings, Culture, Reviews & Salaries Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Comparably $1๐Ÿ’ฐ Ratings, Culture, Reviews & Salaries Scraper

Comparably $1๐Ÿ’ฐ Ratings, Culture, Reviews & Salaries Scraper

From $1/1K. Extract rich company data from comparably.com using company names or profile URLs. Get ratings, culture scores, CEO approval, employee reviews, salary insights, awards, revenue, headquarters, and more in structured JSON, CSV, or Excel format.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Comparably Scraper - Company Culture, Ratings, Reviews & Salaries

Extract structured company data from Comparably in one run. Give it a list of company names (or profile URLs) and get back one clean record per company: overall rating, culture score and grade, CEO score, 12 culture dimensions, employee reviews, salaries by job title, plus revenue, headquarters, awards and more. Lightweight and quick, so runs finish fast and stay cheap.

Why this scraper

  • One clean record per company, not scattered fragments. Everything for a company (profile, reviews, salaries) arrives in a single row.
  • Search by company name. Type "Google" and the actor resolves it to the right profile. No need to hunt for URLs first.
  • More attributes than typical Comparably scrapers: revenue, phone, headquarters address, website, 12 culture dimensions, metro area, awards and leadership data, all included.
  • Salaries by job title, with department and amount, attached to every company.
  • Employee reviews with the question answered, author label, date and a permalink to each review.
  • Fast and low cost: a lean collection path keeps runs quick and inexpensive at scale.

Data you get

Sample shape - values are illustrative placeholders, not from a live profile.

FieldExample
companyId00000001
nameSample Company
urlhttps://www.comparably.com/companies/sample-company
websitehttp://www.example.com/
phone+1-000-000-0000
address1 Example Plaza, Sample City, CA 00000, USA
revenue1000000000
logohttps://cdn.comparably.com/00000000/l/sample-logo.png
employeeParticipantCount1000
totalRatingsCount10000
overallRating4.5
letterGradeA
cultureScore80
cultureGradeA
cultureScoreLabelTop 10%
ceoNameJane Doe
ceoScoreTop 5%
ceoTotalScore80
metroNameSample Metro
metroGradeB
topDimensions[{ "category": "CEO Rating", "grade": "A", "score": "Top 5%", "percent": 5 }]
bottomDimensions[{ "category": "Team", "grade": "B", "score": "Top 20%", "percent": 20 }]
awardsCount10
reviews[ ... see below ... ]
salaries[ ... see below ... ]

Each item in reviews:

FieldExample
reviewId00000001
urlhttps://www.comparably.com/companies/sample-company/reviews/00000001/sample
questionBriefly describe your overall experience at your company
textGreat place to work, supportive team and good growth.
authorAnonymous Review
date2026-01-01
postedAgoPosted 10 days ago
departmentEngineering

Each item in salaries:

FieldExample
jobTitleSenior Product Manager
salary$000,000 Salary + Bonus
departmentProduct
postedDatePosted more than 30 days ago

How to use

Search by company name (recommended):

{
"mode": "search",
"companies": ["Google", "Microsoft", "Goldman Sachs"],
"includeReviews": true,
"includeSalaries": true,
"maxReviews": 100
}

Direct URLs (or bare slugs):

{
"mode": "url",
"urls": [
"https://www.comparably.com/companies/google",
"microsoft"
]
}

Profiles only, fastest and cheapest:

{
"mode": "search",
"companies": ["Apple", "Netflix"],
"includeReviews": false,
"includeSalaries": false
}

Lots of reviews for one company:

{
"mode": "search",
"companies": ["Amazon"],
"includeReviews": true,
"maxReviews": 0,
"maxReviewPages": 20,
"includeSalaries": false
}

Input parameters

ParameterTypeDefaultDescription
modestringsearch"search" to resolve company names, "url" for direct profile URLs.
companiesarray-Search mode. Company names, one per line.
urlsarray-URL mode. Comparably company URLs or bare slugs, one per line.
includeReviewsbooleantrueAttach employee reviews to each record.
maxReviewsinteger100Reviews per company. 0 means unlimited (up to maxReviewPages).
maxReviewPagesinteger5Safety cap on review pages per company (~75 reviews per page).
includeSalariesbooleantrueAttach salary entries to each record.
maxCompaniesinteger0Maximum companies across all inputs. 0 means unlimited.
proxyobjectResidential USProxy configuration. Residential (US) is recommended.
resumeFromRunIdstring-Continue ONE interrupted run without re-collecting (or re-billing) companies it already returned.
incrementalModebooleanfalseRecurring/scheduled monitoring of the same company list โ€” only NEW/UPDATED/REAPPEARED companies are returned on later runs.
stateKeystring-Incremental mode only. Name a monitoring campaign, or leave empty to derive one automatically from the company list + section settings.
emitUnchangedbooleanfalseIncremental mode only. Also return (and bill for) companies unchanged since the last run.
emitExpiredbooleanfalseIncremental mode only. Also return (and bill for) companies no longer found, once a run fully scans the tracked list.

Resume & recurring updates (#503)

Two distinct features, both off by default:

  • resumeFromRunId continues ONE specific interrupted run: paste a previous run or dataset ID and this run skips every company slug already collected there.

  • incrementalMode is for scheduling this actor again and again (e.g. weekly) against the same company list. The actor remembers the previous run's companies itself (keyed on the company list + section toggles, or your own stateKey) and returns only what changed:

    • NEW โ€” never seen before.
    • UPDATED โ€” a field changed since last seen (changedFields lists which).
    • UNCHANGED โ€” nothing changed; suppressed (not returned or billed) unless emitUnchanged is on.
    • REAPPEARED โ€” was previously EXPIRED, now seen again.
    • EXPIRED โ€” was seen before, not found this run; only emitted (if emitExpired is on) after a run that scanned the entire company list (no maxCompanies cap, no resumeFromRunId).

    changeType, changedFields, firstSeenAt, lastSeenAt are only present on incremental-mode output rows โ€” a normal run's shape is unchanged.

    Comparably's reviews and ratings are the company's own live data (new reviews and salary entries post continuously), so a genuine rating/review-count move always classifies UPDATED โ€” it is never filtered out as noise. A pure reshuffle of the reviews list (e.g. a new review inserted ahead of older ones) does not by itself count as a change; only an actual added/removed/edited review does.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ€” the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record โ€” not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output example

Sample shape - values are illustrative placeholders, not from a live profile.

{
"companyId": 00000001,
"slug": "sample-company",
"url": "https://www.comparably.com/companies/sample-company",
"name": "Sample Company",
"fullName": "Sample Company",
"mission": "Sample company mission statement goes here.",
"website": "http://www.example.com/",
"phone": "+1-000-000-0000",
"address": "1 Example Plaza, Sample City, CA 00000, USA",
"revenue": 1000000000,
"employeeParticipantCount": 1000,
"totalRatingsCount": 10000,
"overallRating": 4.5,
"letterGrade": "A",
"cultureScore": 80,
"cultureGrade": "A",
"cultureScoreLabel": "Top 10%",
"ceoName": "Jane Doe",
"ceoScore": "Top 5%",
"ceoTotalScore": 80,
"metroName": "Sample Metro",
"topDimensions": [
{ "category": "CEO Rating", "grade": "A", "score": "Top 5%", "percent": 5 }
],
"reviews": [
{
"reviewId": "00000001",
"url": "https://www.comparably.com/companies/sample-company/reviews/00000001/sample",
"question": "Briefly describe your overall experience at your company",
"text": "Great place to work, supportive team and good growth.",
"author": "Anonymous Review",
"date": "2026-01-01",
"postedAgo": "Posted 10 days ago",
"department": "Engineering"
}
],
"salaries": [
{
"jobTitle": "Senior Product Manager",
"salary": "$000,000 Salary + Bonus",
"department": "Product",
"postedDate": "Posted more than 30 days ago"
}
]
}

Plan requirement

Comparably admits connections from US residential networks. Use Apify Residential proxy with country US (the prefilled default). The Apify Starter plan and above include Residential proxy access. On the free plan, without Residential proxy, runs may return no items.