# G2 and Capterra Reviews Scraper

> G2 reviews scraper and Capterra review scraper: get ratings, pros, cons and dates from a product link. Filter by stars, date or company size. No login.

URL: https://cliqtomedia.com/actors/software-reviews-scraper/

Category: Reviews & app stores · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/software-reviews-scraper?fpr=cliqto

Get public software reviews from G2 and Capterra without login. Add a product link, a G2 keyword or a G2 category. Each row has the rating, title, pros, cons and date.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `https://www.g2.com/products/slack/reviews` in Product URLs or G2 slugs. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Add a G2 or Capterra product and get its public reviews as clean rows with ratings, pros, cons, dates and company size, plus product data.



### Good for

- Read what customers say about your product or a competitor, with ratings and full text.
- Pull reviews from one segment, for example small business reviews from North America.
- Watch a product and get only new reviews on each scheduled run.
- Compare the rating, review count and price of several products.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Source page | $0.03 (from $0.021 on paid Apify plans) | One charge for each source page successfully fetched and processed. |
| Run preparation | $0.01 | One preparation charge after launch, including invalid input and bounded source failure checks. Source pages are charged separately only after successful validation. |

- One source page: about $0.03.
- 1,000 source pages: about $30.00.
- Every day 100 source pages, for 30 days: about $90.00 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/software-reviews-scraper?fpr=cliqto

## Questions

### How do I scrape G2 reviews without a login?

Add the product link and click Start. The Actor reads public pages only. You need no G2 account or cookie.

### Can I get every review of a product?

Not promised. G2 shows 100 reviews per filter combination. A very large product can hold reviews that no list shows.

### Why is a field empty?

The source does not show it for that review. Null means not shown. Reviewer names and contacts are not collected.

### Does a run with no results cost money?

Yes. You pay for the pages that were checked, because the work was done. Use `maxPages` and the cost limit to set a ceiling. A rare filter on the default setting stops after 20 pages.

### Why is the price per page and not per review?

Some runs check many pages and find few matching reviews. A price per page is the same for every filter. In a deep G2 run, one page gives about 7 reviews. Filtered or date-limited runs give fewer reviews per page.

### How fresh are the reviews?

Each run reads the live pages, so a review appears when the source publishes it. A test run returned a review dated the same day.

## Data fields

- `rowType` (string): review, product, insights, comparison, or a free status row.
- `status` (string): Complete, partial, or not_found for this row.
- `platform` (string): The source platform: g2 or capterra.
- `product` (string): Product name shown by the source.
- `productId` (string): Source product identifier, when available.
- `reviewId` (string): Stable public review identifier.
- `rating` (number): Review score from 0 to 5. G2 half stars are kept.
- `recommendationRating` (number): Source recommendation score from 0 to 10. G2 uses its original ten-point star class.
- `title` (string): Full public review title.
- `pros` (string): What the reviewer likes.
- `cons` (string): What the reviewer dislikes.
- `problemsSolved` (string): Problems solved or overall experience when the source shows it.
- `text` (string): Public review answers combined as plain text.
- `questions` (array): All public question and answer sections found in the review.
- `reviewerRole` (string): Public job title or user role. No personal contact details.
- `companySize` (string): Public employee range or business segment.
- `industry` (string): Public reviewer industry, when shown.
- `region` (string): Public reviewer region. Null when the source does not show it.
- `date` (string): Review date in YYYY-MM-DD format.
- `submittedAt` (string): Exact time the review was published, in UTC. G2 only. Null when the source does not show it or two reviews on a page share a title.
- `updatedAt` (string): Exact time the review was last changed, in UTC, as the source gives it, so it can be earlier than the publish time. G2 only. Null when the source does not show it or two reviews on a page share a title.
- `subRatings` (object): Available source scores for ease of use, features, support, and value. A missing answer is null.
- `verified` (boolean): Whether the source displays a verified reviewer label.
- `currentUser` (boolean): Whether G2 labels the reviewer as a current user.
- `validationMethod` (string): Public method used to validate the review, when shown.
- `incentive` (string): Source note about a review incentive, when shown.
- `reviewSource` (string): Source label for how the review was collected.
- `timeUsedProduct` (string): How long the reviewer says they used the product.
- `switchedFrom` (string): Public switching history, when shown.
- `switchingReason` (string): Public reason for switching, when shown.
- `vendorResponse` (string): Public reply from the vendor, when shown.
- `url` (string): Public link to the review or product.
- `sourceUrl` (string): Exact public source page used, including the regional domain.
- `fetchedAt` (string): UTC time when this data was read.
- `description` (string): Public product description.
- `category` (string): Product category shown in structured source data.
- `aggregateRating` (number): Overall source rating for the product.
- `reviewCount` (number): Number of product reviews reported by the source.
- `pricing` (array): Public price offers, when shown. A missing price is null, not zero.
- `alternatives` (array): Other product links shown on the source page.

