Capterra Reviews Scraper avatar

Capterra Reviews Scraper

Pricing

from $2.75 / 1,000 results

Go to Apify Store
Capterra Reviews Scraper

Capterra Reviews Scraper

Scrape 25 Capterra reviews per software product, each with the three sub-ratings Capterra scores separately - easeOfUse, customerService and valueForMoney - beside the overall rating, plus pros and cons as distinct fields, reviewerRole, companySize, industry and publishedAt. No account needed.

Pricing

from $2.75 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Categories

Share

What does the Capterra Reviews Scraper do?

This Actor collects software reviews from Capterra. Give it a product reference such as 135003-Slack and you get 25 reviews back, each with the overall star rating plus the three sub-ratings Capterra scores separately: ease of use, customer service and value for money. Pros and cons arrive as two distinct fields, and every review carries the reviewer's job title, company size band and industry.

Those four numbers per review are the reason to use Capterra rather than a general review site. A product can hold a 4.5 overall while its value-for-money score sits a full point lower, and that gap is the story a competitive analysis is looking for.

  • Four ratings per review: overall, easeOfUse, customerService, valueForMoney
  • pros and cons as separate fields, not one merged review body
  • Reviewer segmentation on every row: reviewerRole, companySize, industry
  • 25 reviews per product for one Capterra request
  • No Capterra account, cookie or API key anywhere in the run

What data does it extract?

FieldTypeDescription
reviewIdstringCapterra's own review ID. Use it to de-duplicate across runs
productSlugstringThe product slug from your input, e.g. Slack
productNamestringCapterra's display name, e.g. monday.com, which the slug cannot reproduce
titlestringThe review headline
ratingnumberOverall stars out of 5
easeOfUsenumberEase-of-use sub-rating out of 5
customerServicenumberCustomer-service sub-rating out of 5
valueForMoneynumberValue-for-money sub-rating out of 5
prosstringThe reviewer's Pros text
consstringThe reviewer's Cons text
reviewerNamestringAs published by Capterra
reviewerRolestringThe reviewer's job title
companySizestringEmployee band as Capterra states it, e.g. 11-50 employees
industrystringThe reviewer's industry
publishedAtstringReview date normalised to YYYY-MM-DD
reviewUrlstringAlways null; Capterra publishes no per-review permalink
sourceUrlstringThe product's review page, which the row was read from
collectedAtstringISO timestamp of the fetch

A sub-rating the reviewer did not score comes back as null rather than as 0. Capterra's scale starts at 1 and it uses zero as its "not rated" sentinel, so treating that zero as a score would drag every average down.

Why scrape Capterra?

  • Competitor teardowns. Pull a whole category and compare products on the sub-ratings, not just on the headline star average that every vendor already quotes in its own marketing.
  • Find the soft spot. A rival that scores well on ease of use and badly on value for money is telling you where a pricing attack lands.
  • Battlecards. pros and cons are the customer's own words about a competitor, which is more persuasive in a sales conversation than anything an analyst wrote.
  • Segment before you reposition. companySize and industry on each row let you check whether a complaint is universal or confined to enterprise buyers.
  • Watch your own reviews. Schedule the Actor on your product and diff by reviewId to see new reviews as they land.

How to use it

  1. Start a run with Try for free, or add the Actor to your Apify account.
  2. Find each product's Capterra reference. Open the product on Capterra and read both halves out of the URL: https://www.capterra.com/p/135003/Slack/reviews/ gives the ID 135003 and the slug Slack, so the reference is 135003-Slack.
  3. Paste the references into Product IDs or URLs, one per line.
  4. Set Maximum results if you want a ceiling on the dataset, and raise Concurrency for a long product list.
  5. Click Start, then export the rows from the Dataset tab as JSON, CSV or Excel.
  6. Check the run's SUMMARY record for any product that failed and the reason.

Capterra addresses a product by numeric ID and name slug together, so a bare product name does not resolve. Slack is 135003-Slack, never slack. These forms are all accepted and all resolve to the same fetch:

  • 135003-Slack
  • 135003/Slack
  • p/135003/Slack
  • https://www.capterra.com/p/135003/Slack/
  • https://www.capterra.com/p/135003/Slack/reviews/

A reference missing either half, and any URL on a host other than capterra.com, is rejected and reported as a failed target instead of aborting the run.

Input

FieldTypeDefaultDescription
productsarray of stringsrequiredCapterra product references in any of the forms above. Between 1 and 100 entries. Duplicates collapse to one fetch
maxItemsinteger1000Ceiling on dataset rows, 1 to 50000
concurrencyinteger2Products fetched in parallel, 1 to 5
{
"products": ["135003-Slack", "147657-monday-com"],
"maxItems": 1000,
"concurrency": 2
}

Output

One row per review. The shape below is illustrative — it shows the fields and their types, not a captured run.

