# G2 Products Scraper (`parseforge/g2-scraper`) Actor

Scrapes G2 product listings from category pages, search results, or direct URLs. Returns each product as a flat row with name, vendor, rating, review count, and category.

- **URL**: https://apify.com/parseforge/g2-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.81 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### G2 Products Scraper

**Scrape G2 product listings from any category, search, or URL, up to 100,000 per run.** Every product comes with its name, vendor, rating, review count, and category. No login or API key. Export to CSV, JSON, Excel, or XML.

G2's official API needs a partner agreement, OAuth, and rate-limits you. This reads the public product pages directly, filtered by category, search term, or URL, and returns each match in one fixed schema. It is the fastest way to build a dataset of software products for market analysis, competitive research, or lead generation.

| Who uses it | What they scrape G2 for |
|---|---|
| Market researchers | Which software categories are growing fastest this quarter |
| Sales teams | A list of vendors in a niche with their ratings and review counts |
| Product managers | How competitors position their products and what features they highlight |
| Investors | A snapshot of the competitive landscape in a software segment |

### What it does

This Actor collects G2 product listings by category, search query, or direct URL, and returns each one as a flat row.

- 🔍 **Category and search scraping:** start from any G2 category page or search results URL.
- 📄 **Direct URL scraping:** paste a single product page URL to extract its details.
- ⚙️ **Max items control:** set a hard limit on the number of products returned per run.
- 📦 **Flat row output:** every product is one row, ready for CSV, JSON, Excel, or XML export.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with G2 data

**📊 Build a software market map.**

A market researcher scrapes all products in a category like 'Project Management' and compares vendor counts, average ratings, and review volumes to size the market.

**🎯 Generate a sales lead list.**

A sales team scrapes a search for 'payroll software for small business' and gets a list of vendors with their G2 ratings and review counts to prioritize outreach.

**🧭 Track competitor positioning.**

A product manager scrapes a competitor's product page and the category it appears in to see how it is described and which features reviewers mention.

**📈 Monitor category trends.**

An analyst schedules a weekly scrape of a fast-moving category like 'AI writing assistants' and watches new entrants and rating changes over time.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key** | Scrape public G2 pages without registration or OAuth |
| **One fixed schema** | Every product row has the same fields, so you can merge runs |
| **Export anywhere** | CSV, JSON, Excel, or XML, directly from Apify |
| **Runs on Apify** | Schedule it, monitor it, and scale it with zero infrastructure |

### How it compares

No other Store actor targets G2 the same way, so the honest comparison is with the alternatives teams actually weigh.

| | G2 Products Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When G2 changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from a category page, a search URL, or a direct product URL, and set a maximum number of items to keep runs predictable. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "startUrl": "https://www.g2.com/products"
}
```

A larger pull:

```json
{
 "startUrl": "https://www.g2.com/products",
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.00311 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.31 |
| 1,000 results | $3.11 |
| 10,000 results | $31.10 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [G2 Products Scraper](https://apify.com/parseforge/g2-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to G2 through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/g2-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that the start URL is a valid G2 category, search, or product page. If you used a search URL, make sure the query returns results on G2 itself. Also try increasing the max items value.

**Why did the run stop before reaching my max items?**

The Actor stops when it has scraped all products available on the page or pages it can access. If the category has fewer products than your max items, you will get fewer rows.

**Why are some product fields empty?**

Not every G2 product page shows the same information. Some vendors may not have a rating or review count yet, so those fields will be empty in the output.

**Why did I get a timeout or error?**

G2 may rate-limit aggressive scraping. Try reducing the max items, running during off-peak hours, or adding a delay between requests if you are using a custom version.

### FAQ

| Question | Answer |
|---|---|
| What data does this scraper return for each product? | Each product row includes the product name, vendor name, G2 rating, number of reviews, and the category it belongs to. The exact fields are shown in the sample output below. |
| Can I scrape a specific G2 category? | Yes. Paste the category URL, for example https://www.g2.com/categories/project-management, into the start URL field and the Actor will scrape all products listed there. |
| Can I scrape G2 search results? | Yes. Use a search URL like https://www.g2.com/search?query=payroll and the Actor will return the products that appear in those results. |
| Can I scrape a single product page? | Yes. Paste the direct product URL and the Actor will return that product as one row in the dataset. |
| How many products can I scrape in one run? | You can set the maximum items field to any number. The default is 100, but you can raise it to scrape thousands of products in a single run. |
| Do I need a G2 account or API key? | No. The Actor reads the public G2 website, so no login, API key, or registration is required. |
| Is this legal? | You should only scrape public data that you are allowed to access. Check G2's terms of service and your local laws before scraping at scale. |
| Can I schedule this scraper to run automatically? | Yes. Use Apify's scheduler to run it daily, weekly, or on any cron schedule, and get notified when new data is ready. |
| What formats can I export the data to? | You can export to CSV, JSON, Excel, or XML directly from the Apify dataset, or use the API to pull the data into your own system. |
| Does this scraper get product reviews too? | No, this Actor focuses on product listings. If you need reviews, look for a dedicated G2 reviews scraper on Apify Store. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by G2.com, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrl` (type: `string`):

The URL of the G2 products page to start scraping. Default is the main products listing page.

## `maxItems` (type: `integer`):

Maximum number of products to scrape. Default is 100.

## Actor input object example

```json
{
  "startUrl": "https://www.g2.com/products",
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://www.g2.com/products"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/g2-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrl": "https://www.g2.com/products" }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/g2-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://www.g2.com/products"
}' |
apify call parseforge/g2-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/g2-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/U1W0MEhDIiLuV5c4b/builds/Hc6hc56Hecwiy389H/openapi.json