## Input settings

- `mode` (string): Choose reviews, product details, product search, category products, or a comparison of the products you add.
- `platform` (string): Choose G2 or Capterra. Choose Auto to mix product URLs from both sites in one run.
- `productUrls` (array): Add up to 20 product URLs. G2 slugs such as slack and numeric Capterra product IDs also work. Use Auto for mixed URLs. Capterra reads public regional pages; their review list can differ from the US site.
- `searchQuery` (string): In Product search mode, add a G2 product name or keyword, for example Slack or CRM. Discovery uses G2; choose G2 or Auto.
- `categoryUrls` (array): In Category products mode, add public G2 category URLs, for example https://www.g2.com/categories/crm. Capterra category discovery is not included.
- `maxReviews` (integer): Return up to this many matching reviews per product. G2 shows 100 reviews per filter combination, so a larger request reads many filtered pages: older reviews become available, order is no longer strict, and coverage is reported in REPORTS. Deep G2 speed varies a lot, so above about 100 raise the run Timeout from 300 seconds. Capterra regional pages can differ from the US list. Each successfully checked source page is billed, including pages with no new reviews.
- `maxProducts` (integer): In search and category modes, return details for up to this many products.
- `sortReviews` (string): Choose newest, helpful, or rating order. Only new reviews uses newest first. Capterra rating order reads separate star groups. A date cutoff can request newest order.
- `starRatings` (array): Keep reviews in these star groups. G2 half stars use the next whole-star group: 3.5 and 4.0 are in group 4. Leave empty for all ratings.
- `publishedAfter` (string): Keep reviews dated on or after this UTC date. Use YYYY-MM-DD.
- `publishedBefore` (string): Keep reviews dated on or before this UTC date. Use YYYY-MM-DD. On G2 an old date makes the run read filtered pages, so it can cost more pages than maxReviews suggests.
- `reviewSearch` (string): Keep reviews that contain every word in the title or full text. G2 also sends the words to its source filter.
- `companySize` (string): Keep reviews whose company size contains this text, for example Small-Business or Mid-Market. On G2 these segment names are applied at the source; other text checks downloaded reviews.
- `reviewerRole` (string): Keep reviews whose public job title or role contains this text. Reviews with no role do not match.
- `industry` (string): Keep reviews whose public industry contains this text. Reviews with no industry do not match.
- `region` (string): Keep reviews from this region. On G2 an exact region name (North America, Asia, Europe, Latin America, Middle East, Africa, ANZ) is applied at the source and fills the field. Other values check downloaded reviews, and empty values do not match.
- `includeInsights` (boolean): Add one free statistics row per product after reviews are saved. It uses only this run’s delivered reviews and includes rating counts and frequent complaint words.
- `onlyNew` (boolean): Remember the review IDs each run reads in a named store. Later runs return only reviews not seen before and stop at the first page with a known review. The first run builds the history. Use one store name per search.
- `stateName` (string): Optional name for your review history. Use the same name for repeat runs. If the store is not accessible, the Actor uses its own separate store.
- `maxPages` (integer): Stop after this many source pages for each product. A partial result states PAGE_LIMIT. Without a value it is maxReviews / 4, at least 20. A rare filter on review text or a very old date window may need more pages, and each page read is charged.
- `transport` (string): Auto is the best choice: Apify Unblocker for G2, and direct HTTP for Capterra with Unblocker if a page is blocked. Other choices force one route and can fail.
- `deliveryConnector` (string): Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors.
- `deliveryTarget` (string): Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide.

## Step by step on Apify

1. Open the Input tab. The form already holds a Slack link in Product URLs or G2 slugs (box 1). Replace it with your product, or keep it for a test.
2. Keep 5 in Maximum reviews per product (box 2) for the first run.
3. Keep G2 in Review platform (box 3), or choose Capterra for a Capterra link.
4. Click Start.
5. Open the Output tab and check the `rating`, `title`, `pros` and `date` columns.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Export the reviews of one product | `productUrls`, `maxReviews` | Review rows | `rating`, `title`, `pros`, `cons`, `date` | CSV, Google Sheets, BI tool |
| Study one customer segment | `companySize`, `region`, `industry`, `starRatings` | Filtered review rows | `companySize`, `region`, `industry`, `rating` | CSV, API |
| Get new reviews on a schedule | `onlyNew`, `stateName` | New review rows | `reviewId`, `date`, `rating`, `text` | Schedule, webhook, Slack or Notion |
| Build a list of products in a category | `mode`, `searchQuery` or `categoryUrls` | Product rows | `product`, `aggregateRating`, `reviewCount`, `url` | CSV, CRM import |
| Compare products | `mode`, `productUrls` | Product rows and one comparison row | `product`, `aggregateRating`, `reviewCount`, `pricing` | API, spreadsheet |