{
"reviewId": "Capterra___7189737",
"productSlug": "Slack",
"productName": "Slack",
"title": "Replaced our internal email almost overnight",
"rating": 4.5,
"easeOfUse": 5,
"customerService": 4,
"valueForMoney": 3.5,
"pros": "Channels keep project conversation out of my inbox, and search actually finds old threads.",
"cons": "The free tier's message history limit bites much sooner than you expect on a busy team.",
"reviewerName": "Priya S.",
"reviewerRole": "Operations Manager",
"companySize": "11-50 employees",
"industry": "Marketing and Advertising",
"publishedAt": "2026-07-25",
"reviewUrl": null,
"sourceUrl": "https://www.capterra.com/p/135003/Slack/reviews/",
"collectedAt": "2026-08-21T09:14:03.512Z"
}

Reliability

Capterra is a Next.js App Router site, so there is no single page-data blob to read. Its state ships as React Flight frames pushed into self.__next_f, each cut at an arbitrary offset, and the Actor reassembles them before reading the review array out of the joined payload. That is the only source on the page carrying the sub-ratings, the pros and cons split, and the reviewer attributes as values. The rendered review cards show every number as a star widget, and Capterra's schema.org block lists the same 25 reviews with nothing but author, title and overall rating.

Recovering the review array walks the JSON's own brackets and escapes rather than matching to a closing delimiter, because reviewers write braces and quotation marks in their prose and a lazy pattern truncates the payload at the first one.

A product that cannot be read is recorded in the run's SUMMARY under failures rather than quietly returning fewer rows, and a run where every product failed exits with an error. There are no retries: the String Unblocker behind this Actor owns proxy rotation and solver selection, so a retry loop out here would only re-roll the same block.

Limitations

One page of reviews per product, which is the 25 Capterra serves. This is not a full review-history crawler, and there is no date, rating or sort filter. Product-level fields — pricing, feature lists, alternatives, the overall product score — are not collected, and neither is a per-review permalink, because Capterra does not publish one. Only capterra.com references are accepted.

How much does it cost?

Pricing is per event: one charge for each review row written to the dataset. A product that fails produces no rows and costs nothing. The current rate is in the pricing panel at the top of this page.

Runs started from an Apify free plan stop at 250 requests and 250 results, which the run reports in its status message. Any paid plan runs the full input and whatever maxItems you set. The cap exists because this Actor fetches through String's own infrastructure, which Apify does not reimburse on free-plan runs; binding it on requests as well as rows means a long product list cannot spend those fetches on rows the run will not return.

Using it with the Apify API

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const run = await client.actor("usestring/capterra-reviews").call({
products: ["135003-Slack", "147657-monday-com"],
maxItems: 1000
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const scored = items.filter((review) => review.valueForMoney !== null);
const averageValue = scored.reduce((total, review) => total + review.valueForMoney, 0) / scored.length;
console.log(averageValue.toFixed(2), "average value-for-money across", scored.length, "reviews");
const summary = await client.keyValueStore(run.defaultKeyValueStoreId).getRecord("SUMMARY");
console.log(summary?.value);

The Actor reads the public product review page a logged-out visitor sees. No account, no session cookie, no paywall, nothing behind a login. On the access question, US and EU law has settled fairly clearly: reading a page published to the open web is not unauthorised access. The harder questions with review data are copyright and privacy, not access.

Reviews are opinions their authors chose to publish under a display name, which Capterra shows to anyone who visits. That still makes reviewerName personal data under GDPR if your reviewers are in the EU, so if you are storing rows in Europe, have a lawful basis for it and consider dropping the name column when your analysis does not need it — the sub-ratings, segments and text carry the value. Review text belongs to its author and to Capterra, so use it for analysis rather than republishing it. None of this is legal advice.

  • G2 Reviews Scraper — the sister listing. G2 covers the same category from a different reviewer base and adds a company segment; running both is how you avoid drawing a conclusion from one site's audience.
  • Glassdoor Jobs Scraper — what a competitor is hiring for, which usually leads the roadmap by a quarter or two.
  • LinkedIn Profile Scraper — the people behind a competitor, by profile URL.
  • Yahoo Finance Quote Scraper — market cap, PE ratio and price for the listed vendors in your category.

FAQ

How do I find the right Capterra product identifier? Open the product's Capterra page and take both parts of the URL. https://www.capterra.com/p/135003/Slack/reviews/ becomes 135003-Slack. The numeric ID alone or the name alone will not reach a page.

How many Capterra reviews do I get per product? 25, from one Capterra request per product. Ten products therefore return roughly 250 rows.

Does it page through every review on a product? No. It reads the first page of reviews only, so it does not return a product's full review history.

Do I need a Capterra account, API key or cookies? No. Only the public, logged-out review page is read.

Are the sub-ratings really separate numbers? Yes. easeOfUse, customerService and valueForMoney come back as separate values alongside the overall rating, and an unscored dimension is null rather than 0.

Is there a link to each individual review? No. Capterra publishes no per-review permalink; a /reviews/<id>/ URL redirects back to the product page. reviewUrl is therefore always null. Use sourceUrl for the product's review page and reviewId to key a row.

How is this different from the G2 Reviews Scraper? Capterra gives you 25 reviews per product with three sub-ratings and a company-size band. G2 gives you 10 of the most recent, with a company segment, a validated-reviewer flag and a permalink per review. Different audiences, different fields, and they cross-check each other.

Feedback

If a product reference fails or a field parses wrong, open an issue from the Issues tab on this Actor's Store page with the reference that reproduces it.