G2 Alternatives Scraper avatar

G2 Alternatives Scraper

Pricing

Pay per event

Go to Apify Store
G2 Alternatives Scraper

G2 Alternatives Scraper

Extract ranked G2 alternatives, direct comparison relationships, shared categories, feature gaps, ratings, review counts, and public pricing links for SaaS battlecards.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Build repeatable SaaS competitor maps from public G2 product data.

G2 Alternatives Scraper resolves products by G2 URL, slug, or name and returns one typed dataset row per alternative relationship. Each row combines ratings, review counts, shared categories, feature overlap, feature gaps, direct comparison evidence, and public pricing-page links for recurring SaaS battlecards.

The Actor distinguishes two kinds of evidence:

  • g2_comparison means the source product exposes a public G2 comparison tag for the pair.
  • category_alternative means the products share public G2 categories and were ranked using documented public product signals.

It never labels an inferred category peer as the order shown on G2's protected alternatives page.

What can you do with G2 alternatives data?

Use the output to:

  • refresh competitor battlecards on a schedule;
  • map alternatives around a product or vendor;
  • find direct comparison relationships published in G2 product metadata;
  • compare public ratings and review volume;
  • identify shared categories and feature keywords;
  • find source-only and alternative-only feature terms;
  • attach G2 product, comparison, and pricing-page links to CRM records;
  • detect changes by comparing datasets from recurring runs.

The default battlecard mode returns direct comparison-tag relationships first, followed by relevant category peers.

Who is this Actor for?

Product marketing teams

Create evidence-backed competitor lists before writing positioning pages, sales enablement material, or launch briefs.

Competitive intelligence analysts

Run the same inputs weekly or monthly and compare datasets to detect new peers, rating changes, review growth, or feature-keyword changes.

SaaS founders and product managers

Explore products that overlap in category and public feature context without manually opening many G2 profiles.

Sales and revenue operations teams

Enrich accounts and battlecards with stable product URLs, vendors, ratings, review counts, and pricing research links.

Data engineers and automation builders

Receive flat, typed relationship rows that work in JSON, CSV, Excel, webhooks, Make, Zapier, n8n, Python, or JavaScript.

How the ranking works

The Actor uses G2's public structured product index rather than the protected www.g2.com alternatives page.

For each source product it:

  1. resolves the exact G2 product;
  2. reads public categories, feature keywords, ratings, review counts, and comparison tags;
  3. retrieves a bounded pool of products sharing G2 category IDs;
  4. places direct G2 comparison-tag relationships first;
  5. scores remaining peers by shared categories, feature overlap, rating, and review volume;
  6. emits the ranking method and relationship evidence in every row.

relevanceScore is the Actor's deterministic score. It is not represented as G2's protected-page rank.

Input

You may provide productUrls, searchQueries, or both.

FieldTypeDefaultDescription
productUrlsarraySlack URL in the Console prefillG2 product URLs or bare product slugs.
searchQueriesstring array[]Product or vendor names to resolve through G2 search.
modestringbattlecardbattlecard, alternatives, or comparisons.
maxItemsinteger20Maximum relationship rows across the run, from 1 to 1,000.
maxAlternativesPerProductinteger10Maximum ranked alternatives for each source product, from 1 to 50.
includeFeatureContextbooleantrueInclude shared and pair-specific public feature keywords.
includePricingLinksbooleantrueInclude public G2 pricing-page links.

At least one non-empty product URL/slug or search query is required.

Relationship modes

battlecard

Returns direct comparison-tag relationships plus ranked category alternatives. Choose this for most competitive-intelligence workflows.

alternatives

Returns the complete ranked peer list, including direct comparisons when present. Choose this when broad coverage matters more than evidence type.

comparisons

Returns only relationships backed by direct public G2 comparison tags. Choose this for a narrower comparison-link inventory.

Some products expose no direct comparison tags. A successful comparisons run can therefore return zero rows and logs that result clearly.

Getting started

  1. Open the Actor in Apify Console.
  2. Paste one or more G2 product URLs, or enter product-name search queries.
  3. Select a relationship mode.
  4. Keep the small default limits for a first run.
  5. Click Start.
  6. Open the G2 alternatives dataset view.
  7. Export JSON, CSV, or Excel, or connect the dataset to your workflow.

A useful first input is:

{
"productUrls": [
{ "url": "https://www.g2.com/products/slack/reviews" }
],
"mode": "battlecard",
"maxItems": 10,
"maxAlternativesPerProduct": 10,
"includeFeatureContext": true,
"includePricingLinks": true
}

