Comparably Reviews Scraper avatar

Comparably Reviews Scraper

Pricing

from $3.30 / 1,000 item extracteds

Go to Apify Store
Comparably Reviews Scraper

Comparably Reviews Scraper

Extract public Comparably employee reviews, culture-category scores, CEO ratings, awards, and compensation signals for employer benchmarking.

Pricing

from $3.30 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Collect public Comparably reviews and company culture ratings for employer benchmarking. Give the Actor Comparably company URLs, slugs, or names and receive typed company profiles plus individual employee survey answers in JSON, CSV, Excel, or any Apify Dataset integration.

The Actor is designed for recurring company watchlists. It returns source-linked records instead of a page-shaped HTML dump, including culture-category grades, CEO and leadership ratings, review text and metadata, visible awards, and compensation signals.

What can you collect?

RecordUseful fields
Companyidentity, website, address, revenue signal, participants, rating/review totals
Cultureoverall score, letter grade, star rating, percentile, category grades
LeadershipCEO name, CEO score, leadership and executive-team grades
Compensationcompensation and perks/benefits grades and percentile labels
Awardsvisible award titles and image URLs, remaining award count
Employee reviewreview ID/URL, survey question, normalized category, text, department, date

Company profiles and employee reviews share the default Dataset so scheduled runs, webhooks, and downstream tools can consume one stable output. Use recordType to separate them.

Who is it for?

  • People analytics teams benchmark employee sentiment across a watchlist.
  • Recruiting teams compare leadership, compensation, and workplace-culture signals.
  • Employer-brand teams review recurring employee feedback by question category.
  • HR technology teams enrich company records with source-attributed public indicators.
  • Researchers and analysts export reproducible snapshots for trend analysis.

Why use it?

Comparably exposes profile metrics and employee answers across multiple page sections. This Actor normalizes those surfaces, keeps source URLs, deduplicates review answers, filters by useful question categories, and handles pagination. It also uses bounded fresh browser identities when Comparably presents an anti-bot challenge; a challenged page is treated as an error, never as an empty successful result.

Getting started

  1. Open the Actor input.
  2. Add companies such as google and microsoft, or paste public URLs under startUrls.
  3. Keep both profile and review output enabled, or disable the record type you do not need.
  4. Optionally select review categories and increase maxReviewPages.
  5. Set maxItems to your dataset budget.
  6. Run the Actor and open Dataset → Overview.
  7. Export the results or connect a webhook, Google Sheets, Make, Zapier, or your own API client.

Input parameters

FieldTypeDefaultMeaning
companiesstring arrayCompany names or Comparably slugs.
startUrlsURL arrayGoogle reviews URLPublic Comparably company/profile/reviews URLs.
includeCompanyProfilebooleantrueEmit one culture profile per company.
includeReviewsbooleantrueEmit employee review answers.
reviewCategoriesstring arrayallFilter reviews to Overall, Leadership, Compensation, Team, Culture & Environment, Interview, Outlook, or Company.
maxReviewPagesinteger1Review pages per company, from 1 to 20.
maxItemsinteger20Global company + review record limit.
maxSessionAttemptsinteger6Fresh US residential browser identities tried per company, bounded at 6.

At least one company or start URL is required. Non-Comparably URLs, malformed company URLs, empty scope, and a configuration that disables both output types fail clearly.

Example input

{
"companies": ["google"],
"includeCompanyProfile": true,
"includeReviews": true,
"reviewCategories": ["Leadership", "Compensation"],
"maxReviewPages": 2,
"maxItems": 60
}

Example company output

{
"recordType": "company",
"companyId": "23906",
"companyName": "Google",
"companySlug": "google",
"companyUrl": "https://www.comparably.com/companies/google",
"overallScore": 78,
"overallGrade": "A",
"overallPercentile": "Top 10%",
"starRating": 4.6,
"ceoName": "Sundar Pichai",
"ceoScore": 79,
"cultureDimensions": [
{ "category": "Compensation", "grade": "A+", "percentile": "Top 5%", "percentileValue": 5 }
],
"scrapedAt": "2026-09-04T15:41:00.000Z"
}

Values are snapshots of the public source and can change. Optional source fields may be null.

Example review output

{
"recordType": "review",
"companyName": "Google",
"companySlug": "google",
"reviewId": "3654039",
"reviewUrl": "https://www.comparably.com/companies/google/reviews/3654039/example",
"question": "Briefly describe your overall experience at your company",
"category": "Overall",
"text": "Public employee answer text appears here.",
"authorName": "Anonymous Review",
"department": null,
"datePublished": "2026-05-16",
"page": 1
}

Review categories

Categories are derived from the employee survey question, not guessed from sentiment. For example, leadership-team prompts map to Leadership, compensation-package prompts map to Compensation, and interview-process prompts map to Interview. Filtering changes which review rows are returned; it does not alter company profile dimensions.

How much does it cost to collect Comparably reviews?

The Actor uses pay-per-event pricing: a small one-time Run started event plus one Item extracted event for each company or review row saved. There is no charge for rejected, duplicate, challenged, or empty parser records.

