# RepVue Scraper (`solidcode/repvue-scraper`) Actor

From 💰 $0.7 per 1K. Extract verified sales-employer reviews, ratings, and compensation data from RepVue.com. Paste company URLs or filter the RepVue directory by industry and company size. Returns one row per company plus optional rows for each verified review (with a recordType discriminator).

- **URL**: https://apify.com/solidcode/repvue-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## RepVue Scraper

Extract verified sales-employer ratings, compensation benchmarks, and full review threads from RepVue.com — the "Glassdoor for sales reps" where Account Executives, SDRs, BDRs, and CSMs rate the companies they actually work for. Paste company URLs, drop in bare slugs (`Salesforce`, `Gongio`, `Outreach`), or filter the directory by industry and company size — every row carries a `recordType` discriminator so you can split companies and reviews from one dataset in a single click.

Built for sales operators, recruiters, RevOps teams, and market-intelligence analysts who need RepVue-grade employer signal — verified comp, % to quota, and rep-level reviews — without signing in, hitting per-search limits, or wrestling with a JavaScript-heavy SPA themselves.

### Why This Scraper?

- **Two record types in one run** — `company` rows carry the RepVue Score, review counts, headcount, funding source, and a compensation roll-up; `review` rows carry the verified-rep flag, full body, average metric rating, reviewer status (`Current Employee` / `Former Employee`), and any official company response
- **21 industries × 5 company-size bands = 105 directory facet combinations** — Software, SaaS-adjacent Internet, Pharma and Biotech, Medical Devices, Finance, Manufacturing, Telecom, Real Estate, Retail / Automotive, and 12 more, crossed with 1–50 / 51–250 / 251–1,000 / 1,001–10,000 / 10,001+ employee bands
- **Compensation breakdown by role** — per-role avg base, median base, avg OTE, median OTE, average quota attainment, highest potential earnings, and a `dataFreshness` flag (current vs aged >12 months) for AEs, SDRs, BDRs, Enterprise AEs, Mid-Market AEs, CSMs, Sales Engineers, and every other role RepVue tracks
- **Verified-only signal** — every review row carries `ratingVerified: true/false` and `verifiedReviewPercent` on the parent company, so you can filter to the rep-verified subset RepVue actually displays publicly
- **Flexible date filter** — `reviewsSince` accepts a calendar date (`2025-04-01`), an ISO timestamp, or a relative window (`30d`, `6 months`, `1 year`) — useful for quarterly comp-shift tracking and post-RIF morale snapshots
- **Three input modes, mixable** — full company URLs (`https://www.repvue.com/companies/Salesforce`), bare slugs (`Outreach`, `Gongio`), and directory URLs with encoded filters (`/companies?industries.name[]=Software`) — combine any of the three in one run
- **Lean output mode** — `includeReviews: false` returns one row per company (rating, review count, compensation summary) and drops the cost to **$0.01 per company** — ideal for full-directory market sizing
- **Content-category tags on every review** — RepVue tags each review with topics like "Compensation", "Leadership", "Product", "Work-Life Balance", and "Inbound Lead Flow" so you can slice reviews by what the rep was actually rating
- **Reviewer-role and reviewer-location signal** — every review surfaces the reviewer's role tag (Account Executive, SDR, etc.) and location tag, letting you isolate "what AEs in North America say about Salesforce in 2026"

### Use Cases

**Sales Lead Research & Account Intelligence**
- Pull every Software company on RepVue with 1,001–10,000 employees plus avg-OTE benchmarks for outbound prospecting
- Identify companies whose reviewers consistently flag "weak inbound lead flow" — a hot signal for marketing-automation pitches
- Build a watchlist of companies whose `hasActiveJobs` is true and `activeJobsCount` is climbing month-over-month

**Recruiter Sourcing & Pipeline Building**
- Find every B2B SaaS company in the 251–1,000 band that pays Account Executives over $250K OTE
- Track which companies have the highest verified-review-percent — high verification = a real, engaged sales population
- Flag companies whose `compensationDataFreshness` is "aged" so you know which comp numbers your candidates will discount

**Compensation Benchmarking**
- Aggregate avg base, avg OTE, and avg quota attainment across an entire industry for board-deck-grade comp reports
- Compare per-role compensation across 21 industries — Software AE OTE vs Healthcare AE OTE vs FinTech AE OTE
- Track comp drift quarter-over-quarter using `reviewsSince=90d` against a stored snapshot

