Blog / Web data by industry

Software Review Data Analysis for Competitive Research

Software review data tells you what a competitor's vocal customers complain about and praise, how that changes over time, and how it differs by segment. It doesn't tell you market share, satisfaction across all customers, or why people stay quiet. For competitive research, keep each review's rating, date, segment fields (role, company size, time used where the site has them) and verification label, and compare competitors on trends and themes rather than on headline scores.

What can review data tell you about a competitor?

Three things, reliably. First, the themes: what customers bring up unprompted, such as onboarding, pricing changes, support response or a specific feature. Second, direction: whether complaints about a theme rise or fall after a release or a price change. Third, segment differences: on Capterra, whether small companies and large ones, or trial users and two-year users, rate a product differently.

It can't tell you how many customers a competitor has, how satisfied the silent majority is, or what churned customers would say, because those people mostly don't write reviews. Research on online product reviews names two self-selection effects: people who buy a product are already disposed to like it, and people with extreme opinions are more likely to review than people with moderate ones. Together they make the mean rating a biased measure of quality (Hu, Pavlou and Zhang, MIS Quarterly, 2017).

So treat reviews as a stream of qualitative evidence with known biases. They are good for "what do Product B's unhappy users say that Product A's don't", and poor for "Product A is better than Product B".

Which sources cover which kind of software?

Each site reflects its own audience and review process, so the choice of source shapes the answer. Capterra is built around business software and records who the reviewer is in business terms. Trustpilot reviews companies, so a software company's profile mixes product, billing and support experiences. Google Play reviews one app on one platform, with very high volumes for consumer apps.

Source Endpoint What it's good for Segment fields
Capterra /v1/capterra/products-reviews (id) B2B software, by buyer segment Filters: company_size[] (A–I), time_used[], countries[], overall_rating_ge
Trustpilot /v1/trustpilot/company-reviews (company_domain) The whole company experience rating, language, verification labels; filters date_posted, verified, rating
Google Play /v1/google-play/product-reviews (product_id) One Android app rating, likes, iso_date; filters rating, sort_by, gl

All three cost 1 credit per successful call. We have recorded responses for Trustpilot and Google Play, so their field names below are real; for Capterra we have a recorded product list, where each product carries a review_count, but not a recorded reviews response, which is why the method for it relies on filters rather than parsing reviewer fields.

Which fields should you keep?

Keep what lets you count, segment and date reviews, and drop what identifies people. A competitive analysis never needs a reviewer's name or avatar, and both sources return them. Here is one recorded Trustpilot review with the text cut and personal fields removed:

{
  "id": "6adac54ca4e34a0e087ae2b2",
  "rating": 1,
  "title": "Ich war Jahrelang zufriedener Kunde von…",
  "language": "de",
  "isVerified": false,
  "labels": {
    "verification": {
      "isVerified": false,
      "reviewSourceName": "Organic",
      "verificationSource": "invitation",
      "verificationLevel": "not-verified",
      …
    }
  },
  "dates": { "experiencedDate": "2026-10-23T00:00:00.000Z", "publishedDate": "2026-10-23T04:24:12.000Z" },
  "likes": 0,
  …
}
Field Source Why keep it
id Both Deduplicate across pulls
rating Both The count you tally
dates.publishedDate / iso_date Trustpilot / Google Play Trends, and before/after a release
dates.experiencedDate Trustpilot When the experience happened, which can differ from posting
language Trustpilot Compare markets separately
labels.verification.*, isVerified Trustpilot Separate verified, invited and organic reviews
likes Both How many readers found a review useful; the recorded Google Play reviews have 491, 390 and 109
Filter values you sent Capterra Segment labels: company_size[], time_used[]
Review text All Themes; store it, but don't tally it raw

Drop consumer details on Trustpilot and the title and avatar on Google Play reviews, where title holds the reviewer's name. For Capterra, check a page in the playground on the Capterra API page to see what it returns about each reviewer, and keep role and company size only if they're there.

What does a worked tally show?

A tally of the recorded Trustpilot profile for amazon.com shows the shape that makes headline scores misleading. The response's filters.reviewStatistics.ratings gives counts by star, and businessUnit gives the TrustScore and recent volume. The shares below are computed from those counts.

Stars Reviews Share
1 33,636 67.5%
2 3,004 6.0%
3 1,869 3.8%
4 2,423 4.9%
5 8,898 17.9%
Total 49,830

Three readings follow. The distribution is U-shaped: 85.4% of ratings are one or five stars, and the middle is nearly empty, which is what under-reporting bias predicts. The simple mean is (1 × 33,636 + 2 × 3,004 + 3 × 1,869 + 4 × 2,423 + 5 × 8,898) ÷ 49,830 = 2.0 stars, yet trustScore is 1.5. Trustpilot says TrustScore isn't a simple average: it gives more weight to newer reviews and starts every company with seven 3.5-star reviews as a prior (Trustpilot Help Center, 2026). And numberOfReviewsLast12Months is 9,156, so 18.4% of the reviews are from the past year.

The same response lists similarBusinessUnits, Trustpilot's own comparison set: Temu at TrustScore 1.8 with 56,735 reviews, Amazon.co.uk at 1.4 with 34,369 and Amazon.de at 1.5 with 25,994. That's a ready-made competitor list, but compare their recent reviews, not these lifetime scores. Note also that the profile's rating counts total 49,830 while its review list reports 46,782; say which count you use.

