# Capterra & Software Advice Reviews Scraper (`tidy-data/software-advice-capterra-reviews-scraper`) Actor

Scrape public B2B software reviews (pros, cons, ratings, company size, industry) from Software Advice, part of the Capterra/GetApp review network. Search by product name or URL. Fast, no browser, pay per review.

- **URL**: https://apify.com/tidy-data/software-advice-capterra-reviews-scraper.md
- **Developed by:** [Tidy Data](https://apify.com/tidy-data) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.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

## Software Advice Reviews Scraper (Capterra Network)

This **Software Advice reviews scraper** extracts public B2B software reviews from softwareadvice.com: star ratings, pros and cons, reviewer industry and company size, usage time, review date and **vendor responses**. Software Advice belongs to Gartner Digital Markets, the same review network as **Capterra** and **GetApp**, so it is a practical way to get Capterra-network review data. Use it as an unofficial software reviews API from Python, JavaScript, Make, Zapier or AI agents via the Apify MCP server. Note: the Actor reads softwareadvice.com only; it does not scrape capterra.com or getapp.com.

### What does this Software Advice reviews scraper do?

Give the Actor a product name like `Slack` or `HubSpot CRM`, or paste a softwareadvice.com URL. You get clean JSON, CSV or Excel back in seconds.

- ⚡ **Fast and light.** It uses no headless browser. In our tests it collected about 15 to 20 reviews per second on 256 MB of memory.
- 🛡️ **Reliable.** It has automatic retries with backoff, browser-grade TLS fingerprints, and it rediscovers the site's internal API automatically when the site redeploys.
- 💸 **Pay only for results.** You pay per review delivered. There is no monthly rental.
- 🔒 **Public data only.** It never logs in. Reviewer names are written exactly as shown publicly (first name and last initial), and anonymous reviewers stay anonymous.

### What can you use it for?

- **Competitor analysis:** see what customers love and hate about competing tools.
- **Product and UX research:** mine the "cons" field at scale for feature gaps.
- **Sales and marketing:** find testimonials and the industries and company sizes that like a product.
- **Review monitoring:** schedule a daily run with `reviewedAfter` to collect only new reviews.
- **AI and LLM pipelines:** feed structured reviews into sentiment analysis, RAG or dashboards.

### How to scrape Software Advice reviews

1. Open the Actor in Apify Console and add product names or softwareadvice.com URLs to `products`.
2. Optionally set `maxReviewsPerProduct`, filters and the sort order.
3. Click **Start**, then download the dataset as CSV, Excel or JSON, or read it through the Apify API.

#### Input fields

| Field | Description |
|---|---|
| `products` | Product names (e.g. `Asana`) or softwareadvice.com product or review URLs. |
| `maxReviewsPerProduct` | Maximum reviews per product. The default is 100. `0` means all reviews. |
| `sort` | `MOST_RECENT` (default) or `HIGHEST_COMPLETENESS_SCORE`. |
| `reviewedAfter` | Optional `YYYY-MM-DD`. Returns only newer reviews. Use it for monitoring. |
| `ratings` | Optional star filter, e.g. `[1, 2]` for negative reviews only. |
| `companySizes` | Optional size codes: A = self-employed, B = 2–10, C = 11–50, D = 51–200, E = 201–500, F = 501–1,000, G = 1,001–5,000, H = 5,001–10,000, I = 10,000+. |
| `includeGatedSummaries` | Some reviews are login-gated on the site. If you turn this on, you get only their public AI summary and rating, marked `isGated: true`. It is off by default. |
| `proxyConfiguration` | Usually not needed. |

```json
{
  "products": ["Slack", "HubSpot CRM", "https://www.softwareadvice.com/project-management/asana-profile/"],
  "maxReviewsPerProduct": 100,
  "sort": "MOST_RECENT"
}
```

### Review data you can extract

Each review is one dataset item (example with real field names; values shortened):

```json
{
  "productName": "Slack",
  "productRating": 4.7,
  "productReviewCount": 24184,
  "reviewId": "e27bfe51-674d-4105-84ae-e645e85022a7",
  "reviewUrl": "https://www.softwareadvice.com/remote-support/slack-profile/reviews/#e27bfe51-...",
  "isGated": false,
  "title": "Provides Excellent Channel-Based Messaging and Built-in Interactive Conferencing",
  "pros": "Slack is simply the best collaborative messaging tool ...",
  "cons": "Some of the notification settings are global ...",
  "overallComments": "Slack seamlessly connects our teams ...",
  "summary": null,
  "overallRating": 5,
  "easeOfUseRating": 5,
  "customerSupportRating": 5,
  "valueForMoneyRating": null,
  "functionalityRating": null,
  "reviewerName": "Ricardo O.",
  "reviewerJobTitle": null,
  "reviewerIndustry": "Telecommunications",
  "reviewerCompanySize": "51-200",
  "reviewerVerified": false,
  "usageDuration": "3-5 years",
  "usageFrequency": "daily",
  "reviewSource": "Invited by vendor, nominal incentive",
  "vendorReply": null,
  "vendorReplyDate": null,
  "date": "2026-11-04T10:58:52Z"
}
```

#### Which fields are filled?

The site shows two kinds of reviews, and the fields differ between them.

| Field | Full reviews (`isGated: false`) | Gated reviews (`isGated: true`, only with `includeGatedSummaries`) |
|---|---|---|
| `title`, `pros`, `cons`, `overallComments` | yes | - (the full text is login-gated) |
| `overallRating` | yes | yes |
| `easeOfUseRating`, `customerSupportRating`, `valueForMoneyRating`, `functionalityRating` | when the reviewer rated them | - |
| `reviewerName` | first name + last initial, unless the reviewer is anonymous | - |
| `reviewerJobTitle` | - (the site does not show it on full reviews) | yes |
| `summary` | - | yes (the site's public AI summary) |
| `reviewerIndustry`, `reviewerCompanySize`, `usageDuration`, `usageFrequency`, `reviewSource`, `date` | yes | yes |
| `vendorReply`, `vendorReplyDate` | only when the vendor replied. This depends on the vendor: Pipedrive replies to almost every review, many vendors to none. | - |

The `benefits` field was removed in version 0.4, because the site no longer publishes it.

A `RUN_SUMMARY` record in the key-value store lists, for every product, the review count, the number of pages, the aggregate sub-ratings and any error.

### Software Advice reviews API in Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("tidy-data/software-advice-capterra-reviews-scraper").call(run_input={
    "products": ["Slack", "HubSpot CRM"],
    "maxReviewsPerProduct": 200,
    "sort": "MOST_RECENT",
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(review["productName"], review["overallRating"], review["cons"])
```

The same Actor can be called from JavaScript (`apify-client`), the REST API, Make, Zapier, n8n or AI agents through the Apify MCP server.

### How much does it cost to scrape software reviews?

| Event | Price |
|---|---|
| Review | **$0.003** ($3 per 1,000 reviews) |
| Actor start | $0.00005 |

For example, 1,000 reviews for each of 5 competitors costs about **$15**. You can cap spending with *Maximum cost per run*. The Actor stops cleanly when the limit is reached.

### Errors and reliability

- A product that cannot be found returns a clear error with the closest matches. A non-Software-Advice URL or a 404 page also returns a clear error. In all these cases, the other products in the run still continue.
- If the site blocks requests (HTTP 403 or 429, or a challenge page), the Actor retries 5 times with backoff and new fingerprints. If it is still blocked, it tells you to enable Apify Proxy (residential).
- If the site changes its internal API, the Actor rediscovers it automatically. If it cannot, the run fails loudly instead of returning empty data.
- A run that extracts 0 reviews is marked **failed**, so your integrations never silently get nothing.

### FAQ

#### Is this the same data as Capterra?

Software Advice, Capterra and GetApp share the Gartner Digital Markets review network, so the same product often shows the same review count and rating on all three sites (for example, Slack with 24,184 reviews and a 4.7 rating when we checked). The Actor collects the reviews as published on softwareadvice.com.

#### Is there an official Capterra API for reviews?

We are not aware of a public, self-service API for downloading reviews of any product on Capterra or Software Advice. This Actor is an unofficial alternative built on Software Advice's public review pages.

#### Can I export the reviews to Excel or CSV?

Yes. Every run stores the reviews in a dataset that you can download as CSV, Excel, JSON, XML or HTML, or read through the Apify API.

#### Does it work with G2, GetApp or TrustRadius?

No. The Actor reads softwareadvice.com only. It does not scrape G2, TrustRadius, GetApp or capterra.com.

#### Is scraping reviews legal?

This Actor collects only publicly visible information and never logs in. It does not unlock gated content, and it reproduces reviewer names only as they are publicly displayed. You are responsible for using the data in line with the site's terms and with the laws that apply to you, such as GDPR. Do not use it to contact or profile individual reviewers.

### More scrapers from Tidy Data

- [App Store & Google Play Reviews Scraper](https://apify.com/tidy-data/app-store-google-play-reviews-scraper): iOS and Android app reviews, multi-country, with developer replies.
- [Nordic Jobs Scraper & Alerts](https://apify.com/tidy-data/nordic-jobs-scraper): job ads from NAV (Norway), Platsbanken (Sweden) and EURES (Finland, Denmark, Iceland), with "new jobs only" alerts to Slack, webhook or e-mail.

# Actor input Schema

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

Software product names (e.g. "Slack", "HubSpot CRM") or softwareadvice.com product/review URLs. Names are resolved with the site's own search (best match).

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

Stop after this many reviews per product. 0 = all available reviews.

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

Order in which reviews are collected. "Most recent" is best for monitoring new reviews.

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

Optional. Only return reviews written on or after this date (uses Most recent sort). Great for monitoring.

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

Optional. Only reviews with these overall star ratings (1-5). Example: \[1, 2] for negative reviews only.

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

Optional codes: A=Self-employed, B=2-10, C=11-50, D=51-200, E=201-500, F=501-1,000, G=1,001-5,000, H=5,001-10,000, I=10,000+.

## `includeGatedSummaries` (type: `boolean`):

Some reviews are login-gated on the site. If enabled, the Actor returns only what is publicly shown for them (AI summary, rating, reviewer job title, industry, company size) and marks them isGated=true. The full text is never unlocked.

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

Usually not needed. Enable Apify Proxy if you see repeated blocking.

## Actor input object example

```json
{
  "products": [
    "Slack",
    "HubSpot CRM"
  ],
  "maxReviewsPerProduct": 100,
  "sort": "MOST_RECENT",
  "includeGatedSummaries": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

All scraped reviews: product, rating, title, pros, cons, reviewer industry and company size, date.

## `runSummary` (type: `string`):

Per-product counts, aggregate ratings, errors and timing (JSON).

# 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": [
        "Slack",
        "HubSpot CRM"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidy-data/software-advice-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": [
        "Slack",
        "HubSpot CRM",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tidy-data/software-advice-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": [
    "Slack",
    "HubSpot CRM"
  ]
}' |
apify call tidy-data/software-advice-capterra-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tidy-data/software-advice-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/M3SX2WNfiKnxWFrsU/builds/kpg53oQX3L8rAGLK3/openapi.json
