# AI Review Intelligence — 6-Platform Scraper + VoC Reports (`sunny_spade/review-intelligence-engine`) Actor

Unified multi-platform review scraping with AI-powered Voice-of-Customer synthesis. Pulls reviews from up to 6 platforms, normalizes them into one schema, then uses Gemini to extract themes, sentiment trends, churn signals, and competitive mentions.

- **URL**: https://apify.com/sunny\_spade/review-intelligence-engine.md
- **Developed by:** [NoCanDo](https://apify.com/sunny_spade) (community)
- **Categories:** AI, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## 🧠 AI Review Intelligence Engine

**Pull every review from Google Maps, Yelp, Tripadvisor, Trustpilot, G2, and Capterra into one unified dataset — then get an AI-generated Voice-of-Customer report you can hand to a CEO.**

Built for: brand managers • M&A diligence teams • marketing agencies • SaaS founders • investors • competitive intelligence analysts.

---

### What this Actor does that no other Actor does

| Single-platform scrapers | This Actor |
|---|---|
| One platform, raw reviews | Up to **6 platforms in one run**, normalized to one schema |
| You build the analysis yourself | **AI Voice-of-Customer report** included (themes, churn signals, recommendations) |
| No competitor tracking | Specify competitor names → automatic mention detection |
| Static rating | **Sentiment trajectory** — comparing last 90 days vs. prior 9 months |
| All reviewers treated the same | **Reviewer-type segmentation** (first-timer vs. verified vs. repeat) |
| No churn detection | **"Won't return," "switching to," "canceled"** signals flagged |

### Inputs

| Field | Required | Default | What it does |
|---|---|---|---|
| `businessName` | ✅ | — | "Acme Dental Clinic" or "HubSpot CRM" |
| `platforms` | ✅ | `[google_maps, trustpilot]` | Which review sources to hit |
| `businessUrl` | optional | — | Helps disambiguate when multiple businesses share a name |
| `location` | optional | — | E.g. "San Francisco, CA" — for local businesses |
| `directPlatformUrls` | optional | — | Skip search; jump straight to known listing URLs |
| `maxReviewsPerPlatform` | optional | 500 | Cap per platform |
| `monthsLookback` | optional | 12 | Only fetch reviews newer than N months |
| `generateAiReport` | optional | true | Toggle the AI synthesis step |
| `geminiApiKey` | conditional | — | Required if `generateAiReport=true`. **Free** at [ai.google.dev](https://ai.google.dev) |
| `competitorMentions` | optional | `[]` | List of competitor names to flag in reviews |
| `language` | optional | `en` | ISO 639-1 code, or `all` |

### Output

Each review is pushed to the **dataset** with this schema:

```json
{
  "platform": "google_maps",
  "review_id": "ChdDSUhNMG9nS0VJQ0FnSURneTlY...",
  "business_name": "Acme Dental",
  "rating": 5.0,
  "max_rating": 5.0,
  "text": "Great experience. Dr. Smith is...",
  "title": null,
  "language": "en",
  "reviewer_name": "Jane D.",
  "reviewer_type": "repeat",
  "review_date": "2026-03-15T00:00:00+00:00",
  "owner_response": "Thank you Jane!",
  "owner_response_date": "2026-03-16T00:00:00+00:00",
  "sentiment": null,
  "competitor_mentions": [],
  "churn_signal": false,
  "url": "https://www.google.com/maps/place/..."
}
````

The **Voice-of-Customer report** is saved to the key-value store under two keys:

- `SUMMARY` — JSON summary of the run
- `VOC_REPORT` — Markdown executive report (preview-ready)

### Pricing — Pay-per-event

You pay only for what the Actor actually delivers.

| Event | Price | When charged |
|---|---|---|
| `actor-start` | **$0.01** | Once per run |
| `review-scraped` | **$0.003** | Each review extracted & normalized |
| `platform-completed` | **$0.05** | Each platform that returns ≥1 review |
| `ai-analysis-generated` | **$0.50** | When the VoC report is produced |

**Worked example.** Run on a hotel across Google Maps + Tripadvisor + Trustpilot, retrieving 600 reviews total, with the AI report:

- Start: `$0.01`
- Reviews: `600 × $0.003 = $1.80`
- Platforms: `3 × $0.05 = $0.15`
- AI report: `$0.50`
- **Total: ~$2.46**

You set a hard spending cap per run in the Apify Console — the Actor stops gracefully when it hits it.

### Why use this over the cheaper single-platform scrapers?

A single platform tells you part of the story. **All six together tell you what's actually happening:**

- A SaaS with great Trustpilot reviews but declining G2 ratings is losing power users — that signal only appears when you compare both.
- A restaurant with 4.5★ on Google Maps but 3.2★ on Yelp has a verified-buyer-vs-tourist problem — useful for hospitality investors doing due diligence.
- A B2B brand whose reviews mention a competitor 3× more often this quarter than last quarter is losing a category positioning battle — competitor mention tracking surfaces this.

### Common use cases

- **Brand monitoring** — daily scheduled run, alert on churn-signal spikes
- **M\&A diligence** — pull all reviews of an acquisition target across platforms in one click
- **Competitive intel** — run on a competitor with `competitorMentions: ["yourBrand"]`
- **Voice-of-Customer for marketing** — feed top complaint themes into ad-copy decisions
- **Investor deal screening** — quick health score on a portfolio company

### Recommended for AI agents (MCP)

This Actor returns clean structured JSON; it works well as a tool inside Claude, Cursor, or any MCP client. Connect via the Apify MCP server and ask: *"Give me a Voice-of-Customer report on Acme Dental across Google Maps and Trustpilot."*

### Tips for best results

1. **Use direct URLs when you know them.** Most accurate disambiguation.
2. **Add `location` for local businesses.** Especially helpful for chains.
3. **Start with `maxReviewsPerPlatform: 100`** when testing, then scale up.
4. **For SaaS, use G2 + Capterra together.** Same product, different audiences.
5. **Set `monthsLookback: 6`** for recency-sensitive analysis. The AI report's sentiment trajectory works best with a focused window.

### Roadmap

- Apple App Store + Google Play scraper modules
- Trust signals: detect suspicious review velocity (potential review fraud)
- Multi-language AI synthesis (currently English-only)
- Webhook delivery on completion
- Side-by-side comparison mode (analyze 2+ businesses simultaneously)

### Issues, requests, custom builds

Open an issue on the Actor's Issues tab and we'll respond within 24 hours.

# Actor input Schema

## `businessName` (type: `string`):

The business or product to analyze. Be specific — 'Acme Dental' is better than 'Acme'. For SaaS products, use the product name (e.g., 'HubSpot CRM').

## `platforms` (type: `array`):

Which platforms to pull reviews from. Each platform you check costs $0.05 when reviews are successfully retrieved. Use only the ones relevant to your business type.

## `businessUrl` (type: `string`):

If two businesses share a name, providing the website helps the Actor pick the right one. Skip this if you already give a direct platform URL below.

## `location` (type: `string`):

City and country/state, used to disambiguate Google Maps and Yelp matches. Ignored for SaaS platforms (G2, Capterra).

## `directPlatformUrls` (type: `object`):

If you already know the exact URL of the business listing on a platform, paste it here to skip the search step. Keys must match the platform names you selected above.

## `maxReviewsPerPlatform` (type: `integer`):

Caps the per-platform scrape. 500 is enough for solid AI analysis on most businesses. Set lower for cost-sensitive runs.

## `monthsLookback` (type: `integer`):

Only fetch reviews from the last N months. Reduces cost and focuses on relevant signals. Set to 0 for all-time.

## `generateAiReport` (type: `boolean`):

Adds an executive-summary report with themes, sentiment trajectory, churn signals, and recommendations. Charged at $0.50 per report.

## `geminiApiKey` (type: `string`):

Required if 'Generate AI Report' is enabled. Free tier (1500 requests/day) is sufficient for ~50 reports per day. We never store this — it's used only during the run.

## `competitorMentions` (type: `array`):

Reviewers often mention competitors ('we switched from X', 'better than Y'). Add competitor names here and we'll flag those reviews and count mentions.

## `language` (type: `string`):

ISO 639-1 code. 'en' fetches English reviews only. Use 'all' to keep every language.

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

We strongly recommend Apify Proxy with residential IPs for Google Maps, Yelp, and Tripadvisor — these have aggressive anti-bot. The default is good for most cases.

## Actor input object example

```json
{
  "businessName": "Acme Dental Clinic",
  "platforms": [
    "trustpilot"
  ],
  "businessUrl": "https://acmedental.com",
  "location": "San Francisco, CA, USA",
  "directPlatformUrls": {
    "google_maps": "https://www.google.com/maps/place/...",
    "trustpilot": "https://www.trustpilot.com/review/example.com"
  },
  "maxReviewsPerPlatform": 30,
  "monthsLookback": 6,
  "generateAiReport": false,
  "competitorMentions": [],
  "language": "en",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "businessName": "Blue Bottle Coffee",
    "businessUrl": "https://bluebottlecoffee.com",
    "location": "San Francisco, CA, USA"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sunny_spade/review-intelligence-engine").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 = {
    "businessName": "Blue Bottle Coffee",
    "businessUrl": "https://bluebottlecoffee.com",
    "location": "San Francisco, CA, USA",
}

# Run the Actor and wait for it to finish
run = client.actor("sunny_spade/review-intelligence-engine").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 '{
  "businessName": "Blue Bottle Coffee",
  "businessUrl": "https://bluebottlecoffee.com",
  "location": "San Francisco, CA, USA"
}' |
apify call sunny_spade/review-intelligence-engine --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sunny_spade/review-intelligence-engine",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AI Review Intelligence — 6-Platform Scraper + VoC Reports",
        "description": "Unified multi-platform review scraping with AI-powered Voice-of-Customer synthesis. Pulls reviews from up to 6 platforms, normalizes them into one schema, then uses Gemini to extract themes, sentiment trends, churn signals, and competitive mentions.",
        "version": "0.1",
        "x-build-id": "1lGJK7Ok3HnbPNrSA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sunny_spade~review-intelligence-engine/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sunny_spade-review-intelligence-engine",
                "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/sunny_spade~review-intelligence-engine/runs": {
            "post": {
                "operationId": "runs-sync-sunny_spade-review-intelligence-engine",
                "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/sunny_spade~review-intelligence-engine/run-sync": {
            "post": {
                "operationId": "run-sync-sunny_spade-review-intelligence-engine",
                "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": [
                    "businessName",
                    "platforms"
                ],
                "properties": {
                    "businessName": {
                        "title": "Business or Product Name",
                        "type": "string",
                        "description": "The business or product to analyze. Be specific — 'Acme Dental' is better than 'Acme'. For SaaS products, use the product name (e.g., 'HubSpot CRM')."
                    },
                    "platforms": {
                        "title": "Platforms to Scrape",
                        "minItems": 1,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Which platforms to pull reviews from. Each platform you check costs $0.05 when reviews are successfully retrieved. Use only the ones relevant to your business type.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "google_maps",
                                "yelp",
                                "tripadvisor",
                                "trustpilot",
                                "g2",
                                "capterra"
                            ],
                            "enumTitles": [
                                "Google Maps (local businesses)",
                                "Yelp (US local businesses, restaurants)",
                                "Tripadvisor (hotels, restaurants, attractions)",
                                "Trustpilot (e-commerce, online services)",
                                "G2 (B2B SaaS)",
                                "Capterra (B2B SaaS)"
                            ]
                        },
                        "default": [
                            "trustpilot"
                        ]
                    },
                    "businessUrl": {
                        "title": "Business Website URL (optional, helps disambiguation)",
                        "type": "string",
                        "description": "If two businesses share a name, providing the website helps the Actor pick the right one. Skip this if you already give a direct platform URL below."
                    },
                    "location": {
                        "title": "Business Location (optional, for local businesses)",
                        "type": "string",
                        "description": "City and country/state, used to disambiguate Google Maps and Yelp matches. Ignored for SaaS platforms (G2, Capterra)."
                    },
                    "directPlatformUrls": {
                        "title": "Direct Platform URLs (advanced, optional)",
                        "type": "object",
                        "description": "If you already know the exact URL of the business listing on a platform, paste it here to skip the search step. Keys must match the platform names you selected above."
                    },
                    "maxReviewsPerPlatform": {
                        "title": "Maximum Reviews per Platform",
                        "minimum": 10,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Caps the per-platform scrape. 500 is enough for solid AI analysis on most businesses. Set lower for cost-sensitive runs.",
                        "default": 30
                    },
                    "monthsLookback": {
                        "title": "Months of History to Fetch",
                        "minimum": 0,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Only fetch reviews from the last N months. Reduces cost and focuses on relevant signals. Set to 0 for all-time.",
                        "default": 6
                    },
                    "generateAiReport": {
                        "title": "Generate AI Voice-of-Customer Report",
                        "type": "boolean",
                        "description": "Adds an executive-summary report with themes, sentiment trajectory, churn signals, and recommendations. Charged at $0.50 per report.",
                        "default": false
                    },
                    "geminiApiKey": {
                        "title": "Gemini API Key (free, get one at ai.google.dev)",
                        "type": "string",
                        "description": "Required if 'Generate AI Report' is enabled. Free tier (1500 requests/day) is sufficient for ~50 reports per day. We never store this — it's used only during the run."
                    },
                    "competitorMentions": {
                        "title": "Competitor Names to Track",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Reviewers often mention competitors ('we switched from X', 'better than Y'). Add competitor names here and we'll flag those reviews and count mentions.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "Review Language Filter",
                        "type": "string",
                        "description": "ISO 639-1 code. 'en' fetches English reviews only. Use 'all' to keep every language.",
                        "default": "en"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "We strongly recommend Apify Proxy with residential IPs for Google Maps, Yelp, and Tripadvisor — these have aggressive anti-bot. The default is good for most cases.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
