# RepVue Scraper — Sales Org Ratings, Score & Reviews (`haketa/repvue-scraper`) Actor

Scrape RepVue sales-organization ratings: RepVue Score, overall and category ratings (Base Comp, Culture, Leadership, PMF), ratings and review counts, industry, funding, headcount. Company list or auto-discover. Keyless (Chrome-TLS).

- **URL**: https://apify.com/haketa/repvue-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.75 / 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 Org Ratings, Score & Reviews

Pull **sales-organization ratings from RepVue** — the **RepVue Score**, overall rating, and per-category ratings (**Base Compensation, Culture & Leadership, Product-Market Fit, Incentive Comp, Professional Development, Diversity…**) plus ratings & review counts, industry, funding, headcount and careers link. Clean JSON/CSV/Excel.

Give it a company list or let it **auto-discover** companies. Handles RepVue's Cloudflare + Next.js front-end automatically (Chrome-TLS).

***

### What this Actor does

For every sales organization on RepVue it returns:

- **Scores** — the **RepVue Score** (0–100) and overall average rating.
- **Category ratings** — each rated dimension (Base Comp, Culture & Leadership, Product-Market Fit, Incentive Comp Structure, Professional Development, Diversity & Inclusion…) with its average.
- **Volume** — number of ratings and published reviews.
- **Firmographics** — industry, funding source, headcount, size bucket, active job count.
- **Links** — careers URL, logo, description and the RepVue page.

Two ways in: paste **company slugs**, or turn on **auto-discover** to sweep RepVue's company list.

***

### Why use it

- **Sales comp & culture benchmarking.** Compare RepVue Scores and category ratings across target companies in one table.
- **Job-seeker intelligence.** Rank sales orgs by culture, comp and PMF before you apply or accept.
- **Recruiting & employer branding.** See how companies score and how many ratings/reviews they have.
- **Investor / competitive signal.** Sales-org health, headcount and funding at a glance.
- **Handles the hard part.** RepVue is a Cloudflare-protected Next.js app; the Actor passes the challenge (Chrome-TLS) and parses the data for you — keyless.

***

### Who it's for

- **Sales professionals & job seekers** comparing orgs on comp, culture and PMF.
- **Sales recruiters & talent teams** benchmarking employer reputation.
- **Comp & people analysts** building sales-org datasets.
- **Investors & market researchers** tracking sales-org health signals.

***

### Quick start

#### Run it in the console (no code)

1. In **Company slugs**, add one per line (slug or full URL):

   ```
   anthropic
   harvey-ai
   https://www.repvue.com/companies/toast
   ```

2. *(Optional)* turn on **Auto-discover companies** to sweep the list instead.

3. Click **Start**, then export as **JSON, CSV, Excel or HTML**.

Leave it empty for a **demo** (anthropic, toast).

#### Run it via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "companySlugs": ["anthropic", "harvey-ai"],
    # or: "discoverCompanies": True, "maxItems": 500,
}

run = client.actor("YOUR_USERNAME/repvue-scraper").call(run_input=run_input)

for c in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{c['name']}: RepVue {c['repvueScore']} | {c['averageRating']}★ ({c['ratingsCount']} ratings)")
```

#### Run it via API (JavaScript)

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

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('YOUR_USERNAME/repvue-scraper').call({
    companySlugs: ['anthropic'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((c) => console.log(`${c.name}: ${c.repvueScore} — ${c.categoryRatings}`));
```

***

### Input

| Field | Type | Description |
|---|---|---|
| **Company slugs** | array | RepVue company slugs (or full URLs). Empty + no discovery = demo. |
| **Auto-discover companies** | boolean | Also sweep RepVue's company list and scrape each. |
| **Max companies** | integer | Total cap across list + discovery. Default 200. |
| **Speed (parallel companies)** | integer | Keep modest (3–5) — RepVue is behind Cloudflare. Default 4. |
| **Proxy configuration** | object | Apify Proxy. ON by default; Chrome-TLS passes the CF challenge. Switch to Residential if blocked at scale. |

> **Finding slugs:** a RepVue company URL is `repvue.com/companies/<slug>` — e.g. `anthropic`, `harvey-ai`. Paste the slug or the whole URL.

***

### Output

One record per company:

```json
{
  "slug": "anthropic",
  "name": "Anthropic",
  "repvueScore": "97.73",
  "averageRating": "4.6",
  "ratingsCount": "11",
  "reviewsCount": "6",
  "categoryRatings": "Culture and Leadership: 4.8; Base Compensation: 4.7; Incentive Compensation Structure: 4.6; ...",
  "categoryCount": "8",
  "industry": "Software",
  "fundingSource": "Venture Backed",
  "headcount": "5583",
  "size": "to_10000",
  "activeJobsCount": "12",
  "hasReviews": "true",
  "careersUrl": "https://...",
  "logo": "https://...",
  "description": "Anthropic is an AI safety company...",
  "url": "https://www.repvue.com/companies/anthropic",
  "scrapedAt": "2026-10-12T12:00:00.000Z"
}
```

