# 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
- **Stats:** 34 total users, 4 monthly users, 64.6% 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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.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.

    "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/YOUR-ACTOR-ID/issues).
- **Contact**:
  - Email: [your@email.com](mailto:your@email.com)
  - Portfolio: [yourwebsite.com](https://yourwebsite.com)

---

### Customization

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

---

Let me know if you’d like to refine any section further!

# 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) calls RepVue's reviews API and, if it returns the logged-out 3-review teaser, automatically falls back to RepVue's public SEO review pages. 'sitemap' always uses the SEO pages — no login needed, but only reviews RepVue indexes for search engines are available (roughly 69% of a company's reviews). 'api' uses the API only and fails if RepVue's login gate is active.
## `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("💾 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": [
    {
      "url": "https://www.repvue.com/companies/ZoomInfo/reviews"
    }
  ]
}' |
apify call memo23/repvue-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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