G2.com | Only $1.5๐Ÿ’ฐ | Reviews & Search by URL avatar

G2.com | Only $1.5๐Ÿ’ฐ | Reviews & Search by URL

Pricing

from $1.50 / 1,000 results

Go to Apify Store
G2.com | Only $1.5๐Ÿ’ฐ | Reviews & Search by URL

G2.com | Only $1.5๐Ÿ’ฐ | Reviews & Search by URL

๐Ÿ’ฐ$1.50 per 1,000 per search results. Extracts Product Name, Star Ratings, Review Counts, Vendor Details, Pricing Type, and Sponsorship status. Includes detailed category data. Ideal for market research and competitor analysis.

Pricing

from $1.50 / 1,000 results

Rating

5.0

(5)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

1

Bookmarked

61

Total users

13

Monthly active users

5 days ago

Last modified

Share

G2.com Software Scraper

Unlock the Full Power of G2.com Data โ€” The only scraper you need to track, analyze, and understand the software landscape on G2.com with enterprise-grade reliability and precision. Whether you're benchmarking competitors, building a vendor shortlist, or monitoring user sentiment, our scraper turns G2's catalog into a structured dataset you can act on.

"From product listings to verified user reviews, we turn G2.com's data into your competitive advantage."

Overview

The G2.com Software Scraper is your one-stop tool for extracting product, vendor, and review data from G2.com. Ideal for product managers, market analysts, sales teams, and researchers, it captures product metadata, ratings, review counts, vendor profiles, pricing indicators, category memberships, and full user reviews across thousands of software products. With easy setup and multiple export formats (JSON, CSV), it's perfect for anyone needing comprehensive G2 data at scale.

What does the G2 Software Scraper do?

The scraper supports five different G2 URL patterns out of the box and emits row-types you can split on:

Comprehensive Data Collection

  • Search Results โ€” extract product cards from G2 keyword searches
    • Product name, vendor, rating, review count, categories, sponsorship status, thumbnail
  • Product Reviews โ€” paginate through a product's full review feed
    • Reviewer profile, rating, publish date, written content, structured Q&A pairs
  • Category Listings โ€” paginate through /categories/{slug} rankings
    • Same product card data as search PLUS position rank, entry-level price, list type
  • Competitor Lists โ€” extract a product's "Top 10 Alternatives & Competitors" page
    • Ranked alternatives with name, vendor, rating, review count, description, pricing
  • Product Detail Pages โ€” extract a single product's full profile
    • Full marketing description, aggregate rating, pricing tiers, vendor info, screenshot URLs, features text

Advanced Scraping Capabilities

  • Search Scraping: Process G2 keyword searches and extract all matching products with full pagination
  • Reviews Scraping: Hit a product's review URL โ†’ get every review with author + Q&A structure
  • Category Scraping: Walk an entire G2 category (or subcategory) and extract its ranked product list
  • Competitor Scraping: Hit /products/{slug}/competitors โ†’ get G2's curated Top 10 alternatives
  • Product Detail Scraping: Hit /products/{slug} โ†’ one row per product with full description, pricing tiers, images, and aggregate rating
  • Smart Anti-Bot Handling: Three TLS-impersonating clients race in parallel (impers, impit, got-scraping). Browser-quality session pool keeps Datadome/Cloudflare cookies fresh.
  • Smart Pagination: Follows G2's "Next" links automatically and stops cleanly on the last page
  • Humanlike Pacing: 8-15s jittered delays between page fetches to stay under rate limits

Flexible Scraping Options

  • Search URLs: https://www.g2.com/search?query=crm
  • Product Reviews URLs: https://www.g2.com/products/postman/reviews
  • Category URLs: https://www.g2.com/categories/crm (also subcategories like /categories/crm/sales-acceleration)
  • Competitors URLs: https://www.g2.com/products/postman/competitors (also accepts /competitors/alternatives)
  • Product Detail URLs: https://www.g2.com/products/postman (the bare product page โ€” one row of rich metadata per product)

This tool is ideal for:

  • Competitive intelligence and vendor shortlisting
  • Market research across entire G2 categories
  • Customer-voice analysis from verified reviews
  • Lead generation by category or search keyword
  • Sentiment monitoring over time on specific products

Features

  • Five URL Types Supported: Search, individual product reviews, category listings, competitor lists, and product detail pages โ€” each with its own optimized parser
  • Full Anti-Bot Resilience:
    • Browser-warmed session pool with rotating Datadome cookies
    • Three independent TLS-impersonating HTTP clients raced in parallel
    • Automatic session rotation, per-session usage tracking
    • Falls back to legacy DataDome-cookie service if pool is empty
  • Comprehensive Data Extraction: Detailed product metadata, ratings, full reviews, vendor profiles, category memberships, pricing
  • Flexible Input: Mix all three URL types in a single run
  • Automatic Pagination: Walks multi-page results until your maxItems cap or the last page
  • Structured Output: One row per product or per review, discriminated by a type field for easy downstream filtering
  • Reliable Performance: Built-in retry mechanisms, exponential back-off, residential proxy support

Supported URL Types

The G2.com Software Scraper handles eight URL patterns. Mix them freely in a single startUrls array.

1. Search Result URLs

Extract products matching a keyword query, with automatic pagination.

  • Example: https://www.g2.com/search?query=databricks
  • Example: https://www.g2.com/search?query=crm+software
  • Output row shape: itemType: "Software" (no type field โ€” historical schema)

2. Product Reviews URLs

