DEV Community

Cover image for Customer Sentiment from G2 Reviews: Scrape B2B Software Feedback as JSON in 2026
Truffle Pig Data
Truffle Pig Data

Posted on

Customer Sentiment from G2 Reviews: Scrape B2B Software Feedback as JSON in 2026

B2B software decisions get argued out in public on G2, in tens of thousands of structured reviews with ratings, roles, and company sizes attached. For anyone doing competitive intelligence or tracking customer sentiment, that corpus is gold, and it only exists as web pages. This post covers the manual route, why scripting it yourself hurts, and the shortcut: the G2 Reviews API on Apify, which turns product URLs into one JSON row per review.

Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.

Does G2 have an API?

Not one you can just sign up for. G2's official data access is aimed at vendors and partners under commercial agreements, so an independent developer or analyst who wants review data has no self-serve endpoint. The practical alternative is a scraper you call like an API: send G2 product review URLs, get the public reviews back as structured JSON, capped and sorted the way you asked.

What the G2 Reviews API returns

The G2 Reviews API returns each public review as a JSON row with rating, title, full text, pros and cons, reviewer role, company size, date, and a verified flag.

Field Example Notes
productName Asana The product reviewed
rating 4.5 0 to 5
pros / cons "The interface is simple enough to learn quickly." Best-effort split from the review body
reviewerRole Program Manager When disclosed
companySize Small-Business (50 or fewer emp.) G2's size band
verified true Derived from tags like "Validated Reviewer"

Flip includeProductMetadata on and each product adds a metadata row with category, overall star rating, review count, vendor, and named competitors.

Who this is for

Product marketers doing competitor analysis who want rivals' cons as a spreadsheet column. Product and CS teams measuring customer sentiment by role and company size instead of vibes. And buyers or analysts comparing tools on evidence, with the incentivized-review tags visible instead of hidden.

The manual way, and where it breaks

Reading G2 reviews in a browser is fine until you need counts. Copy-paste dies within a page. Scripting against the site directly means JavaScript rendering, aggressive anti-bot friction, and review bodies scattered across question-and-answer fragments you have to reassemble per review. G2 also updates its markup often enough that a homemade parser needs regular surgery. I gave my version two rewrites before concluding the maintenance was the product.

The faster way: run the G2 reviews scraper

Apify Console

  1. Open the G2 Reviews API and click Try for free.
  2. Paste one or more productUrls like https://www.g2.com/products/asana/reviews, set maxReviewsPerProduct and sortBy.
  3. Run it and export the reviews as JSON, CSV, or Excel.

REST

curl -X POST "https://api.apify.com/v2/acts/johnvc~g2-reviews-api/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "productUrls": ["https://www.g2.com/products/asana/reviews"], "maxReviewsPerProduct": 100, "sortBy": "recent" }'
Enter fullscreen mode Exit fullscreen mode

Run mechanics are in the Apify API docs.

Analyze reviews in Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("johnvc/g2-reviews-api").call(
    run_input={
        "productUrls": ["https://www.g2.com/products/asana/reviews"],
        "maxReviewsPerProduct": 50,
        "sortBy": "recent",
    }
)

for review in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(review["rating"], review.get("reviewerRole"), review.get("cons"))
Enter fullscreen mode Exit fullscreen mode

Filter on companySize and you have sentiment segmented by market tier in a dozen lines.

Use case: benchmark a competitor's cons

Run your product and two rivals in one productUrls list, sorted by recent, and pull only the cons column. The result is a live list of what users dislike about each tool, in their words, segmented by reviewer role. Feed it to an LLM for theme clustering and you have a competitive brief that updates whenever you rerun the input, which beats quarterly analyst decks on both freshness and price.

Use case: watch customer sentiment move after a launch

Sort by recent, cap at the last hundred reviews, and score rating over datePublished weekly. A pricing change or a rough release shows up in the trend line within weeks, with verified and the incentivized tags letting you weight reviews honestly. Because the input is just a saved task, the whole pipeline is a schedule plus a chart.

Read G2 from Claude over MCP

Exposed through the Model Context Protocol, the Actor becomes a callable tool in Claude, Claude Code, and Cursor, so "summarize the recent cons for Asana from small-business reviewers" runs a live pull instead of quoting stale training data. You can read more about Claude at claude.ai.

FAQ about scraping G2 reviews

Is there an official G2 API, or is a scraper the only route?

Official access exists for vendors and partners under agreements, not as a public developer API. For everyone else, a scraper against the public review pages is the workable path, and this one packages it with API ergonomics.

What does the G2 reviews scraper cost to run?

Billing is per review returned, with no per-run setup fee, plus an optional $0.003 per product when includeProductMetadata is on. The current per-review price sits on the Store card, and maxReviewsPerProduct caps spend before you start.

How do I do competitor analysis with this scraper?

Put your competitors' review URLs in one run, sort by recent, and compare pros, cons, and rating trends side by side. The optional metadata row even lists each product's named competitors, which is a handy expansion seed.

Can Claude or another agent drive the scraper over MCP?

Yes. Connect the Apify MCP server and the Actor appears as a tool in any MCP client, which makes live review pulls available inside agent workflows.

Can I schedule the scraper to monitor reviews?

Review monitoring is the intended recurring use: save your product list as a task, attach an Apify schedule, and each run appends the newest reviews for diffing. Start from the G2 Reviews API.

What are the scraper's honest limits?

It returns what the public pages show: products with few reviews yield few rows, reviewer names and roles appear only when disclosed, and the pros and cons split is best-effort parsing of G2's Q&A format. Incentivized reviews are labeled, not laundered.

More from Truffle Pig Data

Vendor intelligence has more than one axis: the Glassdoor Reviews API shows how the same companies treat employees, and the Crunchbase Company API adds funding and firmographics behind the products.

Wrapping up

The software market reviews itself in public; the only missing piece was machine-readable access. Point the G2 Reviews API at a product page and start counting what people actually say.

Top comments (0)