How do you tally competitors yourself?

Pull the same window for each competitor, tally by month and rating, and keep segment and verification labels. Use Trustpilot's date_posted filter (last_12_months, last_6_months, last_3_months, last_30_days) so every company is measured over the same period. This script tallies Trustpilot reviews by month, rating and verification source for a list of domains, using only fields from the recorded response:

import collections
import os
import requests

URL = "https://api.perceptlayer.com/v1/trustpilot/company-reviews"
HEADERS = {"X-API-Key": os.environ["API_KEY"]}
COMPETITORS = ["example-a.com", "example-b.com"]

tally = collections.Counter()
for domain in COMPETITORS:
    for page in range(1, 6):
        r = requests.get(URL, headers=HEADERS, timeout=60, params={
            "company_domain": domain, "page": page,
            "sort": "recency", "date_posted": "last_12_months"})
        if r.status_code != 200:
            print(domain, page, r.json()["error"]["code"])
            break
        reviews = r.json().get("reviews", [])
        for rv in reviews:
            month = rv["dates"]["publishedDate"][:7]
            source = rv["labels"]["verification"].get("verificationSource")
            tally[(domain, month, rv["rating"], source)] += 1
        if not reviews:
            break

for (domain, month, rating, source), n in sorted(tally.items()):
    print(domain, month, rating, source, n)

We haven't run this script live for this article. For Capterra, segment by the filter instead of parsing reviewer fields: call products-reviews once per company_size[] code or per time_used[] value, such as FreeTrial against MoreThan2Years, and store the value you sent with every review from that call. Comparing trial users' ratings with two-year users' is often the most useful B2B cut: it separates first impressions from what the product is like to live with.

Which biases should you correct for?

Four, beyond self-selection. Solicitation: companies that invite reviews can collect a different mix of reviewers from those that don't, so check verification and invitation labels and compare like with like. Removed reviews: platforms remove reviews they judge fake; Trustpilot says it removed 4.5 million fake reviews in 2024, 7.4% of all reviews submitted that year (Trustpilot Trust Report, 2025). What you can read is what survived moderation.

Platform mix: Trustpilot reviews the company and Google Play the Android app, so a gap between the two may be about billing or support versus the app itself, not one product being better. Volume: a competitor with 20 reviews this quarter can swing on a handful, so show counts next to every share. For the mechanics of collecting and deduplicating reviews from all three sources, the guide to review data for sentiment analysis has the code.

What does a competitor review pull cost?

One credit per successful call on all three sources, so the cost is pages. Four competitors, three sources and five pages each is 4 × 3 × 5 = 60 credits for an initial pull. A monthly refresh of the first page of recency-sorted reviews is 4 × 3 = 12 credits. Capterra segment pulls add one call per segment per product.

Step Calls Credits
Initial pull: 4 competitors × 3 sources × 5 pages 60 60
Capterra segments: 4 products × 5 time_used[] values 20 20
Monthly refresh: 4 × 3 × page 1 12 a month 12

All of it fits inside the 1,000 free monthly credits. Failed calls cost nothing. The credits docs explain the balance and pricing has what packs cost. To see the fields for a competitor you care about, run company-reviews for its domain in the playground on the Trustpilot API page.

APIs in this post

Frequently asked questions

Can review data show which competitor is better?

Not on its own. Reviewers select themselves, platforms moderate what's published, and companies differ in how hard they ask for reviews. Review data is good for themes, trends and segment differences within a product. For "who is better", compare the same segment over the same window, and treat the result as one input among several.

Why is a TrustScore different from the average rating?

Trustpilot says TrustScore isn't a simple average: it weights newer reviews more and starts every company with seven 3.5-star reviews as a prior. In the recorded amazon.com profile, the mean of its star counts is 2.0 while the TrustScore is 1.5, which is what recency weighting does when recent reviews are worse.

Which review fields matter for B2B competitive research?

Rating, date, and the reviewer's segment: role, company size and how long they've used the product, where the site records them. Capterra's review endpoint filters on company size and time used, so you can pull each segment separately. Add the review text for themes and the verification label for how the review was collected.

Should I keep reviewers' names?

No. A competitive analysis needs ratings, dates, segments and text, not identities. Drop names, avatars and profile details at ingestion: Trustpilot returns them under consumer, and Google Play puts the reviewer's name in the review title. Never use review data to contact reviewers.

How much does it cost to track competitors' reviews monthly?

One credit per successful call. Refreshing the newest page of reviews for 4 competitors on 3 sources is 12 credits a month, and an initial 5-page pull is 60 credits. Both fit inside the 1,000 free monthly credits. The pricing page has what credit packs cost beyond that.

  1. Job Posting Data for Labour-Market Research

    Which Indeed posting fields support trend analysis, where postings mislead versus hires, and a weekly collection plan that costs 3,000 credits a month.

  2. Salary Data from Job Sites: Reading Ranges Without Bias

    Glassdoor's salaries endpoint returns p10 to p90 total pay, a currency and a national count. How to read those ranges and the biases of self-reported pay.

  3. Flight Price Data: What Fare Tracking Can and Cannot Show

    What one recorded JFK to LAX call shows: price, stops, duration and CO2 per flight. Plus what a single snapshot can't tell you, and a daily tracker's cost.

Start with 1,000 free credits

No password to set. We email you a sign-in link, and your key works on every API.

No credit card. 1,000 free credits a month.