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

2 days ago

Last modified

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

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). 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.

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.
urlsarraysampleURL mode. Comparably company URLs or bare slugs, one per line.
includeReviewsbooleantrueAttach employee reviews to each record.
maxReviewsinteger100Reviews per company. 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 is refused.
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.
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 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.

FAQ

How much does it cost?

You pay per company record returned, plus a small per-company charge when that record carries reviews or salaries (switch both off for profiles only). 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 only admits connections from US residential IPs. With any other proxy setting, requests are refused and the run returns no items. 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
From $1/1K. Pull JobStreet company profiles and employee reviews across Malaysia...
๐Ÿ’ผ SEEK Company Reviews
From $1/1K. Scrape SEEK Australia and New Zealand company profiles and employee reviews...
๐Ÿ’ผ RepVue Scraper
Scrape RepVue company profiles, RepVue Score, sales-rep reviews, and compensation by role...
๐Ÿ’ผ Hiring.Cafe Jobs
From $1/1K. Unlock powerful Hiring.Cafe job data extraction. Use advanced filters or URLs...
๐Ÿ’ผ Cwjobs UK
From $1/1k. Scrape tech and IT jobs from CWJobs.co.uk into clean, structured data. Search...
๐Ÿ’ผ RemoteOK Jobs Scraper
Scrape RemoteOK jobs by keyword or job URL. Extract title, company, location, remote...

๐Ÿ‘‰ 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.