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

1

Bookmarked

5

Total users

4

Monthly active users

9 days ago

Last modified

Features

Limited permissions

Share

Comparably Scraper: Company Culture, Ratings, Reviews & Salaries

Comparably Scraper turns Comparably company profiles into structured data. 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. Search by name or paste links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • One clean record per company. Profile, reviews and salaries all arrive in a single row, not scattered fragments across separate calls.
  • Search by company name. Type "Google" and the actor derives its profile page directly. No need to hunt for URLs first.
  • Deep profile coverage. Revenue, phone, headquarters address, website, 12 culture dimensions, metro area, awards and leadership data, all included.
  • Salaries by job title. Department and amount attached to every company, with a page cap you control.
  • Employee reviews with structure. The question answered, author label, date and a permalink to each review, walked across as many pages as you allow.
  • Sections on demand. Switch reviews and salaries on or off per run, and pay only for what you use.
  • Built for monitoring. Incremental mode returns only new and changed companies on recurring runs, and resume picks up one interrupted run without re-collecting what it already has.

Use Cases

  • HR and recruiting research: compare culture scores, CEO ratings and salary bands across a shortlist of employers.
  • Compensation benchmarking: collect salary-by-title entries across companies to build pay-band models.
  • Competitive and market research: track how a competitor's public rating, reviews and awards move over time.
  • Sales and lead enrichment: attach company size signals, headquarters and website to a target account list.
  • Employer brand monitoring: watch your own company's rating, culture grade and new reviews on a schedule.

Data You Get

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

FieldExample
companyId10000001
slug"sample-company"
name / fullName"Sample Company"
url"https://www.comparably.com/companies/sample-company"
website"http://www.example.com/"
phone"+1-000-000-0000"
address"1 Example Plaza, Sample City, CA 00000, USA"
mission"Sample company mission statement goes here."
revenue1000000000
logo"https://cdn.comparably.com/00000000/l/sample-logo.png"
employeeParticipantCount1000
totalRatingsCount10000
overallRating / letterGrade4.5 / "A"
cultureScore / cultureGrade / cultureScoreLabel80 / "A" / "Top 10%"
ceoName / ceoScore / ceoTotalScore"Jane Doe" / "Top 5%" / 80
metroName / metroGrade"Sample Metro" / "B"
topDimensions / bottomDimensions12 culture dimensions with grade, score and percentile (when present)
awardsCount / awards10 / list of award objects (when present)
ownerleadership/ownership data (when present)
relatedCompaniescompanies Comparably lists as related (when present)
reviewsemployee reviews, empty unless enabled
salariessalary entries, empty unless enabled
profileRawthe complete upstream profile payload, so nothing is lost

Each item in reviews carries a review ID, permalink, the question it answers, the review text, an author label, a date, a posted-ago label and a department. Each item in salaries carries a job title, the posted salary or salary-plus-bonus amount, a department, how long ago it was posted and a link to the entry.

How to Use

  1. Pick a mode: search (company names) or url (paste profile links or bare slugs).
  2. Fill in the fields for that mode, and switch reviews and salaries on or off.
  3. Set Max companies (and, for reviews, Max reviews / Max review pages) to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

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"]
}

URL shapes

ShapeExampleBehaviour
Company profilehttps://www.comparably.com/companies/googleOne record for the company.
Reviews pagehttps://www.comparably.com/companies/google/reviewsSame company record.
Reviews page with ?page=Nhttps://www.comparably.com/companies/google/reviews?page=2Same record, and the review walk starts at page N. Because it covers only a slice, it never marks tracked companies EXPIRED.
Salaries pagehttps://www.comparably.com/companies/google/salariesSame company record.
Bare sluggoogleSame company record.

Any other link (another site, or a Comparably page that is not a company page) is skipped with a warning in the log, never silently counted as zero. If nothing in the list is a supported shape the run ends with a clear message. If several URLs point at the same company, it is scraped once.

Default change: with mode set to url and the urls field left untouched, the actor now scrapes one example per shape above (five companies) instead of nothing. Set urls to your own list to scrape only those.

In search mode, names that do not map directly to a Comparably slug (for example "J.P. Morgan" or "Acme, Inc.") are retried with relaxed slug spellings. A variant is accepted only when that exact profile page loads; if none does, a warning names the tried spellings and the company is skipped. Unrelated companies are never returned.

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": 1500,
"maxReviewPages": 20,
"includeSalaries": false
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/comparably-scraper").call(run_input={"mode": "search", "companies": ["Google"]})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["name"], company["overallRating"], company["cultureGrade"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/comparably-scraper').call({ mode: 'search', companies: ['Google'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips every company slug it already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same company list. Each company is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED (only after a run that scanned the whole tracked list, and only with emitExpired; never when maxCompanies capped the run, a pasted URL starts at a later results page, Resume was used, or a company's fetch failed). Any change to a company's ratings, scores, counts, or its review and salary entries makes it UPDATED; review order never does, and the relative posted-ago text on reviews and the posted date on salaries are excluded from the comparison (still returned in the output), as are fields listed in ignoreFieldsForChanges. stateKey names or shares the stored state; leave it empty and the actor derives one automatically from the company list and section settings. With incremental mode off, output is exactly as before.

