# Capterra Scraper (`kawsar/capterra-scraper`) Actor

Pulls reviews, ratings, pricing, and feature scores from Capterra product pages so you can keep tabs on software reputation or compare vendors without doing it by hand.

- **URL**: https://apify.com/kawsar/capterra-scraper.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Features:** Limited permissions
- **Stats:** 15 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

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 Scraper

![Capterra Scraper](https://i.imgur.com/Lkr969d.png)

Extract reviews, ratings, pricing, features, integrations, and alternatives from any Capterra software product page. Give it a URL, get back structured JSON.

### What it does

Capterra Scraper visits a product page and pulls the overall star rating, per-feature scores, reviewer profiles, pros and cons, pricing tiers, integration lists, and alternatives. One JSON object per URL.

### Why bother

Software reviews are one of the few places you get honest feedback about a product that nobody asked for. Capterra has millions of them, and the data sits there in HTML, one page at a time.

Some things you can do once it's in a database: schedule the actor daily on your own Capterra page and you'll know within hours when a new review lands. Run it on a competitor's page to track if they're picking up complaints about a specific feature. Pull a shortlist of vendor tools and compare them without opening a browser — the output is normalized, same fields every time. Or pipe the review text into a sentiment or LLM pipeline. Reviewer role, industry, rating breakdown, pros, cons, full body text are all there.

Reviews go stale if you check them once and move on. The actor is most useful running on a schedule.

If you need every review a software has ever received, not just the first page, the [Capterra Reviews Scraper](https://apify.com/kawsar/capterra-reviews-scraper) does that with no limit.

### Input

```json
{
  "startUrls": [
    "https://www.capterra.com/p/150854/Apify/",
    "https://www.capterra.com/p/172606/Smallpdf/"
  ],
  "maxReviews": 10,
  "maxItems": 10,
  "requestTimeoutSecs": 30
}
```

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array of strings | required | Capterra product page URLs |
| `maxReviews` | integer | 10 | Max reviews to extract per product (up to 500) |
| `maxItems` | integer | 10 | Max product pages to process per run (up to 1000) |
| `requestTimeoutSecs` | integer | 30 | Per-request timeout in seconds |

### Output

One JSON object per URL.

| Field | Description |
|---|---|
| `productName` | Software name |
| `logoUrl` | Direct URL to the product logo image |
| `productDescription` | Full description text |
| `category` | Application category |
| `overallRating` | Overall star rating (float, out of 5) |
| `reviewCount` | Total published reviews |
| `lastUpdated` | Date the Capterra listing was last updated |
| `ratings` | Breakdown: overall, easeOfUse, features, customerService, valueForMoney, likelihoodToRecommend |
| `startingPrice` | Cheapest paid plan price and billing cycle |
| `hasFreeVersion` | Boolean |
| `hasFreeTrial` | Boolean |
| `pricingPlans` | Array of plan objects — name, price, billing info, included features |
| `featureRatings` | Per-feature ratings with review counts and summaries |
| `integrations` | List of integration names |
| `supportOptions` | Available support channels |
| `userIndustries` | Industries using the product with percentages |
| `userCompanySizes` | Company size breakdown with percentages |
| `alternatives` | Competing products with ratings, pricing, free trial/version info |
| `keyTakeaways` | Capterra "what is it used for" summary |
| `ourVerdict` | Capterra editorial verdict (when present) |
| `reviews` | Individual reviews: reviewer name, role, industry, rating breakdown, body, pros, cons, date |
| `scrapedAt` | ISO 8601 UTC timestamp |
| `error` | Error message if scraping failed, otherwise null |

### Sample output on Apify platform

Table view:

![Table view sample](https://i.imgur.com/7AGWPr7.png)

JSON view:

![JSON view sample](https://i.imgur.com/heaim7p.png)

### Example output (abbreviated)

```json
{
  "url": "https://www.capterra.com/p/150854/Apify/",
  "productName": "Apify",
  "overallRating": 4.8,
  "reviewCount": 427,
  "lastUpdated": "April 16, 2026",
  "ratings": {
    "overall": 4.8,
    "easeOfUse": 4.7,
    "featureRating": 4.8,
    "customerService": 4.7,
    "valueForMoney": 4.6,
    "likelihoodToRecommend": 9.2
  },
  "hasFreeVersion": true,
  "hasFreeTrial": true,
  "pricingPlans": [
    {
      "planName": "Free",
      "price": "$0.00",
      "billingInfo": "",
      "planFeatures": ["4 GB Actor RAM", "7 Days of Data Retention", "Community Support"]
    },
    {
      "planName": "Starter Plan",
      "price": "$29.00",
      "billingInfo": "Usage Based, Per Month",
      "planFeatures": ["14 Days of Data Retention", "30 Shared Data Center Proxies", "Email Support"]
    }
  ],
  "integrations": ["Google Docs", "Google Drive", "Slack", "Dropbox Business", "Asana", "GitHub", "Zapier", "Make"],
  "alternatives": [
    {
      "alternativeName": "Octoparse",
      "alternativeRating": 4.7,
      "alternativeReviewCount": 106,
      "startingPrice": "$99 Flat Rate, Per Month",
      "hasFreeVersion": true,
      "hasFreeTrial": true
    }
  ],
  "reviews": [
    {
      "reviewerName": "Dennis L.",
      "reviewerRole": "Founder",
      "reviewerIndustry": "Media Production",
      "reviewTitle": "Great for vibecoders",
      "reviewOverallRating": 5.0,
      "reviewDate": "April 16, 2026",
      "reviewBody": "I discovered Apify a couple of months ago because I needed a way to scrape different sites...",
      "reviewPros": "super easy to incorporate with Claude. easy to test in Apify's console too...",
      "reviewCons": "search console should be easier to take you to show all actors..."
    }
  ],
  "scrapedAt": "2026-04-19T10:30:00+00:00",
  "error": null
}
```

### Scheduling

In the actor's schedule settings, pick a daily or weekly cron. Each run pushes new data to the dataset. Connect that to webhooks, Zapier, or Make to route results wherever you need them.

### Want countless reviews?

This actor pulls the reviews visible on the first page of a product listing. If you need every single review a software has ever received, use the dedicated [Capterra Reviews Scraper](https://apify.com/kawsar/capterra-reviews-scraper), which pages through all reviews with no cap.

### Notes

- By default, up to 10 reviews per page are extracted, which matches what Capterra loads on first visit. Use `maxReviews` to adjust.
- URLs should be Capterra product pages in the format `https://www.capterra.com/p/<id>/<ProductName>/`
- Failed URLs produce an item with an `error` field rather than stopping the whole run.

# Actor input Schema

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

One or more Capterra product page URLs to scrape. Example: https://www.capterra.com/p/150854/Apify/

## `maxReviews` (type: `integer`):

Maximum number of reviews to extract per product page.

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

Maximum number of product pages to process per run.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.capterra.com/p/150854/Apify/"
  ],
  "maxReviews": 10,
  "maxItems": 10,
  "requestTimeoutSecs": 30
}
```

# 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": [
        "https://www.capterra.com/p/150854/Apify/",
        "https://www.capterra.com/p/172606/Smallpdf/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/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": [
        "https://www.capterra.com/p/150854/Apify/",
        "https://www.capterra.com/p/172606/Smallpdf/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/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": [
    "https://www.capterra.com/p/150854/Apify/",
    "https://www.capterra.com/p/172606/Smallpdf/"
  ]
}' |
apify call kawsar/capterra-scraper --silent --output-dataset

```

## MCP server setup

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