G2 Reviews & Products Scraper avatar

G2 Reviews & Products Scraper

Pricing

Pay per event

Go to Apify Store
G2 Reviews & Products Scraper

G2 Reviews & Products Scraper

Scrape G2.com reviews, ratings, and product data. Extract NPS scores, reviewer sentiment, ease-of-use ratings, and competitive switching data from 5M+ reviews across 220K+ products. 3 modes: reviews, product search, category browse.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

11

Monthly active users

5 days ago

Last modified

Categories

Share

Extract reviews, ratings, and product metadata from G2.com — the world's largest B2B software review platform with 5M+ reviews and 220K+ products. Get full review text, sentiment themes, all rating dimensions, switching data, and product listings in structured JSON/CSV — no browser required, no proxy needed.

🎯 What does it do?

This actor connects directly to G2's public Elasticsearch API and extracts structured data at high speed using plain HTTP requests. No headless browser, no residential proxy — just fast, cheap, reliable scraping.

Three modes are available:

  • Product Reviews — scrape all reviews for one or more G2 products by URL or slug. Get full review text, star ratings, NPS scores, per-dimension ratings (ease of use, quality of support, etc.), sentiment themes, and switching data.
  • Product Search — search G2's product catalog by keyword. Get product metadata, review counts, average ratings, categories, and direct links.
  • Category Browse — list the top products in any G2 category (e.g. "CRM", "Project Management", "Video Conferencing") sorted by review volume.

👥 Who is it for?

🧠 Competitive intelligence analysts

Monitor what users love and hate about competing products. The loveTheme and hateTheme fields give you G2's NLP-extracted sentiment categories for every review — without reading thousands of pages manually.

📊 Product managers and researchers

Track how a product's ratings evolve over time. Sort by newest reviews, filter by minimum NPS, and pull structured data that feeds directly into your analysis pipeline.

💼 Sales and marketing teams

Identify switching patterns: switchedFromOtherProduct and switchedReason tell you exactly who moved to a product and why. Build battlecards from real user data at scale.

🏢 Investor due diligence teams

Cross-reference review volume, average rating, and rating trend for a batch of software companies. Scrape hundreds of products in one run using category browse mode.

🤖 AI / LLM training pipelines

G2 reviews are high-quality, domain-specific B2B text with structured metadata. Use them as training or evaluation data for sentiment classifiers, summarization models, or product comparison tools.

📈 Market researchers

Build category-level datasets. Browse any G2 category and get all top products with ratings and review counts — sorted by popularity — ready for benchmarking.

✅ Why use this scraper?

  • HTTP-only, no browser — runs in 256 MB RAM, starts in seconds, costs far less than Playwright-based scrapers
  • No proxy needed — G2's Elasticsearch API is publicly accessible
  • Cheaper than alternatives — $0.005/review vs competitors charging $0.0065–$0.01/review (up to 50% savings)
  • 29 fields per review — including all rating dimensions, sentiment themes, and switching data that most scrapers miss
  • 5M+ reviews available — full search_after pagination handles products with tens of thousands of reviews
  • Multiple modes in one actor — reviews, product search, and category browse without needing separate tools
  • Batch products — pass multiple product URLs or slugs in one run and get all reviews combined

💰 How much does it cost to scrape G2 reviews?

This actor uses pay-per-event pricing — you only pay for what you actually scrape.

EventPrice
Run started$0.01 (one-time per run)
Review scraped$0.005 per review
Product scraped$0.003 per product

Example costs:

TaskItemsCost
100 reviews for one product100 reviews$0.01 + $0.50 = $0.51
1,000 reviews for a product1,000 reviews$0.01 + $5.00 = $5.01
Top 50 CRM products50 products$0.01 + $0.15 = $0.16
Search results (25 products)25 products$0.01 + $0.075 = $0.085

Compared to alternatives:

  • zen-studio G2 scraper: ~$0.0065/review
  • powerai G2 scraper: ~$0.01/review
  • This actor: $0.005/review — 23% to 50% cheaper

Tiered volume discounts are applied automatically as your Apify usage grows.

🚀 How to use it

Step 1 — Choose your mode

Open the actor on Apify Store and select a scraping mode:

  • Product Reviews — you want reviews for specific products
  • Product Search — you want to find products by keyword
  • Category Browse — you want to list top products in a G2 category

Step 2 — Configure inputs

