G2 Scraper - Reviews, Products, Analytics & Discussions avatar

G2 Scraper - Reviews, Products, Analytics & Discussions

Pricing

from $0.04 / 1,000 reviews

Go to Apify Store
G2 Scraper - Reviews, Products, Analytics & Discussions

G2 Scraper - Reviews, Products, Analytics & Discussions

๐Ÿ”ฅ ~$0.05/1K reviews ๐Ÿ”ฅ Scrape G2.com software reviews, products, analytics, comparisons, and discussions. Faceted filtering, facet-value discovery, 72 review fields, NLP sentiment, switching intelligence.

Pricing

from $0.04 / 1,000 reviews

Rating

0.0

(0)

Developer

Kai

Kai

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

6

Monthly active users

2 days ago

Last modified

Share

G2 Scraper

Collect structured G2 software reviews, products, analytics, comparisons, and discussions. Filter by region, review source, response type, sentiment themes, and discount, or discover available facet values before filtering.

Why use this scraper?

  • Collect all matching public, approved reviews for a product with maxReviewsPerProduct: 0.
  • Structured pros/cons/benefits parsed from each review.
  • Per-dimension ratings: ease of use, setup, support, security, and more.
  • NLP-extracted sentiment themes (what users love/hate).
  • Competitive switching intelligence (what products users switched from and why).
  • Faceted filtering: narrow reviews by primary region, review source, response type, loved/hated/switching themes, and discount.
  • Facet-value discovery: list the valid values for any text facet before filtering.
  • Analytics mode with aggregations, percentiles, and significant terms.
  • Side-by-side product comparisons in a single request.
  • Q&A discussion threads per product.

Use cases

  • Compare competitors by sentiment, ratings, and switching patterns.
  • Feed structured review data into NLP / AI pipelines.
  • Track review trends over time for market research.
  • Segment reviews by region, company size, review source, or sentiment theme.
  • Find products by category, vendor, or keyword search.
  • Search across public, approved reviews for specific topics.

How to use

Scrape reviews for a product

{
"products": ["https://www.g2.com/products/slack/reviews"]
}

Search for products and scrape their reviews

{
"search": "project management",
"maxProducts": 5,
"maxReviewsPerProduct": 50
}

Browse a category

{
"category": "CRM",
"maxProducts": 10,
"maxReviewsPerProduct": 20
}

Browse by vendor

{
"vendor": "Salesforce",
"maxProducts": 5,
"maxReviewsPerProduct": 10
}

Compare products side-by-side

{
"compare": ["slack", "clickup", "jira"]
}

Get analytics (no individual reviews)

{
"products": ["slack"],
"analytics": true
}

Global review search across all products

{
"reviewSearch": "terrible customer support",
"maxReviews": 50
}

Find similar reviews

{
"similarTo": "The API was difficult to integrate and documentation was poor",
"maxReviews": 20
}

Filter by date, rating, and company size

{
"products": ["slack"],
"dateFrom": "2025-01-01",
"ratings": ["1", "2"],
"companySegment": ["enterprise"],
"maxReviewsPerProduct": 100
}

Filter by facets (region, source, themes)

{
"products": ["slack"],
"primaryRegions": ["Americas"],
"sourceTypes": ["organic"],
"responseTypes": ["video"],
"maxReviewsPerProduct": 50
}

Discover valid facet values

Returns the distinct values for each facet to the metadata dataset, so you know what to pass to the facet filters above. No reviews are scraped in this mode.

{
"enumFields": ["source_type", "response_type"]
}

Search within reviews with highlights

{
"products": ["slack"],
"reviewSearch": "customer support",
"includeHighlights": true,
"maxReviewsPerProduct": 20
}

Include Q&A discussions

{
"products": ["slack"],
"maxReviewsPerProduct": 10,
"includeDiscussions": true
}

Input

