G2 Product Reviews Scraper avatar

G2 Product Reviews Scraper

Pricing

Pay per event

Go to Apify Store
G2 Product Reviews Scraper

G2 Product Reviews Scraper

Extract public G2 product reviews, ratings, pros, cons, reviewer context, dates, and switching data for recurring competitive intelligence.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract public G2 product reviews into structured records for product research, customer-feedback analysis, and recurring competitor intelligence. Supply one or more G2 product URLs, choose rating and date filters, and receive review text, ratings, pros, cons, reviewer context, dates, switching data, sub-ratings, and stable source links.

The Actor is designed for repeatable workflows: run a one-time review analysis, schedule the same input weekly, or feed normalized G2 reviews into a warehouse, dashboard, spreadsheet, or language-model pipeline.

What does G2 Product Reviews Scraper do?

The Actor resolves each supplied G2 product URL through G2's public structured data surface. It retrieves approved public reviews, follows cursor pagination, applies your filters, and writes normalized review records to the default Apify dataset.

Recent reviews are also matched against G2's public review RSS feed. When that feed exposes separate answers, the Actor populates pros and cons. The complete combined public answer remains in reviewText.

It does not require a G2 login, browser, user cookie, or proxy configuration.

Who is it for?

  • Product marketers tracking how buyers describe competing tools.
  • Product managers collecting recurring feedback and low-rating pain points.
  • Customer research teams preparing review corpora for qualitative analysis.
  • Competitive-intelligence analysts comparing review volume and themes across products.
  • Data engineers who need a repeatable G2 reviews API-style dataset.
  • AI teams building retrieval, classification, or sentiment-analysis pipelines.

Why use this Actor?

  • Accepts real G2 product URLs or bare product slugs.
  • Handles multiple products in one run.
  • Supports newest, helpful, high-rating, and low-rating ordering.
  • Filters by minimum rating, maximum rating, and date.
  • Uses stable review IDs for downstream deduplication.
  • Produces typed JSON records in the default dataset.
  • Runs with lightweight HTTP requests rather than a browser.
  • Stops at the requested global review limit.

What G2 review data is extracted?

FieldMeaning
reviewIdStable G2 review identifier
reviewUrlPublic source URL for the review
productId, productName, productSlugProduct identity
title, reviewTextReview headline and combined answer text
pros, consSeparately labelled recent-feed answers when available
rating, nps1–5 rating and source NPS-style value
reviewerNamePublic reviewer display name
reviewerRoleG2 role classification identifier
reviewerCompanySegmentG2 company-segment classification identifier
reviewerIndustryG2 industry classification identifier
reviewerCountry, reviewerRegionPublic reviewer location context
publishedAt, updatedAtSource timestamps
helpfulVotesPublic helpful-vote count
easeOfUse, easeOfSetupProduct sub-ratings when available
qualityOfSupport, meetsRequirementsAdditional sub-ratings when available
switchedFromOtherProduct, switchedReasonPublic switching context
vendorResponseVendor response when the public surface exposes one; normally null
retrievedAtISO timestamp for this extraction

Fields are nullable because G2 does not expose every attribute on every review.

Getting started

  1. Open the Actor input page in Apify Console.
  2. Add a G2 URL such as https://www.g2.com/products/slack/reviews.
  3. Choose a review limit and sort order.
  4. Optionally set rating or date filters.
  5. Click Start.
  6. Open the default dataset to inspect, download, or integrate the records.

The prefilled Slack input is intentionally small and works without credentials.

Input parameters

productUrls

Required array with 1–20 G2 product URLs or product slugs. Accepted examples:

  • https://www.g2.com/products/slack
  • https://www.g2.com/products/slack/reviews
  • slack

Non-G2 URLs and unsupported paths fail validation rather than being silently scraped.

maxReviews

Maximum review records across all supplied products. For multi-product inputs, the Actor balances the available record budget across resolved products; unused capacity from a sparse product flows to later products. Default: 100. Range: 15000.

sortBy

  • newest — newest submitted reviews first.
  • helpful — highest helpful count first.
  • rating_high — highest ratings first.
  • rating_low — lowest ratings first.

minRating and maxRating

Inclusive 1–5 rating boundaries. For pain-point analysis, set maxRating to 3. The Actor rejects a minimum greater than the maximum.

sinceDate

Optional ISO 8601 timestamp. Use this in scheduled workflows to request only records newer than a known checkpoint, for example 2026-01-01T00:00:00.000Z.

Example input

{
"productUrls": [
{ "url": "https://www.g2.com/products/slack/reviews" },
{ "url": "https://www.g2.com/products/microsoft-teams/reviews" }
],
"maxReviews": 50,
"sortBy": "newest",
"minRating": 1,
"maxRating": 3,
"sinceDate": "2026-01-01T00:00:00.000Z"
}

Example output

{
"reviewId": "12345678",
"reviewUrl": "https://www.g2.com/products/sample-product/reviews/12345678",
"productId": 1234,
"productName": "Sample Product",
"productSlug": "sample-product",
"title": "Useful collaboration software",
"reviewText": "The product helps our team collaborate efficiently.",
"pros": "Easy to use and quick to set up.",
"cons": "Some advanced settings take time to learn.",
"rating": 5,
"nps": 9,
"reviewerName": "Sample Reviewer",
"reviewerCountry": "United States",
"publishedAt": "2026-01-15T12:00:00.000Z",
"helpfulVotes": 4,
"vendorResponse": null,
"retrievedAt": "2026-01-15T12:05:00.000Z"
}

