---
title: "How to Scrape G2 Reviews | Scrape.ly"
description: "Scrape G2 reviews for any software product: stars, likes, dislikes, reviewer role, company size and source. A real run, its cost, and API and MCP code."
url: https://scrape.ly/blog/scrape-g2-reviews
markdown: https://scrape.ly/blog/scrape-g2-reviews.md
---

[Tutorials](https://scrape.ly/blog/category/tutorials.md)

# How to Scrape G2 Reviews: Ratings, Likes and Dislikes, Reviewer Roles and Product Data

Scrape G2 reviews for any software product: star rating, likes, dislikes, problems solved, reviewer role, company size, validation and review source, plus G2's pros and cons summary. No-code steps, curl, Python, Node.js and MCP, with a real run from 27 October 2026 and its exact cost.

[Corner Ledger Actor publisher on the Scrape.ly Store](https://scrape.ly/blog/author/cornerledger.md)

- Published

  Oct 27, 2026

- Reading time

  9 min read

![Pixel-art robot with an orange >\_ on its terminal head pulls a review slip with red rating squares out of a monitor showing the red G2 logo above rows of software reviews, and drops it into a crate](https://scrape.ly/media/scrape-g2-reviews.png?w=1080)

To scrape G2 reviews, give a ready-made Actor a product's G2 URL (or just its slug, such as `notion`), and it returns one row per review: star rating, title, what the reviewer likes and dislikes, the problems the product solves, the reviewer's role, company size and industry, and how G2 validated the review. On Scrape.ly that's one input and one click, or a single API call, with no G2 account and no cookies.

This guide covers the fields you get, the no-code steps, the same job in curl, Python, Node.js and through an AI agent, a real run from 27 October 2026 (the six newest Notion reviews plus G2's pros and cons summary), its log and exact cost, and where product data such as pricing editions and alternatives comes from.

## What data you can get from G2

The [G2 Reviews Scraper](https://scrape.ly/store/cornerledger/g2-reviews-scraper.md) returns one row per review, with every answer in its own field:

| Field                                                                 | What it holds                                               |
| --------------------------------------------------------------------- | ----------------------------------------------------------- |
| `title`, `starRating`                                                 | Headline and rating on G2's 0–5 scale in half stars         |
| `date`, `updatedDate`                                                 | Published date and last edit                                |
| `likes`, `dislikes`, `problemsSolved`, `recommendations`              | The main review answers, kept apart                         |
| `answers`                                                             | Every question and answer in order                          |
| `text`, `markdownContent`                                             | All answers joined, and a Markdown version ready for an LLM |
| `reviewerName`, `reviewerTitle`, `companySize`, `reviewerIndustry`    | Reviewer details as G2 shows them                           |
| `validatedReviewer`, `validatedMethod`, `verifiedCurrentUser`         | Validation badges (LinkedIn, business email)                |
| `reviewSource`, `incentivized`, `aiTranslated`, `excludedFromG2Score` | Where the review came from and how G2 treats it             |
| `productName`, `productSlug`, `sellerSlug`                            | The product (and seller, for seller URLs)                   |

Turn on `includeProsConsSummary` and the run also saves G2's own summary of the product's top pros and cons, with a mention count per topic, at no extra cost. Video reviews come as extra rows with `includeVideoReviews`.

For product-level data (rating, star split, pricing editions, categories, alternatives, comparisons and integrations), the companion [G2 Products Scraper](https://scrape.ly/store/cornerledger/g2-products-scraper.md) reads product, category and search pages.

## How to scrape G2 reviews without code

1. Open the G2 Reviews Scraper in the Scrape.ly Store.
2. Paste a product URL such as `https://www.g2.com/products/notion/reviews` into **G2 product or seller URLs**, or start from the [lowest-rated Notion reviews](https://scrape.ly/store/cornerledger/g2-reviews-scraper/presets/url.md) preset. This is the input we ran:

```json
{
  "startUrls": ["https://www.g2.com/products/notion/reviews"],
  "maxReviews": 6,
  "sortOrder": "most_recent",
  "includeVideoReviews": false,
  "includeProsConsSummary": true
}
```

3. Click **Start**. Our run finished in 16 seconds.
4. Open the dataset and export it as JSON, CSV, Excel or HTML. The pros and cons summary sits in the run's key-value store as `pros-cons-notion`.

The input fields that matter most:

- `startUrls`: G2 product review pages, seller pages (`https://www.g2.com/sellers/<seller>` collects reviews across all of a vendor's products) or bare slugs like `notion`.
- `maxReviews`: text reviews per URL (default 20). Video reviews have their own cap, `videoReviewLimit`.
- `sortOrder`: `most_recent`, `most_helpful`, `highest_rated` or `lowest_rated`.
- `starRatings`: keep only some ratings, for example `["1", "2"]` for a competitor's complaints.
- `publishedAfter`: a date (`2026-08-01`) or a period (`7 days`, `1 month`), so a scheduled run returns only new reviews.
- `searchQuery`: keep reviews that contain these words. The [Notion reviews about templates](https://scrape.ly/store/cornerledger/g2-reviews-scraper/presets/search-query-recent.md) preset shows it.

Scrape.ly Store G2 Reviews Scraper Public G2 reviews for any software product or seller: stars, likes, dislikes, problems solved, reviewer role, company size, validation and source, with sort, star, date and keyword filters.

[Try it free](https://scrape.ly/store/cornerledger/g2-reviews-scraper.md) [Browse the Store](https://scrape.ly/store.md)

## How to scrape G2 reviews with the API

Create a token under **Settings → API & Integrations** in the dashboard and store it as `SCRAPELY_TOKEN`. A run of a few dozen reviews takes about 15 to 30 seconds, inside the synchronous endpoint's 45-second wait:

```shell
curl -X POST "https://api.scrape.ly/v2/actors/cornerledger~g2-reviews-scraper/run-sync-get-dataset-items"
  -H "Authorization: Bearer $SCRAPELY_TOKEN"
  -H "Content-Type: application/json"
  -d '{"startUrls": ["notion"], "maxReviews": 20, "sortOrder": "most_recent", "publishedAfter": "7 days"}'
```

For hundreds of reviews or several products, start the run asynchronously so a `408` timeout can't tempt you into starting a second run: `POST /v2/actors/cornerledger~g2-reviews-scraper/runs`, poll `/v2/actor-runs/RUN_ID?waitForFinish=60` until `SUCCEEDED`, then read `/v2/actor-runs/RUN_ID/dataset/items?format=csv`. The [API docs](https://scrape.ly/docs/api-actors.md) show the full flow.

In Python (`pip install scrapely-client-python`), this competitor-research script pulls the 1- and 2-star reviews of the last 90 days for three tools and prints what each reviewer dislikes, with their company size:

```python
import os

from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

run = client.actor("cornerledger/g2-reviews-scraper").call(
    run_input={
        "startUrls": ["notion", "clickup", "asana"],
        "maxReviews": 50,
        "sortOrder": "most_recent",
        "starRatings": ["1", "2"],
        "publishedAfter": "90 days",
    }
)
for r in client.dataset(run.default_dataset_id).iterate_items():
    print(r["productName"], r["starRating"], r.get("companySize"), "|", (r.get("dislikes") or "")[:120])
```

In JavaScript or Node.js (`npm install scrapely-client`), feed last week's reviews to your own sentiment model or an LLM, using the ready-made Markdown field:

```javascript
import { ScrapelyClient } from 'scrapely-client';

const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });

const run = await client.actor('cornerledger/g2-reviews-scraper').call({
  startUrls: ['https://www.g2.com/products/notion/reviews'],
  maxReviews: 100,
  publishedAfter: '7 days',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const docs = items.map((r) => r.markdownContent);
console.log(items.length, docs[0]?.slice(0, 200));
```

The [Python client](https://scrape.ly/docs/client-python.md) docs cover paging through large datasets.

### With an AI agent (MCP)

Scrape.ly runs a hosted MCP server at `https://mcp.scrape.ly`. In Cursor, add it to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "scrapely": {
      "url": "https://mcp.scrape.ly",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}
```

In Claude Code, run `claude mcp add --transport http scrapely https://mcp.scrape.ly`, then `/mcp` to sign in with OAuth. Then ask: "Use scrapely to get the 100 newest G2 reviews of Notion and ClickUp, and compare the top three dislikes per product, split by company size." The [MCP docs](https://scrape.ly/docs/mcp.md) list ChatGPT, VS Code, Windsurf and the other clients.

## A real run: Notion's newest G2 reviews

We ran the input above on 27 October 2026. It saved 6 reviews in 16.4 seconds, 12.3 of them spent scraping (14 requests). Reviewers are private people, so we show them as `[reviewer 1]` to `[reviewer 5]` and leave out their job titles, which the dataset does include:

| Reviewer      | Stars | Published                      | Title                                                           | Company size   | Validated      | Source                     |
| ------------- | ----- | ------------------------------ | --------------------------------------------------------------- | -------------- | -------------- | -------------------------- |
| \[reviewer 1] | 5     | 2026-10-26                     | Notion Turns Scattered Notes into Organized Pages and Databases | Small-Business | LinkedIn       | Organic                    |
| \[reviewer 2] | 4     | 2026-10-26                     | Notion Keeps Product Requirements and Roadmaps Organized…       | Mid-Market     | Business email | G2 invite                  |
| \[reviewer 3] | 5     | 2026-10-26                     | Daily work like task and shortcut                               | Mid-Market     | Business email | Organic, from user profile |
| \[reviewer 4] | 4.5   | 2026-10-25                     | Simple way to organize our hospital duties                      | Small-Business | LinkedIn       | G2 invite                  |
| \[reviewer 5] | 5     | 2024-08-02 (edited 2026-10-23) | One Stop Shop for Productivity and Organizing…                  | Enterprise     | LinkedIn       | Seller invite              |

```plaintext
20261027T16:04:14.850Z [Scrapely] Container started (setup 1.6 s)
20261027T16:04:16.463Z [scrapely.proxy_configuration] INFO  Platform proxy access check succeeded.
20261027T16:04:29.166Z [scrapely.actor] INFO  [Status message]: Done: 6 result(s) from 1 target(s).
20261027T16:04:29.751Z [Scrapely] Container state: status=exited exitCode=0 oomKilled=false
```

What the six rows and the summary show:

- **Every review is validated, most are invited.** All six reviewers were validated (three by LinkedIn, three by business email), and five carried G2's current-user badge. But four of six were marked incentivized, and four came through a G2 or seller invitation rather than organically. If you compute your own score, the `reviewSource` and `incentivized` fields let you weight or split them.
- **Not every review counts toward G2's score.** Two of the six had `excludedFromG2Score: true`. Filter on it if you want to reproduce G2's number.
- **Edits resurface old reviews.** Reviewer 5 first wrote in August 2024, edited the review on 23 October 2026, and it appeared among the newest. For "what's new this week", filter on `date`, not on position in the list.
- **Dislikes are specific and actionable.** In six reviews: AI answers that still need checking and pricing that "feels steep", workspaces that get messy as everyone creates pages, the desktop app not opening, the mobile app slow on weak connections, limited export options and search delays. That is a backlog, not a sentiment score.
- **Industry is often hidden.** Five of six reviewers left `reviewerIndustry` empty; company size was filled for all six, and five of six gave a job title, from customer service to product management and marketing. Segment by size and role, and treat industry as a bonus.
- **The summary gives you scale.** G2's pros and cons record listed Notion at 4.6 stars from 13,888 reviews. The top pro, Ease of Use, had 4,750 mentions; the top con, Learning Curve, had 1,894, followed by Limited Features (1,027). It's the fastest way to see a product's reputation before you read individual reviews.

## What it costs

The Actor charges one event per saved review or video review, platform usage (compute and residential proxy) included. Price checked on the Store page on 27 October 2026: **$0.00414 per review** ($4.14 per 1,000). The pros and cons summary is free.

**Our run:** 6 × $0.00414 = $0.02484 at list price. Our account was billed less after its plan's Store discount.

**At scale:** 200 reviews each for five competing products, 1,000 reviews in total, cost 1,000 × $0.00414 = $4.14. A weekly monitoring run with `publishedAfter: "7 days"` only pays for the new reviews it finds.

## What to watch out for

- **G2 shows 100 reviews per view.** Visitors see at most 100 reviews per sort and filter set. The Actor splits large products by rating, industry, company size and region to go further, and keeps newest-first output in date order. For very large products, a small share of reviews that carry none of those attributes can stay out of reach.
- **Half stars and a 0.** `starRating` is G2's 0–5 scale in half stars, so `0` is a real rating. The star filter groups half stars upward: `"2"` covers 1.5 to 2.
- **Search is by relevance.** `searchQuery` results come in G2's relevance order, not by date, and work on product URLs only.
- **Empty fields are G2's, not the Actor's.** Many reviewers hide their job title or industry, and anonymous reviewers show up without a name, labelled only by their industry.
- **Datacenter IPs get refused.** G2 blocks most datacenter addresses, so the Actor uses Scrape.ly's residential proxy by default, and that traffic is already in the per-review price.
- **Names and companies in text.** Reviewers sometimes name colleagues or their employer in the answers. Remove them before you quote reviews publicly.

G2 also runs its own APIs: its [API docs](https://data.g2.com/api/docs) list a Seller API, a Buyer API and a Data Solutions API. If you already have G2 API access for your own product, use it there. For competitors' reviews in a spreadsheet or pipeline, the Actor gets you the same answers in one input.

## Is it legal to scrape G2 reviews?

The Actor reads only public review pages that anyone can open without an account, and collects what those pages show; no emails or private profile data. G2's [Terms of Use](https://legal.g2.com/terms-of-use) (last updated July 9, 2026, read on 27 October 2026) are explicit, though. Section 9 says that without G2's express prior written consent you will not "access, collect, copy, scrape, harvest, cache, index, store, archive, or otherwise extract any content or data from the Site, including user reviews, reviewer identities or metadata, ratings, … through automated, programmatic, or mechanical means … whether or not such content is publicly accessible". Whether and how such terms bind you depends on your jurisdiction, whether you accepted them, and what you do with the data.

Reviews are also personal data: a name, job title and company size can identify someone, so the GDPR and similar laws apply once you store them. Collect only the fields you need, pseudonymise reviewers in anything you publish, and don't republish review text. Our guide to [whether web scraping is legal](https://scrape.ly/blog/is-web-scraping-legal.md) covers the basics, including the GDPR. This is not legal advice; for a commercial project, ask a lawyer about your case.

## Why Scrape.ly for G2 reviews

- **Past G2's 100-review view.** The split by rating, industry, company size and region gets you far more than one visitor sees, in date order.
- **Every answer, already structured.** Likes, dislikes, problems solved and recommendations arrive as separate fields, plus validation, source and incentive flags, plus Markdown for LLMs. No HTML parsing, no selectors to maintain.
- **Incremental by design.** `publishedAfter: "7 days"` and a schedule turn the Actor into a weekly feed for Slack, Sheets or your warehouse; our [review monitoring](https://scrape.ly/blog/review-monitoring.md) guide shows the setup.
- **One token for every review site.** The same account runs [Trustpilot reviews](https://scrape.ly/blog/scrape-trustpilot-reviews.md), [Google Play reviews](https://scrape.ly/blog/scrape-google-play-reviews.md) and [Glassdoor reviews](https://scrape.ly/blog/scrape-glassdoor.md), and the hosted MCP server puts them in front of your AI agent.

## FAQ

### Can you scrape G2 reviews for free?

Yes, for small jobs. The Free plan includes $5 of usage credit every month with no credit card. At list price that covers about 1,200 G2 reviews.

### How do I get only new G2 reviews every week?

Set `publishedAfter` to `7 days`, keep `sortOrder` on `most_recent`, save the input and schedule it weekly. Each run then saves only reviews published since the cutoff, and you pay for those only.

### Can I scrape all reviews of a vendor's products at once?

Yes. Paste the vendor's seller URL (`https://www.g2.com/sellers/<seller>`) and the Actor collects reviews across all of its products, with `sellerSlug` on each row.

### Does the scraper collect reviewer emails or LinkedIn profiles?

No. It returns what G2 shows publicly: display name, job title, company size, industry and validation method. There's no email lookup.

### Can I scrape G2 product data like pricing and alternatives?

Yes, with the [G2 Products Scraper](https://scrape.ly/store/cornerledger/g2-products-scraper.md). It returns rating, star split, pricing editions, categories, alternatives, comparisons and integrations for product, category and search pages. For B2B lead lists built from G2 categories, see our [lead generation scraping](https://scrape.ly/blog/lead-generation-scraping.md) guide, and add company IDs, headquarters and employee bands with our [Crunchbase guide](https://scrape.ly/blog/scrape-crunchbase.md).

### Can I scrape G2 reviews with Python?

Yes. Install `scrapely-client-python` and call `cornerledger/g2-reviews-scraper`, as in the competitor-research script above. The scraping runs in the cloud, so you need no headless browser or proxies of your own.

Scrape.ly Store Scrape your first G2 reviews Paste a G2 product or seller URL and get stars, likes, dislikes, reviewer roles and sources at $4.14 per 1,000 reviews, platform usage included.

[Try it free](https://scrape.ly/store/cornerledger/g2-reviews-scraper.md) [Browse the Store](https://scrape.ly/store.md)

About the author

[Corner Ledger](https://scrape.ly/blog/author/cornerledger.md) Actor publisher on the Scrape.ly Store

The businesses on every corner and in every register: map listings, local directories, company registries and customer reviews. For sales teams and market researchers. A Scrapely studio.

- [Website](https://scrape.ly/users/cornerledger.md)

Keep reading

## More in Tutorials

- [![Pixel-art robot with an orange >\_ on its terminal head pulls a review slip with gold rating squares out of a phone showing the four-colour Google Play logo above an app tile and rows of star ratings, and drops it into a crate](https://scrape.ly/media/scrape-google-play-reviews.png?w=750)](https://scrape.ly/blog/scrape-google-play-reviews.md)
  ### [How to Scrape Google Play Reviews: Ratings, Text, App Versions and App Data](https://scrape.ly/blog/scrape-google-play-reviews.md)
  [Scrape Google Play reviews for any Android app by package name or store link: stars, text, date, app version and helpful votes, with star, language, keyword and date filters. No-code steps, curl, Python, Node.js and MCP, plus a real run from 27 October 2026 and its exact cost.](https://scrape.ly/blog/scrape-google-play-reviews.md)
- [![Pixel-art robot with an orange >\_ on its terminal head lifts a yellow price tag off a shopping results page headed by the four-colour Google Shopping bag and two product tiles, and drops it into a crate of price tags](https://scrape.ly/media/scrape-google-shopping.png?w=750)](https://scrape.ly/blog/scrape-google-shopping.md)
  ### [How to Scrape Google Shopping: Prices, Sellers and Ratings in Seconds](https://scrape.ly/blog/scrape-google-shopping.md)
  [Scrape Google Shopping by search or results URL and get product title, price, seller, rating, review count and position as clean rows, for any country. The no-code steps, curl, Python, Node.js and MCP, a real run from 26 October 2026 and its exact cost.](https://scrape.ly/blog/scrape-google-shopping.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a film card with a poster and a gold star rating out of a cinema whose bulb-lit marquee carries the yellow IMDb logo, and drops it into a crate](https://scrape.ly/media/scrape-imdb.png?w=750)](https://scrape.ly/blog/scrape-imdb.md)
  ### [How to Scrape IMDb: Titles, Ratings, Cast and Box Office](https://scrape.ly/blog/scrape-imdb.md)
  [Scrape IMDb titles by keyword, chart, list, search URL or filters and get rating, votes, Metascore, genres, runtime, cast, directors, plot, budget and box office as clean rows. No-code steps, curl, Python, Node.js and MCP, a real run and what IMDb's terms say.](https://scrape.ly/blog/scrape-imdb.md)

## The internet is full of data. Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes.

[Get Started Free](https://my.scrape.ly/register) [Chat with Support](mailto:hello@scrape.ly?subject=Question%20about%20Scrape.ly\&body=Hi%2C%20I%20have%20a%20question%20about%20Scrape.ly.)

No credit card. No setup calls.