ParameterTypeDefaultDescription
productsstring[]Product URLs, slugs, or category URLs
searchstringFind products by keyword
categorystringBrowse products by G2 category
vendorstringBrowse products by vendor name
comparestring[]Compare product slugs side-by-side (analytics)
maxProductsnumber10Max products in search/category/vendor mode
sortByselectDATE_DESCDATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, HELPFUL_DESC, G2_DEFAULT; rating sorts use the 1โ€“5 star rating
ratingsstring[]["1","2","3","4","5"]Filter by star rating: 1, 2, 3, 4, or 5
maxReviewsPerProductnumber20Max reviews per product (0 = unlimited)
companySegmentstring[]small_business, mid_market, enterprise
dateFromstringDate in YYYY-MM-DD format; reviews from this date
dateTostringDate in YYYY-MM-DD format; reviews through this date; cannot be earlier than dateFrom
primaryRegionsselect[]Americas, Asia Pacific, EMEA
sourceTypesstring[]Filter by how the review was collected; use enumFields to list valid values
responseTypesstring[]Filter by review medium (e.g. text, video)
loveThemesstring[]Filter by themes reviewers praised
hateThemesstring[]Filter by themes reviewers criticized
switchingThemesstring[]Filter by reasons reviewers switched products
discountsstring[]Filter by reported discount
reviewSourcesstring[]Filter by review source channel
reviewSearchstringSearch within review text. Alone = global search
similarTostringFind reviews similar to this text
reviewIdsstring[]Fetch specific reviews by ID
maxReviewsnumber100Max reviews for global/similar search; 0 returns all global matches and uses the 1,000-review Similar cap
enumFieldsselect[]Discover source_type, response_type, love_theme_humanized, hate_theme_humanized, switching_theme_humanized, discount, or review_source; writes to the metadata Dataset instead of collecting reviews
analyticsbooleanfalseReturn aggregation analytics instead of reviews; requires one product selector
collapseByProductbooleanfalseOne review per product in global or Similar search
includeDiscussionsbooleanfalseFetch Q&A discussions in product review mode; cannot be combined with analytics
includeHighlightsbooleantrueHighlight matching text in search results
proxyConfigurationobject{"useApifyProxy":true}Configure network routing; Apify Proxy is enabled by default

Choose one input mode: one of products, search, category, or vendor; global reviewSearch; similarTo; reviewIds; compare; or enumFields. reviewSearch can also be combined with a product selector to search within those products. Set analytics: true alongside one product selector. Repeated selectors and products found through overlapping inputs are emitted once.

Review filters apply to product reviews, global search, Similar results, analytics, and comparisons. A direct reviewIds lookup returns only the requested records, and enumFields returns facet values, so review filters do not apply to those two modes.

All review and analytics modes use public, approved reviews. A requested review ID is omitted when it does not identify a public, approved review.

When you switch away from the prefilled product example, clear products before setting another mode. Conflicting modes, malformed dates, inverted date ranges, and invalid enum values fail with an input error before collection starts. An unknown product or comparison target is skipped; if none of the requested products resolves, the run succeeds with empty datasets. A valid search with no matches also succeeds with an empty reviews dataset.

sortBy orders product and global-search reviews. Similar results remain in relevance order, while direct-ID result order is not guaranteed. Highlights are returned only when reviewSearch is present and includeHighlights is enabled.

Some valid older or rating-only reviews have an empty title or rawText, and some discussions contain only a title. These fields remain empty strings rather than being filled with invented text.

Output

Datasets

DatasetWhenContent
reviews (default)Most modesIndividual review records
productsProduct-based modesProduct profiles
analyticsanalytics or compare modeAggregation statistics
discussionsincludeDiscussions: trueQ&A threads
metadataenumFields modeDistinct facet values

Review fields

The selected fields below came from one live Dataset record. Values are unchanged. Reviewer identity and other personal fields are omitted.

{
"id": "13038740",
"productId": 3437,
"productName": "Slack",
"reviewUrl": "https://www.g2.com/products/slack/reviews/13038740",
"title": "One-Click Integrations That Just Work for slack",
"pros": "Integration with other apps has to be 1 click",
"cons": "UI when you send the messages. The typing window should be adjustable",
"benefits": "connect and chatting with the team One-Click Integrations That Just Work for slack",
"rawText": "Integration with other apps has to be 1 click\nUI when you send the messages. The typing window should be adjustable\nconnect and chatting with the team One-Click Integrations That Just Work for slack",
"responseType": "text",
"nps": 8,
"npsScore": 4,
"easeOfUse": 5,
"easeOfSetup": 5,
"easeOfAdmin": 5,
"easeOfDoingBusinessWith": 4,
"meetsRequirements": 5,
"qualityOfSupport": 3,
"securityConfidence": 3,
"securityImportance": 7,
"direction": null,
"loveTheme": null,
"loveThemeHumanized": null,
"loveThemeParentHumanized": null,
"hateTheme": null,
"hateThemeHumanized": null,
"hateThemeParentHumanized": null,
"switchedFromOtherProduct": "unknown",
"switchedFromProductIds": null,
"switchedReason": null,
"switchingThemes": null,
"switchingThemesNested": null,
"submittedAt": "2026-06-26T17:10:48.781-05:00",
"publishedAt": "2026-06-26T19:30:00.900-05:00",
"reviewSource": "user_profile",
"sourceType": "user_profile",
"helpful": 0,
"englishAvailable": true,
"contractLength": null,
"discount": null,
"price": 5,
"status": "approved",
"isPublic": true,
"published": true,
"productPaidProfile": false,
"productIds": [3437],
"categoryIds": [2174, 2360, 2363],
"defaultSort": 8.525176115868225,
"templateKeyword": "react",
"videoReviewSubmittedAt": null,
"editionIds": [],
"expertiseIds": [],
"serviceLocation": null,
"contractLengthWeight": null,
"discountWeight": null,
"everApproved": true,
"isInLimbo": false,
"read": false,
"reportable": true,
"userUpdatedAt": "2026-06-26T17:10:48.965-05:00",
"highlightedSnippets": null,
"scrapedAt": "2026-06-28T06:00:34.982Z"
}

