Skip to content

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.

Published
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
In this article
  1. What data you can get from G2
  2. How to scrape G2 reviews without code
  3. How to scrape G2 reviews with the API
  4. With an AI agent (MCP)
  5. A real run: Notion's newest G2 reviews
  6. What it costs
  7. What to watch out for
  8. Is it legal to scrape G2 reviews?
  9. Why Scrape.ly for G2 reviews
  10. FAQ
  11. Can you scrape G2 reviews for free?
  12. How do I get only new G2 reviews every week?
  13. Can I scrape all reviews of a vendor's products at once?
  14. Does the scraper collect reviewer emails or LinkedIn profiles?
  15. Can I scrape G2 product data like pricing and alternatives?
  16. Can I scrape G2 reviews with Python?

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 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 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 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
}
  1. Click Start. Our run finished in 16 seconds.
  2. 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 preset shows it.

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 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 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 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
Text
2026-10-27T16:04:14.850Z [Scrapely] Container started (setup 1.6 s)
2026-10-27T16:04:16.463Z [scrapely.proxy_configuration] INFO  Platform proxy access check succeeded.
2026-10-27T16:04:29.166Z [scrapely.actor] INFO  [Status message]: Done: 6 result(s) from 1 target(s).
2026-10-27T16: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 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.

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 (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 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 guide shows the setup.
  • One token for every review site. The same account runs Trustpilot reviews, Google Play reviews and Glassdoor reviews, 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. 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 guide, and add company IDs, headquarters and employee bands with our Crunchbase guide.

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.

  • g2
  • software reviews
  • competitor research
  • voice of customer
  • python
  • api

About the author

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.

//Keep reading\\

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.

No credit card. No setup calls.