Dataset views and run summary

The dataset has four views in the Console and API: Companies Overview (one row per company), Reviews (one row per review, unwound from each company), Salaries (one row per salary entry) and Changes (incremental mode: change type, changed fields, first and last seen). When a run covers more than one input it also stores an OUTPUT record in the key-value store with inputsRequested, companiesResolved, rowsPushed, detailEnriched, failedCompanies, unparsedInputs and incrementalMode.

Fields not added

Extra columns offered by the one rival actor were reviewed and not added; the full upstream profile stays available in profileRaw next to the named fields above.

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.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch to resolve company names, url for direct profile URLs.
companiesarray["Google", "Microsoft"]Search mode. Company names, one per line.
urlsarrayone example per URL shapeURL mode. Comparably company URLs (profile, reviews, reviews with ?page=N, salaries) or bare slugs, one per line.
includeReviewsbooleantrueAttach employee reviews to each record.
maxReviewsinteger100Reviews per company (maximum 15000; 0 skips reviews). For a deep pull, set it high (for example 1500) and let maxReviewPages bound the walk.
maxReviewPagesinteger5Safety cap on review pages per company (about 75 reviews per page).
includeSalariesbooleantrueAttach salary entries to each record.
maxCompaniesinteger20Maximum companies across all inputs. 0 means unlimited.
proxyobjectResidential USProxy configuration. Residential (US) is recommended; datacenter proxies are refused by the site.
resumeFromRunIdstring(none)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 and reappeared companies are returned on later runs.
stateKeystring(none)Incremental mode only. Name a monitoring campaign, or leave empty to derive one automatically from the company list and 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.
ignoreFieldsForChangesarray[]Incremental mode only. Fields that never make a company UPDATED (still returned in the output); top-level names or nested paths such as reviews[].author.
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which records are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

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

{
"companyId": 10000001,
"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 sits behind a bot-protection wall that refuses plain datacenter and consumer connections with an "Access to this page has been denied" (HTTP 403) page. Datacenter proxies do not work here, so do not switch the proxy to a datacenter group. Use Apify Residential proxy with country US (the prefilled default); it is not strictly mandatory because the actor falls back to a backup connection, but it is the dependable choice. The Apify Starter plan and above include Residential proxy access.

On the free plan, which has no Residential proxy, the run logs this notice and continues on a backup connection:

The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable.

Pages served that way are logged as "Served over the backup connection (the default connection was unavailable)." Some pages may still be refused. If the run's time limit cuts collection short after some companies were already returned, the run ends with a "Partial results: N companies pushed before the run's time limit cut further collection." status. If no page at all can be read, the run fails instead of returning an empty dataset, with one of these messages:

  • "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required." (or, if you entered your own proxy URLs, check their credentials).
  • "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested Comparably pages."
  • "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later."

FAQ

How much does it cost?

You pay per company record returned (one dataset item per company), plus a small extra charge: event detail-enrichment, one unit per delivered company record that carries reviews or salaries, charged right after that record is saved. It is one unit per company, not per review or per page, and never applies to unchanged, skipped or failed records (switch both sections off for profiles only). There is also the standard Apify actor-start event. The Pricing tab shows the current rates. Use Max companies, Max reviews and Max review pages to cap the cost of any run.

This actor collects only publicly available company profile data. You are responsible for how you use it: follow Comparably's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Can I get only new or changed companies on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared companies, and unchanged ones are not billed.

Why does the proxy setting matter so much?

Comparably refuses datacenter connections with an access-denied page. Residential US is the dependable setting; with a datacenter group, requests are refused and the run fails with a clear message rather than returning an empty dataset. Keep the prefilled Residential (US) proxy unless you have a specific reason to change it.

Why did my run fail instead of returning an empty dataset?

If no company name or URL resolves to a real profile, the run stops with a clear message so "nothing matched" is never confused with "the site returned nothing to read". Check your company names or URLs and run it again.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

๐Ÿ”— Want more leads data?

Pair this actor with these related scrapers from the same team:

๐Ÿ“‡ JobStreet
Pull JobStreet company profiles and employee reviews across Malaysia, Singapore...
๐Ÿ’ผ SEEK Company Reviews
Scrape SEEK Australia and New Zealand company profiles and employee reviews. Choose...
๐Ÿ’ผ RepVue Scraper
Scrape RepVue company profiles, RepVue Score, sales-rep reviews, and compensation by role...
๐Ÿ’ผ Hiring.Cafe Jobs
Unlock powerful Hiring.Cafe job data extraction. Use advanced filters or URLs to get 100+...
๐Ÿ’ผ RemoteOK Jobs Scraper
Scrape RemoteOK jobs by keyword or job URL. Extract title, company, location, remote...
๐Ÿ’ผ France Travail Scraper
Scrape job offers from France Travail with titles, companies, locations, salaries...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.