For Product Reviews:

  1. Paste one or more G2 product URLs (e.g. https://www.g2.com/products/slack/reviews) or just slugs (slack, hubspot, salesforce)
  2. Set maxReviews (default: 100, max: 50,000 per product)
  3. Choose a sort order: Newest First, Most Helpful, Highest Rating, or Lowest Rating
  4. Optionally set a minimum NPS rating (0–10) to filter out low-quality reviews

For Product Search or Category Browse:

  1. Enter a keyword or category name in the searchQuery field
  2. Set maxProducts (default: 25, max: 1,000)

Step 3 — Run and export

Click Start. Results appear in the dataset in real time. Export as JSON, CSV, Excel, or XML from the Apify Console or via API.

📥 Input parameters

ParameterTypeDefaultUsed in mode
modeselectproduct_reviewsAll
productUrlsstring list[slack reviews URL]product_reviews
maxReviewsinteger100product_reviews
sortReviewsselectnewestproduct_reviews
minRatinginteger (0–10)product_reviews
searchQuerystringproduct_search, category_browse
maxProductsinteger25product_search, category_browse

Sort options for reviews:

  • newest — Most recently submitted
  • helpful — Most helpful votes first
  • rating_high — Highest NPS score first
  • rating_low — Lowest NPS score first (useful for finding pain points)

📤 Output fields

Review fields (29 fields)

FieldDescriptionType
reviewIdUnique G2 review IDstring
titleReview titlestring
npsNPS score (0–10)number
starRatingStar rating (1–5, derived from NPS)number
reviewTextFull review body textstring
publishedAtPublication date (ISO 8601)string
submittedAtSubmission date (ISO 8601)string
updatedAtLast updated date (ISO 8601)string
reviewerNameReviewer display namestring
countryReviewer's countrystring
regionReviewer's region/statestring
helpfulVotesNumber of helpful votes receivednumber
sourceTypeHow the review was collectedstring
responseTypeReview format: text or videostring
easeOfUseEase of use rating (0–10)number
easeOfSetupEase of setup rating (0–10)number
easeOfAdminEase of administration rating (0–10)number
qualityOfSupportQuality of support rating (0–10)number
meetsRequirementsMeets requirements rating (0–10)number
loveThemeG2 NLP theme: what users lovestring
hateThemeG2 NLP theme: what users dislikestring
switchedFromOtherProductProduct the reviewer switched fromstring
switchedReasonReason they switchedstring
companySegmentCompany size segment codenumber
industryIndustry codenumber
productIdInternal G2 product IDnumber
productNameProduct namestring
productSlugProduct URL slugstring
urlDirect link to the review on G2string

Example review output:

{
"reviewId": "9a2f3b1c-...",
"title": "Best team messaging tool we've used",
"nps": 9,
"starRating": 5,
"reviewText": "We've been using Slack for 3 years and it has transformed...",
"publishedAt": "2025-11-14T00:00:00.000Z",
"submittedAt": "2025-11-13T18:42:00.000Z",
"reviewerName": "Sarah M.",
"country": "United States",
"helpfulVotes": 12,
"easeOfUse": 9,
"easeOfSetup": 8,
"qualityOfSupport": 7,
"meetsRequirements": 9,
"loveTheme": "Ease of Use",
"hateTheme": "Pricing",
"switchedFromOtherProduct": "Microsoft Teams",
"switchedReason": "Better integrations and UX",
"productName": "Slack",
"productSlug": "slack",
"url": "https://www.g2.com/products/slack/reviews/9a2f3b1c-..."
}

Product fields (15 fields)

FieldDescriptionType
productIdInternal G2 product IDstring
nameProduct namestring
slugURL slugstring
descriptionProduct descriptionstring
vendorNameVendor/company namestring
productUrlOfficial product websitestring
typeProduct type classificationstring
categoryNamesG2 categories the product belongs tostring[]
reviewCountTotal number of reviewsnumber
averageRatingAverage rating (float)number
starRatingStar rating (1–5)number
g2RatingG2's composite rating scorenumber
thumbnailUrlProduct thumbnail image URLstring
faviconUrlProduct favicon URLstring
urlG2 product page URLstring

Example product output:

{
"productId": "12345",
"name": "HubSpot CRM",
"slug": "hubspot",
"description": "HubSpot CRM makes it easy to organize, track, and grow your pipeline.",
"vendorName": "HubSpot",
"productUrl": "https://www.hubspot.com",
"categoryNames": ["CRM", "Marketing Automation"],
"reviewCount": 12483,
"averageRating": 4.4,
"starRating": 4,
"g2Rating": 4.4,
"url": "https://www.g2.com/products/hubspot"
}

💡 Tips for best results

  • Batch multiple products in one run — add all your product URLs to productUrls and they will be processed sequentially. One $0.01 start fee covers all products in the run.
  • Use sortReviews: rating_low to collect negative reviews for pain point analysis without reading all reviews first.
  • Set minRating to 7+ to filter for promoter reviews only (NPS ≥ 7 = passives and promoters on a 10-point scale).
  • Category browse returns products sorted by review count — the most-reviewed products appear first, giving you the category leaders automatically.
  • Use slugs instead of full URLs when scripting — slack, hubspot, salesforce are shorter and equally valid.
  • For products with 10K+ reviews, the actor automatically switches to search_after cursor pagination for reliable retrieval beyond Elasticsearch's default 10K limit.
  • Combine modes — run category browse first to find slugs, then run product reviews on the top 5 products.

🔌 Integrations

Google Sheets auto-export

Connect the actor to a Google Sheets integration via Apify's built-in webhooks. Every run automatically appends new reviews to your spreadsheet — useful for tracking new reviews weekly on a schedule.

Slack / Teams alerts for new negative reviews

Set up a scheduled run that pulls the last 7 days of reviews sorted by rating_low, filters for NPS < 5, and posts a summary to your Slack channel via a webhook integration.

Make / Zapier pipeline for CRM enrichment

Trigger the actor via Apify's API from a Make scenario. When a new competitor deal enters your CRM, automatically fetch 100 reviews of that competitor's G2 product and add them as deal notes.

Competitive intelligence dashboard

Schedule weekly runs for 10–20 competitor products. Store results in a dataset, connect to Google Looker Studio or Retool, and track rating trends, sentiment themes, and review volumes over time.

Vector database for RAG

Export reviews as JSON, chunk by reviewText, and load into a vector database (Pinecone, Weaviate, Qdrant). Build a product intelligence chatbot that answers questions by retrieving relevant user feedback.

🖥️ API usage

Run this actor programmatically from any language using the Apify API.

Node.js (Apify client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/g2-scraper').call({
mode: 'product_reviews',
productUrls: ['https://www.g2.com/products/slack/reviews'],
maxReviews: 500,
sortReviews: 'newest',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (Apify client)

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/g2-scraper").call(run_input={
"mode": "product_reviews",
"productUrls": ["https://www.g2.com/products/hubspot/reviews"],
"maxReviews": 1000,
"sortReviews": "helpful",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["nps"])

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~g2-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "category_browse",
"searchQuery": "CRM",
"maxProducts": 50
}'