Analytics output

Aggregated over all matching public, approved reviews for a product. nps/easeOfUse/etc. each carry avg, stdDev, min, max, and count; the full record also includes easeOfSetup, easeOfAdmin, qualityOfSupport, meetsRequirements, easeOfDoingBusinessWith, securityConfidence, securityImportance, direction, topHateThemes, uniquelyHated, and bySourceType. The selected fields below came from one live analytics record and keep their values unchanged. This example omits reviewer identity from nested samples.

{
"productId": 3437,
"productName": "Slack",
"productSlug": "slack",
"totalReviews": 20201,
"totalHelpfulVotes": 69,
"nps": { "avg": 9.211870699470323, "stdDev": 1.1668658162744323, "min": 0, "max": 10, "count": 20201 },
"easeOfUse": { "avg": 6.549680122289532, "stdDev": 0.7953808393082141, "min": 1, "max": 7, "count": 17663 },
"ratingDistribution": { "1": 40, "2": 93, "3": 468, "4": 3646, "5": 15954 },
"npsPercentiles": { "p10": 8, "p25": 9, "p50": 10, "p75": 10, "p90": 10 },
"uniqueCountries": 140,
"uniqueIndustries": 145,
"topLoveThemes": [
{ "theme": "Chat", "count": 3436, "sampleReviews": [{ "title": "Slack Review", "npsScore": 4 }] },
{ "theme": "Collaboration", "count": 2254, "sampleReviews": [{ "title": "\"Ping\" From Your Creative Side", "npsScore": 5 }] }
],
"uniquelyLoved": [
{ "theme": "Chat", "score": 3.472215696777018, "count": 3436 },
{ "theme": "Collaboration", "score": 1.2096931571663356, "count": 2254 }
],
"switchingReasons": [
{ "reason": "Ease of use", "count": 126 },
{ "reason": "Communication Features", "count": 108 }
],
"bySegment": [
{ "code": 179, "label": "Small Business (50 or fewer emp.)", "count": 8191 },
{ "code": 180, "label": "Mid-Market (51-1000 emp.)", "count": 8141 },
{ "code": 181, "label": "Enterprise (>1000 emp.)", "count": 3516 }
],
"byRegion": [
{ "region": "Americas", "count": 12760 },
{ "region": "Asia Pacific", "count": 4821 },
{ "region": "EMEA", "count": 2526 }
],
"reviewsOverTime": [
{ "month": "2014-02", "count": 1 },
{ "month": "2026-06", "count": 73 }
]
}

Facet values output (metadata dataset)

{
"field": "source_type",
"type": "enum_values",
"values": [
"ai_assisted_review", "api_collect", "g2_incentivized", "g2_nonincentivized",
"g2gives", "influitive", "organic", "pop_up", "referral", "review_referral",
"review_widget", "stale_reviews_callout", "thank_you_page", "un_survey",
"unincentivized", "user_profile", "vendor", "vendor_nonincentivized",
"vendor_self", "vendor_self_nonincentivized", "vendor_self_sendoso"
],
"count": 21
}

Limitations

  • Reviewer job titles and avatar URLs are not available.
  • industry and role are returned as numeric category codes with a human-readable label for common values only; they are not available as filters.
  • country and region are not available as filters because their values are not normalized across languages. Use primaryRegion (Americas / Asia Pacific / EMEA) for consistent geography filtering.
  • similarTo returns at most 1,000 reviews per run (a single relevance-ranked fetch; it does not paginate).
  • A product's reviewCount reflects G2's total across all reviews; review scraping and analytics return only public, approved reviews, so their counts are typically lower.
  • Some reviews have unstructured text (no clear pros/cons/benefits separation).