# Capterra Reviews Scraper API — Ratings, Pros & Competitor Intel (`trakk/capterra-reviews-scraper`) Actor

Scrape Capterra software reviews by product, keyword or category. Get all 6 ratings, pros & cons, verified reviewer profiles, vendor replies, and competitor intel — the rivals each buyer considered or switched from. 14 filters. Export to CSV, Excel & JSON. No login.

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

## Pricing

$2.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.

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 📝

Turn Capterra software reviews into clean, structured data — by product, by search keyword, or by whole
category. Every review comes back with **all six ratings parsed**, the **full reviewer profile**, the vendor's
reply, and something no other Capterra scraper gives you: **the competing products each buyer considered or
switched from.**

No account. No login. Point it at a product and go.

***

### What you can do with it

- 📊 **Benchmark a product** — pull its full review history with every sub-score as a number, ready to average.
- 🔍 **Compare a whole category** — feed a category page and scrape the top products in one run.
- 🎯 **Isolate the reviews that matter** — critics only, enterprise only, verified only, a date window, a keyword.
- ⚔️ **Win/loss & competitive intel** — see which rivals buyers weighed, and get a ranked report of them.
- 📥 **Feed anything** — export to CSV, Excel, JSON or XML, or pull straight from the API.

***

### Why this scraper

Most Capterra scrapers hand you a star and the review text. This one gives you the parts that make the data
usable for real decisions:

| | Typical scraper | This scraper |
|---|---|---|
| Ratings | overall star only | **all 6**: overall, ease of use, customer service, features, value, likelihood to recommend |
| Reviewer | name | job title, industry, **company size**, time used, verified status |
| Competitive intel | ✗ | ✅ **alternatives considered + switched from + reasons**, per review |
| Vendor reply | ✗ | ✅ included when present |
| Inputs | one product | **product URLs · search keywords · category pages** |
| Filters | star only | **14 filters** (rating, company size, role tenure, date, keyword, verified, and more) |
| Product summary | ✗ | ✅ free per-product summary |

***

### What one review looks like

```json
{
  "productName": "Slack",
  "productCategory": "Business Application",
  "title": "Great for team collaboration",
  "publishedDate": "2026-08-20",

  "overallRating": 5.0,
  "easeOfUseRating": 5.0,
  "customerServiceRating": 5.0,
  "featuresRating": 5.0,
  "valueForMoneyRating": 4.0,
  "likelihoodToRecommend": 10.0,

  "pros": "Channel creation, threaded conversations, and easy integrations.",
  "cons": "Notifications can get noisy on big workspaces.",
  "comments": "Wonderful for keeping the whole team aligned.",

  "timeUsedProduct": "2+ years",
  "verified": true,
  "incentivized": "NoIncentive",

  "alternativesConsidered": ["Microsoft Teams"],
  "switchedFrom": ["Skype for Business"],
  "vendorResponse": null,

  "reviewerName": "Abhishek M.",
  "reviewerJobTitle": "Subject Matter Expert",
  "reviewerIndustry": "Financial Services",
  "reviewerCompanySize": "201-500 employees",
  "reviewerVerifiedLinkedIn": true,
  "reviewUrl": "https://www.capterra.com/p/135003/Slack/"
}
```

You also get, **for free**:

- 🏷️ a **product summary** per product (overall rating, total review count, category) in a separate Products dataset;
- 🧭 a **Competitive Intelligence** report in the run's storage, ranking the alternatives buyers mention most.

***

### Inputs — three ways to point it at reviews

| field | what it does |
|---|---|
| `productUrls` | one or more Capterra product pages (`/p/<id>/<name>/`) |
| `searchQueries` | find products by keyword — top matches are resolved to real products (no guessing by name) |
| `categoryUrls` | a Capterra category page — scrapes the products listed on it |
| `maxItems` | total cap on reviews saved across the run |
| `maxReviewsPerProduct` | cap per product |
| `maxProductsPerQuery` | how many top products to take from each search / category |
| `sort` | most recent · most helpful · highest / lowest rated · most complete |
| `includeProductAggregate` | save the free per-product summary (on by default) |

You only pay for reviews that are actually saved — **duplicates and filtered-out reviews are never charged.**

***

### 🎛️ Filters — keep only the reviews you want

| filter | keeps |
|---|---|
| `minOverallRating` · `maxOverallRating` | reviews in a star range — promoters or critics |
| `minLikelihoodToRecommend` | reviews with a recommendation score (0–10) at least this high |
| `companySizes` | reviewers from companies of these sizes |
| `timeUsedProduct` · `frequencyOfUse` | by how long / how often they used it |
| `industries` | reviewers in these industries |
| `reviewedAfter` · `reviewedBefore` | reviews inside a date window |
| `keywords` | reviews whose text mentions your terms |
| `onlyVerified` | only Capterra-validated reviewers |
| `excludeIncentivized` | organic reviews only (no gift-card reviews) |
| `onlyWithVendorResponse` | only reviews the vendor publicly replied to |
| `onlyWithAlternatives` | only reviews naming a competitor — the win/loss rows |

***

### 🧪 Recipes

**All reviews for one product, freshest first**

```json
{ "productUrls": [{ "url": "https://www.capterra.com/p/135003/Slack/" }],
  "sort": "MOST_RECENT", "maxReviewsPerProduct": 500 }
```

**Just the critics (1–2★), most recent**