The displayed example is anonymized. Live output contains public source values.

How much does it cost to extract G2 product reviews?

Pricing uses pay per event. A run has a one-time $0.005 start event plus one review event per emitted review. No charge is emitted for a rejected, duplicate, or missing record.

At the BRONZE tier, a review costs $0.004:

ReviewsEstimated BRONZE price
100.045 USD
1000.405 USD
1,0004.005 USD

Higher subscription tiers receive lower per-review event prices. The Apify Console shows the tier applicable to your account before a run. Estimates exclude unrelated platform plan fees.

Recurring competitor-review monitoring

Create an Apify Task with several product URLs and a sinceDate, then schedule it daily or weekly. Stable reviewId values let your destination deduplicate records. Update the checkpoint in your orchestration layer, or retain IDs in your warehouse and process only unseen reviews.

A practical workflow is:

  1. Run the Actor on a schedule.
  2. Export dataset items through an integration or webhook.
  3. Upsert by reviewId.
  4. Classify new low-rating reviews by topic.
  5. Alert product or competitive-intelligence owners on material changes.

The Actor does not maintain a cross-run database or send alerts itself.

Export and integrations

Apify datasets support JSON, JSONL, CSV, XML, RSS, and Excel downloads. You can connect results to Google Sheets, Make, Zapier, webhooks, cloud storage, or your own API client.

For analytics, treat numeric G2 role, segment, and industry values as source classification IDs. Do not invent labels without a maintained G2 mapping.

Run with the Apify API

Replace <APIFY_TOKEN> with your token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~g2-product-reviews-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"productUrls":[{"url":"https://www.g2.com/products/slack/reviews"}],"maxReviews":20}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/g2-product-reviews-scraper').call({
productUrls: [{ url: 'https://www.g2.com/products/slack/reviews' }],
maxReviews: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient(token='<APIFY_TOKEN>')
run = client.actor('automation-lab/g2-product-reviews-scraper').call(run_input={
'productUrls': [{'url': 'https://www.g2.com/products/slack/reviews'}],
'maxReviews': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI agents

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/g2-product-reviews-scraper"

Claude Desktop

Add this HTTP server to your Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/g2-product-reviews-scraper"
}
}
}

Cursor

Open Cursor settings, add a remote MCP server, and use the same https://mcp.apify.com?tools=automation-lab/g2-product-reviews-scraper URL.

VS Code

Add an HTTP MCP server in your VS Code MCP configuration using the same Actor-specific endpoint.

Example prompts:

  • “Extract the 50 newest public Slack reviews from G2.”
  • “Collect G2 reviews rated three stars or lower for Notion.”
  • “Compare recent low-rating feedback for Slack and Microsoft Teams.”

Limits and source behavior

  • Only public G2 product review data is processed.
  • The source may omit attributes, so every enrichment field is nullable.
  • Separate pros and cons are best-effort fields for reviews present in the public recent-review feed. reviewText remains the canonical combined source text.
  • Public vendor responses are not currently exposed by the working structured data/feed routes, so vendorResponse is normally null.
  • The Actor does not scrape category search pages or discover products by keyword.
  • Input is capped at 20 products and 5,000 reviews per run.
  • Upstream source changes can temporarily affect availability or field coverage.

Reliability and troubleshooting

Requests use bounded retries for network errors, rate limits, and temporary server failures. Deterministic input errors are not retried.

“None of the supplied product URLs resolved” means the slug is invalid, removed, or not a public G2 product. Open the URL in G2 and copy its canonical /products/<slug>/reviews form.

I received fewer records than requested can mean the rating/date filters match fewer reviews or the product has fewer public reviews. The maximum is a cap, not a guaranteed count.

Why are pros or cons null? G2's broader structured review surface combines answers. Separate pros/cons are available only where the recent RSS record can be matched by review ID.

Responsible use and legality

Use the Actor only for lawful purposes and public information you are permitted to process. Follow G2's terms, applicable privacy and database rules, and your organization's retention policies. Do not use public reviewer data for harassment, discrimination, spam, or attempts to identify people beyond what they chose to publish.

This Actor is an independent extraction tool and is not affiliated with or endorsed by G2.

FAQ

Does it require a G2 account?

No. It uses public structured review surfaces and public feeds.

Can I supply a bare slug?

Yes. slack and its canonical G2 product URL resolve to the same product.

Can it extract multiple products?

Yes, up to 20 per run. maxReviews applies globally and is balanced across resolved products so one high-volume product does not consume the full multi-product budget.

Can I monitor new reviews?

Yes. Schedule a Task and use sinceDate plus stable reviewId values in your destination. The Actor itself does not store cross-run state or send alerts.

Does it translate or summarize reviews?

No. It returns source text. Add your own analysis step so the original review data stays auditable.

Are vendor responses guaranteed?

No. The public working surfaces do not currently expose historical vendor replies, so vendorResponse is nullable and normally empty.

Choose this Actor for URL-led review extraction with rating/date filters and a normalized review-intelligence contract.