| Field | Description |
|---|---|
| `repvueScore` | RepVue Score, 0–100. |
| `averageRating` | Overall average star rating. |
| `ratingsCount` / `reviewsCount` | Number of ratings and published reviews. |
| `categoryRatings` / `categoryCount` | Per-category averages (Base Comp, Culture & Leadership, PMF, Incentive Comp…). |
| `industry` / `fundingSource` / `headcount` / `size` | Firmographics. |
| `activeJobsCount` / `hasReviews` / `careersUrl` | Hiring signal and links. |
| `logo` / `description` / `url` | Branding and link. |
| `scrapedAt` | ISO timestamp. |

***

### Tips & notes

- **Benchmark in bulk.** Add your whole target list of sales orgs and sort by `repvueScore` or any category.
- **Category ratings** are the differentiator — comp vs culture vs PMF tell very different stories at the same company.
- **Discovery.** `discoverCompanies` sweeps RepVue's company page; combine with `maxItems` to bound the run.
- **Cloudflare.** The Actor uses Chrome-TLS to pass RepVue's challenge; keep concurrency modest and switch to Residential proxy if you scale up and see blocks.
- **Data availability.** Newer/low-volume companies may have fewer ratings or categories — that's RepVue's underlying data.

***

### Frequently asked questions

**Do I need a RepVue account or API key?**
No — the Actor reads public RepVue company pages (passing the Cloudflare challenge via Chrome-TLS).

**What's the RepVue Score?**
RepVue's 0–100 score aggregating how a sales org is rated by sales professionals.

**Which category ratings are included?**
Whatever RepVue publishes for the company — typically Base Compensation, Culture & Leadership, Product-Market Fit, Incentive Comp Structure, Professional Development, Diversity & Inclusion and more.

**Can I scrape many companies at once?**
Yes — paste a slug list or enable discovery; keep concurrency modest for Cloudflare.

**Does it include individual review text?**
It focuses on scores, category ratings and counts plus firmographics. (Individual free-text reviews can be added on request.)

***

### Export & integrate

Results are available as **JSON, CSV, Excel, HTML** and via the **Apify API**. Push to **Google Sheets**, a **webhook**, **Make**, **Zapier** or your database — and **schedule** runs to track sales-org ratings over time.

*Data from RepVue public company pages.*

# Actor input Schema

## `companySlugs` (type: `array`):

One RepVue company slug per line — e.g. `anthropic`, `toast`, `harvey-ai`. You can paste a full URL too (`https://www.repvue.com/companies/anthropic`); the slug is extracted. Leave empty and enable discovery (or just run) for a demo.

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

Also pull the company list from RepVue's companies page and scrape each (up to Max companies). Handy for a broad sweep without a slug list.

## `maxItems` (type: `integer`):

Maximum companies to scrape in total (your list + discovery).

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

How many companies to fetch at once. RepVue sits behind Cloudflare — keep this modest (3–5) for reliability.

## `proxyConfiguration` (type: `object`):

Apify Proxy. ON by default. RepVue is behind Cloudflare; the Actor uses Chrome-TLS (impit) to pass the challenge. Datacenter usually works; switch to Residential if you hit blocks at scale.

## Actor input object example

```json
{
  "companySlugs": [
    "anthropic",
    "toast"
  ],
  "discoverCompanies": false,
  "maxItems": 200,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `slug` (type: `string`):

RepVue slug

## `name` (type: `string`):

Company name

## `repvueScore` (type: `string`):

RepVue Score (0-100)

## `averageRating` (type: `string`):

Overall average rating

## `ratingsCount` (type: `string`):

Number of ratings

## `reviewsCount` (type: `string`):

Published reviews

## `categoryRatings` (type: `string`):

Per-category ratings (Base Comp, Culture…)

## `categoryCount` (type: `string`):

Category count

## `industry` (type: `string`):

Industry

## `fundingSource` (type: `string`):

Funding source

## `headcount` (type: `string`):

Last headcount

## `size` (type: `string`):

Size bucket

## `activeJobsCount` (type: `string`):

Active job count

## `hasReviews` (type: `string`):

Has reviews

## `careersUrl` (type: `string`):

Careers link

## `logo` (type: `string`):

Logo URL

## `description` (type: `string`):

Company description

## `url` (type: `string`):

RepVue page

## `scrapedAt` (type: `string`):

Timestamp

# 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 = {
    "companySlugs": [
        "anthropic",
        "toast"
    ],
    "maxItems": 200,
    "maxConcurrency": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "companySlugs": [
        "anthropic",
        "toast",
    ],
    "maxItems": 200,
    "maxConcurrency": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/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 '{
  "companySlugs": [
    "anthropic",
    "toast"
  ],
  "maxItems": 200,
  "maxConcurrency": 4
}' |
apify call haketa/repvue-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/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/YhUhrwSyFI2HLf2jH/builds/aHA2ieEhhtqJtl5FE/openapi.json