## Tips

- Keep Maximum reviews per product at 5 for a first run.
- Raise the Timeout in run options to get more than about 100 G2 reviews.
- Use one store name per search with onlyNew to get only new reviews.

## Limits



- Full history is not promised. G2 shows 100 reviews per filter combination and sort order. The Actor combines many lists, but a very large product can hold reviews that no list shows. Compare `sourceReviewCount` with `deliveredReviews` in `REPORTS`.
- Deep G2 speed. Speed depends on how fast pages answer, and it varies a lot. Runs limited to about 275 seconds got 299–922 reviews, and runs reached 1000 reviews in 5–6.5 minutes. To be sure of more than about 100, raise the Timeout in the run options. The Actor stops about 25 seconds before the Timeout and keeps its rows.
- Slow pages. One G2 page usually takes a few seconds. A slow page that had to be retried took close to 3 minutes. In tests, 100 G2 reviews took about 1.5–5 minutes and 150 took about 3 minutes.
- Old date windows. A narrow old window on a large product is best-effort. It can spend paid pages and return few rows or none. Tests asking for 20 Slack reviews from before 2020 read 15–20 pages and returned 13–20 rows. Raise `maxPages` if you want a longer search.
- G2 star groups. Group 5 includes 4.5, and group 4 includes 3.5 and 4.0. The `rating` column keeps the exact value.
- Capterra. Reviews come from public regional pages (Canada, or the UK as a fallback), and their list can differ from the US site. Rating-only reviews are valid and can have an empty `title` and `text`. Category and keyword search work on G2 only.
- Input limits. `productUrls` up to 20, `categoryUrls` up to 20, `maxReviews` up to 5000, `maxPages` up to 2000, `maxProducts` up to 10. The Actor also stops at a request limit (`REQUEST_LIMIT`) and a data limit (`BYTE_LIMIT`), which grow with `maxPages`.
- Several products in one run are best-effort. If some products are saved and others fail, the run still ends as `SUCCEEDED`. Failed products are listed in `REPORTS` with status `error` and their pages are not charged. If you add one product and it fails, the run ends as `FAILED`.

## Sample result

```json
{
  "rowType": "review",
  "status": "complete",
  "platform": "g2",
  "product": "Slack",
  "productId": "3437",
  "reviewId": "13975273",
  "rating": 4,
  "recommendationRating": 8,
  "title": "Quick Huddles and Team Chat, with Room for Better Music",
  "pros": "I like using Slack for quick huddles to resolve issues…",
  "cons": "I think Slack Huddles need more music…",
  "reviewerRole": null,
  "companySize": "Mid-Market (51-1000 emp.)",
  "industry": null,
  "region": null,
  "date": "2026-11-04",
  "submittedAt": "2026-11-04T12:24:30.000Z",
  "updatedAt": "2026-11-04T12:24:30.000Z",
  "verified": true,
  "reviewSource": "Organic",
  "url": "https://www.g2.com/products/slack/reviews/slack-review-13975273",
  "fetchedAt": "2026-11-04T14:19:15.206Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/software-reviews-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/software-reviews-scraper").call(run_input={
    "mode": "reviews",
    "platform": "g2"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~software-reviews-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "reviews", "platform": "g2"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/software-reviews-scraper")
result = tool.invoke({"run_input": {"mode": "reviews", "platform": "g2"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [TrustRadius Reviews Scraper: Pros, Cons & Ratings](https://cliqtomedia.com/actors/trustradius-reviews-scraper/)
- [Trustpilot Reviews Scraper - Ratings & Replies, No Login](https://cliqtomedia.com/actors/trustpilot-reviews-scraper/)
- [Google Play Reviews Scraper: Ratings, Replies & Versions](https://cliqtomedia.com/actors/google-play-reviews-scraper/)
- [Apple App Store Reviews Scraper: Ratings & Review Text](https://cliqtomedia.com/actors/apple-app-store-reviews-scraper/)
- [Glassdoor Jobs & Reviews Scraper](https://cliqtomedia.com/actors/glassdoor-scraper/)
- [App Store Search, Rank & App Details — No Login](https://cliqtomedia.com/actors/app-store-apps-search/)
