G2 Reviews & Products Scraper
Pricing
from $3.00 / 1,000 review scrapeds
G2 Reviews & Products Scraper
Scrape G2.com reviews, ratings, and product data. Extract NPS scores, reviewer sentiment, ease-of-use ratings, switching data, and product lists from 5M+ reviews across 220K+ products.
Pricing
from $3.00 / 1,000 review scrapeds
Rating
5.0
(2)
Developer
Automation Lab
Maintained by CommunityActor stats
7
Bookmarked
1.2K
Total users
298
Monthly active users
0.11 hours
Issues response
8 days ago
Last modified
Categories
Features
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 plus separate pros, cons and problems solved, company size, all rating dimensions, switching data, and product listings in JSON, CSV, Excel, or API outputs — no browser required, no proxy needed.
Review monitoring workflow
Use G2 Reviews & Products Scraper as the B2B software review source in a broader review-monitoring workflow. It is best for product teams, market researchers, sales enablement, and investors who need G2 review text with separate pros and cons, NPS, star ratings, company size, switching data, reviewer metadata, and product/category context. It is not the right actor for consumer Trustpilot reviews or Android app-store reviews; use the related actors below for those sources.
Typical workflow:
- Scrape G2 product reviews, search results, or category pages here for B2B software intelligence.
- Add Trustpilot Reviews Scraper for consumer reputation monitoring and company replies.
- Add Google Play Reviews Scraper or Google Play Store Scraper for Android app reviews, ratings, and app metadata.
- Export all datasets to JSON, CSV, Excel, Google Sheets, webhooks, Zapier, Make, or the Apify API for competitive dashboards, review alerts, sentiment analysis, and LLM workflows.
Automated market research workflow on Apify
Use this actor as one source in a broader competitor-intelligence and market-research workflow:
- Monitor ads and messaging with Google Ads Scraper, Google Ads Transparency Center Scraper, and LinkedIn Ad Library Scraper.
- Track reviews and sentiment with G2 Reviews & Products Scraper, Trustpilot Reviews Scraper, and Amazon Reviews Scraper.
- Watch demand and category trends with Google Trends Scraper, Google News Scraper, and TikTok Trends Scraper.
- Benchmark ecommerce pricing and products with Amazon Scraper, Google Shopping Scraper, and Shopify Store Scraper.
- Map companies to people with LinkedIn Company Employees Scraper when you need account or team context.
Schedule runs, export datasets to CSV/Excel/JSON, or connect the outputs to Google Sheets, webhooks, Make, Zapier, BI tools, and LLM reporting workflows.
🎯 What does it do?
This actor extracts structured G2 review and product data at high speed using lightweight 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 split into likes (
pros), dislikes (cons) and problems solved, star ratings, NPS scores, per-dimension ratings (ease of use, quality of support, security, etc.), company size, contract length, discount, and the products reviewers switched from. - 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.
Use this with a brand monitoring stack
G2 Reviews & Products Scraper is the B2B review-intelligence layer in a custom Apify brand-monitoring stack. Pair it with:
- Reddit Scraper for community discussions, product feedback, and crisis signals
- Twitter/X Scraper for social search, campaign hashtags, and profile monitoring
- Threads Scraper for Threads posts and keyword searches
- Trustpilot Reviews Scraper for consumer review monitoring
- Google News Scraper for media coverage and PR alerts
- Website Change Monitor for competitor pricing, changelog, and landing-page changes
Together these actors form a custom brand-monitoring pipeline on Apify: social conversations, review sites, news coverage, and owned-web changes in one workflow.
👥 Who is it for?
🧠 Competitive intelligence analysts
Monitor what users love and hate about competing products. The pros and cons fields hold each reviewer's own answers to G2's "What do you like best?" and "What do you dislike?" questions, ready for sentiment analysis or an LLM summary. Use maxRating to pull only critical reviews.
📊 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: switchedFromProducts names the G2 products a reviewer moved away from, and companySegmentLabel shows whether they are Small-Business, Mid-Market or Enterprise. 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 in typical runs — lightweight HTTP requests keep runs fast and inexpensive
- No charge for bad input — the start fee is charged only when the run saves its first result, so a wrong slug or empty search costs nothing
- 42 fields per review — separate pros, cons and problems solved, company size label, all rating dimensions (including security and ease of doing business), contract length, discount, and switched-from products
- 5M+ reviews available — automatic 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.
For large product batches, set Maximum charge per run in the actor options to avoid unexpected overage. The actor saves only the results the remaining budget fully pays for and then stops. If the limit cannot cover the start fee plus one result, nothing is saved or charged and the status message says so.
| Event | Price |
|---|---|
| Run started | $0.01 (one-time per run, only when at least one result is saved) |
| Review scraped | $0.00575 per review on the Free plan, down to $0.0014 on higher Apify plans |
| Product scraped | $0.00345 per product on the Free plan, down to $0.00084 on higher Apify plans |
Example costs:
| Task | Items | Cost |
|---|---|---|
| 100 reviews for one product | 100 reviews | $0.01 + $0.575 = $0.585 |
| 1,000 reviews for a product | 1,000 reviews | $0.01 + $5.75 = $5.76 |
| Top 50 CRM products | 50 products | $0.01 + $0.1725 = $0.18 |
| Search results (25 products) | 25 products | $0.01 + $0.08625 = $0.10 |
Example costs use Free-plan prices. Per-review prices on paid Apify plans: Bronze $0.005, Silver $0.0039, Gold $0.003, Platinum $0.002, Diamond $0.0014. The discount is applied automatically.
🚀 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:
- Paste one or more G2 product URLs (e.g.
https://www.g2.com/products/slack/reviews) or just slugs (slack,hubspot,salesforce) - Set
maxReviews(default: 100, max: 50,000 per product) - Choose a sort order: Newest First, Most Helpful, Highest Rating, or Lowest Rating
- Optionally set a minimum and/or maximum NPS rating (0–10), for example
maxRating: 6for critical reviews only - For incremental monitoring, set inclusive
publishedAfterand/orpublishedBeforeISO dates (for example,2026-08-01)
For Product Search or Category Browse:
- Enter a keyword or category name in the
searchQueryfield - 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
| Parameter | Type | Default | Used in mode |
|---|---|---|---|
mode | select | product_reviews | All |
productUrls | string list | [slack reviews URL] | product_reviews |
maxReviews | integer | 100 | product_reviews |
sortReviews | select | newest | product_reviews |
minRating | integer (0–10) | — | product_reviews |
maxRating | integer (0–10) | — | product_reviews |
publishedAfter | ISO 8601 date/time | — | product_reviews |
publishedBefore | ISO 8601 date/time | — | product_reviews |
searchQuery | string | — | product_search, category_browse |
maxProducts | integer | 25 | product_search, category_browse |
Sort options for reviews:
newest— Most recently submittedhelpful— Most helpful votes firstrating_high— Highest NPS score firstrating_low— Lowest NPS score first (useful for finding pain points)
📤 Output fields
Review fields (42 fields)
| Field | Description | Type |
|---|---|---|
reviewId | Unique G2 review ID | string |
title | Review title | string |
nps | NPS score (0–10) | number |
starRating | Star rating (1–5, derived from NPS) | number |
reviewText | Full review body text (all answers joined, as G2 stores it) | string |
pros | Answer to "What do you like best?" | string |
cons | Answer to "What do you dislike?" | string |
problemsSolved | Answer to "What problems is the product solving and how is that benefiting you?" | string |
recommendations | Optional "Recommendations to others" answer (mostly reviews before 2023) | string |
publishedAt | Publication date (ISO 8601) | string |
submittedAt | Submission date (ISO 8601) | string |
updatedAt | Last updated date (ISO 8601) | string |
reviewerName | Reviewer display name | string |
country | Reviewer's country | string |
region | Reviewer's geographic region | string |
primaryRegion | Reviewer's market region: Americas, EMEA or Asia Pacific | string |
helpfulVotes | Number of helpful votes received | number |
sourceType | How the review was collected | string |
reviewSource | G2 review source, e.g. organic, g2, vendor | string |
responseType | Review format: text or video | string |
easeOfUse | Ease of use rating (0–10) | number |
easeOfSetup | Ease of setup rating (0–10) | number |
easeOfAdmin | Ease of administration rating (0–10) | number |
qualityOfSupport | Quality of support rating (0–10) | number |
meetsRequirements | Meets requirements rating (0–10) | number |
easeOfDoingBusinessWith | Ease of doing business with the vendor (0–10) | number |
securityConfidence | Confidence in the product's security (0–10) | number |
securityImportance | How important security is to the reviewer (0–10) | number |
contractLength | Contract length reported by the reviewer | string |
discount | Discount range reported by the reviewer | string |
loveTheme | G2 NLP theme: what users love (G2 stopped filling it in October 2024) | string |
hateTheme | G2 NLP theme: what users dislike (G2 stopped filling it in October 2024) | string |
switchedFromOtherProduct | Whether the reviewer switched from another product (yes/no) | string |
switchedReason | Reason they switched | string |
switchedFromProducts | Products the reviewer switched from: productId, name, slug | array |
companySegment | Company size code: 179, 180 or 181 | number |
companySegmentLabel | Company size: Small-Business, Mid-Market or Enterprise | string |
industry | G2 internal industry code | number |
productId | Internal G2 product ID | number |
productName | Product name | string |
productSlug | Product URL slug | string |
url | Direct link to the review on G2 | string |
Example review output:
{"reviewId": "13952282","title": "Best team messaging tool we've used","nps": 9,"starRating": 5,"reviewText": "Channels keep every project in one place...\nNotifications pile up...\nReplaced internal email threads... Best team messaging tool we've used","pros": "Channels keep every project in one place...","cons": "Notifications pile up...","problemsSolved": "Replaced internal email threads...","companySegmentLabel": "Mid-Market","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,"securityConfidence": 8,"switchedFromOtherProduct": "yes","switchedFromProducts": [{ "productId": 1434, "name": "Microsoft Teams", "slug": "microsoft-teams" }],"productName": "Slack","productSlug": "slack","url": "https://www.g2.com/products/slack/reviews/13952282"}
Product fields (15 fields)
| Field | Description | Type |
|---|---|---|
productId | Internal G2 product ID | string |
name | Product name | string |
slug | URL slug | string |
description | Product description | string |
vendorName | Vendor/company name | string |
productUrl | Official product website | string |
type | Product type classification | string |
categoryNames | G2 categories the product belongs to | string[] |
reviewCount | Total number of reviews | number |
averageRating | Average rating (float) | number |
starRating | Star rating (1–5) | number |
g2Rating | G2's composite rating score | number |
thumbnailUrl | Product thumbnail image URL | string |
faviconUrl | Product favicon URL | string |
url | G2 product page URL | string |
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
productUrlsand they will be processed sequentially. One $0.01 start fee covers all products in the run. - Use
sortReviews: rating_lowto collect negative reviews for pain point analysis without reading all reviews first. - Set
minRatingto 9 for promoters only, ormaxRatingto 6 for detractors only (NPS 0–6), for example to collect complaints for pain-point analysis. - Use
publishedAfterfor scheduled incremental runs so each run returns and charges only reviews published in the requested window. Date-only boundaries are inclusive UTC calendar days. - 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,salesforceare shorter and equally valid. - For products with 10K+ reviews, the actor automatically uses cursor-based pagination for reliable retrieval of all results.
- Combine modes — run category browse first to find slugs, then run product reviews on the top 5 products.
🗄️ Dataset retention and deletion
The default, reviews, and products outputs are run-scoped dataset aliases, not cross-run named datasets. They contain the public product/review rows returned by that run; rows are also mirrored into the default dataset for compatibility. The Actor does not persist a separate cache or copy credentials into storage. Dataset lifetime follows the run owner's Apify storage-retention settings; the Actor does not enforce a fixed retention period or automatic deletion.
To delete the results immediately, open the run → Storage, open every dataset ID listed for the run, and choose Actions → Delete. Programmatically, read storageIds.datasets from the run and call authenticated DELETE /v2/datasets/{datasetId} for each unique ID. Deleting one alias does not delete the other datasets.
🔌 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 with publishedAfter and publishedBefore for the last 7 days and maxRating: 6, and post the matching critical reviews 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, recurring pros and cons, 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',publishedAfter: '2026-08-01',});// Reviews and products are stored in separate named datasetsconst reviewsDatasetId = run.storageIds.datasets.reviews;const { items: reviews } = await client.dataset(reviewsDatasetId).listItems();console.log(reviews);
Python (Apify client)
from apify_client import ApifyClientclient = 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",})# Reviews are in the named "reviews" datasetreviews_dataset_id = run["storageIds"]["datasets"]["reviews"]for item in client.dataset(reviews_dataset_id).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"
🤖 Agent and LLM workflow (Apify API / MCP-ready)
Use this actor as an agent-ready source for B2B software review intelligence. It does not expose a native G2 MCP endpoint; AI assistants can run it through Apify's API, Apify Integrations, or the Apify MCP server and then summarize or compare the dataset results.
Example agent task: "Pull 200 recent Salesforce CRM reviews from G2, group the most common complaints by theme, and draft a battlecard section for a sales team."
Call from an agent via API
curl "https://api.apify.com/v2/acts/automation-lab~g2-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"product_reviews","productUrls":["https://www.g2.com/products/salesforce-crm/reviews"],"maxReviews":200,"sortReviews":"newest"}'# After the run finishes, let the agent fetch reviews/products from the datasetcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \-H "Authorization: Bearer YOUR_APIFY_TOKEN"
Use through Apify MCP server
If your AI client supports MCP, connect the Apify MCP server and allow only this actor. Use the JSON below in Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json), or VS Code (.vscode/mcp.json):
{"mcpServers": {"apify-g2": {"url": "https://mcp.apify.com?tools=automation-lab/g2-scraper","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Claude Code users can configure the same actor-scoped endpoint from the command line:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/g2-scraper"
Example prompts:
- "Run
automation-lab/g2-scraperfor thedigital-banking-platformscategory and compare the five products with the most reviews." - "Collect the 200 newest reviews for Salesforce CRM, then summarize recurring complaints from the
consfield by company size."
The assistant can wait for the run to finish and analyze review fields such as starRating, title, pros, cons, problemsSolved, companySegmentLabel, plus product metadata.
⚖️ Legality — Is it legal to scrape G2?
G2 reviews can be browsed without logging in. This actor requests review and product information that is available to anonymous visitors and does not bypass authentication or access controls.
Key points:
- No login required — the actor does not bypass any authentication or access controls
- Visible review/product content — returned fields match the review and product information available on G2 pages
- Polite scraping — the actor adds a 200ms delay between requests and processes 100 items per page
- No PII beyond reviewer display names — reviewer job titles, profile URLs, and company names are not returned by the source endpoints and are not scraped
This Actor is independent and not affiliated with, endorsed by, or sponsored by G2. G2 is named only to identify the public data source.
Error diagnostics: failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. No AI provider processes runtime input or output.
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.
🔧 Troubleshooting
Run failed with "Could not fetch reviews from G2" — G2's review search did not answer for any requested product. Nothing was charged; try again later. If only some products fail, the run keeps the reviews it saved and its status message lists the failed slugs as a partial result.
Run succeeded but dataset is empty — Read the run's status message: it names any product slug G2 did not recognize. Verify your product slug or URL is correct. Open the G2 product page and copy the slug from the URL path (e.g. /products/salesforce-crm/reviews → slug is salesforce-crm). Do not include the /reviews suffix when using a bare slug.
Fewer reviews than the product page shows — Some reviews may be draft, removed, or not returned by the source endpoints. Also check your minRating, maxRating and date filters — they exclude reviews outside the range.
chargedEventCounts shows review:0 — This means no reviews matched your filters, and the run was not charged. Try removing minRating, maxRating and the date filters (all empty by default) and re-running. Also confirm the product has visible reviews by browsing its G2 page.
Charged review:N events but reviews dataset is empty after run — This is a transient platform state: the dataset upload completed but the storage URL query returned stale results. Wait 30–60 seconds and fetch the dataset again via the API URL shown in the actor output.
Run failed with ETIMEDOUT or EAI_AGAIN — G2's public pages or backing endpoints may be temporarily unreachable. Retry the run a few minutes later; persistent network failures abort the run with a clear error message.
❓ 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 automatic cursor-based pagination to reliably retrieve all results.
Q: Can I get pros and cons separately?
Yes. pros, cons and problemsSolved hold the reviewer's answers to G2's three review questions, and older reviews may also have recommendations. G2 stores the answers as one text, which the actor splits. When an answer itself contains a line break, the split is ambiguous: these fields are then null, and the full text stays in reviewText (about 5% of recent reviews).
Q: Does this scraper need a proxy? No. Typical runs use lightweight HTTP requests and do not require residential or datacenter proxies.
Q: Can I get reviewer job title, company, or profile URL? No. These fields are not returned by the source endpoints. The actor returns 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 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 G2's company-size code: 179 = Small-Business (50 or fewer employees), 180 = Mid-Market (51–1,000), 181 = Enterprise (more than 1,000). The companySegmentLabel field gives the readable label.
🔗 Related scrapers
These actors from the same author cover adjacent data sources:
- Capterra Scraper — reviews and product data from Capterra, G2's main competitor
- Trustpilot Reviews Scraper — consumer reviews from Trustpilot across all industries
- Google Maps Reviews Scraper — reviews and ratings from Google Maps business listings
Built and maintained by automation-lab on the Apify platform.
Use with AI agents via x402 (no Apify account)
Agent workflows can run this actor through Apify MCP without an Apify account when the MCP client uses a funded x402 wallet. Use the actor-specific MCP endpoint:
https://mcp.apify.com?tools=automation-lab/g2-scraper&payment=x402
This keeps existing Apify MCP/API usage unchanged; x402 only changes payment/authentication for clients that support it. Learn more in Apify's x402 integration docs.