# G2 Reviews Scraper (`reviewly/g2-reviews-scraper`) Actor

Scrapes reviews from any G2 product page. Extracts ratings, pros/cons, reviewer profiles, and product metadata.

- **URL**: https://apify.com/reviewly/g2-reviews-scraper.md
- **Developed by:** [Reviewly](https://apify.com/reviewly) (community)
- **Categories:** Automation, Integrations, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 record scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## G2 Reviews Scraper — Export G2 Product Reviews to JSON, CSV & Excel

**Scrape every review from any G2 product page — ratings, pros & cons, reviewer job titles, company size, and dates — and export clean, structured data in minutes. No code, no manual copy-paste, no blocked requests.**

- ⭐ **Full review extraction** — title, star rating, pros, cons, and the reviewer's role & company size
- 🛡️ **Built-in anti-bot handling** — clears G2's bot protection automatically so your runs actually finish
- 📄 **Pagination on autopilot** — walks through every page of reviews, not just the first
- 📤 **Ready-to-use exports** — JSON, CSV, Excel, or API, straight into your stack
- ⚡ **No-code friendly** — paste a product URL, click Start, get data

---

### 📌 What This Actor Does

The **G2 Reviews Scraper** is an [Apify Actor](https://apify.com/actors) that collects customer reviews from [G2.com](https://www.g2.com) — the largest software review marketplace — and turns them into structured, analyzable data.

Instead of manually reading and copying reviews one page at a time, you give the Actor a G2 product URL and it returns every review as clean rows or JSON objects, including the reviewer's job title, company size, star rating, and the full "what they liked / disliked" breakdown.

**Who it's for:**

- **Product & UX teams** researching what users love and hate about competing tools
- **Marketers & sales teams** mining social proof, testimonials, and competitive intel
- **Founders & analysts** doing market research and competitor benchmarking
- **Data teams** building review datasets for dashboards, BI, or AI/LLM analysis

If you need G2 review data at scale without fighting anti-bot walls, this Actor does it for you.

---

### ✨ Key Features

- **Complete review data** — every review with title, rating, pros, cons, "problems solved," and recommendations
- **Rich reviewer context** — name, job title, and company size (Small-Business / Mid-Market / Enterprise) for real segmentation
- **Product-level metadata** — product name, overall rating, and total review count in every record
- **Automatic pagination** — collects reviews across all pages until it runs out or hits your limit
- **Anti-bot protection built in** — handles G2's DataDome defenses with a real browser + residential proxy, so runs don't die on `403` blocks
- **Incremental scraping** — use a target date to pull only reviews newer than your last run
- **Flexible limits** — cap the number of reviews per product to control cost and runtime
- **Clean, typed output** — consistent fields ready for spreadsheets, databases, or APIs

---

### 🧠 Why This Actor Is Different

Most G2 scrapers break the moment G2's bot protection kicks in — you get a handful of reviews, then a wall of `403` errors. This Actor is engineered around that problem:

- **It actually gets past the block.** G2 is protected by DataDome, one of the toughest anti-bot systems. This Actor uses a hardened, fingerprint-resistant browser plus residential proxies to clear the challenge and keep scraping — where naive HTTP scrapers fail instantly.
- **It gets the full story, not just page one.** G2 hides most reviews behind pagination and login. The Actor paginates automatically so you get the complete review history.
- **Structured, analysis-ready data.** Reviewer role and company size are parsed out separately, so you can segment sentiment by audience — not just dump raw text.
- **Transparent and debuggable.** Runs log exactly what's happening, and the Actor rotates IPs automatically on rare blocks instead of silently returning nothing.

---

### ⚙️ Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `startUrls` | Array | ✅ | One or more G2 product URLs. Accepts either the product page (`/products/<name>`) or the reviews page (`/products/<name>/reviews`). |
| `maxReviews` | Integer | ❌ | Maximum reviews to scrape **per product**. `0` = no limit. Use this to control cost and runtime. |
| `targetDate` | String (ISO date) | ❌ | Stop when reviews get older than this date (e.g. `2025-01-01`). Reviews come newest-first, so this collects only recent ones — ideal for incremental runs. |
| `proxyConfiguration` | Object | ✅ (recommended) | Proxy settings. **Residential proxies are strongly recommended** — G2 blocks datacenter IPs. |
| `userCredentials` | String (secret) | ❌ | A logged-in G2 session token that unlocks reviews beyond page 1 (see FAQ). Leave empty to scrape only the first page. |

#### Example input

```json
{
  "startUrls": [
    { "url": "https://www.g2.com/products/hubspot-marketing-hub/reviews" }
  ],
  "maxReviews": 200,
  "targetDate": "2025-01-01",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
````

#### 💡 Tips for best results

- Always enable **Residential** proxies (US) — this is the single biggest factor in success rate.
- Start with a small `maxReviews` (e.g. `50`) on your first run to confirm everything works before scaling up.
- For recurring runs, set `targetDate` to your last run's date to grab only new reviews and save time and credits.

***

### 📤 Output Format

Each product produces **one dataset record** containing the product's metadata and an array of its reviews. Export as **JSON, CSV, Excel, HTML table, or via the API**.

#### Sample output

```json
{
  "name": "HubSpot Marketing Hub",
  "productId": 364,
  "productUuid": "1a370c2e-6499-4095-952d-dbe542694fed",
  "vendorId": 316,
  "rating": 4.4,
  "reviewCount": 14832,
  "productUrl": "https://www.g2.com/products/hubspot-marketing-hub/reviews",
  "reviews": [
    {
      "reviewId": "13060432",
      "reviewerId": "6133869",
      "reviewerName": "Conor B.",
      "reviewerTitle": "Marketing Manager",
      "reviewerCompanySize": "Mid-Market (51-1000 emp.)",
      "reviewerProfileUrl": "https://www.g2.com/users/…",
      "title": "Powerful visibility and easy-to-build automations",
      "date": "2026-07-02",
      "rating": 5,
      "videoReview": false,
      "pros": "I love the visibility we get from HubSpot…",
      "cons": "The pricing scales up quickly as you add hubs…",
      "problemsSolved": "Centralizing our marketing data and automation…",
      "recommendations": "Take the onboarding seriously — it pays off.",
      "sections": {
        "What do you like best about HubSpot Marketing Hub?": "I love the visibility…",
        "What do you dislike about HubSpot Marketing Hub?": "The pricing scales up…"
      }
    }
  ]
}
```

#### Field reference

**Product level**

| Field | Description |
|-------|-------------|
| `name` | Product name |
| `productId` / `productUuid` / `vendorId` | G2 internal identifiers |
| `rating` | Overall average star rating |
| `reviewCount` | Total number of reviews on G2 |
| `productUrl` | Canonical reviews URL |

**Review level (inside `reviews[]`)**

| Field | Description |
|-------|-------------|
| `reviewId` / `reviewerId` | Unique IDs for the review and reviewer |
| `reviewerName` | Reviewer display name (e.g. "Conor B.") |
| `reviewerTitle` | Reviewer's job title |
| `reviewerCompanySize` | Company size segment (Small-Business / Mid-Market / Enterprise) |
| `reviewerProfileUrl` | Link to the reviewer's G2 profile |
| `title` | Review headline |
| `date` | Publication date (ISO `YYYY-MM-DD`) |
| `rating` | Star rating for this review (e.g. `4.5`) |
| `videoReview` | Whether the review includes video |
| `pros` | What the reviewer liked best |
| `cons` | What the reviewer disliked |
| `problemsSolved` | Problems the product solves for them |
| `recommendations` | Advice to others considering the product |
| `sections` | Raw map of every question → answer, including any non-standard questions |

***

### ▶️ How to Use

1. **Open the Actor** in the Apify Console and click **Try for free**.
2. **Paste a G2 product URL** into `startUrls` — for example `https://www.g2.com/products/hubspot-marketing-hub/reviews`.
3. **Set your limits** (optional): a `maxReviews` cap and/or a `targetDate`.
4. **Enable Residential proxy** (recommended) under Proxy configuration.
5. **Click Start.** Watch the live log as it clears G2's protection and collects reviews page by page.
6. **Download your data** from the **Dataset** tab as JSON, CSV, or Excel — or pull it via the [Apify API](https://docs.apify.com/api/v2).

You can also **schedule** the Actor to run daily/weekly and **integrate** the output with Google Sheets, Slack, Zapier, Make, or your own webhook.

***

### 📈 Use Cases

- **Competitor analysis** — pull reviews for competing products and compare what users praise and complain about, segmented by company size.
- **Voice-of-customer research** — feed thousands of pros/cons into an LLM to surface recurring themes, feature requests, and churn risks.
- **Marketing & social proof** — collect high-rated testimonials and quotes to power landing pages, sales decks, and ad copy.
- **Product roadmap input** — track which pain points show up most often and prioritize fixes with real evidence.
- **Market & investment research** — benchmark sentiment and review velocity across an entire software category.

***

### 🛠️ Advanced Tips

- **Proxies matter most.** Residential proxies dramatically outperform datacenter IPs against G2's protection. US residential is the recommended default.
- **Control cost with `maxReviews`.** Popular products can have tens of thousands of reviews. Cap them unless you truly need the full history.
- **Run incrementally.** Combine `targetDate` with a schedule to keep a dataset fresh while only paying for new reviews.
- **Batch multiple products.** Add several URLs to `startUrls` in one run — each becomes its own dataset record.
- **Give it time.** Clearing anti-bot protection takes a bit longer than a naive request; keep the run timeout generous for large jobs.

***

### ❓ FAQ / Troubleshooting

**Why do I only get the first page of reviews?**
G2 requires a logged-in session to view reviews beyond page one. Provide a valid `userCredentials` session token to unlock full pagination. Without it, the Actor still returns the first page.

**Where do I get the `userCredentials` value?**
Log in to G2 in your browser, open DevTools → Application → Cookies → `www.g2.com`, and copy the value of the `user_credentials` cookie. It's a long-lived token; refresh it if it expires.

**A run returned no reviews / lots of blocks. What now?**
Make sure **Residential** proxies are enabled. Blocks are usually IP-related — the Actor automatically rotates IPs, but a residential proxy pool is essential for consistent success.

**Is scraping G2 legal?**
The Actor collects **publicly available** review data. You are responsible for complying with G2's terms and applicable laws (including data-protection rules) in your jurisdiction. Use the data ethically and don't republish personal data unlawfully.

**Which products can I scrape?**
Any public G2 product page. Just paste its URL — both `/products/<name>` and `/products/<name>/reviews` formats work.

**What export formats are supported?**
JSON, CSV, Excel, HTML table, and RSS — plus programmatic access through the Apify API.

**How many reviews can it collect?**
As many as the product has, subject to your `maxReviews` limit and run timeout.

***

### 📞 Support

Questions, feature requests, or a bug to report? I'm happy to help.

- 📧 **Email:** <me@ahmedhrid.com>
- 🐛 **Issues:** Report problems with your run ID and input so they can be reproduced quickly.

If you're getting blocks or missing data, include your proxy settings and a sample URL — that's usually enough to diagnose it fast.

***

*Keywords: G2 reviews scraper, G2.com scraper, web scraping, Apify actor, software reviews data, review scraping API, competitor analysis, voice of customer, B2B software reviews, export G2 reviews to CSV/JSON/Excel.*

# Actor input Schema

## `startUrls` (type: `array`):

G2 product URLs to scrape. Accepts the product page (e.g. https://www.g2.com/products/hubspot-marketing-hub) or the reviews page (e.g. https://www.g2.com/products/lead-onion/reviews).

## `maxReviews` (type: `integer`):

Maximum number of reviews to scrape per product URL. 0 means no limit (up to G2's pagination cap).

## `targetDate` (type: `string`):

Stop scraping reviews older than this date (ISO 8601, e.g. 2025-01-01). Reviews are returned newest-first, so this collects only reviews on or after the date — useful for incremental runs.

## `proxyConfiguration` (type: `object`):

Residential proxy is strongly recommended — DataDome blocks datacenter IPs. The same session is shared between the bypass browser and all fetch requests so the datadome cookie stays bound to one IP.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.g2.com/products/lead-onion/reviews"
    }
  ],
  "maxReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Each record contains product info (name, productId, productUuid, vendorId, rating, reviewCount, productUrl) and a reviews array with reviewId, reviewerId, reviewerName, reviewerTitle, reviewerCompanySize, reviewerProfileUrl, title, date, rating, videoReview, pros, cons, problemsSolved, recommendations, and a sections map of all raw Q\&A.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.g2.com/products/lead-onion/reviews"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("reviewly/g2-reviews-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 = {
    "startUrls": [{ "url": "https://www.g2.com/products/lead-onion/reviews" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.g2.com/products/lead-onion/reviews"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call reviewly/g2-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=reviewly/g2-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "G2 Reviews Scraper",
        "description": "Scrapes reviews from any G2 product page. Extracts ratings, pros/cons, reviewer profiles, and product metadata.",
        "version": "0.0",
        "x-build-id": "3dP3adDtRomvcBu1O"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/reviewly~g2-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-reviewly-g2-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/reviewly~g2-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-reviewly-g2-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/reviewly~g2-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-reviewly-g2-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "G2 product URLs to scrape. Accepts the product page (e.g. https://www.g2.com/products/hubspot-marketing-hub) or the reviews page (e.g. https://www.g2.com/products/lead-onion/reviews).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per product",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of reviews to scrape per product URL. 0 means no limit (up to G2's pagination cap).",
                        "default": 0
                    },
                    "targetDate": {
                        "title": "Target date",
                        "type": "string",
                        "description": "Stop scraping reviews older than this date (ISO 8601, e.g. 2025-01-01). Reviews are returned newest-first, so this collects only reviews on or after the date — useful for incremental runs."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is strongly recommended — DataDome blocks datacenter IPs. The same session is shared between the bypass browser and all fetch requests so the datadome cookie stays bound to one IP."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