Extract every review for a specific product. Walks G2's reviews_and_filters Turbo Frame endpoint with pagination. Emits one type: "review_summary" row up front (AI summary + top Pros/Cons with mention counts) followed by type: "review" rows for each individual review.

  • Example: https://www.g2.com/products/postman/reviews
  • Example: https://www.g2.com/products/azure-databricks/reviews
  • Alias-redirect resolution: input slug may be a G2 alias (e.g. /products/salesforce/reviews resolves to /products/salesforce-customer-success/reviews); the scraper transparently follows.
  • Filter passthrough: append G2's own filter query params and they're forwarded verbatim. Examples:
    • https://www.g2.com/products/postman/reviews?filters[ratings]=5 โ€” lead with 5-star
    • https://www.g2.com/products/postman/reviews?filters[company_size][]=Enterprise&order=most_recent
    • Whitelisted families: filters[*], order, state, lang_iso, time, tag_ids[], media_type
  • Output row shapes: type: "review_summary" (one per URL, skipped when filters are used) + type: "review" (one per review)

3. Category Listing URLs

Walk an entire G2 category page (and any subcategory under it), ranked by G2 score. Each product row now carries a situationalAwards array โ€” G2 Gridยฎ-style quadrant winners ("Leader", "Highest Performer", "Easiest to Use", "Top Trending", "Best Free Software") for that category, pulled from the page's analytics markup.

  • Example: https://www.g2.com/categories/crm
  • Example: https://www.g2.com/categories/crm/sales-acceleration
  • Output row shape: type: "category_product" (with situationalAwards: [...])

4. Competitor Lists URLs

Pull G2's curated "Top N Alternatives & Competitors" for a specific product. Fixed-size list (no pagination).

  • Example: https://www.g2.com/products/postman/competitors
  • Example: https://www.g2.com/products/salesforce-sales-cloud/competitors/alternatives (canonical form โ€” both are accepted and normalized)
  • Output row shape: type: "competitor"

5. Product Detail URLs

Extract the full profile for a single product โ€” one row per product. Includes the full marketing description (not just a snippet), all pricing tiers, screenshot URLs, vendor profile, and aggregate rating.

  • Example: https://www.g2.com/products/postman
  • Example: https://www.g2.com/products/salesforce-sales-cloud
  • Output row shape: type: "product"

6. Vendor / Seller Profile URLs

Extract a vendor's company profile and their entire product portfolio (rating + review count per product). One row per vendor, with an embedded products array.

  • Example: https://www.g2.com/sellers/salesforce
  • Example: https://www.g2.com/sellers/postman
  • Output row shape: type: "vendor"

7. Pricing Tab URLs

Extract a product's structured pricing โ€” per-tier prices (with currency), the G2-curated "Key Insights" summary paragraph, and the pricing FAQs (Q&A pairs).

  • Example: https://www.g2.com/products/postman/pricing
  • Example: https://www.g2.com/products/slack/pricing
  • Output row shape: type: "pricing"

8. Compare URLs

Head-to-head product comparison: pulls each product's metadata (name, vendor, aggregate rating, review count) plus the full per-criterion ratings table (Meets Requirements, Ease of Use, Ease of Setup, Ease of Admin, Quality of Support, etc.) with score + sample size for each side, and the list of alternatives G2 surfaces.

  • Example: https://www.g2.com/compare/postman-vs-mulesoft-anypoint-platform
  • Multi-way comparisons are also supported: https://www.g2.com/compare/a-vs-b-vs-c
  • Output row shape: type: "compare"

Quick Start

  1. Sign up for Apify: Create your free account at apify.com
  2. Find the Scraper: Search for "G2.com Software Scraper" in the Apify Store
  3. Configure Input: Provide one or more G2 URLs (any of the eight supported types โ€” search, reviews, categories, competitors, product detail, vendor profile, pricing tab, or head-to-head compare)
  4. Run the Scraper: Execute the scraper on the Apify platform
  5. Download Data: Export results in JSON, CSV, or Excel

Input Configuration

Here's an example mixing all eight URL types in one run:

{
"startUrls": [
{ "url": "https://www.g2.com/search?query=databricks" },
{ "url": "https://www.g2.com/products/postman/reviews" },
{ "url": "https://www.g2.com/categories/crm" },
{ "url": "https://www.g2.com/products/postman/competitors" },
{ "url": "https://www.g2.com/products/postman" },
{ "url": "https://www.g2.com/sellers/salesforce" },
{ "url": "https://www.g2.com/products/postman/pricing" },
{ "url": "https://www.g2.com/compare/postman-vs-mulesoft-anypoint-platform" }
],
"maxItems": 1000,
"maxReviews": 200,
"maxConcurrency": 1,
"minConcurrency": 1,
"maxRequestRetries": 5,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"slowMode": true
}

Input Fields Explanation

  • startUrls (array, required): G2 URLs to scrape. Each entry is an object with a url field. You can mix search, reviews, and category URLs freely.
  • maxItems (integer, optional): Hard cap on total rows emitted across all startUrls. Default 100. Applies to product rows from search + category URLs, and (separately, when maxReviews is not set) to review rows.
  • maxReviews (integer, optional): Cap on review rows per product URL. Default falls back to maxItems if unset. Only applies to /products/.../reviews URLs.
  • maxConcurrency (integer, optional): Maximum concurrent page fetches. Default 1. Keep low (1-3) for G2 because DataDome rate-limits aggressively per cookie.
  • minConcurrency (integer, optional): Minimum concurrent page fetches. Default 1.
  • maxRequestRetries (integer, optional): Number of retries for failed requests. Default 5.
  • proxy (object, optional): Proxy configuration. Residential proxies strongly recommended for G2 โ€” Datadome/Cloudflare flag datacenter IPs immediately.
    • useApifyProxy: Use Apify's residential proxy service (recommended: true)
    • apifyProxyGroups: Proxy groups (recommended: ["RESIDENTIAL"])
  • slowMode (boolean, optional): When true, adds extra warm-up delays and longer back-off between pages. Default true. Set to false only if you've verified your proxy + IPs are clean.

Pricing

This actor uses the pay-per-event model:

EventTriggerPrice
ResultEvery dataset row pushed (product or review)$2.75 / 1000
Review detailsEach type: "review" row, on top of the Result charge$1.50 / 1000