Output fields

Each default-dataset row represents one source-to-alternative relationship.

Field groupImportant fieldsMeaning
Source identitysourceProductId, sourceProductName, sourceProductSlug, sourceProductUrlThe product whose alternatives were requested.
Source signalssourceVendorName, sourceRating, sourceReviewCountPublic source-product context.
Alternative identityalternativeProductId, alternativeProductName, alternativeProductSlug, alternativeProductUrlThe candidate alternative.
Alternative signalsalternativeVendorName, alternativeRating, alternativeReviewCount, alternativeDescriptionPublic alternative context.
EvidencerelationshipType, relationshipEvidenceDirect comparison tag or shared-category evidence.
Rankingrank, relevanceScore, rankingMethodPosition and transparent ranking method.
Category contextsharedCategoriesPublic G2 categories shared by the pair.
Feature contextsharedFeatures, sourceOnlyFeatures, alternativeOnlyFeaturesPair-level public feature-keyword overlap and gaps.
Research linkscomparisonUrl, sourcePricingUrl, alternativePricingUrlPublic URLs for follow-up research.
FreshnessscrapedAtISO 8601 extraction timestamp.

Nullable fields remain null when G2 does not expose the corresponding value.

Example output

The following shortened record reflects the current Actor behavior:

{
"sourceProductName": "HubSpot Sales Hub",
"sourceProductSlug": "hubspot-sales-hub",
"sourceRating": 4.4,
"sourceReviewCount": 13283,
"alternativeProductName": "Agentforce Sales (formerly Salesforce Sales Cloud)",
"alternativeProductSlug": "agentforce-sales-formerly-salesforce-sales-cloud",
"alternativeRating": 4.4,
"alternativeReviewCount": 24680,
"relationshipType": "category_alternative",
"relationshipEvidence": "Shared public G2 categories: Conversation Intelligence, Sales Engagement, CRM",
"rank": 1,
"relevanceScore": 138.96,
"sharedCategories": ["Conversation Intelligence", "Sales Engagement", "CRM"],
"sharedFeatures": ["workflow automation", "contact management", "pipeline management"],
"sourcePricingUrl": "https://www.g2.com/products/hubspot-sales-hub/pricing",
"alternativePricingUrl": "https://www.g2.com/products/agentforce-sales-formerly-salesforce-sales-cloud/pricing"
}

Ratings, counts, features, and rankings change as the public source changes.

How much does it cost to extract G2 alternatives?

The Actor uses pay-per-event pricing:

  • one start event per run: $0.005;
  • one alternative event for each useful relationship row saved.

Current per-relationship prices are:

Apify tierPrice per relationship
Free$0.002001
Bronze$0.001740
Silver$0.0013572
Gold$0.001044
Platinum$0.000696
Diamond$0.0004872

At the Bronze rate, a run with 10 relationships costs about $0.0224 including the start event. A 50-row run costs about $0.092. A 100-row run costs about $0.179.

You are charged only for rows pushed to the dataset. Unknown products and relationships filtered out before saving do not create an alternative event.

Build a recurring SaaS battlecard workflow

A practical scheduled workflow is:

  1. select a stable list of source-product URLs;
  2. run in battlecard mode every week;
  3. save the dataset ID and extraction timestamp;
  4. compare the current rows with the previous run by source and alternative slug;
  5. flag new or removed relationships;
  6. flag rating, review-count, category, or feature changes;
  7. send the changes to Slack, email, a CRM, or a warehouse.

The Actor returns current snapshots. It does not maintain historical state or send alerts by itself.

Export and integration options

Use Apify's dataset export to download:

  • JSON for applications and RAG pipelines;
  • CSV or Excel for analysts and product marketers;
  • XML or RSS-compatible transformations for legacy systems;
  • API responses for data warehouses and automation tools.

Use a run-finished webhook when a downstream workflow should begin only after the complete map is available.

Run with the Apify API using cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~g2-alternatives-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQueries": ["HubSpot Sales Hub"],
"mode": "alternatives",
"maxItems": 8,
"maxAlternativesPerProduct": 8
}'

