Software Reviews Scraper — G2, Capterra & TrustRadius
Pricing
from $7.00 / 1,000 review scrapeds
Software Reviews Scraper — G2, Capterra & TrustRadius
Multi-platform B2B software reviews scraper with unified output across G2, Capterra, TrustRadius, SoftwareAdvice, GetApp. Auto platform detection. MCP-ready.
Pricing
from $7.00 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Software Reviews All-in-One Scraper — G2, Capterra, TrustRadius
Software Reviews Scraper is an Apify Actor for analysts, marketers, operators, and AI agents that need one normalized way to collect B2B software reviews across G2, Capterra, TrustRadius, SoftwareAdvice, and GetApp. It accepts either startUrls for a known product or reviews page, or searchQuery for cross-platform product discovery. Each dataset record represents one review or one product summary card, and the unified output includes platform, product identity, rating details, review text, reviewer firmographics, helpful votes, vendor replies, and scrape timestamps so downstream workflows can compare sources with a consistent schema. This Actor is usable through Apify MCP.
Best fit and connected workflows
This Actor routes well into workflows that need public software-review data in one schema across multiple review sites.
- Direct review collection from a known product page when you already have a G2, Capterra, TrustRadius, SoftwareAdvice, or GetApp URL.
- Cross-platform discovery when you start from a product name and want matching product cards by platform.
- Review-level analysis for sentiment, feature feedback, competitive research, and reviewer context.
- Product-card output for discovery workflows that only need name, rating, review count, vendor, category, and URL.
- Agent workflows through Apify MCP where a tool needs structured review rows or product rows with clear provenance.
Practical scenario
Rina, a SaaS analyst, starts with a TrustRadius reviews URL for Slack and passes it in startUrls. She keeps includeReviews enabled and leaves sorting on newest. The dataset returns platform, productName, rating, reviewTitle, reviewer, reviewDate, and reviewUrl, along with reviewBody, pros, cons, subRatings, and vendorResponse when the platform provides them. Rina uses the reviewer firmographics and review text to group recurring themes, then exports the dataset for a competitive briefing.
Input fields
| Field | Type | Purpose |
|---|---|---|
startUrls | array | Product or reviews URLs from G2, Capterra, TrustRadius, SoftwareAdvice, or GetApp. Platform is auto-detected from the domain. |
searchQuery | string | Product name to search across enabled platforms. |
platforms | array | Platforms used in search mode: g2, capterra, trustradius, softwareadvice, getapp. |
maxReviewsPerProduct | integer | Hard cap on reviews scraped per product across all pages. |
maxProductsPerSearch | integer | Hard cap on products returned by each search per platform. |
includeReviews | boolean | When enabled, scrapes individual reviews. When disabled, returns product summary cards. |
sortReviewsBy | string | Review order, either newest or helpful. |
proxyConfiguration | object | Apify Proxy settings, with residential routing prefilled by default. |
debug | boolean | Dumps the first page of each product to the key-value store for selector diagnostics. |
Focused JSON input example
{"searchQuery": "Slack","platforms": ["g2", "capterra", "trustradius"],"maxProductsPerSearch": 5,"maxReviewsPerProduct": 25,"includeReviews": true,"sortReviewsBy": "newest","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"},"debug": false}
Output fields
| Field | Type | Purpose |
|---|---|---|
platform | string | Source platform. |
recordType | string | review or product. |
productName | string | Product name as listed on the platform. |
productSlug | string | Platform-specific product slug. |
productUrl | string | Canonical product URL on the platform. |
productRating | number or null | Aggregate product rating. |
productReviewCount | integer or null | Total review count on the platform. |
vendor | string or null | Vendor or company name. |
category | string or null | Primary platform category. |
rating | number or null | Review star rating. |
reviewTitle | string or null | Review headline. |
reviewBody | string or null | Full review text. |
pros | array | Positive points listed in the review. |
cons | array | Negative points listed in the review. |
subRatings | object or null | Platform sub-ratings such as ease of use or customer support. |
reviewer | object or null | Reviewer firmographics. |
reviewDate | string or null | ISO 8601 UTC review publication date. |
reviewUrl | string or null | Direct review URL when available. |
helpfulCount | integer or null | Number of users who marked the review helpful. |
vendorResponse | string or null | Vendor reply to the review, if any. |
alternativesConsidered | array | Other products the reviewer considered. |
switchedFrom | string or null | Product the reviewer switched away from. |
scrapedAt | string | ISO 8601 UTC scrape timestamp. |
Illustrative JSON output record
{"platform": "trustradius","recordType": "review","productName": "Slack","productSlug": "slack","productUrl": "https://www.trustradius.com/products/slack/reviews","productRating": 4.5,"productReviewCount": 1200,"vendor": "Slack Technologies","category": "Team Collaboration","rating": 4,"reviewTitle": "Easy to use for daily communication","reviewBody": "The interface is straightforward and helps keep project conversations organized.","pros": ["Simple channels", "Fast search"],"cons": ["Can get noisy"],"subRatings": {"easeOfUse": 5,"customerSupport": 4},"reviewer": {"name": "Alex","title": "Operations Manager","companyName": "Example Co","companySize": "51-200","industry": "Software","verified": true},"reviewDate": "2025-01-15T00:00:00.000Z","reviewUrl": "https://www.trustradius.com/reviews/example","helpfulCount": 12,"vendorResponse": "Thanks for the feedback.","alternativesConsidered": ["Microsoft Teams", "Google Chat"],"switchedFrom": "Email","scrapedAt": "2025-01-20T12:00:00.000Z"}
How it works
This Actor uses an HTTP-first extraction flow. The live contract shows parsing of embedded JSON sources such as __NEXT_DATA__ and JSON-LD, with HTML fallback selectors when needed. Platform detection happens from the URL in direct-URL mode, and search mode returns matching products from the selected platforms. The dataset uses one unified schema for review rows and product rows, and the output schema also exposes runOutput, runSummary, JSON and CSV dataset links, and a Console dataset view.
Evergreen pricing
This Actor uses Pay per event pricing together with Apify platform usage. The charged events are:
- Actor Start
- Review scraped
- Product found
A simple event-count example: one started run, three product cards, and twenty reviews means one Actor Start event, three Product found events, and twenty Review scraped events. Open the live Pricing tab on the Actor page for the current rates and platform usage details.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It gives agents a tool for discovering software products, collecting public reviews, and working with a unified dataset across G2, Capterra, TrustRadius, SoftwareAdvice, and GetApp.
Tool description: Scrape reviews or discover products across supported software review platforms with unified review and product-card output, plus dataset provenance and run summary records.
Actor identity: khadinakbar/software-reviews-all-in-one-scraper
Find Slack across G2, Capterra, and TrustRadius. Return product cards first, then collect reviews for the matched products. Keep the newest reviews and preserve the unified schema so I can compare platforms in one table.
When interpreting results, use recordType to separate review rows from product rows. platform identifies the source site, productUrl and reviewUrl provide provenance, reviewDate and scrapedAt support freshness checks, and reviewer provides firmographic context where the source exposes it. In search mode, maxProductsPerSearch controls how many products each platform returns, while maxReviewsPerProduct sets the per-product review cap. Pagination is handled by the Actor, and the event model supports cost-aware planning for agent workflows.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor("khadinakbar/software-reviews-all-in-one-scraper").call({searchQuery: "Notion",platforms: ["g2", "capterra", "trustradius"],maxProductsPerSearch: 3,maxReviewsPerProduct: 10,includeReviews: true,sortReviewsBy: "newest",});const { items } = await client.dataset(run.defaultDatasetId).listItems({clean: true,});console.log(items);
Best results and outcome guidance
Start with a known product reviews URL in startUrls when you already know the target page. Use searchQuery when you want cross-platform discovery by product name or category term. Set includeReviews: false for product-card discovery, then switch it on for review-level analysis. Keep maxReviewsPerProduct aligned with the amount of review evidence you actually need, and use sortReviewsBy to prioritize recent or helpful reviews. The live contract prefill for proxyConfiguration uses Apify residential proxies in the US, which fits the supported platforms.
Continue the workflow
- Then use Trustpilot Scraper — Company Profiles, Search & Categories to extend Software Reviews All-in-One Scraper — G2, Capterra, TrustRadius with a neighboring review and reputation research source when the brief calls for Trustpilot data.
- Then use Kununu Reviews Scraper — Employee Ratings & Feedback to extend Software Reviews All-in-One Scraper — G2, Capterra, TrustRadius with a neighboring review and reputation research source when the brief calls for Kununu data.
Design note
I found that the dataset contract clearly separates summary rows and review rows with recordType, while the output schema exposes both runOutput and runSummary alongside dataset links. That makes it straightforward to automate around terminal status while still keeping the row-level dataset unified.
FAQ
Can I scrape from a direct product page instead of searching?
Yes. Use startUrls with a product or reviews URL from one of the supported platforms.
Can I search by product name across platforms?
Yes. Use searchQuery, and optionally narrow the search with platforms.
What is the difference between includeReviews: true and false?
When enabled, the Actor returns review rows. When disabled, it returns product summary cards with fields like name, rating, review count, vendor, category, and URL.
How do I distinguish review rows from product rows in the dataset?
Check recordType. Use review for review rows and product for product summary cards.
Which fields are useful for provenance?
platform, productUrl, reviewUrl, reviewDate, and scrapedAt are the main provenance fields in the contract.
Can I sort by recency or helpfulness?
Yes. Set sortReviewsBy to newest or helpful.
Responsible use
Use this Actor for public review data collection, research, analysis, and automation in line with the terms and policies of the source platforms and applicable law. Reviewer identities, firmographics, and review text may be personal or sensitive in context, so handle them carefully before republishing or combining them with other sources. Keep usage aligned with legitimate business, research, or compliance workflows.