Effective per-row cost:

  • Search / Category product row โ†’ $2.75 / 1000
  • Review row โ†’ $4.25 / 1000 ($2.75 Result + $1.50 Review details)

For a run with 100 products from search + 50 reviews each (5,100 rows total): 100 ร— $0.00275 + 5,000 ร— $0.00425 โ‰ˆ $21.40.

Output Structure

The scraper writes nine row types to the dataset, distinguished by where the data came from:

Source URLRow markerDescription
/search?query=...itemType: "Software"One row per product card in search results
/products/{slug}/reviewstype: "review_summary" + type: "review"One summary row (AI text + Pros/Cons) per URL, then one row per individual review
/categories/{slug}type: "category_product"One row per product in a category listing (with situationalAwards: [...])
/products/{slug}/competitorstype: "competitor"One row per competing product (Top N)
/products/{slug}type: "product"One row per product detail page (full profile)
/sellers/{slug}type: "vendor"One row per vendor with embedded products portfolio
/products/{slug}/pricingtype: "pricing"One row per product with pricing tiers + key insights + FAQs
/compare/{a}-vs-{b}type: "compare"One row per comparison with per-criterion ratings

You can split the dataset by these markers downstream, or use the join keys (productSlug, productUuid, vendorId) to merge across row types.

Sample Search Result Row

URL: https://www.g2.com/search?query=databricks

{
"scrapedAt": "2026-05-11T11:33:14.012Z",
"searchUrl": "https://www.g2.com/search?query=databricks",
"query": "databricks",
"itemType": "Software",
"resultRank": 1,
"foundVia": "g2",
"isSponsored": false,
"pricingType": null,
"productName": "Azure Databricks",
"productId": 67962,
"productUuid": "f326c17a-5165-4436-ae44-948c44a6ad31",
"productUrl": "https://www.g2.com/products/azure-databricks/reviews",
"reviewsUrl": "https://www.g2.com/products/azure-databricks/reviews",
"thumbImageUrl": "https://images.g2crowd.com/uploads/vendor/image/359/13bbb369c8268754a786f3dce328f6ce.jpeg",
"descriptionSnippet": "Azure Databricks is a unified, open analytics platform developed collaboratively by Microsoft and Databricks. Built on the lakehouse architecture, it seamlessly integrates data engineering, data science, and machine learning within the Azure ecosystem...",
"vendorName": "Microsoft",
"vendorId": 359,
"sellerName": "Microsoft",
"sellerUrl": "https://www.g2.com/sellers/microsoft",
"ratingOutOfFive": 4.5,
"ratingOutOfTen": 9,
"reviewCount": 228,
"relatedCategories": ["Big Data Analytics"],
"categoriesDetailed": [
{
"id": 1041,
"name": "Big Data Analytics",
"url": "https://www.g2.com/categories/big-data-analytics"
}
]
}

Sample Review Row

URL: https://www.g2.com/products/postman/reviews

{
"type": "review",
"review_id": 12743757,
"review_title": null,
"review_content": "Honestly, Postman has made my work so much easier. Before using it, testing APIs felt like a chore โ€” now it's straightforward and intuitive. The UI is clean, the request builder is powerful, and the way it handles environments and variables saves me hours every week.",
"review_question_answers": {
"What do you like best about Postman?": "Honestly, Postman has made my work so much easier. The UI is clean, the request builder is powerful, and the way it handles environments and variables saves me hours every week.",
"What do you dislike about Postman?": "The free tier limits on collaborators and monitors can be restrictive for small teams. Occasionally the desktop app gets sluggish with very large collections."
},
"review_rating": 4.5,
"reviewer": {
"reviewer_name": "Suraj J.",
"reviewer_job_title": "Junior AI Engineer",
"business_size": "Small-Business(50 or fewer emp.)"
},
"publish_date": "2026-05-04",
"product_slug": "postman",
"product_name": "Postman",
"review_link": "https://www.g2.com/products/postman/reviews/postman-review-12743757"
}

Sample Product Detail Row

URL: https://www.g2.com/products/postman

{
"type": "product",
"scrapedAt": "2026-05-11T13:26:01.482Z",
"productName": "Postman",
"productSlug": "postman",
"productUrl": "https://www.g2.com/products/postman",
"reviewsUrl": "https://www.g2.com/products/postman/reviews",
"competitorsUrl": "https://www.g2.com/products/postman/competitors/alternatives",
"vendorName": "Postman",
"vendorSlug": "postman",
"vendorUrl": "https://www.g2.com/sellers/postman",
"description": "Postman is the world's leading API platform, used by more than 40 million developers and 500,000 organizations to build, test, and ship better APIs faster. Postman delivers an integrated set of tools that helps every teamโ€”from individual developers to large enterprisesโ€”streamline the API lifecycle across design, testing, documentation, monitoring, and collaboration...",
"ratingOutOfFive": 4.6,
"ratingOutOfTen": 9.2,
"reviewCount": 1760,
"pricingTiers": ["Free Plan", "Basic Plan", "Professional Plan"],
"featuresText": "Postman FeaturesAPI Construction\nAPI Testing\nData Security\nOrchestrationAPI Management\nLogs/Documentation\nAPI Monitoring\nCollaboration...",
"images": [
"https://images.g2crowd.com/uploads/product/hd_favicon/7b4d7d3f13ff9a655c3e07b1ab.png",
"https://images.g2crowd.com/uploads/product/large_detail/screenshot_2.png",
"https://images.g2crowd.com/uploads/product/large_detail/screenshot_3.png"
],
"imageCount": 6,
"status": "SUCCEEDED"
}

Sample Competitor Row

URL: https://www.g2.com/products/postman/competitors

