# Repvue.com \[Only $0.75💰] Reviews Scraper (PPE) (`memo23/repvue-scraper`) Actor

💰 $0.75 per 1,000 results. Stop guessing—scrape verified Repvue reviews, comp data & company trends instantly. Your edge in hiring, sales & market research.

- **URL**: https://apify.com/memo23/repvue-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Automation, Jobs, Lead generation
- **Features:** Limited permissions
- **Stats:** 40 total users, 5 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.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.

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.com Reviews Scraper

Extract structured company profiles, employee reviews, and compensation data from [Repvue.com](https://www.repvue.com). Ideal for recruiters, HR professionals, and sales leaders seeking insights into company cultures, compensation trends, and employee experiences.

***

### Features

- **Company & Review Scraping**:
  - Extract detailed company profiles, including ratings, size, and industry.
  - Scrape employee reviews (pros/cons, compensation details, interview experiences).
- **Customizable Limits**:
  - Set `maxReviews` to cap reviews per company and `maxItems` to limit total companies.
- **Performance Control**:
  - Adjust `maxConcurrency`, `minConcurrency`, and `maxRequestRetries` for efficient scraping.
- **Residential Proxy Support**:
  - Avoid blocks with Apify Proxy’s residential IPs (default configuration).
- **Structured Datasets**:
  - Output JSON/CSV data ready for analysis in BI tools or spreadsheets.

***

### Usage Examples

#### 1. Scrape a Single Company's Reviews

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

#### 2. Scrape Companies from Search Results + Their Reviews

```json
{
    "startUrls": [
        {
            "url": "https://www.repvue.com/companies?industries.name=Healthcare%20and%20Hospitals&funding_source=Public&per_page=100"
        }
    ],
    "maxItems": 50, // Scrape 50 companies from search
    "maxReviews": 20 // Scrape 20 reviews per company
}
```

#### 3. Use API Endpoints Directly (Advanced)

```json
{
    "startUrls": [
        {
            "url": "https://api.repvue.com/api/companies?industries.name[]=Information+Technology&per_page=100"
        }
    ],
    "maxItems": 200
}
```

***

### How It Works

#### For Search/API URLs:

1. The scraper extracts company profiles from the search results or API response.
2. For each company, it navigates to its review page (e.g., `.../companies/{CompanyName}/reviews`).
3. Reviews are scraped up to the `maxReviews` limit.

#### For Direct Review URLs:

1. The scraper bypasses search and directly extracts reviews from the provided URL.

***

### URL Structure Support

| URL Type                  | Example                                                                                     | Use Case                                                                 |
|---------------------------|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
| **Company Reviews**        | `https://www.repvue.com/companies/ZoomInfo/reviews`                                         | Target a specific company’s reviews.                                    |
| **Filtered Search**        | `https://www.repvue.com/companies?size=1-50&industries.name=Healthcare%20and%20Hospitals`   | Scrape companies matching filters (size, industry, funding, etc.).     |
| **Paginated API**          | `https://api.repvue.com/api/companies?per_page=100&industries.name[]=Software`              | Directly scrape structured company data from Repvue’s API (advanced).   |

***

### Benefits of Multi-URL Support

- **Flexibility**: Start with a single company, a filtered search, or raw API endpoints.
- **Scalability**: Scrape thousands of companies/reviews by iterating through search pages.
- **Precision**: Use Repvue’s built-in filters (size, industry, funding) to target specific datasets.

***

### How to Use

#### On Apify Platform

1. **Configure Input**:
   - Add **Start URLs** (e.g., company review pages like `https://www.repvue.com/companies/ZoomInfo/reviews`).
   - Set `maxReviews` (reviews per company) and `maxItems` (companies per crawl).
2. **Tweak Advanced Settings**:
   - Adjust `maxConcurrency` (parallel requests) and `maxRequestRetries` (failed request retries).
3. **Run the Actor**:
   - Execute the scraper and monitor via Apify dashboard.
4. **Export Data**:
   - Download results in JSON, CSV, Excel, or integrate via API.

***

### Input Configuration

#### Example Input

```json
{
    "startUrls": [
        { "url": "https://www.repvue.com/companies/ZoomInfo/reviews" }
    ],
    "maxReviews": 50,
    "targetDate": "2024-06-01",
    "maxItems": 20,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

#### Input Fields Explained

| Parameter             | Description                                                                 | Default |
|-----------------------|-----------------------------------------------------------------------------|---------|
| **`startUrls`**       | URLs to start scraping (e.g., company profile/review pages).                | `[]`    |
| **`targetDate`**      | Optional date filter; keeps only reviews with `created_at` on or after this date (YYYY-MM-DD). | `null` (no filter) |
| **`maxReviews`**      | Max reviews to scrape per company.                                          | `100`   |
| **`maxItems`**        | Max companies to scrape (if using a search URL as a start URL).             | `100`   |
| **`maxConcurrency`**  | Max parallel pages processed.                                               | `10`    |
| **`minConcurrency`**  | Min parallel pages processed.                                               | `1`     |
| **`maxRequestRetries`** | Retry failed requests this many times before skipping.                    | `100`   |
| **`proxy`**           | Proxy settings (residential recommended).                                  | `Apify Proxy` |

***

### Output Structure

#### Sample Output (Company + Reviews)

```json
{
    "companyName": "ZoomInfo",
    "companyUrl": "https://www.repvue.com/companies/ZoomInfo",
    "overallRating": 4.2,
    "reviewCount": 85,
    "reviews": [
        {
            "reviewText": "Great work-life balance...",
            "rating": 4.5,
            "pros": ["Flexible hours", "Supportive management"],
            "cons": ["High quotas"],
            "compensation": {
                "baseSalary": "$80k",
                "OTE": "$160k",
                "commission": "20%"
            },
            "interviewExperience": "3 rounds, moderately challenging",
            "datePosted": "2024-02-10"
        }
    ],
    "metadata": {
        "scrapedAt": "2024-03-20T12:00:00Z"
    }
}
```

***

### Output Field Explanations

```json
{
    "id": 56688,
    "avatar_color": "yellow",
    "body": "Nothing but amazing things to say about Tractian. Humble, hardworking team with growth opportunities at every turn. I feel honored and privileged to be a part of this team.",
    "content_categories": [
        {
            "id": 99624,
            "category": "Culture and Leadership"
        },
        {
            "id": 99625,
            "category": "Professional Development and Training"
        }
    ],
    "created_at": "2024-12-16T20:20:54.209+0000",
    "pinned": true,
    "rating": {
        "id": 350664,
        "average_metric_rating": 5,
        "created_at": "2024-12-16T20:19:44.757+0000",
        "type": "RegularRating",
        "user_color": "yellow",
        "user_status": "Current Employee"
    },
    "rating_verified": true,
    "response": null,
    "slug": "tractian-review-fhox1vbc",
    "upvotes": 0
}
```

#### Field Explanations

| Field                | Type      | Description                                                                                               | Possible Values/Notes                                                                 |
|----------------------|-----------|-----------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| **`id`**             | Integer   | Unique identifier for the review.                                                                         | Example: `56688`                                                                      |
| **`avatar_color`**   | String    | Color code or name associated with the reviewer’s avatar.                                                | Values like `yellow`, `blue`, `green` (determined by Repvue’s UI logic).              |
| **`body`**           | String    | Full text of the employee review.                                                                        | Plain text containing pros/cons, experiences, or opinions.                           |
| **`content_categories`** | Array | Categories assigned to the review (e.g., topics it addresses).                                           | Objects with `id` (unique category ID) and `category` (category name).               |
| **`created_at`**     | String    | Timestamp when the review was posted.                                                                    | ISO 8601 format (e.g., `2024-12-16T20:20:54.209+0000`).                              |
| **`pinned`**         | Boolean   | Indicates if the review is pinned to the top of the company’s review section.                           | `true` = Pinned by company/moderation; `false` = Not pinned.                         |
| **`rating`**         | Object    | Detailed rating metadata:                                                                                | Nested fields below.                                                                  |
| → **`id`**           | Integer   | Unique identifier for the rating entry.                                                                  | Example: `350664`.                                                                   |
| → **`average_metric_rating`** | Float | Average score given by the reviewer across all rating metrics (e.g., culture, compensation).            | Scale: `1.0` (lowest) to `5.0` (highest).                                            |
| → **`created_at`**   | String    | Timestamp when the rating was submitted.                                                                 | ISO 8601 format (may differ slightly from review timestamp).                         |
| → **`type`**         | String    | Type of rating (e.g., regular, anonymous).                                                              | Example: `RegularRating` (default), `AnonymousRating`.                               |
| → **`user_color`**   | String    | Color code/name linked to the reviewer’s status (e.g., current/former employee).                        | Matches `avatar_color` in most cases.                                                |
| → **`user_status`**  | String    | Employment status of the reviewer at the time of the review.                                            | `Current Employee`, `Former Employee`, `Contractor`, etc.                            |
| **`rating_verified`**| Boolean   | Indicates if Repvue has verified the authenticity of the review.                                        | `true` = Verified; `false` = Unverified.                                             |
| **`response`**       | Object    | Company’s public response to the review (if any).                                                       | `null` = No response; otherwise, contains response text and metadata.                |
| **`slug`**           | String    | URL-friendly identifier for the review.                                                                  | Example: `tractian-review-fhox1vbc` (used in URLs like `/reviews/[slug]`).           |
| **`upvotes`**        | Integer   | Number of upvotes the review has received from other users.                                             | `0` = No upvotes; increases as users vote.                                           |

````

---

#### Key Notes:
- **`pinned`**: Useful for identifying reviews highlighted by the company or platform moderators.
- **`rating_verified`**: Adds credibility to the review (e.g., confirms the reviewer was a verified employee).
- **`response`**: If the company replies, this field will include their response text and timestamps.
- **`slug`**: Use this to construct direct links to the review (e.g., `https://www.repvue.com/reviews/[slug]`).


### Benefits

- **Targeted Data**: Focus on specific companies or industries with custom `startUrls`.
- **Scalability**: Scrape hundreds of companies/reviews with proxy rotation and retries.
- **Analysis-Ready**: Structured data for trend analysis (e.g., compensation benchmarks).
- **Low Maintenance**: Built-in error handling and residential proxy support.

---

### Why Use This Scraper?

Repvue.com is a goldmine for sales and recruitment insights, but manual data collection is time-consuming. This scraper offers:
- **Accuracy**: Extract nested review data and ratings.
- **Reliability**: Retry failed requests up to 100 times.
- **Anonymity**: Residential proxies to avoid IP blocks.

---

### Support

- **Issues**: Report bugs or request features via [Apify Console](https://console.apify.com/actors/memo23/repvue-scraper/issues).
- **Contact**:
  - Email: [muhamed.didovic@gmail.com](mailto:muhamed.didovic@gmail.com)

---

### Customization

Need adjustments? Contact [muhamed.didovic@gmail.com](mailto:muhamed.didovic@gmail.com) for:
- Additional data fields (e.g., leadership team details).
- Integration with CRM/ATS systems.
- Scrapers for other platforms (e.g., G2, Glassdoor).

---

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/repvue-scraper`).

**Purpose:** Extract RepVue company profiles, employee reviews, and compensation data from company-review, filtered-search, or `api.repvue.com` URLs.

**Minimal input:**

```json
{
  "startUrls": [{ "url": "https://www.repvue.com/companies/ZoomInfo/reviews" }],
  "maxReviews": 20,
  "maxItems": 20,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "reviewSource": "auto",
  "enrichEmails": false,
  "includeCompanyProfile": false,
  "skipReviews": false,
  "targetDate": "",
  "repvueEmail": "",
  "repvuePassword": "",
  "proxy": { "useApifyProxy": true }
}
````

**Output:** Per company — `companyName`, `companyUrl`, `overallRating`, `reviewCount`, and a `reviews[]` array; each review has `id`, `body`, `rating` {average_metric_rating, user_status}, `content_categories[]`, `created_at`, `rating_verified`, `pinned`, `response`, `slug`, `upvotes`. With `includeCompanyProfile`: adds an aggregate profile item (RepVue Score, overall/industry percentiles, category rankings, per-role compensation base/OTE/top-performer/sample-size, headcount).

**Behaviors an agent should know:**

- `startUrls` accepts direct company-review URLs, filtered-search URLs, and `api.repvue.com` endpoints; search URLs resolve to each company, then its reviews.
- `maxItems` caps companies (for search URLs), `maxReviews` caps reviews per company — set both; defaults are 100 each.
- `reviewSource`: `auto` (API, falling back to public pages), `sitemap` (public pages only, ~95% coverage, no login), `api` (API only). RepVue login-gates full review text; anonymous callers get a 3-review teaser.
- `repvueEmail`/`repvuePassword` are optional — your own account unlocks full review coverage and is never stored. `skipReviews` + `includeCompanyProfile` gives a public-data-only run.
- `enrichEmails` (default false) adds a contact email per result; billed per email found, never for misses.
- Pay-per-event billing — see the Pricing tab on the actor page.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by RepVue, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper reads publicly available RepVue company and review pages by default and does not bypass or circumvent RepVue's authentication. If you supply your own RepVue account credentials, the Actor signs in as you solely to broaden review coverage for your own run. Users are responsible for ensuring their use complies with RepVue's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

RepVue scraper, scrape RepVue, RepVue.com scraper, RepVue API, Apify RepVue, company reviews scraper, employee reviews scraper, sales compensation scraper, salary data scraper, recruitment intelligence data, sales job research, OTE benchmark data, company culture insights, sales org ratings, tech sales intelligence

# Actor input Schema

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

URLs to start with.

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

The date to filter reviews by (optional, YYYY-MM-DD format)

## `maxReviews` (type: `integer`):

Maximum number of reviews to scrape per company.

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

Maximum number of companies to scrape per crawl.

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

Maximum number of pages that can be processed at the same time.

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

Minimum number of pages that will be processed at the same time.

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

Number of times the crawler will retry a failed request before giving up.

## `enrichEmails` (type: `boolean`):

If enabled, finds a contact email for each result from its own website (or by discovering it from the name). Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Billed per contact email found; only charged when an email is returned, never for misses.

## `repvueEmail` (type: `string`):

Email of your own RepVue account. Leave empty to run without signing in.

## `repvuePassword` (type: `string`):

Password for the RepVue account above. Store it as a secret so it is encrypted and hidden from run logs.

## `reviewSource` (type: `string`):

Where review text comes from. 'auto' (recommended) reads reviews from RepVue's API (full coverage) and automatically falls back to RepVue's public SEO review pages if the API is unavailable. 'sitemap' always uses the public pages — discovers reviews via RepVue's sitemap plus related-review links, typically reaching about 95% of a company's reviews, newest included. 'api' uses the API only and fails if it is unavailable.

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

Adds an aggregate company profile item per company from RepVue's official LLM markdown feed: RepVue Score, overall/industry percentiles, category rankings and 6-month trends, per-role compensation (base / OTE / top performer / sample size), rating counts and headcount. This feed is public and requires no login. Note: it contains no review text, and quota attainment / future outlook / AI impact are member-only on RepVue.

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

Do not call the review-body API. RepVue login-gates written reviews (anonymous callers get a 3-review teaser), so enable this together with 'Include company profile' to run purely on RepVue's public data feed.

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

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.repvue.com/companies/ZoomInfo/reviews"
    }
  ],
  "maxReviews": 100,
  "maxItems": 100,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "enrichEmails": false,
  "reviewSource": "auto",
  "includeCompanyProfile": false,
  "skipReviews": false
}
```

# 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"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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" }] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/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"
    }
  ]
}' |
apify call memo23/repvue-scraper --silent --output-dataset

```

## MCP server setup

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