G2 Reviews & Products Scraper avatar

G2 Reviews & Products Scraper

Pricing

from $3.00 / 1,000 review scrapeds

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, 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

Automation Lab

Maintained by Community

Actor stats

7

Bookmarked

1.2K

Total users

298

Monthly active users

0.11 hours

Issues response

8 days ago

Last modified

Features

Limited permissions

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:

  1. Scrape G2 product reviews, search results, or category pages here for B2B software intelligence.
  2. Add Trustpilot Reviews Scraper for consumer reputation monitoring and company replies.
  3. Add Google Play Reviews Scraper or Google Play Store Scraper for Android app reviews, ratings, and app metadata.
  4. 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:

  1. Monitor ads and messaging with Google Ads Scraper, Google Ads Transparency Center Scraper, and LinkedIn Ad Library Scraper.
  2. Track reviews and sentiment with G2 Reviews & Products Scraper, Trustpilot Reviews Scraper, and Amazon Reviews Scraper.
  3. Watch demand and category trends with Google Trends Scraper, Google News Scraper, and TikTok Trends Scraper.
  4. Benchmark ecommerce pricing and products with Amazon Scraper, Google Shopping Scraper, and Shopify Store Scraper.
  5. 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:

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.

EventPrice
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:

TaskItemsCost
100 reviews for one product100 reviews$0.01 + $0.575 = $0.585
1,000 reviews for a product1,000 reviews$0.01 + $5.75 = $5.76
Top 50 CRM products50 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:

  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 and/or maximum NPS rating (0–10), for example maxRating: 6 for critical reviews only
  5. For incremental monitoring, set inclusive publishedAfter and/or publishedBefore ISO dates (for example, 2026-08-01)

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
maxRatinginteger (0–10)—product_reviews
publishedAfterISO 8601 date/time—product_reviews
publishedBeforeISO 8601 date/time—product_reviews
searchQuerystring—product_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 (42 fields)

FieldDescriptionType
reviewIdUnique G2 review IDstring
titleReview titlestring
npsNPS score (0–10)number
starRatingStar rating (1–5, derived from NPS)number
reviewTextFull review body text (all answers joined, as G2 stores it)string
prosAnswer to "What do you like best?"string
consAnswer to "What do you dislike?"string
problemsSolvedAnswer to "What problems is the product solving and how is that benefiting you?"string
recommendationsOptional "Recommendations to others" answer (mostly reviews before 2023)string
publishedAtPublication date (ISO 8601)string
submittedAtSubmission date (ISO 8601)string
updatedAtLast updated date (ISO 8601)string
reviewerNameReviewer display namestring
countryReviewer's countrystring
regionReviewer's geographic regionstring
primaryRegionReviewer's market region: Americas, EMEA or Asia Pacificstring
helpfulVotesNumber of helpful votes receivednumber
sourceTypeHow the review was collectedstring
reviewSourceG2 review source, e.g. organic, g2, vendorstring
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
easeOfDoingBusinessWithEase of doing business with the vendor (0–10)number
securityConfidenceConfidence in the product's security (0–10)number
securityImportanceHow important security is to the reviewer (0–10)number
contractLengthContract length reported by the reviewerstring
discountDiscount range reported by the reviewerstring
loveThemeG2 NLP theme: what users love (G2 stopped filling it in October 2024)string
hateThemeG2 NLP theme: what users dislike (G2 stopped filling it in October 2024)string
switchedFromOtherProductWhether the reviewer switched from another product (yes/no)string
switchedReasonReason they switchedstring
switchedFromProductsProducts the reviewer switched from: productId, name, slugarray
companySegmentCompany size code: 179, 180 or 181number
companySegmentLabelCompany size: Small-Business, Mid-Market or Enterprisestring
industryG2 internal industry codenumber
productIdInternal G2 product IDnumber
productNameProduct namestring
productSlugProduct URL slugstring
urlDirect link to the review on G2string

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)

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 9 for promoters only, or maxRating to 6 for detractors only (NPS 0–6), for example to collect complaints for pain-point analysis.
  • Use publishedAfter for 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, salesforce are 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 datasets
const reviewsDatasetId = run.storageIds.datasets.reviews;
const { items: reviews } = await client.dataset(reviewsDatasetId).listItems();
console.log(reviews);

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",
})
# Reviews are in the named "reviews" dataset
reviews_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 dataset
curl "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-scraper for the digital-banking-platforms category and compare the five products with the most reviews."
  • "Collect the 200 newest reviews for Salesforce CRM, then summarize recurring complaints from the cons field 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.

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.

These actors from the same author cover adjacent data sources:


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.

⌂ 换网址