```json
{ "productUrls": [{ "url": "https://www.capterra.com/p/135003/Slack/" }],
  "sort": "LOWEST_RATED", "maxOverallRating": 2, "maxReviewsPerProduct": 300 }
```

**Win/loss — who buyers switch from**

```json
{ "searchQueries": ["project management"], "maxProductsPerQuery": 10,
  "onlyWithAlternatives": true, "maxItems": 1000 }
```

Then open the `COMPETITIVE_INTELLIGENCE` report in the run's storage for the ranked rivals.

**Enterprise voices only, verified**

```json
{ "productUrls": [{ "url": "https://www.capterra.com/p/135003/Slack/" }],
  "companySizes": ["1,001-5,000 employees", "5,001-10,000 employees", "10,000+ employees"],
  "onlyVerified": true }
```

**Benchmark a whole category**

```json
{ "categoryUrls": [{ "url": "https://www.capterra.com/project-management-software/" }],
  "maxProductsPerQuery": 25, "maxReviewsPerProduct": 100 }
```

***

### 📤 Output

Reviews export to **CSV, Excel, JSON or XML**, with three ready-made views:

- **Reviews** — product, title, rating, date, reviewer, pros/cons
- **Ratings breakdown** — the six parsed scores side by side
- **Competitive intel** — alternatives considered, switched from, reasons, vendor replies

***

### ❓ FAQ

**Do I need a Capterra account?** No.

**How do search queries pick products?** They resolve to the top real products with actual reviews — so "slack"
returns Slack, not an add-on that merely has "Slack" in its name.

**Why do some reviews have no alternatives?** Because the reviewer didn't name any. Those fields appear only when
the buyer actually listed products they considered or switched from.

**Do I pay for empty or duplicate rows?** No. Duplicates are removed on the fly and only genuine, saved reviews
are counted.

**How fresh is the data?** Every run is live.

**How much does it cost?** You pay per review saved, and the price on the page is all-in. The product summary and
the competitive-intelligence report are free.

# Actor input Schema

## `productUrls` (type: `array`):

Capterra product pages, e.g. https://www.capterra.com/p/135003/Slack/ . Reviews are scraped for each.

## `searchQueries` (type: `array`):

Find products by keyword (e.g. "project management"). The top matches are resolved to real products and scraped — no guessing by company name.

## `categoryUrls` (type: `array`):

Capterra category pages, e.g. https://www.capterra.com/project-management-software/ . Products listed on the page are scraped.

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

Global cap on reviews saved across the whole run. Filtered and duplicate reviews are never counted or charged.

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

Cap on reviews saved for each product.

## `maxProductsPerQuery` (type: `integer`):

How many top products to take from each search query or category page.

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

Order applied to the reviews collected from each product (most recent, highest/lowest rated, or most complete).

## `includeProductAggregate` (type: `boolean`):

Save a per-product summary (overall rating, review count, category) to a separate Products dataset — free, not charged.

## `minOverallRating` (type: `integer`):

Keep only reviews rated at or above this (1–5).

## `maxOverallRating` (type: `integer`):

Keep only reviews rated at or below this (1–5). Combine with the minimum to isolate critics.

## `minLikelihoodToRecommend` (type: `integer`):

Keep only reviews whose NPS-style recommendation score is at least this (0–10).

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

Keep only reviewers from companies of these sizes.

## `timeUsedProduct` (type: `array`):

Keep only reviewers who used the product for one of these durations.

## `frequencyOfUse` (type: `array`):

Keep only reviewers who use the product this often.

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

Keep only reviewers whose industry contains one of these words (e.g. "Financial", "Healthcare").

## `reviewedAfter` (type: `string`):

Keep only reviews published on or after this date (YYYY-MM-DD).

## `reviewedBefore` (type: `string`):

Keep only reviews published on or before this date (YYYY-MM-DD).

## `keywords` (type: `array`):

Keep only reviews whose title, pros, cons or comments mention one of these words.

## `onlyVerified` (type: `boolean`):

Keep only reviews from reviewers Capterra validated (e.g. LinkedIn).

## `excludeIncentivized` (type: `boolean`):

Drop reviews written for a gift card or other incentive — keep organic ones only.

## `onlyWithVendorResponse` (type: `boolean`):

Keep only reviews the software vendor publicly responded to.

## `onlyWithAlternatives` (type: `boolean`):

Keep only reviews where the buyer named products they also considered or switched from — the competitive-intelligence rows.

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

How many products to scrape in parallel.

## `maxRetries` (type: `integer`):

Retry budget per request for a temporary source error.

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

Access is preconfigured and recommended. Leave as is unless you know you need custom proxies.

## Actor input object example

```json
{
  "productUrls": [
    {
      "url": "https://www.capterra.com/p/135003/Slack/"
    }
  ],
  "maxItems": 20,
  "maxReviewsPerProduct": 15,
  "maxProductsPerQuery": 5,
  "sort": "MOST_RECENT",
  "includeProductAggregate": true,
  "onlyVerified": false,
  "excludeIncentivized": false,
  "onlyWithVendorResponse": false,
  "onlyWithAlternatives": false,
  "maxConcurrency": 4,
  "maxRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

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

No description

## `ratings` (type: `string`):

No description

## `competitive` (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 = {
    "productUrls": [
        {
            "url": "https://www.capterra.com/p/135003/Slack/"
        }
    ],
    "maxItems": 20,
    "maxReviewsPerProduct": 15
};

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

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

```

## MCP server setup

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