{
"type": "competitor",
"scrapedAt": "2026-05-11T13:13:01.482Z",
"sourceProductSlug": "postman",
"competitorRank": 1,
"productName": "MuleSoft Anypoint Platform",
"productSlug": "mulesoft-anypoint-platform",
"productUrl": "https://www.g2.com/products/mulesoft-anypoint-platform/reviews",
"reviewsUrl": "https://www.g2.com/products/mulesoft-anypoint-platform/reviews",
"thumbImageUrl": "https://images.g2crowd.com/uploads/product/image/large_detail/large_detail_mule.png",
"descriptionSnippet": "MuleSoft Anypoint Platform is the industry's only complete API and integration platform. Anypoint Platform delivers AI-powered automation that helps teams build, govern, and manage APIs and integrations 10x faster โ€” across any system or LLM...",
"vendorName": "Salesforce",
"ratingOutOfFive": 4.5,
"ratingOutOfTen": 9,
"reviewCount": 733,
"entryLevelPrice": "Free"
}

Sample Category Product Row

URL: https://www.g2.com/categories/crm

{
"type": "category_product",
"scrapedAt": "2026-05-11T11:49:33.728Z",
"categorySlug": "crm",
"page": 1,
"position": 1,
"listType": null,
"isSponsored": false,
"productId": 3196,
"productUuid": "fb6a4f51-8e3f-4a01-9f04-3c2c8a8a9e1d",
"productName": "Agentforce Sales (formerly Salesforce Sales Cloud)",
"productSlug": "agentforce-sales-formerly-salesforce-sales-cloud",
"productUrl": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/reviews",
"productCategory": "CRM",
"productCategoryId": 179,
"vendorId": 26,
"vendorSlug": "salesforce",
"vendorName": "Salesforce",
"ratingOutOfFive": 4.4,
"ratingOutOfTen": 8.8,
"reviewCount": 25754,
"entryLevelPrice": "Starting at $25.00 Per User Per Month",
"descriptionSnippet": "Accelerate revenue from pipeline to paycheck with Salesforce Sales Cloud - your complete sales platform for the AI era. Unify your data and sales processes...",
"thumbImageUrl": "https://images.g2crowd.com/uploads/product/image/large_detail/large_detail_1234.png"
}

Sample Vendor Row

URL: https://www.g2.com/sellers/salesforce

{
"type": "vendor",
"scrapedAt": "2026-05-11T13:50:12.402Z",
"vendorName": "Salesforce",
"vendorSlug": "salesforce",
"vendorUrl": "https://www.g2.com/sellers/salesforce",
"description": "Salesforce is the #1 AI CRM, where humans with agents drive customer success together with AI, data, and Customer 360 apps on a single, trusted platform...",
"companyDetails": {
"founded": "1999",
"hqLocation": "San Francisco, CA",
"ownership": "NYSE:CRM",
"totalRevenue": null,
"employees": null,
"phone": "+1 (800) 667-6389"
},
"products": [
{
"productSlug": "agentforce-sales-formerly-salesforce-sales-cloud",
"productName": "Agentforce Sales (formerly Salesforce Sales Cloud)",
"productUrl": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/reviews",
"ratingOutOfFive": 4.5,
"reviewCount": 25754,
"descriptionSnippet": ""
},
{
"productSlug": "slack",
"productName": "Slack",
"productUrl": "https://www.g2.com/products/slack/reviews",
"ratingOutOfFive": 4.5,
"reviewCount": 38833,
"descriptionSnippet": ""
},
{
"productSlug": "tableau",
"productName": "Tableau",
"productUrl": "https://www.g2.com/products/tableau/reviews",
"ratingOutOfFive": 4.4,
"reviewCount": 2280,
"descriptionSnippet": ""
}
],
"productCount": 9,
"totalReviewsAcrossProducts": 94372,
"status": "SUCCEEDED"
}

Sample Review Summary Row

URL: https://www.g2.com/products/postman/reviews (emitted once, before individual review rows)

{
"type": "review_summary",
"scrapedAt": "2026-05-11T21:35:12.506Z",
"productSlug": "postman",
"productUrl": "https://www.g2.com/products/postman/reviews",
"summaryText": "Users consistently praise Postman for its intuitive interface and collaboration features, which streamline API testing and development. The platform simplifies the process of creating, testing, and managing APIs, making it accessible for both beginners and experienced developers. However, some users note that it can become resource-heavy when handling large collections.",
"pros": [
{ "label": "Ease of Use", "mentions": 464 },
{ "label": "API Testing", "mentions": 398 },
{ "label": "API Management", "mentions": 308 },
{ "label": "Testing", "mentions": 280 },
{ "label": "Testing Efficiency", "mentions": 277 }
],
"cons": [
{ "label": "Slow Performance", "mentions": 220 },
{ "label": "Performance Issues", "mentions": 201 },
{ "label": "Slow Loading", "mentions": 144 },
{ "label": "Resource Limitations","mentions": 132 },
{ "label": "Limited Features", "mentions": 122 }
],
"aggregateRating": 4.6,
"totalReviews": 1760,
"status": "SUCCEEDED"
}

Sample Pricing Row

URL: https://www.g2.com/products/postman/pricing

{
"type": "pricing",
"scrapedAt": "2026-05-12T09:04:08.608Z",
"productSlug": "postman",
"productName": "Postman",
"productUrl": "https://www.g2.com/products/postman",
"pricingUrl": "https://www.g2.com/products/postman/pricing",
"tiers": [
{ "tierName": "Free Plan", "price": 0, "currency": "USD", "rawPrice": "$0" },
{ "tierName": "Basic Plan", "price": 14, "currency": "USD", "rawPrice": "$14 / 1 per user/month, billed annually" },
{ "tierName": "Professional Plan", "price": 29, "currency": "USD", "rawPrice": "$29 / 1 per user/month, billed annually" },
{ "tierName": "Enterprise Plan", "price": 49, "currency": "USD", "rawPrice": "$49" }
],
"tierCount": 4,
"priceMin": 0,
"priceMax": 49,
"currency": "USD",
"keyInsights": "Postman offers 4 pricing editions, starting from $0 to $49. Postman pricing tiers are designed to support different usage levels and team sizes. Postman also offers a free trial.",
"faqs": [
{ "question": "Is Postman free, or does it offer a free trial?", "answer": "Yes. According to G2 data, Postman offers a free plan with limited features..." },
{ "question": "How much does Postman cost in 2026?", "answer": "According to G2 data, Postman pricing in 2026 starts at $14.00 and can reach $49.00..." }
],
"faqCount": 5,
"status": "SUCCEEDED"
}