Poll the returned run ID, then fetch items from its defaultDatasetId.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/g2-alternatives-scraper').call({
productUrls: [{ url: 'https://www.g2.com/products/slack/reviews' }],
mode: 'battlecard',
maxItems: 10,
maxAlternativesPerProduct: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/g2-alternatives-scraper").call(run_input={
"productUrls": [{"url": "https://www.g2.com/products/slack/reviews"}],
"mode": "comparisons",
"maxItems": 5,
"maxAlternativesPerProduct": 5,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/g2-alternatives-scraper"

Claude Desktop setup

Add this server object to Claude Desktop's MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/g2-alternatives-scraper"
}
}
}

Cursor setup

Open Cursor Settings → MCP, add a remote server named apify, and use the same URL:

https://mcp.apify.com?tools=automation-lab/g2-alternatives-scraper

VS Code setup

Add an HTTP MCP server named apify in your VS Code MCP configuration with that Actor-specific URL. Authenticate with your Apify account when prompted.

Example prompts:

  • “Find eight G2 alternatives to HubSpot Sales Hub and summarize the largest feature gaps.”
  • “Extract only direct G2 comparison relationships for Slack.”
  • “Build a 15-row battlecard map for Slack, Microsoft Teams, and Zoom Workplace.”

Data quality and interpretation

Treat ratings, review counts, categories, descriptions, and feature keywords as source snapshots.

A direct comparison tag proves that G2 product metadata links the pair. It does not prove that either vendor considers the other its primary competitor.

A category alternative is an evidence-backed candidate, not a claim that G2 displayed that exact pair or order on its protected alternatives page.

Feature arrays reflect public G2 feature keywords. They are not a complete product specification and should be verified before making procurement decisions.

Pricing fields are links to public G2 pricing pages. The Actor does not extract or guarantee price amounts, editions, currencies, discounts, or contract terms.

Limits and failure behavior

  • The Actor supports public G2 software products available in the structured index.
  • Product slugs can change; search by current product name if an old slug stops resolving.
  • comparisons mode may return no rows when a product exposes no direct comparison tags.
  • Search queries resolve the strongest public product match; use an explicit URL when names are ambiguous.
  • A single run returns at most 1,000 rows and at most 50 alternatives per source product.
  • Transient network, HTTP 429, and server errors are retried with bounded backoff.
  • Malformed limits, unsupported modes, missing targets, and completely unresolved input fail the run instead of silently returning success.
  • The Actor does not bypass CAPTCHAs or use residential proxies at runtime.

Troubleshooting

Why did my search resolve the wrong product?

Product names and vendor names can overlap. Replace the query with the exact G2 product URL or bare product slug.

Why did comparisons mode return zero rows?

That mode requires direct public comparison-tag evidence. Switch to battlecard or alternatives to include category peers.

Why is comparisonUrl null?

Only direct g2_comparison rows receive a constructed comparison URL. Category alternatives remain clearly identified as inferred relationships.

Why are the pricing fields URLs rather than amounts?

Structured price amounts are not part of the public product-index route used by this Actor. Links support follow-up research without inventing stale or unavailable values.

Why did a product fail to resolve?

Confirm that the URL contains /products/<slug> and that the product is publicly listed. Try the current product name through searchQueries if G2 renamed the slug.

This Actor collects publicly available product metadata. You are responsible for using the data in accordance with G2's terms, applicable laws, and your organization's policies.

Do not use the output to misrepresent vendors, fabricate endorsements, or make automated high-impact procurement decisions without review. Respect trademarks and attribution. Avoid combining public product data with personal data in ways that create privacy or discrimination risks.

FAQ

Does this scrape G2 reviews?

No. It uses aggregate rating and review-count signals but does not return individual review text.

Does it reproduce G2's protected alternatives-page ranking?

No. It returns direct G2 comparison-tag evidence and a transparent deterministic category-peer ranking. Every row states the method.

Can I process several source products in one run?

Yes. Add multiple URLs and/or search queries. maxItems applies across the complete run.

Can I disable feature arrays?

Yes. Set includeFeatureContext to false for smaller rows.

Can I schedule monitoring?

Yes. Create an Apify Schedule and compare each run's dataset in your downstream system. Historical storage and alerts are not built into this Actor.

Are empty or duplicate rows charged?

No. The Actor charges the alternative event only for unique useful rows pushed to the default dataset.

  • G2 Scraper — use when you need individual G2 reviews, product search, or category browsing rather than relationship rows.
  • G2 Software Categories Scraper — use when your workflow starts from G2's software category taxonomy.

Choose this Actor when the required unit is a source-product-to-alternative relationship for battlecards, comparison maps, or recurring competitive-intelligence automation.