At the BRONZE rate of $0.01 per start plus $0.0055 per record, 20 records cost about $0.12, 100 records about $0.56, and 1,000 records about $5.51. Other Apify plan tiers use their displayed tier price. Your run can also consume normal platform compute and proxy usage according to your Apify plan; maxItems gives you a predictable output cap.

Reliability, retries, and proxy use

Comparably protects company pages with PerimeterX. The Actor requires Apify Residential Proxy with US routing and uses Camoufox to obtain the public server-rendered page. It keeps cookies, browser context, and proxy identity coherent while collecting one company. A challenged identity is retired, and a materially fresh identity is tried up to maxSessionAttempts.

Images, fonts, and media are blocked to reduce transfer. If every bounded identity is challenged, the run fails with a non-zero status instead of silently returning no data.

Pagination and limits

Each review page contains multiple employee survey sections. maxReviewPages applies per company; maxItems applies to the entire run. The company profile counts as one item when enabled. The Actor stops accepting records when the global limit is reached and deduplicates repeated review/question pairs by stable review ID where available.

Recurring employer benchmarking

Create an Apify Task with a fixed watchlist and schedule it weekly or monthly. Send each completed Dataset to your warehouse. Join snapshots on companySlug, recordType, reviewId, and question; compare overallScore, CEO score, category grades, rating totals, and newly observed review IDs over time. The Actor captures snapshots—it does not itself send alerts or calculate historical deltas.

Spreadsheet and data-pipeline integrations

  • Export the Dataset directly as CSV, JSON, XML, or Excel.
  • Use the Google Sheets integration for a recurring employer scorecard.
  • Trigger Make or Zapier after a successful run.
  • Use a webhook to load rows into BigQuery, Snowflake, PostgreSQL, or a data lake.
  • Use recordType=company for one-row-per-employer tables and recordType=review for employee-answer tables.

Run with the Apify API

Replace YOUR_TOKEN with an Apify API token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~comparably-company-culture-ratings-reviews/runs?token=YOUR_TOKEN&waitForFinish=300" \
-H "Content-Type: application/json" \
-d '{"companies":["google"],"maxItems":20}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/comparably-company-culture-ratings-reviews').call({
companies: ['google', 'microsoft'],
includeCompanyProfile: true,
includeReviews: false,
maxItems: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation-lab/comparably-company-culture-ratings-reviews").call(run_input={
"companies": ["amazon"],
"reviewCategories": ["Leadership", "Compensation"],
"maxReviewPages": 2,
"maxItems": 60,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI agents

Add the Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/comparably-company-culture-ratings-reviews"

Claude Desktop setup

Use this JSON configuration in Claude Desktop:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/comparably-company-culture-ratings-reviews"
}
}
}

Cursor setup

Add the same MCP URL in Cursor Settings → MCP → Add server and name it apify.

VS Code setup

Add the same HTTP MCP server URL to your VS Code MCP configuration and enable the apify server for your workspace.

Example prompts:

  • “Collect company-level Comparably culture ratings for Google and Microsoft.”
  • “Return up to 50 Amazon leadership and compensation review answers.”
  • “Create a table comparing CEO score and culture category grades for this employer watchlist.”

Legality and responsible use

This Actor collects fields visible on public Comparably company pages. Follow Comparably's terms, robots guidance, applicable database rights, privacy rules, and employment law. Do not use employee feedback to identify anonymous reviewers, make automated high-impact employment decisions, harass individuals, or create discriminatory profiles. Store only the data needed for a legitimate purpose and honor deletion or retention obligations.

Limitations

  • No login, private employer dashboard, private survey response, or historical archive is accessed.
  • Comparably can change markup, structured payloads, paging, or anti-bot controls.
  • Public profiles differ: some fields, departments, dates, scores, or awards can be absent.
  • Visible award cards may be a summary; remainingAwards reports the additional count.
  • Company-name input is normalized to a slug. If a brand's Comparably slug differs, supply the exact company URL.
  • Sentiment classification, change detection, and notifications are downstream workflows, not Actor output.

Troubleshooting

Why did the run fail with a challenge error?

A bounded set of fresh US residential browser identities could not obtain a valid public page. Retry later rather than raising maxSessionAttempts repeatedly. The non-zero failure protects pipelines from treating a challenge as an empty dataset.

Why are there fewer rows than maxItems?

The selected company, pages, or category filter may expose fewer unique matching records. maxItems is a cap, not a promised count.

Why did a company name fail?

The normalized name may not match Comparably's actual slug. Copy the public company URL into startUrls.

FAQ

Can I collect only company scores?

Yes. Enable company profile output and disable employee review output.

Can I collect only employee reviews?

Yes. Disable company profile output. The Actor still reads the profile internally to attach canonical company identity to review records, but the profile row is omitted.

Does it support multiple companies?

Yes. Add multiple company names, slugs, or URLs. The global maxItems limit applies across the watchlist.

Does it detect new or changed reviews?

It returns stable review IDs, URLs, questions, dates, and scrape timestamps that your scheduled pipeline can compare. It does not maintain history or send alerts itself.