Fetch results once the run completes:

$curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?token=YOUR_APIFY_TOKEN&format=json"

🤖 Using with Claude via MCP (Model Context Protocol)

This actor is compatible with the Apify MCP server, which lets you run it directly from Claude without writing any code.

Setup — Claude Desktop

  1. Install the Apify MCP server
  2. Add your Apify token to Claude Desktop's MCP config
  3. Ask Claude to run the G2 scraper naturally

Setup — Claude Code (CLI)

Add the Apify MCP server to your Claude Code config:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Example prompts for Claude

"Run the automation-lab/g2-scraper actor to get the 200 most helpful reviews for Salesforce on G2, then summarize the top 5 complaints."

"Use the G2 scraper to find the top 20 products in the 'Project Management' category and show me a table with their names, review counts, and average ratings."

"Scrape 500 Slack reviews sorted by lowest rating and identify the most common pain points mentioned in the hateTheme field."

"Fetch reviews for both HubSpot and Pipedrive, then compare their average easeOfUse and qualityOfSupport scores."

Claude will call the actor, wait for results, and process the dataset automatically — no code required.

G2's reviews are publicly accessible without authentication. This actor only requests data that any anonymous visitor can see in their browser — the same data G2 exposes through its own search API.

Key points:

  • No login required — the actor does not bypass any authentication or access controls
  • Public data only — all scraped content is visible to anyone visiting G2.com
  • Polite scraping — the actor adds a 200ms delay between requests and processes 100 items per page
  • No PII beyond public reviewer names — reviewer job titles, profile URLs, and company names are not available through the API and are not scraped

You are responsible for ensuring your use of scraped data complies with applicable laws in your jurisdiction (GDPR, CCPA, etc.) and G2's Terms of Service. This actor is intended for legitimate business intelligence, research, and competitive analysis use cases. Do not use scraped data to contact, profile, or target individual reviewers.

❓ FAQ

Q: Can I scrape reviews for multiple products at once? Yes. Add multiple URLs or slugs to the productUrls list. The actor processes them sequentially in a single run, so you pay one $0.01 start fee for all products combined.

Q: What's the maximum number of reviews I can get? Up to 50,000 per product per run. For products with more than 10,000 reviews, the actor uses search_after cursor pagination to reliably retrieve all results beyond Elasticsearch's standard 10K limit.

Q: Can I get pros and cons separately? No. G2's API returns review text as a single combined blob (reviewText). There are no separate pros and cons fields in the underlying data. Use the loveTheme and hateTheme fields instead — these are G2's NLP-extracted sentiment themes for each review.

Q: Does this scraper need a proxy? No. G2's Elasticsearch API (search.g2.com) is publicly accessible without authentication or IP restrictions. No residential or datacenter proxy is needed.

Q: Can I get reviewer job title, company, or profile URL? No. These fields are not available through G2's public search API. The actor only returns fields that the API exposes: reviewer name, country, region, and company segment code (an integer, not a company name string).

Q: The run returned 0 results for my product. What should I check? First verify the product slug: go to the product's G2 page and copy the slug from the URL (/products/YOUR-SLUG/reviews). Make sure you're not including the /reviews suffix when entering a bare slug. If the product has no approved public reviews, the run will return an empty dataset — this is expected behavior, not an error.

Q: I'm getting fewer reviews than expected. Why? The minRating filter reduces results to only reviews at or above your NPS threshold. Also, maxReviews is a per-product limit. If you're scraping multiple products, the total will be up to maxReviews × number of products.

Q: What does companySegment mean? It's an integer code from G2's internal classification (e.g. 1 = small business, 2 = mid-market, 3 = enterprise). G2 does not expose the string label through the search API.

These actors from the same author cover adjacent data sources:


Built and maintained by automation-lab on the Apify platform.