# Capterra Review Scraper (`parsebird/capterra-review-scraper`) Actor

Extract Capterra software reviews: ratings breakdown, pros and cons, reviewer profile, validation status, and incentive disclosure. Works on any Capterra product or reviews URL.

- **URL**: https://apify.com/parsebird/capterra-review-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.59 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

### Capterra Review Scraper

Capterra Review Scraper extracts software reviews from [Capterra](https://www.capterra.com) — full ratings breakdown, pros and cons, reviewer profile, and incentive disclosure — from any product or reviews URL.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Pull overall, ease-of-use, customer-service, features, value-for-money, and likelihood-to-recommend ratings, plus pros, cons, and validated reviewer details, from any Capterra product.
</td>
</tr></table>

##### Copy to your AI assistant

```
Use the Apify actor "parsebird/capterra-review-scraper" via the ApifyClient to scrape Capterra software reviews. Example: client.actor("parsebird/capterra-review-scraper").call(run_input={"url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/", "results_wanted": 50, "max_pages": 4}). Inputs: url (string, required — a Capterra product page or reviews page, optionally with ?page=N to start from a later page), results_wanted (integer, default 20, max reviews to collect), max_pages (integer, default 3, max review pages to fetch — each page holds up to 25 reviews), proxyConfiguration (object, defaults to Apify's Unblocker proxy group, required — Capterra's Cloudflare protection blocks Datacenter and Residential proxies). Output fields per review include review_id, product_name, review_title, review_date, overall_rating, ease_of_use_rating, customer_service_rating, features_rating, value_for_money_rating, likelihood_to_recommend_rating, reviewer_name, reviewer_title, reviewer_industry, reviewer_company_size, reviewer_time_used, reviewer_validated, reviewer_validations, pros, cons, general_comments, advice_to_others, chosen_reasons, switching_reasons, incentive, source_site, review_source_code, review_source, product_url, page, and total_reviews. Full API spec: https://apify.com/parsebird/capterra-review-scraper/api. Get an API token at https://console.apify.com/settings/integrations.
```

### What does Capterra Review Scraper do?

Capterra Review Scraper is a review-extraction tool for **Capterra**, the software review and comparison platform used by buyers researching business software. Give it a product page or reviews page, and it returns every review Capterra shows — full rating breakdown, pros, cons, reviewer profile, and incentive disclosure — ready for a spreadsheet, sentiment model, or competitive analysis.

- 📝 Full ratings breakdown: overall, ease of use, customer service, features, value for money, and likelihood to recommend
- 👤 Reviewer profile: name, job title, industry, company size, time used, and profile photo
- ✅ Validation status and validation methods (LinkedIn, business email, proof of link)
- 💬 Pros, cons, general comments, advice to others, and reasons for choosing/switching
- 🎁 Incentive disclosure — know whether a review was incentivized or organic
- 🔁 Automatic pagination, or start from a specific page with `?page=N`
- ⚙️ Runs on Apify's infrastructure with scheduling, API access, and integrations

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| url | string | **Yes** | — | A Capterra product or reviews URL. |
| results\_wanted | integer | No | `20` | Maximum number of reviews to collect. |
| max\_pages | integer | No | `3` | Maximum number of review pages to fetch. Each page usually holds up to 25 reviews. |
| proxyConfiguration | object | No | Unblocker (US) | Proxy settings. Capterra's Cloudflare protection blocks Datacenter and Residential proxies — Unblocker is required. |

#### Basic extraction

```json
{
  "url": "https://www.capterra.com/p/190778/QuickBooks-Online/",
  "results_wanted": 20
}
```

#### Larger collection

```json
{
  "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
  "results_wanted": 50,
  "max_pages": 4
}
```

#### Start from a later page

```json
{
  "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/?page=2",
  "results_wanted": 25,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["UNBLOCKER"]
  }
}
```

### What data can you extract from Capterra?

| Field | Description |
|-------|-------------|
| review\_id, product\_name, review\_title, review\_date | Review identifiers and metadata |
| overall\_rating, ease\_of\_use\_rating, customer\_service\_rating, features\_rating, value\_for\_money\_rating, likelihood\_to\_recommend\_rating | Full rating breakdown |
| reviewer\_name, reviewer\_title, reviewer\_industry, reviewer\_company\_size, reviewer\_time\_used, reviewer\_profile\_image | Reviewer profile |
| reviewer\_validated, reviewer\_validations | Validation status and methods |
| pros, cons, general\_comments, advice\_to\_others, chosen\_reasons, switching\_reasons | Review content |
| incentive, source\_site, review\_source\_code, review\_source | Incentive and source disclosure |
| product\_url, page, total\_reviews | Metadata for auditing and pagination |

### Output example

```json
{
  "review_id": "Capterra___7174523",
  "product_name": "QuickBooks Online",
  "review_title": "Reliable Accounting Software That Saves Time and Simplifies Financial Management",
  "review_date": "June 24, 2026",
  "overall_rating": 4,
  "ease_of_use_rating": 5,
  "customer_service_rating": 2,
  "features_rating": 3,
  "value_for_money_rating": 4,
  "likelihood_to_recommend_rating": 7,
  "reviewer_name": "Jeff H.",
  "reviewer_title": "Front office manager",
  "reviewer_industry": "Medical Practice",
  "reviewer_company_size": "11 - 50 employees",
  "reviewer_time_used": "More than 2 years",
  "reviewer_validated": true,
  "reviewer_validations": ["ProofOfLink"],
  "pros": "I feel like QuickBooks provides good value for what you pay...",
  "cons": "Customer support has been helpful whenever I've needed assistance...",
  "incentive": "NoIncentive",
  "source_site": "Capterra",
  "product_url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
  "page": 1,
  "total_reviews": 8483
}
```

Download results as **JSON, CSV, Excel, HTML, or XML** from the Apify Console, or pull them programmatically through the [Apify API](https://docs.apify.com/api/v2).

### How to scrape Capterra reviews

1. Open **Capterra Review Scraper** on the Apify Store and click **Try for free**.
2. Paste a Capterra product or reviews URL into the **URL** field.
3. Set **Max reviews** and **Max pages**.
4. Click **Start** and wait for the run to finish.
5. Open the **Dataset** tab to view, filter, and export the scraped reviews.

### How it works

1. The Actor normalizes the input URL to its reviews page, respecting any `?page=N` already in the URL as the starting page.
2. A real browser session (routed through Apify's Unblocker proxy) loads each review page and reads the review data Capterra embeds in the page.
3. Pages are fetched one after another until `max_pages` or `results_wanted` is reached, or a page comes back with fewer than a full page of reviews.
4. Every review is written as one dataset row as soon as it's collected.

### How much does it cost to scrape Capterra?

Capterra Review Scraper uses **pay-per-event** pricing — you're charged only for reviews actually saved to your dataset.

| Plan | Price per review | Price per 1,000 |
|------|-------------------|------------------|
| Free | $0.00089 | **$0.89** |
| Bronze | $0.00079 | **$0.79** |
| Silver | $0.00069 | **$0.69** |
| Gold | $0.00059 | **$0.59** |

Collecting 1,000 reviews on the Free plan costs about $0.89. Apify's [monthly platform usage credits](https://apify.com/pricing) apply to this Actor like any other.

### Using the API

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("parsebird/capterra-review-scraper").call(run_input={
    "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
    "results_wanted": 100,
    "max_pages": 5,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["reviewer_name"], item["overall_rating"], item["review_title"])
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/capterra-review-scraper').call({
    url: 'https://www.capterra.com/p/190778/QuickBooks-Online/reviews/',
    results_wanted: 100,
    max_pages: 5,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Schedule recurring runs to track new reviews week over week, or connect it to Zapier/Make through Apify's [integrations](https://apify.com/integrations).

### Is it legal to scrape Capterra?

Scraping publicly available data — like reviews shown on a public Capterra product page — is generally considered legal, and courts have repeatedly upheld this for public web pages. This Actor only collects review data Capterra already displays to any visitor; it never accesses private reviewer accounts. You are responsible for how you use the collected data and for complying with Capterra's terms of service and applicable law in your jurisdiction. See Apify's [blog post on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for more detail.

### FAQ

**Why does the Actor need Unblocker proxies specifically?**
Capterra is protected by Cloudflare. Datacenter and Residential proxies get stuck on the Cloudflare challenge page — Unblocker is the only proxy group that reliably gets through, so it's the required default.

**What's the difference between a product URL and a reviews URL?**
Both work as input — a product URL (`.../p/<id>/<slug>/`) is automatically normalized to its reviews page (`.../p/<id>/<slug>/reviews/`) before scraping.

**How many reviews are on each page?**
Up to 25. If a page comes back with fewer, the Actor treats it as the last page and stops.

**Can I start from a specific page instead of page 1?**
Yes. Add `?page=N` to the URL you provide and the Actor starts from that page.

**Why might a review field be empty?**
Not every reviewer fills in every field — `chosen_reasons`, `switching_reasons`, and `advice_to_others` are optional on Capterra's own review form, so they're often blank.

**Can I schedule recurring runs?**
Yes. Use Apify's [Scheduler](https://docs.apify.com/platform/schedules) to run this Actor daily, weekly, or at any interval.

**Does this Actor have an API?**
Yes — every Apify Actor is automatically available as an API. See the [API tab](https://apify.com/parsebird/capterra-review-scraper/api) for the full spec, or use the Python/JavaScript examples above.

**Something not working?**
Report it on the Actor's **Issues** tab in Apify Console — Capterra occasionally changes its site, and prompt reports help keep this Actor maintained.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/capterra-review-scraper/changelog.md

# Actor input Schema

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

A Capterra product page (capterra.com/p/<id>/<slug>/) or reviews page (.../reviews/), optionally with ?page=N to start from a later page.

## `results_wanted` (type: `integer`):

Maximum number of reviews to collect in this run.

## `max_pages` (type: `integer`):

Maximum number of review pages to fetch. Each page usually contains up to 25 reviews.

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

Capterra is protected by Cloudflare. Datacenter and Residential proxies get stuck on the Cloudflare challenge — this Actor needs Apify's Unblocker proxy group to load pages successfully.

## Actor input object example

```json
{
  "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
    "results_wanted": 20,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/capterra-review-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 = {
    "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
    "results_wanted": 20,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/capterra-review-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 '{
  "url": "https://www.capterra.com/p/190778/QuickBooks-Online/reviews/",
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call parsebird/capterra-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/capterra-review-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/o4cb2pdS3jQM3Pqdh/builds/3sheU5FKPdEnNemkp/openapi.json
