# G2 Software Categories Scraper (`parseforge/g2-software-categories-scraper`) Actor

Scrapes G2 software categories and returns each one as a flat row with its name, URL, and product count. Set maxItems to control how many categories to collect.

- **URL**: https://apify.com/parseforge/g2-software-categories-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 4 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

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

### G2 Software Categories Scraper

**Scrape every software category on G2, from AI to ERP, in one flat dataset.** Each row gives you the category name, its G2 URL, and the number of products listed, so you can map the entire software landscape without touching the API.

G2's category pages are the backbone of software discovery, but there is no public endpoint that lists them all. This Actor walks the G2 category index and returns each category as a clean row, ready for market mapping, content planning, or lead generation. You control how many categories to pull, from a quick sample to the full taxonomy.

| Who uses it | What they scrape G2 for |
|---|---|
| Market researchers | Build a complete map of software niches and their sizes |
| SEO and content teams | Find every G2 category page to target with comparison content |
| Product marketers | Identify which categories your product should be listed in |
| Sales and lead gen teams | Prioritize outreach by the number of products in each category |

### What it does

This Actor collects G2 software categories and returns each one as a flat row with its name, URL, and product count.

- 🗂️ **Full category index:** pull every software category G2 lists, up to a million per run.
- 🔢 **Product counts:** see how many products sit in each category, so you can spot crowded or empty niches.
- 🔗 **Direct URLs:** get the exact G2 category page link for every row, ready for follow-up scraping or sharing.
- ⚙️ **Simple limit control:** set maxItems to grab a quick sample or the entire taxonomy in one go.

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

### What you can do with G2 data

**🗺️ Map the software market.**

A market researcher pulls all G2 categories with product counts to see which niches are crowded and which are underserved.

**📝 Plan SEO content.**

An SEO lead scrapes every G2 category URL to build a content calendar around high-intent comparison pages.

**🎯 Position your product.**

A product marketer checks which categories competitors are listed in and finds the right G2 categories for their own listing.

**📊 Prioritize sales outreach.**

A sales ops manager sorts categories by product count to focus prospecting on the busiest software segments.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key needed** | Reads G2's public category pages directly, no registration or rate-limit headaches |
| **One flat schema** | Every category comes back as the same simple row: name, URL, product count |
| **Export anywhere** | Save results as CSV, JSON, Excel, or XML for your existing workflow |

### How it compares

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

| | G2 Software Categories 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 with a single maxItems setting that caps how many categories are collected, from one to a million. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

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

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |

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 Software Categories Scraper](https://apify.com/parseforge/g2-software-categories-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-software-categories-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 maxItems is set to at least 1. If it is, G2 may have changed its page structure. Try running again later or contact support with the run ID.

**Why did the run stop before reaching my maxItems?**

G2 may have temporarily blocked the requests. Reduce maxItems, add a proxy, or wait and retry. The Actor will return whatever it collected before stopping.

**Why are some product counts missing or zero?**

G2 sometimes hides product counts on certain category pages. If the count is not visible, the Actor returns 0 or leaves the field empty. This is a limitation of the public page, not the scraper.

**Can I get more fields like category description or subcategories?**

This Actor only returns name, URL, and product count. If you need more details, you can use the category URLs as input to another G2 scraper or request a custom actor.

### FAQ

| Question | Answer |
|---|---|
| What exactly does this Actor return? | Each row is one G2 software category with its name, its G2 URL, and the number of products listed in that category. |
| Do I need a G2 account or API key? | No. The Actor reads G2's public category pages directly, so there is no login, API key, or OAuth setup. |
| How many categories can I scrape? | You set maxItems to any number from 1 to 1,000,000. G2 has thousands of categories, so a high limit gets the full taxonomy. |
| Can I filter by category name or product count? | This Actor collects all categories up to your maxItems limit. Filtering by name or count is not built in, but you can do it easily in the exported CSV or JSON. |
| What output formats are supported? | You can export the results as CSV, JSON, Excel, or XML from the Apify dataset. |
| Is this the same as the G2 Reviews Scraper? | No. This Actor scrapes the list of software categories, not individual reviews. If you need reviews for a specific product, use a dedicated G2 reviews scraper. |
| How often should I run this? | G2 adds new categories occasionally. Running it weekly or monthly is enough for most market mapping and SEO use cases. |
| Can I get the product count for each category? | Yes, the product count is included in every row, so you can see how many products are listed in that category at the time of the run. |
| Will this get me blocked by G2? | The Actor uses standard web scraping with reasonable request rates. For very large runs, consider using Apify proxies to avoid IP throttling. |
| Can I schedule this Actor to run automatically? | Yes, you can set up a schedule in Apify to run it daily, weekly, or monthly and get fresh category data automatically. |

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

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

How many categories to collect per run.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

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

Scraped records.

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/g2-software-categories-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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/g2-software-categories-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 '{
  "maxItems": 10
}' |
apify call parseforge/g2-software-categories-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/g2-software-categories-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/1gDWZt2SvLazdkF7v/builds/c2ZyVZ0ByyWwJvrnp/openapi.json