Sample Compare Row

URL: https://www.g2.com/compare/postman-vs-mulesoft-anypoint-platform

{
"type": "compare",
"scrapedAt": "2026-05-12T13:20:42.123Z",
"compareUrl": "https://www.g2.com/compare/postman-vs-mulesoft-anypoint-platform",
"combinedSlug": "postman-vs-mulesoft-anypoint-platform",
"products": [
{
"productSlug": "mulesoft-anypoint-platform",
"productName": "MuleSoft Anypoint Platform",
"productUrl": "https://www.g2.com/products/mulesoft-anypoint-platform",
"vendorName": "Salesforce",
"ratingOutOfFive": 4.5,
"reviewCount": 733
},
{
"productSlug": "postman",
"productName": "Postman",
"productUrl": "https://www.g2.com/products/postman",
"vendorName": "Postman",
"ratingOutOfFive": 4.6,
"reviewCount": 1760
}
],
"productCount": 2,
"ratings": [
{ "criterion": "Meets Requirements", "perProduct": [{ "score": 8.8, "sampleSize": 506, "note": null }, { "score": 9.3, "sampleSize": 1376, "note": null }] },
{ "criterion": "Ease of Use", "perProduct": [{ "score": 8.6, "sampleSize": 517, "note": null }, { "score": 9.1, "sampleSize": 1395, "note": null }] },
{ "criterion": "Ease of Setup", "perProduct": [{ "score": 8.6, "sampleSize": 335, "note": null }, { "score": 9.3, "sampleSize": 646, "note": null }] },
{ "criterion": "Ease of Admin", "perProduct": [{ "score": 8.4, "sampleSize": 282, "note": null }, { "score": 8.9, "sampleSize": 185, "note": null }] },
{ "criterion": "Quality of Support", "perProduct": [{ "score": 8.2, "sampleSize": 463, "note": null }, { "score": 8.7, "sampleSize": 1140, "note": null }] }
],
"ratingsCount": 7,
"alternativesShown": [
{ "productSlug": "workato", "productName": "Workato" },
{ "productSlug": "boomi", "productName": "Boomi" },
{ "productSlug": "sap-integration-suite", "productName": "SAP Integration Suite" },
{ "productSlug": "celigo", "productName": "Celigo" }
],
"status": "SUCCEEDED"
}

Output Fields Detailed Explanation

Common Fields (all row types)

  • scrapedAt (string): ISO 8601 timestamp of when this row was extracted.
  • productName (string): Official product name on G2.
  • productSlug / productUrl / reviewsUrl: URL components for cross-linking back to G2 or joining rows together.
  • thumbImageUrl (string | null): Product logo URL from G2's CDN. Some category-page images load lazily as SVG placeholders โ€” those resolve to null.

Search-Specific Fields (itemType: "Software")

  • searchUrl (string): The G2 search URL used.
  • query (string): Keyword that produced this result.
  • resultRank (number): Position in the search results (1 = top).
  • itemType (string): Almost always "Software" โ€” "Service" occasionally.
  • foundVia (string): Static "g2" source marker.
  • isSponsored (boolean): true if this is a paid promotion.
  • pricingType (string | null): Pricing indicator like "Free Trial", "Free", etc.
  • productId / productUuid: G2's internal numeric ID and UUID.
  • descriptionSnippet (string): First ~500 chars of the marketing description.
  • vendorName / vendorId / sellerName / sellerUrl: Vendor profile data.
  • ratingOutOfFive (number): 0-5 star rating (e.g., 4.5).
  • ratingOutOfTen (number): Same rating normalized to 0-10.
  • reviewCount (number): Total review count.
  • relatedCategories (array of strings): Category names this product belongs to.
  • categoriesDetailed (array of objects): { id, name, url } for each category.

