# Capterra Reviews Scraper (`tortuga/capterra-scraper`) Actor

Scrape Capterra software reviews and product profiles: ratings, pros and cons, reviewer role and industry, company size, pricing, features and alternatives. Works for any product or category page.

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

## Pricing

from $2.00 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Capterra Reviews Scraper

Scrape Capterra software reviews and product profiles: overall and per-category ratings, pros and cons, likelihood to recommend, reviewer job title, industry and company size, time used, switched-from and alternatives-considered products, pricing plans, features, deployment options, integrations, awards and alternatives. Works for any product, category or search page, and also reads GetApp and Software Advice pages (the same Gartner Digital Markets data).

Built for reliability: plain HTTP with browser TLS fingerprinting, no headless browser, no login. Reviews come from the same JSON the site's own "Sort by" control uses, so you get 25 reviews per ~45 KB request instead of parsing 700 KB pages, with real sorting (most recent, most helpful, highest, lowest) and star filters. You pay per item, nothing else.

### What data does Capterra Reviews Scraper extract?

**Review items** (`mode: reviews`, default):

| Field | Description |
|---|---|
| `productId`, `productName`, `productUrl` | Capterra product id (`135003` in `/p/135003/Slack/`), name and URL |
| `reviewId` | Stable review id, e.g. `Capterra___7189737` (GetApp / Software Advice reviews share the same pool) |
| `title` | Review title |
| `overallRating` | 1-5 |
| `easeOfUse`, `customerService`, `features`, `valueForMoney` | Sub-ratings 1-5 (`null` when the reviewer skipped one) |
| `likelihoodToRecommend` | 0-10 |
| `pros`, `cons`, `overall` | Pros, cons and the "Overall experience" text |
| `adviceToOthers` | Advice text when present |
| `switchedFrom`, `reasonsForSwitching` | Products the reviewer switched from and why |
| `alternativesConsidered`, `reasonsForChoosing` | Alternatives considered and why this product was chosen |
| `usedFor` | Time used: "Less than 6 months", "6-12 months", "1-2 years", "2+ years", "Free trial" |
| `frequency` | Usage frequency (Software Advice pages only: "Daily", "Weekly", ...) |
| `reviewerRole`, `reviewerIndustry`, `companySize` | Job title, industry and company size band ("11-50 employees") |
| `reviewDate` | ISO date (`2026-07-25`) |
| `source` | Where the review was collected: "Capterra", "GetApp" or "Software Advice" |
| `isVerified` | Reviewer identity was validated (LinkedIn / business email / proof of use) |
| `isIncentivized`, `incentive` | Whether a nominal gift card was offered (`NominalGift`) |
| `vendorResponse` | Vendor reply text when present |
| `url` | Page the review was collected from |

Reviewer names and avatars are deliberately not collected.

**Product items** (`mode: products`): `name`, `vendor`, `description`, `overallRating`, `reviewCount`, `ratings` (ease of use, customer service, features, value for money, likelihood to recommend), `ratingDistribution` (1-5 star counts), `recommendPercent`, `startingPrice`, `currency`, `pricingModel`, `paymentFrequency`, `freeTrial`, `freeVersion`, `creditCardRequired`, `pricingDescription`, `pricingPlans` (name, price, model, included features), `categories`, `features` (105+ features with per-feature rating and review count), `topFeatures`, `deployment`, `platforms`, `supportOptions`, `trainingOptions`, `targetCompanySizes`, `alternatives` (name, URL, rating, review count), `integrations`, `integrationCount`, `awards` (Shortlist, Top Rated, Best Ease of Use, ...), `prosSummary`, `consSummary`, `topIndustries`, `companySizeBreakdown`, `jobFunctions`, `comparisons`, `logoUrl`, `screenshots`, `websiteUrl` (GetApp / Software Advice pages), `lastUpdated`.

**Category cards** (`mode: category`): `position`, `name`, `url`, `category`, `overallRating`, `reviewCount`, `ratings`, `ratingDistribution`, `tagline`, `description`, `startingPrice`, `freeTrial`, `freeVersion`, `vendor`, `topFeatures`, `segmentReviewCounts` (small / mid-size / enterprise), `isSponsored`, `badges`, `logoUrl`.

### How to use Capterra Reviews Scraper

1. Paste one or more URLs into **Start URLs**: a product page (`https://www.capterra.com/p/135003/Slack/`), its reviews page, a category page (`https://www.capterra.com/project-management-software/`) or a search page (`https://www.capterra.com/search/?query=crm`). Or type product names into **Product names** and the top Capterra search hit is used.
2. Pick **What to scrape**: reviews (default), product profiles, or category cards.
3. Set **Max items** and, for category runs, **Max reviews per product** so the budget is spread across products.
4. Choose **Sort reviews** (most recent by default) and optionally **Only these star ratings** (e.g. `1, 2` for complaints).
5. Click **Start**. Results appear in the **Dataset** tab; export as JSON, CSV or Excel, or read them through the API.

### Input example

```json
{
  "startUrls": [
    { "url": "https://www.capterra.com/p/135003/Slack/reviews/" },
    { "url": "https://www.capterra.com/customer-relationship-management-software/" }
  ],
  "searchTerms": ["Asana"],
  "mode": "reviews",
  "maxItems": 500,
  "maxReviewsPerProduct": 100,
  "sortReviews": "most_recent",
  "ratingFilter": []
}
```

### Output example

