RepVue Scraper: Company Reviews, Ratings & Sales Compensation
Pricing
from $1.00 / 1,000 company results
RepVue Scraper: Company Reviews, Ratings & Sales Compensation
Scrape RepVue company profiles, RepVue Score, sales-rep reviews, and compensation by role (OTE, base, percentiles) plus jobs and community Q&A. One rich record per company. Search and filter, or paste company links. Fast, reliable, runs on any plan.
Pricing
from $1.00 / 1,000 company results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
5
Monthly active users
6 days ago
Last modified
Categories
Share
RepVue Scraper: Company Reviews, Ratings and Sales Compensation
RepVue turns sales-rep company reviews into structured data. Get one rich record per company: the full profile and RepVue Score, sales-rep reviews, compensation by role (OTE, base pay, percentiles, and highest potential earnings), open sales jobs, and community questions. Search and filter the whole RepVue company index, or paste specific company links, then export to JSON, CSV or Excel, or read the results through the API.
Why This Scraper?
- One rich record per company. Profile, RepVue Score, ratings, reviews, and pay are merged into a single row, so you get the whole picture instead of stitching reviews back to companies yourself.
- Compensation by sales role. Median and average OTE, base pay, 75th-percentile pay, and highest potential earnings, plus a company-wide pay summary.
- Full review detail. Review body, numeric rating, verified flag, reviewer role and location tags, and upvotes, with a company response and a follow-up question and answer when RepVue recorded one.
- Two ways to work. Search and filter the whole RepVue company index, or paste specific company links or slugs.
- Real filters. Industry, minimum RepVue Score, and company size, with four sort options.
- Optional add-ons. Switch on open sales jobs and community Q&A per company only when you need them, so you don't pay for requests you don't use.
- Review depth control. Cap or uncap reviews per company independently of the run-wide company cap, and keep only reviews from a chosen date onward.
Use Cases
- Recruiters and talent teams: benchmark sales compensation and screen employer reputation before extending offers.
- RevOps and sales leadership: compare RepVue Scores, review sentiment, and pay bands across competitors.
- Compensation analysts: build OTE and base-pay benchmarks by role, industry, and company size.
- Job seekers and sales reps: research a company's reviews, pay ranges, and open sales roles before applying.
- Market researchers: track industry-wide rating and compensation trends across companies over time.
Data You Get
Sample shape: values are illustrative placeholders, not from a live company.
| Field | Example |
|---|---|
recordType | "company" |
id | 1 |
slug | "SampleCompany" |
name | "Sample Company" |
url | "https://www.repvue.com/companies/SampleCompany" |
repvueScore | 81.97 |
averageRating | 3.5 |
ratings_count | 715 |
verified_ratings_percent | 91.19 |
industry | "Software" |
size / sizeLabel | "to_10000" / "1001-10000" |
funding_source | "Public" |
last_headcount | 2924 |
description | "Short company description text appears here." |
website / careers_url | "https://www.example.com/" / "https://careers.example.com/" |
compensation.summary | { "highest_base": 165000, "lowest_base": 50000, "total_ratings_count": 212 } |
compensation.roles[].role | "Account Executive" |
compensation.roles[].median_ote / median_base_compensation | 150000 / 75000 |
compensationRolesCount | 1 |
reviewsCount | 1 |
reviews[].body / rating / reviewer_role_tag | "Strong enablement..." / { "score": 4, "type": "overall" } / "Account Executive" |
reviews[].rating_verified / upvotes | true / 0 |
jobsCount | 0 (when Include jobs is on) |
questionsCount | 0 (when Include questions is on) |
scrapedAt | "2026-01-01T00:00:00.000Z" |
Every record is the same kind: a company profile with reviews, compensation, jobs, and community questions nested inside it, not separate rows you need to join yourself. Fields from the RepVue profile are passed through as-is alongside the computed convenience fields above, so an unusual company page can carry a few extra columns beyond this table.
How to Use
- Pick a mode:
searchdiscovers and filters companies from RepVue's index,urlscrapes the specific company links or slugs you paste. - In search mode, set your filters (industry, minimum RepVue Score, company size) and a sort order. In URL mode, paste company links or slugs.
- Switch on the detail you need: reviews, compensation, open jobs, community Q&A, and set how many reviews per company.
- Set Max companies to control run size and cost, then click Start.
Scrape three companies by link, with reviews and compensation:
{"mode": "url","startUrls": ["https://www.repvue.com/companies/Klaviyo","https://www.repvue.com/companies/Wiz","https://www.repvue.com/companies/GrafanaLabs"],"includeReviews": true,"includeSalaries": true,"maxReviews": 50}
Find top-rated Software companies:
{"mode": "search","industries": ["Software"],"minRepvueScore": 80,"sortBy": "repvue_score_desc","maxItems": 25,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
Recent reviews only, for one company:
{"mode": "url","startUrls": ["https://www.repvue.com/companies/Klaviyo"],"includeReviews": true,"maxReviews": 100,"targetDate": "2025-01-01"}
Profile and pay only, no reviews, largest companies:
{"mode": "search","companySize": "over_10001","includeReviews": false,"includeSalaries": true,"maxItems": 50}
Accepted link shapes in URL mode: a bare slug (Klaviyo, case-sensitive), a numeric company id, https://www.repvue.com/companies/<slug>, and the same link with a /reviews, /salaries, /jobs or /questions suffix or a ?page=N or ?tab=reviews query; all normalize to the one company.
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/repvue-scraper").call(run_input={"mode": "url", "startUrls": ["https://www.repvue.com/companies/Klaviyo"]})for company in client.dataset(run["defaultDatasetId"]).iterate_items():print(company["name"], company["repvueScore"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/repvue-scraper').call({ mode: 'url', startUrls: ['https://www.repvue.com/companies/Klaviyo'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
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 company 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.
- Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. If the picker is empty, you haven't authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where items should be created. - Optionally lower
maxNotifyListingsto cap how many companies get exported per run; it never changes what lands in the dataset.
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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search discovers and filters companies from the index; url scrapes the links or slugs you paste. |
search | string | (none) | Search mode: keep companies whose slug (the name in the RepVue URL) contains this text. |
industries | array | [] | Search mode: keep only companies whose industry matches one of these terms. |
minRepvueScore | integer | (none) | Search mode: minimum RepVue Score, 0 to 100. |
companySize | string | "" (any size) | Search mode: headcount band filter (to_250, to_1000, to_10000, over_10001). |
sortBy | string | name_asc | Order of returned companies. Name sorts only reorder search-mode discovery; RepVue Score and ratings-count sorts also reorder the result set in URL mode. |
startUrls | array | the example company page https://www.repvue.com/companies/Klaviyo | URL mode: company links, numeric ids or bare slugs. A /reviews, /jobs, /salaries or /questions suffix and any ?page=N or ?tab= query are normalized to the company, so they return the same company row as the plain link. If you leave the field out in URL mode, the example company is scraped instead of finishing with an empty dataset. Clear the list explicitly to scrape nothing. |
includeReviews | boolean | true | Attach sales-rep reviews to each company. |
includeSalaries | boolean | true | Attach compensation by sales role plus a pay summary. |
includeJobs | boolean | false | Attach the company's currently listed sales jobs (one extra request per company). |
includeQuestions | boolean | false | Attach community questions and answers (one extra request per company). |
maxReviews | integer | 100 | Cap on reviews attached to each company. 0 for the maximum of 1000. Per-company depth, not a run cap. |
targetDate | string | (none) | Keep only reviews created on or after this date (YYYY-MM-DD). |
minReviewRating | integer | 0 | Keep only reviews whose average metric rating (the mean of the review's metric scores, 1 to 5, can be fractional) is at least this value; 0 keeps all. Reviews with no rating are dropped when this is above 0. |
reviewSort | string | default | Order of attached reviews: default, newest, rating_desc, rating_asc, upvotes. Non-default orders read all available review pages (up to 1000) before the cap. |
maxItems | integer | 20 | Stop after this many companies across the whole run. This is the only run-wide cap; 0 for no limit. |
proxy | object | { "useApifyProxy": true } | Connection settings. |
maxResidentialMB | integer | 0 | Only applies on the Residential proxy group: after this many MB, the run auto-downgrades to Datacenter. 0 means no cap. |
resumeFromRunId | string | (none) | Run id or dataset id of an earlier run; companies it already collected are skipped. |
incrementalMode | boolean | false | Remember each company between runs and add changeType, changedFields, firstSeenAt, lastSeenAt. Unchanged companies are not re-emitted and carry no enrichment charge. |
stateKey | string | (none) | Name of the saved baseline; empty derives it from your company set, filters and collect toggles (never the caps). |
emitUnchanged | boolean | false | Also output companies marked UNCHANGED. |
emitExpired | boolean | true | After a complete scan, output EXPIRED rows for previously tracked companies no longer found. Each EXPIRED row is one charged dataset item and counts toward Max companies; turn this off to avoid them. |
ignoreFieldsForChanges | array | [] | Field names that must not count as a change (they stay in the output). |
mcpConnectors | array | (none) | Optional: send a summary of each company to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which company pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live company.
{"recordType": "company","id": 1,"slug": "SampleCompany","name": "Sample Company","industry": "Software","size": "to_10000","sizeLabel": "1001-10000","funding_source": "Public","last_headcount": 2924,"description": "Short company description text appears here.","website": "https://www.example.com/","careers_url": "https://careers.example.com/","url": "https://www.repvue.com/companies/SampleCompany","repvueScore": 81.97,"averageRating": 3.5,"ratings_count": 715,"verified_ratings_percent": 91.19,"compensation": {"summary": { "highest_base": 165000, "lowest_base": 50000, "total_ratings_count": 212 },"availableBusinessUnits": ["Sales"],"roles": [{ "role": "Account Executive", "median_ote": 150000, "median_base_compensation": 75000, "average_highest_potential_earnings": 309529, "ratings_count": 85 }]},"compensationRolesCount": 1,"reviews": [{ "id": 1, "body": "Strong enablement and supportive leadership.", "rating": { "score": 4, "type": "overall", "user_status": "current" }, "reviewer_role_tag": "Account Executive", "rating_verified": true, "upvotes": 0 }],"reviewsCount": 1,"jobsCount": 0,"jobs": [],"questionsCount": 0,"questions": [],"scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan Requirement
URL mode reads company data from RepVue's data service, which answers on the default (datacenter) connection setting, so no residential proxy is needed. The actor keeps a backup connection in reserve and switches to it automatically when a connection is refused; if your Apify plan has no proxy access at all, the run fails with a message saying a paid plan or your own proxy URLs are required.
Search mode lists companies from the site's public index pages. The site sometimes answers those pages with a security checkpoint; the actor retries each page several times on new connections, and discovery fails only when the checkpoint keeps appearing. In that case the run ends as failed with the message "Company discovery is unavailable: the site's public pages kept answering with a security checkpoint after repeated retries on new connections, so Search mode cannot list companies right now. Try again later, or use URL mode with specific company links or slugs instead." Switching the proxy group does not help; try again later or use URL mode.
FAQ
How much does it cost?
You pay per company record pushed to the dataset, plus one detail-enrichment event per company that carries enriched detail (reviews, compensation, jobs or questions). In incremental mode, each EXPIRED row is also one charged dataset item that counts toward Max companies; turn off emitExpired to avoid them. Skipped, unmatched or failed companies are never charged. The Pricing tab shows the current rates. Use Max companies to cap the cost of any run.
Which dataset views are available?
The output tab offers Overview, Reviews, Jobs and Questions views; the last three unwind the nested lists into one row per review, job or question.
Is it legal to scrape RepVue?
This actor collects only publicly available company review and compensation data. You are responsible for how you use it: follow RepVue'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. Turn on Incremental mode and schedule the actor from the Schedules tab. Each company is marked NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED, with the changed field names. Unchanged companies are not output, and an unchanged company is not charged the detail-enrichment event. A company whose fetch failed keeps its previous baseline, and EXPIRED rows are only produced after a complete, uncapped, non-resumed scan. The Changes view of the dataset shows these columns. Use ignoreFieldsForChanges for fields such as ratings_count that you do not want to count as a change.
What's the difference between "Max companies" and "Max reviews per company"?
Max companies (maxItems) is the only run-wide cap: it stops the whole run after that many companies. Max reviews per company (maxReviews) only limits how many reviews are attached to each company already being returned; raising it does not add more companies.
Why did my run return no companies instead of failing?
If search-mode discovery can't read the site index, or no page could be loaded, the run ends as failed with a status message explaining why. If URL mode has no startUrls, or none of your companies matched, the run finishes with an empty dataset and a status message explaining why. No placeholder or error row is written to the dataset, so you are not charged for any result rows. Check the run's status message, loosen your filters, or use URL mode with specific company links.
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 company summaries into Notion, Linear, or Airtable.
π Want more jobs data?
Pair this actor with these related scrapers from the same team:
| π JobStreet Pull JobStreet company profiles and employee reviews across Malaysia, Singapore... | π Comparably Extract rich company data from comparably.com using company names or profile URLs. Get... |
| πΌ Cwjobs UK Scrape tech and IT jobs from CWJobs.co.uk into clean, structured data. Search by keyword... | πΌ Wellfound Jobs Scraper Scrape startup jobs from Wellfound.com by keyword, location, role, or remote status... |
| πΌ RemoteOK Jobs Scraper Scrape RemoteOK jobs by keyword or job URL. Extract title, company, location, remote... | πΌ Workday Jobs Scraper Scrape job postings from any Workday-hosted careers site on Myworkdayjobs.com. Paste... |
π 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.