# Capterra Reviews Scraper - Pros, Cons, Ratings & Switching (`headply/capterra-reviews-scraper`) Actor

Export every Capterra review for any software product: star ratings, 4 sub-ratings, pros and cons, reviewer role, industry, company size and country, plus why reviewers switched from competitors. Newest first, date and company-size filters, only-new mode.

- **URL**: https://apify.com/headply/capterra-reviews-scraper.md
- **Developed by:** [Mayowa Ogedengbe](https://apify.com/headply) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 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 Reviews Scraper

Export **every Capterra review** for any software product: overall rating, four sub-ratings (ease of use, customer service, features, value for money), likelihood to recommend, summary, **pros and cons**, the reviewer's **job title, industry, company size and country**, how long they used it, and **why they switched from a competitor**. Paste a Capterra URL, a Software Advice URL or just the product name. No login, no API key.

It is built for product marketers writing battlecards, competitive-intelligence and win/loss teams, SaaS investors doing diligence, and vendors watching their own reviews and their category.

#### Sample output (real run: Wrike, all 3,040 reviews)

| Date | Stars | Reviewer | Industry | Company size | Why they switched |
|---|---|---|---|---|---|
| 2026-05-22 | 5 | Project Manager | Computer Software | 11-50 | Asana was getting costlier and support wasn't great. But Wrike is much more budget friendly. |
| 2026-05-26 | 5 | Project Manager | IT & Services | 51-200 | Wrike has more features and has better support overall. |
| 2026-04-26 | 5 | Director, Marketing Ops | Higher Education | 201-500 | Basecamp was very simple - just a calendar with a to-do list. |
| 2026-06-08 | 3 | Marketing Operations Manager | Hospital & Health Care | 1,001-5,000 | We needed more accountability and reporting options. |

Each review also has the title, full pros, cons and summary, all sub-ratings, country, time used, frequency of use, whether the reviewer was verified or incentivised, and the vendor's reply. The whole Wrike export (3,040 reviews plus the product summary) took 75 seconds.

#### Why this one

| | This Actor | Typical Store alternative |
|---|---|---|
| Input | Capterra URL (any country site), Software Advice URL or product name | Capterra URL |
| Reviewer role, industry, company size, country | Yes, as separate fields | Often partial |
| Why they switched, why they chose it, vendor reply | Yes | Rarely |
| Filters | Stars, date, company size, reviewer country, time used | Stars at most |
| Only new reviews since the last run | Yes | Rarely |
| Products with more than 10,000 reviews | Goes past the site's 10,000 cap (Slack: 21,577 of 24,209) | Usually stop at 10,000 |
| Price | **$1.50 / 1,000 reviews**, less on higher plans, no start fee | $1 to $10 / 1,000 reviews, often plus a start fee |

**What it costs:** all 3,040 Wrike reviews = $4.56 on the free plan. The newest 100 reviews of a product = $0.15. A daily only-new check that finds 3 new reviews = $0.0045.

### What this Actor does

- Finds the product from a **Capterra URL** (capterra.com, .co.uk, .com.au, .ca and other country sites), a **Software Advice URL**, or a **product name** such as `HubSpot CRM`.
- Returns **all reviews** or the newest N, **newest first** or in Capterra's **most helpful** order.
- **Filters** by star rating, date ("newer than 2026-01-01" or "30 days"), reviewer company size, reviewer country and how long they used the product.
- **Only new reviews since my last run:** it remembers the newest review per product, so scheduled runs return, and charge for, new reviews only.
- **Switching data:** each review is matched with its record on Software Advice, which shares Capterra's review database, to add *reasons for switching*, *reasons for choosing*, the *vendor's reply* and *frequency of use*. This is done for full exports and for products with up to 500 reviews; for products with fewer than about 100 reviews Software Advice only shows the 10 most helpful.
- Adds one **product summary** row: total reviews, average ratings, % who would recommend, 1-5 star breakdown and summary pros and cons.

### What data do you get?

| Field | Example |
| --- | --- |
| reviewId | Capterra\_\_\_7201296 (same id on Capterra, Software Advice and GetApp) |
| productName, capterraId, productUrl, reviewUrl | Slack, 135003 |
| title, date | Great Team Communication Platform, 2026-08-18 |
| overallRating, easeOfUseRating, customerServiceRating, featuresRating, valueForMoneyRating | 5, 5, 4, 5, 4 |
| likelihoodToRecommend | 9 (0-10) |
| summary, pros, cons | Full text |
| reasonsForSwitching, reasonsForChoosing | Slack is overall easier to use and has more features than Teams. |
| vendorResponse | The vendor's public reply |
| reviewerName | Ashley T. (first name and last initial; empty for anonymous reviewers) |
| reviewerJobTitle, reviewerCountry | Marketing Manager, US |
| reviewerIndustry, reviewerCompanySize | Marketing and Advertising, 11-50 |
| timeUsed, frequencyOfUse | 1-2 years, Daily |
| reviewerVerified, incentivized, reviewSource | true, false, This review was submitted organically. |

Product rows (`type: product`) carry totalReviews, the average of every rating, recommendPercent, ratingBreakdown and prosSummary / consSummary.

### How to scrape Capterra reviews

1. Paste one or more **Capterra product URLs**, for example `https://www.capterra.com/p/135003/Slack/`, or product names.
2. Set **Max reviews per product** (0 for all).
3. Optionally pick an order and filters, or turn on **Only new reviews since the last run**.
4. Run it, or schedule it, and export to JSON, CSV or Excel.

#### Example: 1- and 2-star reviews of three competitors from large companies

```json
{
  "products": ["https://www.capterra.com/p/147657/monday-com/", "Asana", "https://www.capterra.com/p/76113/Wrike/"],
  "maxReviewsPerProduct": 0,
  "ratings": ["1", "2"],
  "companySizes": ["F", "G", "H", "I"]
}
```

#### Example: monitor your own product every day

```json
{
  "products": ["https://www.capterra.com/p/135003/Slack/"],
  "maxReviewsPerProduct": 0,
  "onlyNewReviews": true,
  "includeProductSummary": false
}
```

### How much does it cost?

You pay per review returned: $1.50 per 1,000 on the free plan, down to $1.00 on Gold and above, plus $0.005 per product summary row (turn it off if you don't need it). There is no start fee, and reviews that your filters skip are not charged. Current prices are on the pricing tab.

### FAQ

**Is this the same data as capterra.com?** Yes. Capterra, Software Advice and GetApp (all owned by G2) show the same review database; the review ids match across the three sites.

**How far back does it go?** For products with up to 10,000 reviews, to the first review. The site stops every listing at 10,000 reviews, so for larger products the Actor splits the export by reviewer company size: a full Slack export returned 21,577 of its 24,209 reviews (2015 to today) in 6 minutes. Early reviews without a company size can't be reached this way.

**Why are some fields empty?** Reviewers skip optional questions: about 85% of reviews have pros and cons, most have job title and industry, and around 1 in 12 says why they switched.

### Use it as an API

Run it from your own code and get the results back in one call. Replace `YOUR_TOKEN` with your [Apify API token](https://console.apify.com/settings/integrations).

```bash
curl -X POST "https://api.apify.com/v2/acts/headply~capterra-reviews-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"products": ["https://www.capterra.com/p/135003/Slack/"], "maxReviewsPerProduct": 100}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run_input = {"products": ["https://www.capterra.com/p/135003/Slack/"], "maxReviewsPerProduct": 100}
run = client.actor("headply/capterra-reviews-scraper").call(run_input=run_input)
for item in client.dataset(run.default_dataset_id).iterate_items():   # apify-client 3.x
    print(item)
```

It also works from Make, Zapier, n8n, Google Sheets and as a tool for AI agents through the [Apify MCP server](https://mcp.apify.com/?tools=headply/capterra-reviews-scraper).

### More data tools from the same developer

- [Yelp Scraper & API](https://apify.com/headply/yelp-scraper): every business in a city with phones, websites and all reviews
- [Yelp Reviews Scraper](https://apify.com/headply/yelp-reviews-scraper): every Yelp review with owner replies, only-new mode
- [Google Trends Scraper & API](https://apify.com/headply/google-trends-scraper): hundreds of keywords on one scale, daily history
- [Threads Scraper & API](https://apify.com/headply/threads-scraper): posts, reply trees, profiles and keyword search from Threads
- [TikTok & YouTube Transcript API](https://apify.com/headply/tiktok-youtube-transcript-scraper): video to text, even without captions
- [Airbnb & Vrbo Scraper](https://apify.com/headply/airbnb-vrbo-scraper): listings, calendars, occupancy and revenue
- [Jumia Scraper & API](https://apify.com/headply/jumia-price-intelligence): prices and sellers across 8 African countries

# Changelog

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

# Actor input Schema

## `products` (type: `array`):

Capterra product URLs such as <b>https://www.capterra.com/p/135003/Slack/</b> (any Capterra country site works), Software Advice URLs, or plain product names like <b>HubSpot CRM</b>. One per line.

## `maxReviewsPerProduct` (type: `integer`):

Stop after this many reviews for each product. 0 = all reviews.

## `sort` (type: `string`):

Newest first, or Capterra's 'most helpful' order. Date filters and 'only new reviews' always use newest first.

## `reviewsNewerThan` (type: `string`):

Skip reviews written before this date. A date (2026-01-31) or a relative period (30 days, 6 months, 1 year).

## `onlyNewReviews` (type: `boolean`):

For scheduled monitoring: each run returns only the reviews added since the previous run of this Actor for the same product and filters, so you pay only for what is new.

## `ratings` (type: `array`):

Keep only reviews with these overall star ratings, for example 1 and 2 to collect complaints. Empty = all ratings.

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

Keep only reviewers from companies of these sizes. Empty = all sizes.

## `reviewerCountries` (type: `array`):

Two-letter country codes of reviewers to keep, for example <b>us</b>, <b>gb</b>, <b>ca</b>, <b>in</b>. Empty = all countries.

## `timeUsed` (type: `array`):

Keep only reviewers who used the product for this long. Empty = all.

## `includeProductSummary` (type: `boolean`):

One row per product with the total review count, average ratings (overall, ease of use, customer service, features, value for money), % who recommend it, the 1-5 star breakdown and the review summary pros and cons.

## `includeSwitchingDetails` (type: `boolean`):

Match each review with its record on Software Advice (same review database) to add why the reviewer switched from another product, why they chose this one, the vendor's reply, how often they use it and whether the reviewer was verified. Done for full exports and for products with up to 500 reviews; for products with fewer than about 100 reviews Software Advice only shows the 10 most helpful ones.

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

How many pages to load at the same time.

## Actor input object example

```json
{
  "products": [
    "https://www.capterra.com/p/135003/Slack/"
  ],
  "maxReviewsPerProduct": 20,
  "sort": "most_recent",
  "onlyNewReviews": false,
  "includeProductSummary": true,
  "includeSwitchingDetails": true,
  "maxConcurrency": 10
}
```

# Actor output Schema

## `results` (type: `string`):

One item per review and one summary per product.

## `all` (type: `string`):

Every field of every row.

# 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 = {
    "products": [
        "https://www.capterra.com/p/135003/Slack/"
    ],
    "maxReviewsPerProduct": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("headply/capterra-reviews-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 = {
    "products": ["https://www.capterra.com/p/135003/Slack/"],
    "maxReviewsPerProduct": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("headply/capterra-reviews-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 '{
  "products": [
    "https://www.capterra.com/p/135003/Slack/"
  ],
  "maxReviewsPerProduct": 20
}' |
apify call headply/capterra-reviews-scraper --silent --output-dataset

```

## MCP server setup

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