```json
{
  "type": "review",
  "productId": "135003",
  "productName": "Slack",
  "productUrl": "https://www.capterra.com/p/135003/Slack/",
  "reviewId": "Capterra___7209621",
  "title": "Can't work without",
  "overallRating": 4,
  "easeOfUse": 5,
  "customerService": 3,
  "features": 5,
  "valueForMoney": 4,
  "likelihoodToRecommend": 8,
  "pros": "Its ease of use and flexibility. The way you can open a new chat and a channel to share with others is the best",
  "cons": "Just as a personal point of view, the UI is not as modern as other tools are made. Some changes could help improve.",
  "overall": "I use Slack as a professional live chat tool. Not only with colleagues, but also to communicate with external partners.",
  "switchedFrom": ["Discord"],
  "reasonsForSwitching": "Many features were under expensive plans",
  "alternativesConsidered": [],
  "usedFor": "2+ years",
  "reviewerRole": "Marketing and sales manager",
  "reviewerIndustry": "Computer Software",
  "companySize": "11-50 employees",
  "reviewDate": "2026-09-05",
  "source": "Capterra",
  "isVerified": true,
  "isIncentivized": true,
  "incentive": "NominalGift",
  "vendorResponse": null,
  "url": "https://www.capterra.com/p/135003/Slack/reviews/"
}
```

### How much does it cost?

Pay per item: $0.002 per review, $0.004 per product profile (two page fetches), $0.001 per category card, plus normal Apify platform usage (a few cents per thousand reviews). No start fee, no subscription. 1,000 reviews cost about $2 all-in on the free plan.

### How do I scrape all reviews of a product?

Use the product's reviews URL and raise **Max items** and **Max reviews per product**. Reviews are paged 25 at a time with a cursor, so products with tens of thousands of reviews (Slack has 24,000+) can be collected in full in one run. Sorting by **most recent** and scheduling the actor weekly is the cheapest way to keep a review feed up to date; deduplicate on `reviewId`.

### Can I get only negative reviews?

Yes. Set **Only these star ratings** to `1, 2` (or any subset of 1-5) and **Sort reviews** to "Lowest rating". The filter is applied by Capterra itself, so you do not pay for reviews you do not want.

### Does it work with category pages?

Yes. A category URL such as `https://www.capterra.com/customer-relationship-management-software/` is paginated automatically (25 products per page). In reviews mode every product in the category is opened and up to **Max reviews per product** reviews are saved per product; in products mode each product gets a full profile; in category mode you get the ranking cards only (cheapest way to list a whole category with ratings, review counts and pricing flags).

### Does it support GetApp and Software Advice?

Partly. GetApp product and category pages and Software Advice profile / reviews pages are read directly (product profiles are complete and include the vendor website). Those sites only embed a sample of reviews though (6 on GetApp, 25 on Software Advice) and have no public review pager, so for the full review list use the Capterra URL of the same product; the review pool and ids are shared across the three sites.

### Does it work without login or a browser?

Yes. Everything comes from public pages served to anonymous visitors, read with plain HTTP requests and Chrome TLS fingerprinting. No account, cookies or headless browser, which keeps runs fast (about 1 second per 25 reviews) and cheap.

### Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the **API** tab for ready-made snippets. Schedule it to monitor new reviews of your product or your competitors.

### Is it legal to scrape Capterra?

This actor collects only publicly available data: review texts and ratings, reviewer job title, industry and company size band, and product / vendor business information. It does not collect reviewer names, photos or any contact details. You are responsible for how you use the data and for complying with Capterra's terms and applicable law.

### Support

Found a bug or need a field added? Open an issue in the **Issues** tab; it is usually answered within a day.

# Actor input Schema

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

Capterra product pages (https://www.capterra.com/p/135003/Slack/), review pages (…/Slack/reviews/), category pages (https://www.capterra.com/project-management-software/) or search pages (https://www.capterra.com/search/?query=crm). GetApp product/category pages and Software Advice profile/review pages are accepted too (they embed only a sample of reviews; use the Capterra URL for the full list). Category and search pages are paginated automatically and every product on them is processed in the selected mode.

## `searchTerms` (type: `array`):

Product names to look up on Capterra search, e.g. "HubSpot CRM". The top search result is used in reviews/products mode; in category mode all search results are saved as cards.

## `mode` (type: `string`):

reviews: one item per user review (default). products: one detailed profile item per product (pricing, features, alternatives, deployment, awards…). category: one card per product on category/search pages (name, rating, review count, tagline, pricing flags).

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

Stop after this many items in total (reviews, products or cards across all start URLs). Keeps cost predictable.

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

Reviews mode only: cap per product, so a category run spreads the budget across products instead of spending it all on the first one.

## `sortReviews` (type: `string`):

Order in which Capterra reviews are collected (matters when a cap is set). most\_recent is best for monitoring; most\_helpful is the site's default order.

## `ratingFilter` (type: `array`):

Optional: keep only Capterra reviews with these overall ratings, e.g. \[1, 2] for complaints. Leave empty for all.

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

Capterra blocks datacenter IPs, so residential Apify Proxy (US) is the default. Proxy usage is billed to your account.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.capterra.com/p/135003/Slack/reviews/"
    }
  ],
  "searchTerms": [],
  "mode": "reviews",
  "maxItems": 100,
  "maxReviewsPerProduct": 100,
  "sortReviews": "most_recent",
  "ratingFilter": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.capterra.com/p/135003/Slack/reviews/"
        }
    ],
    "searchTerms": [],
    "ratingFilter": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tortuga/capterra-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.capterra.com/p/135003/Slack/reviews/" }],
    "searchTerms": [],
    "ratingFilter": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tortuga/capterra-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.capterra.com/p/135003/Slack/reviews/"
    }
  ],
  "searchTerms": [],
  "ratingFilter": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call tortuga/capterra-scraper --silent --output-dataset

```

## MCP server setup

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