**Market Intelligence & GTM Strategy**
- Pull every company in two industries side-by-side to map relative RepVue Score, culture rating, and product rating
- Identify "RepVue darlings" (overallRating > 80, reviewCount > 50) for case-study targeting and competitive positioning
- Spot companies trending downward by sampling `reviewsSince=30d` versus the historical aggregate

**Job-Seeker Diligence**
- Read every verified review from current and former AEs at a shortlist of target companies before accepting an offer
- Compare quotaAttainment across 5 finalist companies — % to quota is the single best leading indicator of comp realism
- Check `companyResponse` to see whether leadership engages with rep feedback or stays silent

**Investor & Equity Research**
- Surface employee-experience signal on private B2B SaaS portfolio companies that don't show up on Glassdoor
- Track product, leadership, and incentive-comp-plan ratings as a leading indicator before a Series C raise
- Use `fundingSource` plus headcount trajectory plus compensation freshness to triage a portfolio at scale

### Getting Started

#### Pull one company's profile and most-recent reviews

```json
{
    "startUrls": ["Salesforce"],
    "maxReviewsPerCompany": 50
}
````

#### Sweep the Software directory, companies only (lean + cheap)

Skip reviews entirely for a quick market scan — only the company row, no review charges:

```json
{
    "industries": ["Software"],
    "companySizes": ["1,001-10,000", "10,001+"],
    "includeReviews": false,
    "maxResults": 500
}
```

#### Quarterly comp-shift snapshot

Mix slugs, URLs, and a relative date filter to grab the last 90 days of verified review activity across a shortlist:

```json
{
    "startUrls": [
        "Salesforce",
        "https://www.repvue.com/companies/Gongio",
        "Outreach",
        "HubSpot"
    ],
    "reviewsSince": "90d",
    "maxReviewsPerCompany": 200,
    "includeCompensation": true,
    "maxResults": 1000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | RepVue inputs in any combination. Accepts full company URLs (`https://www.repvue.com/companies/Salesforce`), bare slugs (`Salesforce`, `Gongio`, `Outreach`), or directory URLs with encoded filters (`https://www.repvue.com/companies?industries.name[]=Software`). Leave empty to crawl the full directory. |
| `industries` | string\[] | `[]` | Industry filter for directory mode. Options: Construction, Direct-to-Consumer, Education, Finance, Healthcare and Hospitals, Information Technology and Services, Internet, Leisure / Hospitality, Manufacturing, Media and Publishing, Medical Devices, Natural Resources / Mining, Pharma and Biotech, Professional / Business Services, Real Estate, Retail / Automotive, Software, Staffing and Recruiting, Telecom, Transportation, Wholesale. |
| `companySizes` | string\[] | `[]` | Employee-size band filter for directory mode. Options: `1–50`, `51–250`, `251–1,000`, `1,001–10,000`, `10,001+`. |

#### Output Control

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeReviews` | boolean | `true` | Embed each company's verified reviews as separate rows. Turn off for a quick directory scan that returns only company-card rows — much faster and cheaper. |
| `includeCompensation` | boolean | `true` | Include compensation fields on each company row plus the per-role compensation breakdown. Turn off only if you want the lightest possible payload. |

#### Filters & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `reviewsSince` | string | (none) | Only include reviews created on or after this point. Accepts a calendar date (`2025-04-01`), an ISO timestamp (`2025-04-01T12:00:00Z`), or a relative value (`30d`, `6 months`, `1 year`). |
| `maxReviewsPerCompany` | integer | `50` | Cap on reviews per company, most-recent first. `0` lifts the cap (internal ceiling of 2,000 still applies). |
| `maxResults` | integer | `100` | Hard cap on total rows across every company (companies + reviews combined). `0` lifts the cap (internal ceiling of 100,000 still applies). The actor stops requesting new pages once this number is reached but keeps the full final page. |

### Output

Every row carries a `recordType` field — `company` or `review` — so a single dataset query can split the two streams in your downstream pipeline.

#### `company` rows

```json
{
    "recordType": "company",
    "name": "Salesforce",
    "slug": "Salesforce",
    "url": "https://www.repvue.com/companies/Salesforce",
    "industry": "Software",
    "companySize": "10,001+",
    "description": "Salesforce is the global leader in CRM.",
    "logoUrl": "https://ik.imagekit.io/repvue/nqkacy7hk1xi8bjgakz9sm06ou5m",
    "website": "https://www.salesforce.com/",
    "careersUrl": "https://www.salesforce.com/company/careers/",
    "fundingSource": "Public",
    "headcount": 74895,
    "fka": null,
    "customerClaimed": true,
    "freePreview": false,
    "published": true,
    "publishedStatus": "full",
    "overallRating": 82.4,
    "averageRating": 4.12,
    "reviewCount": 1438,
    "verifiedReviewCount": 1284,
    "verifiedReviewPercent": 89.3,
    "quotaAttainment": 64.2,
    "hasActiveJobs": true,
    "activeJobsCount": 412,
    "productRating": null,
    "cultureRating": null,
    "incentiveCompPlanRating": null,
    "leadershipRating": null,
    "inboundLeadFlowRating": null,
    "professionalDevelopmentRating": null,
    "avgBaseSalary": 112400,
    "avgOTE": 248900,
    "avgQuotaAttainment": 64.2,
    "compensationByRole": [
        {
            "role": "Enterprise Account Executive",
            "roleSlug": "enterprise-account-executive",
            "sampleSize": 184,
            "baseSalary": 135200,
            "medianBaseSalary": 130000,
            "ote": 287400,
            "medianOte": 280000,
            "highestPotentialEarnings": 612000,
            "quotaAttainment": 61.4,
            "dataFreshness": "current"
        }
    ],
    "compensationDataFreshness": "current",
    "scrapedAt": "2026-05-18T09:01:42Z"
}
```

##### Core company fields

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"company"` |
| `name` | string | Company display name |
| `slug` | string | RepVue URL slug |
| `url` | string | Public RepVue profile URL |
| `industry` | string | RepVue's canonical industry classification |
| `companySize` | string | Employee band (`1-50`, `51-250`, `251-1,000`, `1,001-10,000`, `10,001+`) |
| `description` | string | Company description as shown on RepVue |
| `logoUrl` | string | CDN URL of the company logo |
| `website` | string | Corporate website |
| `careersUrl` | string | Direct link to careers page |
| `fundingSource` | string | Public / Private / Venture-backed, etc. |
| `headcount` | integer | Last reported headcount |
| `fka` | string | "Formerly known as" name (when applicable) |
| `customerClaimed` | boolean | Profile claimed by the company |
| `freePreview` | boolean | Free-preview flag |
| `published` | boolean | Currently visible on RepVue |
| `publishedStatus` | string | RepVue's publication state. `"full"` for the standard publicly-listed profile; other values indicate limited or in-flight listings. |
| `hasActiveJobs` | boolean | RepVue is currently listing open roles |
| `activeJobsCount` | integer | Number of active job listings |
| `scrapedAt` | string | ISO-8601 timestamp of extraction |

##### Ratings (company row)

| Field | Type | Description |
|-------|------|-------------|
| `overallRating` | number | The RepVue Score (0–100) — RepVue's headline composite |
| `averageRating` | number | Average rating on the 0–5 scale shown next to the score |
| `reviewCount` | integer | Total reviews on RepVue |
| `verifiedReviewCount` | integer | Reviews from sales reps who verified their employment |
| `verifiedReviewPercent` | number | Verified share of `reviewCount`, as a percent |
| `quotaAttainment` | number | Company-level avg quota attainment (%) |
| `productRating` | number | Product sub-rating (returned as `null` on the canonical company dict; populated when RepVue exposes it) |
| `cultureRating` | number | Culture sub-rating |
| `incentiveCompPlanRating` | number | Incentive comp plan sub-rating |
| `leadershipRating` | number | Leadership sub-rating |
| `inboundLeadFlowRating` | number | Inbound lead flow sub-rating |
| `professionalDevelopmentRating` | number | Professional development sub-rating |

##### Compensation (company row)

| Field | Type | Description |
|-------|------|-------------|
| `avgBaseSalary` | number | Weighted-average base salary across all roles (USD) |
| `avgOTE` | number | Weighted-average on-target earnings across all roles (USD) |
| `avgQuotaAttainment` | number | Weighted-average % to quota across all roles |
| `compensationByRole` | object\[] | Per-role compensation breakdown — see fields below |
| `compensationDataFreshness` | string | `"current"` or `"aged"` (any role contributing data is >12 months old) |

Each element of `compensationByRole` carries: `role`, `roleSlug`, `sampleSize`, `baseSalary`, `medianBaseSalary`, `ote`, `medianOte`, `highestPotentialEarnings`, `quotaAttainment`, `dataFreshness`.

#### `review` rows

```json
{
    "recordType": "review",
    "id": 119332,
    "slug": "salesforce-review-av94tu0k",
    "companySlug": "Salesforce",
    "companyName": "Salesforce",
    "companyUrl": "https://www.repvue.com/companies/Salesforce",
    "url": "https://www.repvue.com/companies/Salesforce/reviews/salesforce-review-av94tu0k",
    "body": "Overall, not a bad experience. However, if you are external it will be a learning curve, and you will not get a good territory.",
    "rating": 4.0,
    "ratingVerified": true,
    "reviewerStatus": "Current Employee",
    "reviewerRole": "Account Executive",
    "reviewerLocation": "US",
    "pinned": false,
    "upvotes": 1,
    "contentCategories": [],
    "promptQuestion": null,
    "followupQuestion": "How much does that territory disadvantage typically extend your expected ramp time?",
    "followupAnswer": "At least 3-6 months, depends on your manager.",
    "companyResponse": null,
    "metricRatings": {
        "id": 539783,
        "average_metric_rating": 4.0,
        "created_at": "2026-05-14T21:09:04.993+00:00"
    },
    "createdAt": "2026-05-14T21:09:45.212+00:00",
    "scrapedAt": "2026-05-18T09:01:42Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"review"` |
| `id` | integer | RepVue's internal review ID |
| `slug` | string | URL-safe review slug |
| `companySlug` | string | Parent company slug |
| `companyName` | string | Parent company name |
| `companyUrl` | string | Parent company profile URL |
| `url` | string | Direct link to the review |
| `body` | string | Free-text review body |
| `rating` | number | Reviewer's average metric rating (0–5) |
| `ratingVerified` | boolean | `true` when the reviewer verified employment |
| `reviewerStatus` | string | `"Current Employee"` or `"Former Employee"` |
| `reviewerRole` | string | Role tag (Account Executive, SDR, BDR, etc.) |
| `reviewerLocation` | string | Geography tag (`US`, `Non-US`, etc.) |
| `pinned` | boolean | Pinned to the top of the company's review feed |
| `upvotes` | integer | Community upvote count |
| `contentCategories` | string\[] | RepVue topic tags (Compensation, Leadership, etc.) — may be an empty list when the reviewer didn't tag a topic |
| `promptQuestion` | string | Question the reviewer was answering, when RepVue surfaces the prompt text; `null` otherwise |
| `followupQuestion` | string | Optional follow-up question RepVue asked |
| `followupAnswer` | string | Reviewer's answer to the follow-up |
| `companyResponse` | string | Official response from the company, when one exists |
| `metricRatings` | object | Headline rating sub-object: `id`, `average_metric_rating`, `created_at`. Per-dimension sub-rating breakdowns are not exposed by RepVue's public profile data. |
| `createdAt` | string | ISO-8601 timestamp of the review |
| `scrapedAt` | string | ISO-8601 timestamp of extraction |

### Tips for Best Results

- **Slugs are case-sensitive and don't always match the brand name.** RepVue's URL slug is what wins — `Gong` is a 404, the correct slug is `Gongio`. When in doubt, copy the slug straight out of a `https://www.repvue.com/companies/<slug>` URL.
- **Set `includeReviews: false` for whole-industry market scans.** At $0.01 per company you can sweep the entire 21-industry directory and only pay the company line — perfect for board-deck comp tables, TAM sizing, and trigger lists.
- **Use `reviewsSince=90d` for quarterly comp-shift tracking.** Reviews are pulled newest-first and pagination stops the moment we cross your cutoff date — no wasted requests on old data.
- **Combine `industries` and `companySizes` to scope a long-tail directory crawl.** Software × 1,001–10,000 returns hundreds of companies; Construction × 1–50 may return zero — the actor returns a friendly status message with the filter values so you know to widen.
- **`compensationDataFreshness: "aged"` means RepVue's data on that role is >12 months old.** Use this to flag stale comp benchmarks in candidate negotiations and competitive-intel decks.
- **Aggregate `verifiedReviewPercent` across a watchlist.** Companies with a verified share under ~70% have a smaller, less engaged sales population — a leading-indicator on culture and review quality.
- **Filter reviews by `contentCategories`.** When you only care about compensation reviews, post-process `recordType == "review"` rows where `"Compensation"` is in `contentCategories` — much faster than reading every review body.

### Pricing

**Pay-Per-Event — $0.01 per company row and $0.0007 per verified review row.** No compute charges — you only pay for the records returned.

| Event | Fires when | Rate |
|-------|------------|------|
| **Company record** | Every company-card row pushed to the dataset | $0.01 each ($10 / 1,000 companies) |
| **Verified review record** | Every verified review row pushed (only when `includeReviews` is on) | $0.0007 each ($0.70 / 1,000 reviews) |

#### Example costs

Assuming a typical mix of 50 reviews per company:

| Companies | Reviews (50/co avg) | Company cost | Review cost | **Total** |
|-----------|---------------------|--------------|-------------|-----------|
| 100 | 5,000 | $1.00 | $3.50 | **$4.50** |
| 1,000 | 50,000 | $10.00 | $35.00 | **$45.00** |
| 10,000 | 500,000 | $100.00 | $350.00 | **$450.00** |
| 100,000 | 5,000,000 | $1,000.00 | $3,500.00 | **$4,500.00** |

Set `includeReviews: false` and the cost drops to the company column only: $1.00 / $10 / $100 / $1,000 for 100 / 1,000 / 10,000 / 100,000 companies respectively.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps:

- **Apify API** — Full programmatic access to runs and datasets
- **Webhooks** — POST results to your own endpoint the moment a run completes
- **Zapier** / **Make** / **n8n** — Workflow automation across thousands of apps
- **Google Sheets** — Direct spreadsheet export for collaborative analysis
- **Slack** / **Email** — Notifications on new results

### Legal & Ethical Use

This actor collects publicly available information that RepVue chooses to display without a login wall — company profiles, aggregate ratings, and verified reviews. You are responsible for complying with RepVue's Terms of Service, the RepVue User Agreement, and all applicable laws including GDPR, CCPA, and other privacy regulations.

Do not use the collected data for harassment, doxxing, retaliation against named reviewers, or any unlawful purpose. RepVue reviewers are sales professionals sharing employer feedback — treat the data the same way RepVue's own product would, and avoid attempting to re-identify individual reviewers from role and location tags.

# Actor input Schema

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

Paste one or more RepVue inputs. Accepts full company URLs (https://www.repvue.com/companies/Salesforce), bare company slugs (Salesforce, Gong, Outreach), or directory URLs (https://www.repvue.com/companies?industry=saas). Mix any types in one list.

## `industries` (type: `array`):

Optional industry filter for directory mode. Drives a directory crawl when no specific company URLs are given. Values match RepVue's canonical directory facet list.

## `companySizes` (type: `array`):

Optional employee-size band filter for directory mode. Combine with Industries to scope a directory crawl. Ignored when every entry in URLs above resolves to a specific company.

## `includeReviews` (type: `boolean`):

Embed each company's verified sales-rep reviews as separate rows in the dataset. Turn off for a quick market scan that returns only the company-card row (rating, review count, compensation summary) — much faster and cheaper.

## `includeCompensation` (type: `boolean`):

Include compensation fields (avg OTE, base, variable, quota attainment) on each company row, plus a per-role compensation breakdown. Turn off only if you want the lightest possible payload.

## `reviewsSince` (type: `string`):

Only include reviews created on or after this date. Accepts a calendar date (2025-04-01), an ISO timestamp (2025-04-01T12:00:00Z), or a relative value like '30d', '6 months', '1 year'. Leave empty for no filter. Ignored when 'Include Verified Reviews' is off.

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

Cap on reviews captured per company (most recent first). Each review is a separate output row. Set to 0 for no cap (an internal upper limit of 2,000 still applies to prevent runaway pagination on companies with thousands of reviews). Ignored when 'Include Verified Reviews' is off.

## `maxResults` (type: `integer`):

Hard cap on total rows in the output dataset across every company (companies + reviews combined). Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 still applies; directory discovery is capped at 50,000 companies, which covers the entire current RepVue directory). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.

## Actor input object example

```json
{
  "startUrls": [],
  "industries": [],
  "companySizes": [],
  "includeReviews": true,
  "includeCompensation": true,
  "maxReviewsPerCompany": 50,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Every scraped RepVue row in one table — filterable by recordType (company vs. review).

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

Just the company-card rows — ratings, review count, and the compensation summary at a glance.

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

Just the verified review rows, ranked by recency.

# 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": [],
    "industries": [],
    "companySizes": [],
    "includeReviews": true,
    "includeCompensation": true,
    "maxReviewsPerCompany": 50,
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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": [],
    "industries": [],
    "companySizes": [],
    "includeReviews": True,
    "includeCompensation": True,
    "maxReviewsPerCompany": 50,
    "maxResults": 100,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [],
  "industries": [],
  "companySizes": [],
  "includeReviews": true,
  "includeCompensation": true,
  "maxReviewsPerCompany": 50,
  "maxResults": 100
}' |
apify call solidcode/repvue-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/repvue-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RepVue Scraper",
        "description": "From 💰 $0.7 per 1K. Extract verified sales-employer reviews, ratings, and compensation data from RepVue.com. Paste company URLs or filter the RepVue directory by industry and company size. Returns one row per company plus optional rows for each verified review (with a recordType discriminator).",
        "version": "1.0",
        "x-build-id": "EovkGfqKXmdhEbG6c"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~repvue-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-repvue-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~repvue-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-repvue-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~repvue-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-repvue-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "RepVue URLs or Company Slugs",
                        "type": "array",
                        "description": "Paste one or more RepVue inputs. Accepts full company URLs (https://www.repvue.com/companies/Salesforce), bare company slugs (Salesforce, Gong, Outreach), or directory URLs (https://www.repvue.com/companies?industry=saas). Mix any types in one list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "industries": {
                        "title": "Industries",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional industry filter for directory mode. Drives a directory crawl when no specific company URLs are given. Values match RepVue's canonical directory facet list.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Construction",
                                "Direct-to-Consumer",
                                "Education",
                                "Finance",
                                "Healthcare and Hospitals",
                                "Information Technology and Services",
                                "Internet",
                                "Leisure / Hospitality",
                                "Manufacturing",
                                "Media and Publishing",
                                "Medical Devices",
                                "Natural Resources / Mining",
                                "Pharma and Biotech",
                                "Professional / Business Services",
                                "Real Estate",
                                "Retail / Automotive",
                                "Software",
                                "Staffing and Recruiting",
                                "Telecom",
                                "Transportation",
                                "Wholesale"
                            ],
                            "enumTitles": [
                                "Construction",
                                "Direct-to-Consumer",
                                "Education",
                                "Finance",
                                "Healthcare and Hospitals",
                                "Information Technology and Services",
                                "Internet",
                                "Leisure / Hospitality",
                                "Manufacturing",
                                "Media and Publishing",
                                "Medical Devices",
                                "Natural Resources / Mining",
                                "Pharma and Biotech",
                                "Professional / Business Services",
                                "Real Estate",
                                "Retail / Automotive",
                                "Software",
                                "Staffing and Recruiting",
                                "Telecom",
                                "Transportation",
                                "Wholesale"
                            ]
                        },
                        "default": []
                    },
                    "companySizes": {
                        "title": "Company Size",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional employee-size band filter for directory mode. Combine with Industries to scope a directory crawl. Ignored when every entry in URLs above resolves to a specific company.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1-50",
                                "51-250",
                                "251-1,000",
                                "1,001-10,000",
                                "10,001+"
                            ],
                            "enumTitles": [
                                "1–50 employees",
                                "51–250 employees",
                                "251–1,000 employees",
                                "1,001–10,000 employees",
                                "10,001+ employees"
                            ]
                        },
                        "default": []
                    },
                    "includeReviews": {
                        "title": "Include Verified Reviews",
                        "type": "boolean",
                        "description": "Embed each company's verified sales-rep reviews as separate rows in the dataset. Turn off for a quick market scan that returns only the company-card row (rating, review count, compensation summary) — much faster and cheaper.",
                        "default": true
                    },
                    "includeCompensation": {
                        "title": "Include Compensation Data",
                        "type": "boolean",
                        "description": "Include compensation fields (avg OTE, base, variable, quota attainment) on each company row, plus a per-role compensation breakdown. Turn off only if you want the lightest possible payload.",
                        "default": true
                    },
                    "reviewsSince": {
                        "title": "Earliest Review Date",
                        "type": "string",
                        "description": "Only include reviews created on or after this date. Accepts a calendar date (2025-04-01), an ISO timestamp (2025-04-01T12:00:00Z), or a relative value like '30d', '6 months', '1 year'. Leave empty for no filter. Ignored when 'Include Verified Reviews' is off."
                    },
                    "maxReviewsPerCompany": {
                        "title": "Max Reviews Per Company",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on reviews captured per company (most recent first). Each review is a separate output row. Set to 0 for no cap (an internal upper limit of 2,000 still applies to prevent runaway pagination on companies with thousands of reviews). Ignored when 'Include Verified Reviews' is off.",
                        "default": 50
                    },
                    "maxResults": {
                        "title": "Max Results (Total)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on total rows in the output dataset across every company (companies + reviews combined). Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 100,000 still applies; directory discovery is capped at 50,000 companies, which covers the entire current RepVue directory). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
