# Capterra Product Scraper - Categories, Ratings & Pricing (`zen-studio/capterra-products-scraper`) Actor

Scrape every product in a Capterra category, or full product profiles: ratings, star breakdowns, pricing plans, features, pros and cons, alternatives, integrations and more.

- **URL**: https://apify.com/zen-studio/capterra-products-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 products

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 Product Scraper | Categories, Ratings & Pricing (2026)

[![EVERY PRODUCT IN A CAPTERRA CATEGORY. 676 PRODUCTS IN SECONDS.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/capterra-products-scraper-readme-hero-v1.png)](https://console.apify.com/actors/pREaJSeig6ShjTtpk/input)

From <strong>Zen Studio</strong>, creators of the <a href="https://apify.com/zen-studio/capterra-reviews-scraper">Capterra Review Scraper</a>, with <strong>20,000+ lifetime runs</strong>, and the <a href="https://apify.com/zen-studio/g2-reviews-scraper">G2 Reviews Scraper</a>, with <strong>40,000+</strong>. Established software review scrapers. One experienced studio.

### Why choose this actor?

<strong>Every product in a category, in seconds.</strong><br>Paste a category such as Restaurant Management and get every product it lists, in the order Capterra shows them: each with its rank, whether its place is paid for, and whether it carries the category's Shortlist badge. All 676 Restaurant Management products arrived in under 15 seconds.

<strong>Ratings and full profiles.</strong><br>Every category row has the overall rating, star breakdown, four sub-ratings, the share of reviewers who would recommend it and how many reviews arrived in the last 6 and 12 months. Switch on <code>includeDetails</code> for pricing plans, every feature with its rating, pros and cons, alternatives, integrations and FAQs (an add-on charge, see Pricing).

<strong>Ready for the reviews.</strong><br>Every row's `url` is a valid input for the <a href="https://apify.com/zen-studio/capterra-reviews-scraper">Capterra Review Scraper</a>, so a market map turns into a review dataset in one more step.

<a href="https://console.apify.com/actors/pREaJSeig6ShjTtpk/input"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/capterra-products-scraper-readme-cta-v1.svg" width="240" height="48" alt="Map a category"/></a>

### Quick start

Paste a category URL. Start with 50 products, then clear <code>maxProductsPerCategory</code> to get the whole category.

```json
{
  "startUrls": ["https://www.capterra.com/restaurant-management-software/"],
  "maxProductsPerCategory": 50
}
```

Add <code>"includeDetails": true</code> for each product's full profile, or paste product URLs instead:

```json
{
  "startUrls": [
    "https://www.capterra.com/p/135003/Slack/",
    "https://www.capterra.com/p/141633/PowerPoint/"
  ]
}
```

Categories and products can be mixed in one run.

#### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
zen-studio/capterra-products-scraper on Apify. Call: ApifyClient("TOKEN").actor("zen-studio/capterra-products-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results, one item per product; each category's own data is the run's key-value store record CATEGORIES. Key inputs: startUrls: array of strings (required; Capterra category URLs like https://www.capterra.com/restaurant-management-software/ and/or product URLs like https://www.capterra.com/p/135003/Slack/), maxProductsPerCategory: integer (0 = all), includeDetails: boolean (full profile for category products; product URLs always get it). Full actor spec (input schema with all params/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/zen-studio~capterra-products-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Pricing: $0.00299/product ($0.00199 on Gold plans), plus $0.005/product with full details, $0.005/actor start, $0.00001/dataset item. Get token: https://console.apify.com/account/integrations To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

<table><tr><td style="padding:10px 14px;background:#1F8CEB;border:none;border-radius:4px 4px 0 0"><span style="color:#081F33;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio · Software Research</span><span style="color:#081F33;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Products, profiles and reviews</span></td></tr><tr><td style="padding:6px;border:1px solid #E7E5E4;border-top:none;border-radius:0 0 4px 4px;background:#E6F2FF"><span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#CCE6FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-pREaJSeig6ShjTtpk-pJxgP25OCB-capterra-review-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/capterra-products-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Capterra Products</a></span><br><span style="color:#0B5CAD;font-size:12px;font-weight:600">&#10148; You are here</span></span><span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#E6F2FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-x5wbchBdDewl20s3k-D82GiybXUd-capterra-review-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/capterra-reviews-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Capterra Reviews</a></span><br><span style="color:#57534E;font-size:12px">Reviews &amp; ratings</span></span><span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#E6F2FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-sbsNJ3Wfsp4Xx5o8E-GAmKpooahj-g2-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/g2-product-profile-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">G2 Product Profiles</a></span><br><span style="color:#57534E;font-size:12px">Pricing &amp; features</span></span><span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#E6F2FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-9UyFQFcuwmvWG91uH-BWRrsdwsuQ-software-reviews-aggregator-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/software-review-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">All-in-One Reviews</a></span><br><span style="color:#57534E;font-size:12px">G2, Capterra &amp; more</span></span></td></tr></table>

### Input Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `startUrls` | array | Capterra category URLs, product URLs, or both. Required. |
| `maxProductsPerCategory` | integer | How many products to take from each category, in Capterra's order. Empty or `0` for all. |
| `includeDetails` | boolean | Add each category product's full profile. Product URLs always include it. Default `false`. |

Category URLs are capterra.com addresses such as `https://www.capterra.com/salon-software/`; the FAQ says how to find them. Product URLs can be any Capterra product link, including `/reviews/` pages and regional Capterra sites.

### Output Example

One row per product. This is a category product with `includeDetails` on, lists shortened to two entries:

```json
{
  "url": "https://www.capterra.com/p/191978/Acuity-Scheduling/",
  "seoId": "191978",
  "productId": "75e7c663-154a-4acd-8032-a6d200b29051",
  "name": "Acuity Scheduling",
  "vendor": "Squarespace",
  "logoUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/8d2bcb49-a179-4429-958c-2a822b192105.webp",
  "shortDescription": "Reach more clients with the simple, customizable scheduling solution that looks and feels as good as a day at the barbershop.",
  "description": "Meet the personal scheduling assistant that works 24/7 behind the scenes to fill your calendar & take busywork off your plate. From the moment clients book with you, Acuity is there to automatically...",
  "category": {"name": "Barbershop", "url": "https://www.capterra.com/barbershop-software/"},
  "categoryRank": 12,
  "sponsored": false,
  "shortlisted": true,
  "primaryCategory": {
    "name": "Appointment Scheduling Software",
    "url": "https://www.capterra.com/appointment-scheduling-software/"
  },
  "categories": [
    {"name": "Appointment Scheduling", "url": "https://www.capterra.com/appointment-scheduling-software/"},
    {"name": "Scheduling", "url": "https://www.capterra.com/scheduling-software/"}
  ],
  "rating": 4.77,
  "reviewCount": 5771,
  "ratingDistribution": {"1": 11, "2": 21, "3": 149, "4": 939, "5": 4651},
  "ratings": {
    "easeOfUse": {"rating": 4.6, "reviewCount": 5721},
    "customerSupport": {"rating": 4.6, "reviewCount": 4289},
    "functionality": {"rating": 4.7, "reviewCount": 5518},
    "valueForMoney": {"rating": 4.7, "reviewCount": 4498}
  },
  "likelihoodToRecommend": 0.88,
  "reviewsLast6Months": 31,
  "reviewsLast12Months": 60,
  "reviewsByCompanySize": {
    "smallBusiness": {
      "reviewCount": 4864,
      "ratingDistribution": {"1": 11, "2": 15, "3": 125, "4": 757, "5": 3956}
    },
    "midSize": {
      "reviewCount": 135,
      "ratingDistribution": {"1": 0, "2": 0, "3": 3, "4": 34, "5": 98}
    },
    "enterprise": {
      "reviewCount": 131,
      "ratingDistribution": {"1": 0, "2": 2, "3": 4, "4": 27, "5": 98}
    }
  },
  "reviewSentiment": {"positivePercent": 97, "neutralPercent": 3, "negativePercent": 1},
  "reviewTopics": [
    {"topic": "Pricing", "reviewCount": 303},
    {"topic": "Ease of Use", "reviewCount": 295}
  ],
  "pricing": {
    "startingPrice": 20,
    "currency": "USD",
    "currencySymbol": "$",
    "priceUnit": "Flat Rate, Per Month",
    "pricingModel": "Flat Rate",
    "paymentFrequency": "Per Month",
    "freeTrial": true,
    "freeVersion": false,
    "creditCardRequired": "No",
    "plans": [
      {
        "name": "Starter",
        "description": null,
        "startingPrice": 20,
        "customPrice": null,
        "pricingModel": "Flat Rate",
        "paymentFrequency": "Per Month",
        "priceType": 1,
        "isDefault": true,
        "attributes": ["Advanced Features", "Logo Display", "Automatic Time Zone Conversion"]
      },
      {
        "name": "Standard",
        "description": null,
        "startingPrice": 34,
        "customPrice": null,
        "pricingModel": "Flat Rate",
        "paymentFrequency": "Per Month",
        "priceType": 1,
        "isDefault": false,
        "attributes": [
          "Up to 6 Staff/Locations",
          "Sell Subscriptions/Memberships/Gift Certificates",
          "Offer Appointment Packages"
        ]
      }
    ]
  },
  "awards": [
    {
      "title": "2025 Capterra Top Rated",
      "badgeUrl": "https://www.capterra.com/public-bx-capterra-v0/badge-shortlist.png"
    },
    {
      "title": "2025 Capterra Best Ease of Use",
      "badgeUrl": "https://www.capterra.com/public-bx-capterra-v0/badge-best-ease-of-use.png"
    }
  ],
  "shortlists": [
    {
      "name": "Salon",
      "year": "2026",
      "kind": "shortlist",
      "url": "https://www.capterra.com/salon-software/shortlist/"
    },
    {
      "name": "Scheduling",
      "year": "2026",
      "kind": "shortlist",
      "url": "https://www.capterra.com/scheduling-software/shortlist/"
    }
  ],
  "features": [
    {
      "name": "Mobile Access",
      "description": "You can manage appointments on the go with Acuity’s mobile app. Reviewers appreciate the convenience, user-friendly...",
      "rating": 4.66,
      "reviewCount": 1248,
      "importance": "61.62% of 1248 reviewers that rated this feature as important or highly important",
      "importanceVotes": null,
      "criticalVotes": null
    },
    {
      "name": "Online Booking",
      "description": "Acuity Scheduling gives you a flexible, automated way for clients to book appointments online at their convenience....",
      "rating": 4.67,
      "reviewCount": 564,
      "importance": "67.38% of 564 reviewers that rated this feature as important or highly important",
      "importanceVotes": 0,
      "criticalVotes": 0
    }
  ],
  "topFeatures": ["Appointment Management", "Online Booking", "Confirmations/Reminders", "Mobile Access"],
  "pros": [
    {
      "title": "Streamlined and intuitive scheduling",
      "description": "Most reviewers indicate ease of use makes scheduling, managing appointments, and adapting workflows significantly simpler.",
      "sentimentPercent": 93,
      "reviewCount": 1048,
      "quote": {
        "text": "What I like most about Acuity, is the easy streamlining for what I need.",
        "reviewerName": "Daja H.",
        "reviewerTitle": "Owner Service Provider",
        "companySize": "1 employee."
      }
    },
    {
      "title": "Quick and guided setup process",
      "description": "Most reviewers describe setup as straightforward, with helpful instructions and minimal time required to get started.",
      "sentimentPercent": 93,
      "reviewCount": 396,
      "quote": null
    }
  ],
  "cons": [
    {
      "title": "Limited mobile app functionality",
      "description": "Some users report the mobile app lacks features, editing options, and responsiveness compared to the desktop version.",
      "sentimentPercent": 35,
      "reviewCount": 202,
      "quote": null
    }
  ],
  "alternatives": [
    {
      "name": "Vagaro",
      "seoId": "153752",
      "url": "https://www.capterra.com/p/153752/Vagaro/",
      "logoUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/4e2671a7-72b7-4638-9434-190c249607a3.png",
      "sponsored": true,
      "rating": 4.7,
      "reviewCount": 3681,
      "ratings": {
        "easeOfUse": {"rating": 4.62, "reviewCount": null},
        "customerSupport": {"rating": 4.63, "reviewCount": null},
        "functionality": {"rating": 4.55, "reviewCount": null},
        "valueForMoney": {"rating": 4.65, "reviewCount": null}
      },
      "recommendPercent": 94,
      "startingPrice": 23.99,
      "pricingModel": "Flat Rate",
      "paymentFrequency": "Per Month",
      "freeTrial": true,
      "freeVersion": false
    },
    {
      "name": "GlossGenius",
      "seoId": "174830",
      "url": "https://www.capterra.com/p/174830/GlossGenius/",
      "logoUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/357c61c7-6bce-4bbb-bb52-bf0f99f77bf4.png",
      "sponsored": true,
      "rating": 4.8,
      "reviewCount": 350,
      "ratings": {
        "easeOfUse": {"rating": 4.84, "reviewCount": null},
        "customerSupport": {"rating": 4.75, "reviewCount": null},
        "functionality": {"rating": 4.69, "reviewCount": null},
        "valueForMoney": {"rating": 4.75, "reviewCount": null}
      },
      "recommendPercent": 96,
      "startingPrice": 24,
      "pricingModel": "Flat Rate",
      "paymentFrequency": "Per Month",
      "freeTrial": true,
      "freeVersion": false
    }
  ],
  "integrations": [
    {
      "name": "AWeber",
      "url": "https://www.capterra.com/p/95949/AWeber-Email-Marketing/",
      "logoUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/2eb5d488-b379-48e6-ac83-f4bbf37cb803.png",
      "reviewCount": 323
    },
    {
      "name": "Constant Contact",
      "url": "https://www.capterra.com/p/31898/Constant-Contact/",
      "logoUrl": "https://images.g2crowd.com/uploads/product/image/9c177b894e6ccce4e4b166036320ab88/constant-contact.jpg",
      "reviewCount": 2953
    }
  ],
  "faqs": [
    {
      "question": "What problems does Acuity Scheduling solve?",
      "answer": "Acuity Scheduling solves the back-and-forth of booking appointments, double bookings, missed reminders, and scattered client intake by...",
      "topic": "Overview",
      "reviewCount": 4281
    },
    {
      "question": "Which roles and teams benefit most from Acuity Scheduling?",
      "answer": "Acuity Scheduling is most used by small business owners, founders, and executives who need automated appointment booking, payment...",
      "topic": "Overview",
      "reviewCount": 5568
    }
  ],
  "reviewerCompanySizes": [
    {"name": "Small business", "percent": 86},
    {"name": "Midsize businesses", "percent": 8}
  ],
  "reviewerIndustries": [
    {"name": "Health, Wellness and Fitness", "percent": 17},
    {"name": "Education Management", "percent": 9}
  ],
  "reviewerJobFunctions": [
    {"name": "Administrative", "percent": 27},
    {"name": "Consulting", "percent": 11}
  ],
  "media": [
    {
      "type": "youtube",
      "url": "https://youtu.be/1ZE-gcwvVB8?si=9XeummN8bahRTr-F",
      "thumbnailUrl": "https://i.ytimg.com/vi/1ZE-gcwvVB8/mqdefault.jpg",
      "caption": null
    },
    {
      "type": "image",
      "url": "https://gdm-catalog-fmapi-prod.imgix.net/ProductScreenshot/eed0e618-f5f9-4cec-a1f8-574718d9f116.png",
      "thumbnailUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductScreenshot/eed0e618-f5f9-4cec-a1f8-574718d9f116.png",
      "caption": "Acuity Scheduling reporting"
    }
  ],
  "deployment": ["Cloud, SaaS, Web-Based", "Mobile Android", "Mobile iPhone", "Mobile iPad"],
  "support": ["Email/Help Desk", "FAQs/Forum", "Knowledge Base", "Chat"],
  "training": ["Webinars", "Documentation", "Videos"],
  "targetCompanySizes": ["Self-Employed", "2-10", "11-50", "51-200", "201-500", "501-1000", "1000+"],
  "listedPages": ["alternatives", "pricing", "reviews", "spotlight"],
  "detailsIncluded": true,
  "scrapedAt": "2026-10-15T14:36:12.572041+00:00"
}
```

Without `includeDetails`, a category row has the same fields. Those only the product's own page has (`pricing` beyond free trial and free version, `pros`, `cons`, `alternatives`, `integrations`, `faqs`, `awards` and the reviewer breakdowns) are `null`, and `detailsIncluded` is `false`. A product URL row has the full profile, with the category fields (`category`, `categoryRank`, `sponsored`, `shortlisted`, `vendor`, `shortDescription`, the recent review counts and `reviewsByCompanySize`) `null`.

#### Category details

Each category read is saved once to **Category details** in the Output tab (the run's `CATEGORIES` record):

```json
[
  {
    "name": "Barbershop",
    "shortName": "Barbershop",
    "url": "https://www.capterra.com/barbershop-software/",
    "subCategory": null,
    "productCount": null,
    "pageCount": 4,
    "shortlist": [
      "4bf3c6a3-00eb-4e7c-bf8e-a6d200b73cad",
      "7fbada62-3c4c-4efc-9d68-6335cee0d01c",
      "75e7c663-154a-4acd-8032-a6d200b29051"
    ],
    "features": [
      {
        "name": "Activity Dashboard",
        "definition": "Dashboard to view the status of ongoing processes, identify current incidents and track past activities",
        "importanceVotes": null,
        "criticalVotes": null
      },
      {
        "name": "AI Copilot",
        "definition": "A virtual assistant that uses AI to pursue goals and complete tasks on behalf of users",
        "importanceVotes": null,
        "criticalVotes": null
      }
    ]
  }
]
```

`shortlist` holds the `productId` of every product on the category's Shortlist; `productCount` is filled when the whole category was read.

#### Fields

- **Product:** `name`, `vendor`, `url`, `seoId`, `productId`, `logoUrl`, `shortDescription`, `description`, `primaryCategory`, `categories`, `listedPages`
- **Place in the category:** `category`, `categoryRank` (1 is the top of the list), `sponsored` (a paid placement), `shortlisted` (on the category's Shortlist)
- **Ratings:** `rating`, `reviewCount`, `ratingDistribution` (stars 1 to 5), `ratings` (ease of use, customer support, functionality, value for money), `likelihoodToRecommend` (0 to 1), `reviewsLast6Months`, `reviewsLast12Months`, `reviewsByCompanySize`, `reviewSentiment`, `reviewTopics`
- **Pricing:** `pricing` with starting price, currency, pricing model, payment frequency, free trial, free version, credit card requirement and every plan
- **Profile:** `features` (with rating, review count and importance), `topFeatures`, `pros`, `cons`, `awards`, `shortlists`, `alternatives`, `integrations`, `faqs`, `media`
- **Who uses it:** `reviewerCompanySizes`, `reviewerIndustries`, `reviewerJobFunctions`, `targetCompanySizes`, `deployment`, `support`, `training`
- **Run:** `detailsIncluded`, `scrapedAt`

### Pricing

Pay per product: $2.99 per 1,000 products on the Free plan. Bronze pays $2.49, Silver $2.29, Gold and above $1.99.

Full details add $5.00 per 1,000 products on every plan, charged only for products that carry them. Product URLs always do; category products do when `includeDetails` is on.

#### Pricing Examples

Product and full-details charges on the Free plan:

| Run | Cost |
|-----|------|
| A category of 700 products | $2.09 |
| The same category with full details | $5.59 |
| 100 product URLs | $0.80 |

**Try it free**: new Apify users get $5 in platform credits.

### API Integration

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("your_token")
run = client.actor("zen-studio/capterra-products-scraper").call(
    run_input={
        "startUrls": ["https://www.capterra.com/restaurant-management-software/"],
        "maxProductsPerCategory": 100,
        "includeDetails": True,
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["categoryRank"], item["name"], item["rating"], item["reviewCount"], item["pricing"]["startingPrice"])

categories = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("CATEGORIES")["value"]
print(categories[0]["name"], categories[0]["pageCount"])
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'your_token' });
const run = await client.actor('zen-studio/capterra-products-scraper').call({
    startUrls: ['https://www.capterra.com/restaurant-management-software/'],
    maxProductsPerCategory: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`${items.length} products, ${items.filter((p) => p.sponsored).length} paid placements`);
```

### Data Export

Results are available in:

- **JSON**: Full structured data with nested objects
- **CSV**: Flattened for spreadsheet analysis
- **Excel**: Direct download from Apify Console

### Video: schedule it and chain it

[![How to schedule tasks to run automatically on the Apify platform](https://img.youtube.com/vi/GRFW_Loo2dk/hqdefault.jpg)](https://www.youtube.com/watch?v=GRFW_Loo2dk)

Apify's own walkthroughs apply to this actor unchanged: [scheduling a run](https://www.youtube.com/watch?v=GRFW_Loo2dk) (daily or hourly, from Console) and [chaining Actors with the Actor-to-Actor integration](https://www.youtube.com/watch?v=zExnYbvFoBM), so another Actor or a webhook picks up each new dataset.

### FAQ

**How do I find a category URL?**
Open the category on capterra.com, for example from a product's breadcrumb or from the site's category list, and copy the address. It looks like `https://www.capterra.com/<name>-software/`. Each product's `categories` field lists the URLs of every category it belongs to.

**Which visitors' view do I get?**
The United States view of capterra.com. Paid placements differ by the visitor's country.

**What does `sponsored` mean?**
The product's place in the list is paid for. Capterra shows paid placements at the top of a category, then the rest in its own order.

**What is the Shortlist?**
Capterra's selection of leading products in a category, awarded as a badge. `shortlisted` marks the products holding the category's Shortlist badge, and with full details the product's `shortlists` field lists every Shortlist and award badge it holds, with the year.

**How fast is it?**
A category of 700 products takes well under a minute. Full details add about half a second per product.

**How do I get the reviews?**
Pass any row's `url` to the <a href="https://apify.com/zen-studio/capterra-reviews-scraper">Capterra Review Scraper</a>.

**Why are some fields null?**
A product nobody has reviewed has no rating and no recommendation share. Fields that only the product's own page carries are `null` unless `includeDetails` is on or the URL is a product URL. If a product's page could not be loaded, its category row still arrives with `detailsIncluded` set to `false`.

**What if a URL is wrong?**
The run says which URL it skipped and why, and goes on with the rest. A run where no URL could be read ends with that message.

### Legal

This Actor extracts publicly available product data from Capterra. Users are responsible for complying with Capterra terms of service and applicable data protection regulations (GDPR, CCPA).

# Actor input Schema

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

Capterra category URLs, product URLs, or both. A category URL returns every product the category lists, for example https://www.capterra.com/restaurant-management-software/. A product URL returns that product's full profile, for example https://www.capterra.com/p/135003/Slack/.

## `maxProductsPerCategory` (type: `integer`):

How many products to return from each category, in the order Capterra lists them. Leave empty or set 0 for every product.

## `includeDetails` (type: `boolean`):

For category URLs, also return each product's full profile: pricing plans, every feature with its rating, pros and cons, alternatives, integrations, FAQs, reviewer industries and more. Takes longer and is charged per product. Product URLs always include it.

## `feedback` (type: `string`):

For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.capterra.com/restaurant-management-software/"
  ],
  "maxProductsPerCategory": 50,
  "includeDetails": false
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `categories` (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": [
        "https://www.capterra.com/restaurant-management-software/"
    ],
    "maxProductsPerCategory": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/capterra-products-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/restaurant-management-software/"],
    "maxProductsPerCategory": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/capterra-products-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/restaurant-management-software/"
  ],
  "maxProductsPerCategory": 50
}' |
apify call zen-studio/capterra-products-scraper --silent --output-dataset

```

## MCP server setup

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