Review-Specific Fields (type: "review")

  • type (string): Always "review" for this row type.
  • review_id (number): Yelp-style internal review identifier (numeric).
  • review_title (string | null): Review headline (frequently null โ€” many G2 reviews don't have a separate title).
  • review_content (string): Main body of the review โ€” concatenated from the "What do you like best" answer if a structured Q&A exists.
  • review_question_answers (object | undefined): Structured Q&A pairs G2 collects from reviewers. Typical keys: "What do you like best about X?", "What do you dislike about X?", "What problems is X solving and how is that benefiting you?".
  • review_rating (number): 1-5 star rating with half-star precision (e.g., 4.5). Note: numeric here, unlike the search row's ratingOutOfFive which is also numeric โ€” review_rating is per-review, not aggregate.
  • reviewer (object): Reviewer profile โ€”
    • reviewer_name (string): "Suraj J." style abbreviated name
    • reviewer_job_title (string): "Junior AI Engineer"
    • business_size (string): "Small-Business(50 or fewer emp.)", "Mid-Market(51-1000 emp.)", "Enterprise(>1000 emp.)"
  • publish_date (string): ISO date the review was published (e.g., "2026-05-04").
  • product_slug / product_name: Join keys back to the product.
  • review_link (string): Direct URL to the individual review on G2.

Product-Specific Fields (type: "product")

  • type (string): Always "product" for this row type.
  • productName (string): Official product name (e.g., "Postman").
  • productSlug (string): URL slug (e.g., "postman").
  • productUrl (string): Canonical product page URL.
  • reviewsUrl / competitorsUrl (string): Convenience cross-links to the other URL types you can scrape for the same product.
  • vendorName / vendorSlug / vendorUrl (string | null): Vendor / seller profile (e.g., "Postman" โ†’ /sellers/postman).
  • description (string): Full marketing description โ€” typically 400-2000 chars. Sourced from [itemprop="description"] then <meta name="description"> as fallback.
  • ratingOutOfFive / ratingOutOfTen (number): Aggregate star rating from [itemprop="ratingValue"].
  • reviewCount (number): Total review count from [itemprop="reviewCount"].
  • pricingTiers (array of strings): Names of pricing tiers G2 displays (e.g., ["Free Plan", "Basic Plan", "Professional Plan"]). Extracted from h3/h4 headings inside the pricing section, filtered to known tier keywords (Plan, Tier, Pro, Enterprise, etc.).
  • featuresText (string | null): Raw text dump of the features section (~2000 chars cap). Caller can split/parse downstream.
  • images (array of strings): G2-CDN image URLs (logo, screenshots). Badges and award icons are filtered out.
  • imageCount (number): Length of images.
  • status (string): "SUCCEEDED" on a successful parse.

Note: categories aren't extracted from the product detail page because G2's nav menu mixes its global category list with the product's own categories. To get a product's categories, scrape its /products/{slug}/reviews URL (type: "review" rows don't carry them, but the search/category endpoints do) or use a /categories/{slug} listing.

Competitor-Specific Fields (type: "competitor")

  • type (string): Always "competitor" for this row type.
  • sourceProductSlug (string): The slug of the product whose competitors were scraped (e.g., "postman"). Lets you trace each row back to its source.
  • competitorRank (number): Rank within the source product's competitors page (1 = top alternative). Numbers are clean 1..N โ€” the source product itself is filtered out before ranking.
  • productName / productSlug / productUrl / reviewsUrl: Standard product identifiers (same shape as in other row types).
  • thumbImageUrl (string | null): Product logo URL. May be null for lazy-loaded placeholders.
  • descriptionSnippet (string): First ~600 chars of the product's marketing description.
  • vendorName (string | null): Company that produces the product (e.g., "Salesforce", "Microsoft").
  • ratingOutOfFive / ratingOutOfTen (number): Aggregate star rating.
  • reviewCount (number): Total review count.
  • entryLevelPrice (string | null): Pricing string when displayed ("$25.00 Per User Per Month", "Free", "Contact Us"), null otherwise.

Category-Specific Fields (type: "category_product")

  • type (string): Always "category_product" for this row type.
  • categorySlug (string): The category slug from the URL (e.g., "crm" or "crm/sales-acceleration").
  • page (number): Which paginated page this product was found on (1-based).
  • position (number): G2-assigned rank position in the category (1 = highest-scoring).
  • listType (string | null): G2's internal list classifier โ€” "sponsored", "featured", etc., or null for standard listings.
  • isSponsored (boolean): true if this listing is paid promotion.
  • productId / productUuid / productName / productSlug / productUrl: Same as in other row types.
  • productCategory / productCategoryId (string / number): Category name and G2's internal category ID.
  • vendorId / vendorSlug / vendorName: Vendor profile.
  • ratingOutOfFive (number): Star rating extracted from the <div class="stars stars-N"> CSS class (N/2 = rating).
  • ratingOutOfTen (number): Same rating normalized to 0-10.
  • reviewCount (number): Total review count for the product.
  • entryLevelPrice (string | null): Pricing string like "Starting at $25.00 Per User Per Month", "$15.00", "Free", "Contact Us", or null if pricing isn't displayed on the card.
  • descriptionSnippet (string): First ~600 chars of the product's marketing description.

Vendor-Specific Fields (type: "vendor")

  • type (string): Always "vendor" for this row type.
  • vendorName (string): Company name (e.g., "Salesforce").
  • vendorSlug (string): URL slug used by G2 (e.g., "salesforce").
  • vendorUrl (string): Canonical vendor page URL.
  • description (string): About / company description, capped at 2000 chars. Falls back to <meta name="description"> if no "About" section is present.
  • companyDetails (object): Sidebar facts pulled from the "Details" panel. Each field can be null if G2 doesn't display it for that vendor.
    • founded (string | null): Year founded (e.g., "1999").
    • hqLocation (string | null): Headquarters location (e.g., "San Francisco, CA").
    • ownership (string | null): Ownership / ticker (e.g., "NYSE:CRM", "Private").
    • totalRevenue (string | null): Total revenue (USD mm), where shown.
    • employees (string | null): LinkedIn employee count, where shown.
    • phone (string | null): Contact phone number, where shown.
  • products (array of objects): The vendor's product portfolio. Merges the "Featured Products" + "All Products & Services" sections, deduped by slug. Each entry:
    • productSlug (string)
    • productName (string)
    • productUrl (string) โ€” links to /products/{slug}/reviews
    • ratingOutOfFive (number) โ€” extracted from the stars-N CSS class (N/2)
    • reviewCount (number) โ€” parsed from the "{N,NNN} reviews" text on the card
    • descriptionSnippet (string) โ€” usually empty on vendor cards; use /products/{slug} for full marketing copy
  • productCount (number): Length of products.
  • totalReviewsAcrossProducts (number): Aggregate review count across all of the vendor's products. Sourced from the page title (Read N Reviews on G2) when present; falls back to summing each product's reviewCount.
  • status (string): "SUCCEEDED" on a successful parse.

Review-Summary-Specific Fields (type: "review_summary")

Emitted once at the start of each /products/{slug}/reviews walk (skipped when filters are supplied).

  • type (string): Always "review_summary".
  • productSlug / productUrl: Identifiers for joining with type: "review" rows.
  • summaryText (string): G2's AI-generated paragraph summarizing the review corpus. Capped at 2000 chars.
  • pros (array of { label, mentions }): Top mentioned positives, sorted by mention count.
  • cons (array of { label, mentions }): Top mentioned negatives, sorted by mention count.
  • aggregateRating (number | null): Average star rating across all reviews (e.g., 4.6).
  • totalReviews (number | null): Total review count from the schema.org markup.

Pricing-Specific Fields (type: "pricing")

  • type (string): Always "pricing".
  • productSlug / productName / productUrl / pricingUrl: Standard product identifiers + link to the pricing tab.
  • tiers (array of objects): One entry per pricing edition G2 displays.
    • tierName (string): e.g., "Free Plan", "Basic Plan", "Enterprise Plan".
    • price (number | null): Numeric price extracted from schema.org <meta itemprop="price">. null for "Contact Us"-style tiers.
    • currency (string | null): ISO currency code (e.g., "USD").
    • rawPrice (string): Human-readable price chunk including billing cadence (e.g., "$14 / 1 per user/month, billed annually").
  • tierCount (number): Length of tiers.
  • priceMin / priceMax (number | null): Min/max numeric price across all tiers โ€” useful for quick range filtering.
  • currency (string | null): Currency for priceMin/priceMax.
  • keyInsights (string): G2's "Pricing Key Insights" paragraph (e.g., "X offers 4 pricing editions, starting from $0 to $49โ€ฆ"). Capped at 2000 chars.
  • faqs (array of { question, answer }): Pricing FAQs G2 displays at the bottom of the page, parsed from the schema.org Question / acceptedAnswer markup.
  • faqCount (number): Length of faqs.

Compare-Specific Fields (type: "compare")

  • type (string): Always "compare".
  • compareUrl (string): Canonical compare URL (G2 may reorder slug segments).
  • combinedSlug (string): Slug section from the URL (e.g., "postman-vs-mulesoft-anypoint-platform").
  • products (array of objects): One entry per product in the comparison.
    • productSlug / productName / productUrl
    • vendorName (string | null)
    • ratingOutOfFive (number) โ€” aggregate G2 rating
    • reviewCount (number)
  • productCount (number): Length of products.
  • ratings (array of objects): One entry per ratings criterion shown on the page.
    • criterion (string): e.g., "Meets Requirements", "Ease of Use", "Ease of Setup", "Quality of Support".
    • perProduct (array): Aligned with the products array. Each entry has:
      • score (number | null): 0โ€“10 score (e.g., 8.8). null if G2 shows "Not enough data".
      • sampleSize (number | null): Number of reviewers contributing to the score.
      • note (string | null): Optional annotation like "won by default" or "Not enough data".
  • ratingsCount (number): Length of ratings.
  • alternativesShown (array of { productSlug, productName, productUrl }): Products G2 surfaces in the sidebar as alternative comparisons.

situationalAwards (on type: "category_product")

Array of strings โ€” G2 Gridยฎ-style quadrant winners for the source category. Possible values:

  • "Leader" โ€” top-right quadrant (high market presence + high satisfaction)
  • "Highest Performer" โ€” top-left quadrant (high satisfaction)
  • "Easiest to Use" โ€” top of the easiest-to-use list
  • "Top Trending" โ€” fastest-growing in the category
  • "Best Free Software" โ€” leader among free-plan offerings

Most products have an empty array; only a handful per category carry awards. Source: G2 marks these via data-event-options analytics payloads ("Situational Best / X: Product Card Clicked").

Use Cases

1. Competitive Vendor Shortlist

Walk a G2 category and rank vendors by review count + rating.

{
"startUrls": [{ "url": "https://www.g2.com/categories/crm" }],
"maxItems": 100
}

2. Customer-Voice Analysis on a Single Product

Pull every review for a product to feed into sentiment/NPS analysis.

{
"startUrls": [{ "url": "https://www.g2.com/products/postman/reviews" }],
"maxReviews": 1000
}

3. Market Research Across Subcategories

Aggregate everyone in a niche category.

{
"startUrls": [
{ "url": "https://www.g2.com/categories/crm/sales-acceleration" },
{ "url": "https://www.g2.com/categories/crm/inside-sales" }
],
"maxItems": 200
}

Track which products show up for specific search terms.

{
"startUrls": [
{ "url": "https://www.g2.com/search?query=enterprise+data+catalog" },
{ "url": "https://www.g2.com/search?query=data+lineage" }
],
"maxItems": 500
}

5. Competitor Discovery for a Specific Product

Pull G2's curated Top 10 alternatives to your product (or your competitor's).

{
"startUrls": [
{ "url": "https://www.g2.com/products/postman/competitors" }
]
}

6. Product Profile Extraction

Pull a single product's full profile (description, pricing, rating, screenshots) โ€” useful as a feed source for product databases.

{
"startUrls": [
{ "url": "https://www.g2.com/products/postman" }
]
}

7. Full Competitor Deep-Dive

Mix all eight URL types โ€” category overview, search peer set, curated competitor list, product profile, vendor portfolio, review feed, pricing tab, and a head-to-head compare โ€” in a single run.

{
"startUrls": [
{ "url": "https://www.g2.com/categories/crm" },
{ "url": "https://www.g2.com/search?query=salesforce+alternative" },
{ "url": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud" },
{ "url": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/competitors" },
{ "url": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/reviews" },
{ "url": "https://www.g2.com/sellers/salesforce" },
{ "url": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/pricing" },
{ "url": "https://www.g2.com/compare/agentforce-sales-formerly-salesforce-sales-cloud-vs-hubspot-sales-hub" }
],
"maxItems": 200,
"maxReviews": 500
}

8. Vendor Portfolio Snapshot

Pull a vendor's full product portfolio in one row โ€” company facts (HQ, ownership, phone) plus rating + review count for every product the vendor sells. Useful for competitive intelligence on multi-product vendors.

{
"startUrls": [
{ "url": "https://www.g2.com/sellers/salesforce" },
{ "url": "https://www.g2.com/sellers/microsoft" },
{ "url": "https://www.g2.com/sellers/atlassian" }
]
}

9. Pricing Intelligence

Pull structured pricing tiers + key insights for a set of competitors. Each row gives you per-tier price, currency, billing cadence, and G2's curated pricing FAQs.

{
"startUrls": [
{ "url": "https://www.g2.com/products/postman/pricing" },
{ "url": "https://www.g2.com/products/mulesoft-anypoint-platform/pricing" },
{ "url": "https://www.g2.com/products/swaggerhub/pricing" }
]
}

10. Head-to-Head Comparisons

Pull G2's per-criterion comparison data (Meets Requirements, Ease of Use, Ease of Setup, Quality of Support, etc.) for product matchups โ€” same data G2 publishes on its /compare/ pages.

{
"startUrls": [
{ "url": "https://www.g2.com/compare/postman-vs-mulesoft-anypoint-platform" },
{ "url": "https://www.g2.com/compare/slack-vs-microsoft-teams" }
]
}

11. Filtered Review Slice

Use G2's native filter syntax to grab just the slice of reviews you need โ€” e.g., enterprise reviewers only, 5-star only, latest first.

{
"startUrls": [
{ "url": "https://www.g2.com/products/postman/reviews?filters[ratings]=5&filters[company_size][]=Enterprise&order=most_recent" }
],
"maxReviews": 200
}

12. G2 Gridยฎ Quadrant Awards by Category

Walk a category to capture which products are G2's "Leader", "Highest Performer", "Easiest to Use", "Top Trending", and "Best Free Software" โ€” the same labels G2 displays on its Gridยฎ reports.

{
"startUrls": [
{ "url": "https://www.g2.com/categories/crm" },
{ "url": "https://www.g2.com/categories/project-management" }
],
"maxItems": 30
}

Filter the output by situationalAwards.length > 0 to surface only the awarded products.

Performance & Limits

  • Rate Limiting: Built-in 8-15s jittered delays between page fetches. Don't set maxConcurrency higher than 3 โ€” G2's DataDome rate-limits per cookie.
  • Pagination depth: Tested cleanly to 100 pages on a single product reviews URL (1,000 reviews) with zero blocks.
  • Memory: Each product row is ~1-3 KB; each review row is ~1-2 KB.
  • Speed:
    • Search / category: ~5-7 products per page, ~10s per page โ†’ ~30-40 products/min
    • Reviews: ~10 reviews per page, ~10s per page โ†’ ~60 reviews/min
  • Proxy Requirement: Residential proxies strongly recommended. Datacenter IPs are blocked on first request.

Error Handling

The scraper includes comprehensive error handling:

  • Multi-Client TLS Race: Three independent HTTP clients (impers/impit/got-scraping) race in parallel โ€” different TLS fingerprints survive different blocks.
  • Session Pool with Rotation: Pre-warmed browser sessions with valid Datadome cookies, automatically rotated round-robin to stay under per-cookie rate limits.
  • Legacy Fallback: If the session pool is empty, falls back to a DataDome-cookie service flow that races the three clients with fresh fingerprints.
  • Exponential Back-off: Failed requests back off exponentially (10s โ†’ 15s โ†’ 22s โ†’ ...) with jitter. Hard short-circuit after 10 consecutive blocks to avoid retry storms.
  • Automatic Retries: Failed requests retry up to maxRequestRetries times.
  • Smart Pagination: Stops automatically when reaching the last page or when no results appear.
  • Graceful Failures: Continues scraping even if individual pages fail.

Troubleshooting

No Results Returned

  • Check the URL opens correctly in a browser โ€” G2 occasionally redirects category slugs.
  • Verify residential proxies are enabled.
  • Lower maxConcurrency to 1 and try again.

Scraper Stops Early on Reviews

  • Check the run's logs for [fetchG2] anti-bot signal patterns. If you see >5 in a row, the session pool is exhausted โ€” the warmer schedule needs to fire to refresh it.
  • Set slowMode: true for tighter rate-limit avoidance.

Missing or Mangled Fields

  • entryLevelPrice is null when G2 doesn't display pricing on the category card.
  • review_title is frequently null โ€” G2's modern review layout doesn't have separate titles.
  • thumbImageUrl is null for products whose images are still lazy-loaded SVG placeholders when the page renders.

Support & Contact

For custom solutions, bulk scraping, or support:

Explore More Scrapers

If you found this Apify Scraper useful, be sure to check out our other powerful scrapers and actors at memo23's Apify profile. We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

  • This scraper is intended for legitimate business and research purposes only.
  • Respect G2.com Terms of Service.
  • Use responsibly and ethically.
  • Do not overload servers with excessive requests.
  • Consider using data for analysis and research within legal boundaries.

FAQ

Q: How many products / reviews can I scrape per run? A: Tested cleanly to 1,000+ reviews per product in a single run. Total run capacity scales with how many fresh sessions the warmer has populated in the pool. Free Apify users have a per-run row cap.

Q: Do I need to provide DataDome cookies? A: No. The actor uses a self-managed session pool that pre-captures cookies via a headless browser warmer, refreshed every 10 minutes. The cookies are completely transparent to you.

Q: Can I mix all five URL types in one run? A: Yes โ€” that's exactly what startUrls supports. Each URL is dispatched to the correct handler based on its path.

Q: How many competitors does each /competitors URL return? A: G2 renders a fixed "Top N" (typically 9-10) per source product. There's no pagination โ€” one run per source product gives you the complete curated list.

Q: Why is review_title always null? A: G2's modern review layout merged the title with the "What do you like best" Q&A answer. The review_question_answers.{"What do you like best about X?"} field carries that content.

Q: How fresh is the data? A: Real-time โ€” every URL is fetched live on each run. No caching.


Built with โค๏ธ by Muhamed Didovic

Last Updated: May 2026