# RepVue Scraper \[$0.7💰] | Sales Comp | Company Reviews (`ahmed_jasarevic/repvue-scraper`) Actor

Extract verified sales employee reviews, compensation (OTE, base, top) and RepVue Scores from RepVue.com - no login, no paid API. Research the best sales companies to work for, benchmark sales rep salaries, and monitor sales org rankings as structured JSON.

- **URL**: https://apify.com/ahmed\_jasarevic/repvue-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.67 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RepVue Scraper — Sales Company Reviews, Compensation & Sales Org Rankings

Extract verified sales employee reviews, per-role compensation (OTE, base, top) and RepVue Scores from [RepVue.com](https://www.repvue.com) — the data sales professionals use to research the best sales companies to work for. No login, no paid API; built on public pages, the official LLM markdown feed and public sitemaps.

### Main Use Cases

- **Sales job research** — compare sales orgs before applying, interviewing or accepting an offer
- **Compensation benchmarking** — OTE, base salary, top-end pay and quota attainment by role and company
- **Competitive sales org intel** — culture, leadership, incentive structure, product-market fit and attrition signals for competitor orgs
- **Recruiting & sales talent research** — shortlist top-rated sales organizations and see what sellers actually say
- **Sales org market rankings** — RepVue Scores, industry percentiles and category rankings for thousands of companies

### How It Works

A Cheerio-based crawler (no browser UI) in front of a built-in Chrome 136 TLS/HTTP2 impersonation layer that reads three public data sources:

| Source | What you get |
|---|---|
| `/companies/{slug}.md` — official public LLM feed (sanctioned via [repvue.com/llms.txt](https://www.repvue.com/llms.txt)) | RepVue Score, overall/industry percentiles, category rankings & trends, per-role compensation, headcount, rating counts |
| `/companies/{slug}/reviews` — Next.js RSC flight payload + SSR DOM | Verified reviews: body, role, rating, employment status, date, useful votes |
| Public sitemaps (`companies-sitemap-*.xml`, `reviews-sitemap-*.xml`) | ~17.5K company slugs and ~60K review URLs, with last-modified dates |

Each run pushes structured JSON rows to Apify datasets: one `company` profile row per company in the **default dataset** and one `review` row per review in the **reviews dataset**.

### Extract Sales Compensation Data by Company

`compensationByRole` on each company row gives you per-role compensation with base / OTE / top figures and sample sizes — pulled from RepVue's public LLM markdown feed. Set `includeCompanyProfile: true` (default), optionally with `skipReviews: true` for a compensation-only run. This is the data job seekers use to negotiate offers and the data sales leaders use to benchmark their own comp plans.

### Research Top Sales Organizations Without a Paid API

RepVue has no public paid API — but its public pages, LLM markdown feed and sitemaps expose the same underlying data. This actor reads those public sources directly:

- `discoverCompanies: true` scans the public companies sitemap and queues up to `maxCompanies` (~17.5K companies) — the cheapest full-directory path
- `reviewDiscovery: "sitemap"` scans the public reviews sitemaps for maximum review coverage
- `followSimilarCompanies: true` follows "Explore Reviews at Similar Companies" links (competitors) so a crawl grows organically from any seed company

### Monitor RepVue Scores and Sales Org Rankings

RepVue Scores, overall/industry percentiles, category rankings and trends update as the community submits ratings. Schedule this actor (see Integrations) for monthly or quarterly monitoring runs and build your own sales org ranking tracker from scrubbed data.

### Input

All input fields, from the actor's actual schema:

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `startUrls` | `array` | **Yes** | — | A company overview (`/companies/Slug`), reviews listing (`/companies/Slug/reviews`), a single review, the company directory (`/companies` or `/companies/page/N`, optionally with `?industries.name=...` filters), a company `.md` feed, or a RepVue sitemap |
| `proxy` | `object` | No | Apify RESIDENTIAL prefilled | **Recommended: `{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}`** — RepVue's Vercel security checkpoint blocks datacenter egress IPs |
| `discoverCompanies` | `boolean` | No | `false` | Scan public sitemaps and queue all listed companies (~17.5K) until `maxCompanies` is reached |
| `reviewDiscovery` | `string` | No | `auto` | `auto` (sitemap when scanned, else related links) · `sitemap` · `related` |
| `followSimilarCompanies` | `boolean` | No | `true` | BFS into competitor companies shown on review pages |
| `maxCompanies` | `integer` | No | `100` | Cap on company profiles crawled per run (explicit start URLs always processed) |
| `maxReviewsPerCompany` | `integer` | No | `100` | Cap on review rows per company; newest reviews preferred |
| `targetDate` | `string` | No | — | `YYYY-MM-DD`; reviews older than this date are skipped |
| `includeCompanyProfile` | `boolean` | No | `true` | Add the aggregate company profile row from the official `.md` feed (RepVue Score, percentiles, rankings, comp) |
| `skipReviews` | `boolean` | No | `false` | Output company profiles only, skip review rows |
| `maxConcurrency` | `integer` | No | `10` | Max pages processed in parallel |
| `minConcurrency` | `integer` | No | `1` | Min pages processed in parallel |
| `maxRequestRetries` | `integer` | No | `5` | Retry count for failed requests |

### Output

#### Company profile rows (`recordType: "company"` — default dataset)

| Field | Description |
|---|---|
| `slug` / `url` / `name` | Canonical slug, profile URL, company name |
| `website` / `description` / `industry` / `companySize` / `employeeHeadcount` / `fundingStatus` / `hq` | Company metadata |
| `repvueScore` | Overall RepVue Score (0–100) |
| `overallPercentile` / `industryPercentile` | Percentile rankings |
| `repvueTrend` / `categoryRankings` / `categoryTrends` | Score trend, category-level rankings and trends |
| `compensationByRole` | Per-role compensation: base / OTE / top, sample sizes (role reps care about: AE, SDR/BDR, leadership) |
| `totalRatings` / `verifiedRatings` / `verifiedPercent` / `writtenReviews` / `ratingsLast6Months` / `lastRatingRecorded` | Rating volume and verification stats |
| `industryQuotaAttainmentPercent` / `industryFutureOutlookScore` / `industryAiImpactScore` | Industry-level sales signals |
| `salaryCurrency` / `logoUrl` / `profileGeneratedAt` / `scrapedAt` | Currency, logo, feed generation time, collection time |

#### Review rows (`recordType: "review"` — reviews dataset)

| Field | Description |
|---|---|
| `companyName` / `companySlug` / `slug` / `url` | Company + review permalink |
| `employmentStatus` / `role` / `location` / `createdAt` | Reviewer metadata (current/former employee, role tag, location, date) |
| `rating` / `ratingVerified` / `pinned` | Score, verified flag, pinned flag |
| `body` / `contentCategories` / `prompt` | Full review text, topic tags, prompt stats |
| `upvotes` / `voteValue` / `followupQuestion` / `followupAnswer` / `companyResponse` | Engagement and company response |
| `source` | `listing` (teaser) or `detail` / `related` (full page) |
| `scrapedAt` | ISO timestamp of collection |

### Example Input

```json
{
  "startUrls": [
    { "url": "https://www.repvue.com/companies/ZoomInfo/reviews" },
    { "url": "https://www.repvue.com/companies/Datadog/reviews" }
  ],
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] },
  "maxCompanies": 20,
  "maxReviewsPerCompany": 100,
  "includeCompanyProfile": true,
  "reviewDiscovery": "auto",
  "followSimilarCompanies": true
}
```

### Example Output

Company profile row (default dataset):

```json
{
  "recordType": "company",
  "slug": "datadog",
  "url": "https://www.repvue.com/companies/Datadog",
  "name": "Datadog",
  "industry": "Software",
  "employeeHeadcount": 5001,
  "repvueScore": 83.74,
  "overallPercentile": 80,
  "industryPercentile": 75,
  "categoryRankings": [
    { "category": "Culture and Leadership", "score": 3.7, "rank": 1433, "total": 3362 }
  ],
  "compensationByRole": [
    { "role": "Account Executive", "base": 90000, "ote": 190000, "top": 250000, "samples": 52 }
  ],
  "totalRatings": 2674,
  "verifiedPercent": 87,
  "industryQuotaAttainmentPercent": 55,
  "scrapedAt": "2026-09-19T10:00:00.000Z"
}
```

Review row (reviews dataset):

```json
{
  "recordType": "review",
  "companyName": "Datadog",
  "companySlug": "datadog",
  "slug": "datadog-review-8f2b1c4a",
  "url": "https://www.repvue.com/companies/Datadog/reviews/datadog-review-8f2b1c4a",
  "employmentStatus": "Current Employee",
  "role": "Account Executive",
  "location": "US",
  "createdAt": "2026-08-01T00:00:00.000Z",
  "rating": 4.2,
  "ratingVerified": true,
  "body": "Team culture is strong and leadership communicates the plan clearly...",
  "source": "detail",
  "scrapedAt": "2026-09-19T10:00:01.000Z"
}
```

> Field values above are illustrative examples of the real schema — exact numbers come from the live RepVue page for each company.

### Integrations & Automation

- **Apify API, Webhooks, Schedules** — every Apify actor exposes a REST API, webhook events (run succeeded/failed) and scheduled runs; wire the output into your own pipeline.
- **Zapier / Make** — connect any Apify run to Zapier or Make via the Apify integration to push new reviews or rankings into Slack, Sheets, Airtable or a BI tool.
- **Recommended schedule** — RepVue scores, rankings and reviews change as community ratings are submitted. Run monthly for rankings monitoring, weekly for review deep-dives; recurring runs also improve Apify Store recommendations for this actor.

### Related Actors

- [Glassdoor Reviews & Jobs](https://apify.com/memo23/glassdoor-scraper-ppr) — the largest employer-review actor in this cluster; compare RepVue sales-org data with Glassdoor employer reviews
- [RepVue.com Reviews Scraper](https://apify.com/memo23/repvue-scraper) — the original RepVue scraper; a direct alternative
- [RepVue Scraper: Company Reviews, Ratings & Sales Compensation](https://apify.com/abotapi/repvue-scraper) — alternative RepVue actor with jobs and community Q\&A enrichment
- [RepVue Scraper](https://api.apify.com/v2/acts/solidcode~repvue-scraper) — alternative RepVue actor by solidcode
- [Glassdoor Reviews Scraper](https://apify.com/getdataforme/glassdoor-reviews-scraper) — employee reviews from Glassdoor for broader employer-intel coverage

### FAQ

#### Is there a RepVue API?

There is no public paid API. RepVue publishes an **official public LLM markdown feed** per its [llms.txt](https://www.repvue.com/llms.txt) — company profiles at `/companies/{slug}.md` — plus public sitemaps and public review pages. This actor reads exactly those public sources, so you get API-grade structured JSON without paying for API access.

#### What is the RepVue Score?

The RepVue Score is RepVue's 0–100 rating of a sales organization, weighted by how much sales professionals care about each category (culture and leadership, base compensation, incentive structure, product-market fit, professional development, inbound lead flow, diversity). Scores are computed from verified, anonymous ratings submitted by current and former employees.

#### RepVue vs Glassdoor — which should I use?

Glassdoor covers employer reviews across all job functions and industries. RepVue is purpose-built for **sales organizations**: per-role OTE/base comp, quota attainment, sales-specific category scores and sales-org rankings — data Glassdoor doesn't structure for sellers. Use both: this actor gives you the RepVue side, and the Related Actors above cover Glassdoor.

#### Are the reviews verified?

RepVue reports a verified percentage per company (e.g. 87% at Datadog, 92–100% on many profiles). This actor returns `ratingVerified` per review and `verifiedPercent` per company profile so you can filter to verified ratings only.

#### Do I need residential proxies?

Yes, recommended. RepVue runs on Vercel behind a security checkpoint that blocks most plain datacenter/VPS egress IPs even with a perfect browser fingerprint. The actor's built-in Chrome 136 TLS/HTTP2 impersonation handles fingerprinting automatically; set `proxy` to Apify RESIDENTIAL (`useApifyProxy: true`, `apifyProxyGroups: ["RESIDENTIAL"]`) for reliable runs with minimal retries.

### SEO Keywords

repvue scraper, repvue company reviews, sales org ratings, best sales companies to work for, sales compensation benchmarks, sales rep salary data, sales employee reviews, sdr bdr salary data, sales organization rankings, repvue score monitoring, quota attainment data, sales job research, tech sales job seekers, top rated sales organizations, sales leadership compensation, competitive sales org intel, ote salary data, company culture ratings sales, glassdoor for sales, repvue alternative, b2b sales org ratings, sales team compensation data

### For AI Agents & LLM Apps

**Purpose:** returns one structured company-profile object per company (default dataset) and one review object per employee review (reviews dataset) from RepVue.com public sources — RepVue Score, per-role compensation, percentiles, rankings and verified review text.

**Minimal input (only required field):**

```json
{
  "startUrls": [{ "url": "https://www.repvue.com/companies/ZoomInfo/reviews" }]
}
```

**Variant inputs:** append a second start URL (or set `discoverCompanies: true` + `maxCompanies`) to collect many companies in one run; set `skipReviews: true` for profiles-only mode; set `targetDate: "YYYY-MM-DD"` to only collect newer reviews.

**Output field list:** company rows — `slug, url, name, website, industry, companySize, employeeHeadcount, fundingStatus, hq, salaryCurrency, repvueScore, overallPercentile, industryPercentile, repvueTrend, categoryRankings, categoryTrends, compensationByRole, totalRatings, verifiedRatings, verifiedPercent, writtenReviews, publishedReviewsCount, publishedStatus, ratingsLast6Months, lastRatingRecorded, industryQuotaAttainmentPercent, industryFutureOutlookScore, industryAiImpactScore, logoUrl, profileGeneratedAt, scrapedAt`. Review rows — `companyName, companySlug, id, slug, url, employmentStatus, role, location, createdAt, rating, ratingVerified, pinned, upvotes, voteValue, body, prompt, contentCategories, followupQuestion, followupAnswer, companyResponse, source, scrapedAt`.

**Behaviors an agent should know:**

- Rows split by `recordType`: `"company"` goes to the default dataset, `"review"` to the reviews dataset — filter on `recordType` when consuming one dataset.
- `discoverCompanies: true` reads the public companies sitemap and queues up to `maxCompanies` (~17.5K companies) — the cheapest way to build a full directory, but every company adds a billed profile row.
- `followSimilarCompanies: true` (default) BFS-crawls competitor companies from review pages, so a run can exceed what your start URLs explicitly list — bounded by `maxCompanies`.
- `includeCompanyProfile: true` (default) adds one company profile row per company via the official `.md` feed. `skipReviews: true` suppresses all review rows (and their billing).
- `reviewDiscovery`: `"auto"` uses the public reviews sitemap when the crawl scans one (with `discoverCompanies` or a directory start URL) and otherwise follows in-page links; `"sitemap"` always scans reviews sitemaps; `"related"` never uses sitemaps.
- `targetDate` skips reviews strictly older than the given date; `maxReviewsPerCompany` caps review rows per company, newest first.
- Do not run without the residential `proxy` input in production — RepVue's Vercel checkpoint blocks datacenter IPs.
- Billing: **$0.0007 per company-profile "result" event, $0.0007 per review event, plus $0.00005 per actor-start event (per GB-minute of memory).** A profiles-only run with `skipReviews: true` avoids all review-event charges.

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by RepVue, LLC** or RepVue.com. "RepVue" and "RepVue Score" are trademarks or property of their respective owners.

The actor accesses **only public data**: publicly visible company pages and reviews, RepVue's official public LLM markdown feed, and public sitemaps. It performs no login, no login/CAPTCHA bypass, and no access to non-public content. RepVue requests that data referenced or used be attributed to RepVue with a link to https://www.repvue.com, and asks crawlers to follow its robots.txt and llms.txt guidelines — please honor both when republishing extracted data.

You are responsible for complying with RepVue's Terms of Service and with applicable data-protection and defamation laws in your jurisdiction when using extracted content. Review rows may describe individual experiences; do not use them for unsolicited commercial outreach, and do not republish review text in a way that misattributes or misrepresents individual reviewers. This README is not legal advice.

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with. Accepted forms: a company overview (/companies/Slug), a company reviews listing (/companies/Slug/reviews), a single review (/companies/Slug/reviews/xxx-review-xxxxxxxx), the company directory (https://www.repvue.com/companies or /companies/page/N, optionally with ?industries.name=... filters), a company .md feed (/companies/Slug.md) or a RepVue sitemap.

## `proxy` (type: `object`):

Required on the Apify platform. RepVue sits behind a Vercel security checkpoint that blocks datacenter egress IPs even with a perfect browser fingerprint, so enable Apify Proxy with the RESIDENTIAL group here for maximum reliability and minimum retries. Each request then exits from a residential IP. (Browser impersonation is built in automatically â€” there is no toggle.)

## `discoverCompanies` (type: `boolean`):

If enabled, the actor reads RepVue's public sitemap index and queues every company profile it lists (~17.5K companies) until 'Max companies' is reached. When disabled, only the companies reachable from your start URLs are crawled.

## `reviewDiscovery` (type: `string`):

'auto' uses RepVue's public reviews sitemap when it is scanned (with discoverCompanies or a directory start URL) and falls back to following 'Browse Other Reviews' links. 'sitemap' always scans the reviews sitemaps. 'related' never uses sitemaps â€” it crawls review pages and follows related-review links.

## `followSimilarCompanies` (type: `boolean`):

When enabled, companies shown under 'Explore Reviews at Similar Companies' (competitors) are queued as well, until 'Max companies' is reached. Grows the crawl organically from any company.

## `maxCompanies` (type: `integer`):

Maximum number of companies to crawl per run. Applies to companies discovered via sitemap, directory or similar-company links (explicit start URLs are always processed).

## `maxReviewsPerCompany` (type: `integer`):

Maximum number of reviews to collect per company. Newest reviews are preferred.

## `targetDate` (type: `string`):

Reviews created before this date are skipped. Format: YYYY-MM-DD (e.g. 2026-01-01).

## `includeCompanyProfile` (type: `boolean`):

Adds one aggregate company profile row per company parsed from RepVue's official public LLM markdown feed: RepVue Score, overall/industry percentiles, category rankings, per-role compensation, rating counts and headcount.

## `skipReviews` (type: `boolean`):

Do not scrape review bodies; only output company profiles.

## `maxConcurrency` (type: `integer`):

Maximum number of pages processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times a failed request is retried before giving up.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.repvue.com/companies/ZoomInfo/reviews"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "discoverCompanies": false,
  "reviewDiscovery": "auto",
  "followSimilarCompanies": true,
  "maxCompanies": 100,
  "maxReviewsPerCompany": 100,
  "includeCompanyProfile": true,
  "skipReviews": false,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 5
}
```

# Actor output Schema

## `companies` (type: `string`):

Company profile rows â€” RepVue scores, percentiles, category rankings, compensation, ratings counts.

## `reviews` (type: `string`):

Review rows â€” role, location, rating, verified flag, body, company response, scrapedAt.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.repvue.com/companies/ZoomInfo/reviews"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/repvue-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.repvue.com/companies/ZoomInfo/reviews" }],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/repvue-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.repvue.com/companies/ZoomInfo/reviews"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/repvue-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/repvue-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OGytBazA7ThewJ9sh/builds/vGiGmcz6zKtmaKdKS/openapi.json
