# Track Google Maps Reviews Changes & Deletions (`scraperpro/google-maps-reviews-tracker`) Actor

Check if Google Maps reviews are removed or edited. Extracts stars, text, original language, owner replies, and deletion status per review URL.

- **URL**: https://apify.com/scraperpro/google-maps-reviews-tracker.md
- **Developed by:** [ScraperPro](https://apify.com/scraperpro) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## 🔍 Google Review Removal Checker, Change Tracker & Extractor

**Did Google delete your client's 5-star review? Find out instantly.**

The only tool on Apify that checks whether a **specific** Google Maps review has been removed, hidden, or is still live — and extracts the full review data in the process.

No headless browsers. No Playwright. No Puppeteer. Just pure HTTP requests that are **10x faster** and **10x cheaper** than any browser-based scraper.

---

### ❓ What Problem Does This Solve?

Google silently removes reviews all the time — sometimes legitimate ones. If you manage Google Business Profiles for clients, you need to know:

- **Was that 5-star review deleted?** Detect when Google's algorithm flags a legitimate review as spam.
- **Did the negative review finally disappear?** After reporting a fake or policy-violating review, confirm it was actually taken down.
- **Did a reviewer change their rating or text?** Compare extracted data between runs to catch when a 1-star review gets updated to 3 stars, or when review text is edited.
- **Are my client's reviews still live?** Run periodic sweeps to catch unexpected deletions before your client notices.

**Unlike every other Google Reviews scraper on Apify**, this Actor doesn't scrape *all* reviews from a business page. Instead, it takes a list of **specific review URLs** and tells you the exact status of each one: `ACTIVE`, `REMOVED`, or `UNKNOWN`.

---

### 🎯 Who Is This For?

#### 🏢 Reputation Management Agencies
You reported a fake 1-star review to Google weeks ago. Did they actually remove it? Stop manually checking — feed your reported review URLs into this Actor and get instant confirmation. Automate it on a schedule and never miss a removal again.

#### 📈 Local SEO Professionals
Google's review filter sometimes removes legitimate reviews during algorithm updates. Monitor your client's most important reviews to catch false-positive deletions early so you can appeal immediately.

#### 🏪 Multi-Location Business Owners
Track reviews across dozens or hundreds of Google Business Profiles. Set up a weekly scheduled run to verify that critical reviews (positive or negative) haven't disappeared overnight.

#### 🕵️ Competitive Intelligence Teams
Monitor a competitor's suspicious 5-star reviews to see if Google's spam detection eventually catches them. Track the lifecycle of reviews that look fake or incentivized.

#### 📊 Review Monitoring SaaS Platforms
Build review status monitoring into your product. Use this Actor's API to power real-time dashboards that alert clients when reviews change status.

#### ⚖️ Legal & Compliance Teams
Need proof that a defamatory review was removed after a takedown request? This Actor provides timestamped verification with full review metadata.

#### 🔄 Review Change Detection
A disgruntled customer updated their 1-star review to 3 stars after you resolved the issue — but did the text change too? Schedule periodic runs and compare the extracted star ratings, review text, and owner replies against your stored data to detect any edits automatically.

---

### ⚡ Why This Actor Over Others?

| Feature | This Actor | Browser-Based Scrapers |
|---|---|---|
| **Speed** | 50-100 reviews/minute | 5-10 reviews/minute |
| **Cost** | Fractions of a cent per run | 10-50x more expensive |
| **Checks specific review URLs** | ✅ Yes | ❌ No (scrape all reviews) |
| **Detects removed reviews** | ✅ `REMOVED` status | ❌ No way to tell |
| **Extracts full review data** | ✅ Stars, text, replies, dates | ⚠️ Varies |
| **Handles server errors safely** | ✅ Returns `UNKNOWN` | ❌ Crashes or gives false results |
| **Auto-retries on CAPTCHA/403** | ✅ Smart proxy rotation | ❌ Manual intervention |
| **Survives Apify restarts** | ✅ Resumes from checkpoint | ❌ Starts over |

---

### 🔗 Supported URL Formats

Paste any of these URL types and the Actor handles everything automatically:

1. **Review Data URLs** — `/maps/reviews/data=...`
   The direct permalink to a specific review on a business profile.

2. **Contributor Profile URLs** — `/maps/contrib/.../place/...`
   The link to a review from a user's public contribution page.

---

### 📊 Output Fields

For every URL you provide, the Actor returns a rich JSON object:

| Field | Type | Description |
|---|---|---|
| `url` | string | The review URL that was checked |
| `status` | string | `"ACTIVE"` = review is live, `"REMOVED"` = deleted/hidden, `"UNKNOWN"` = server error occurred |
| `reviewer_name` | string \| null | The public name of the reviewer |
| `review_stars` | integer \| null | Star rating (1 to 5) |
| `review_text` | string \| null | Full review text (auto-translated to English if needed) |
| `review_text_original` | string \| null | Original text before translation |
| `review_date` | string \| null | Relative date posted (e.g. "3 months ago") |
| `review_language` | string \| null | Detected language code (e.g. "es", "en") |
| `business_name` | string \| null | Name of the Google Business Profile |
| `business_address` | string \| null | Full address of the business |
| `owner_reply` | string \| null | The business owner's response text |
| `owner_reply_date` | string \| null | Relative date of the owner's reply |
| `text_snippet` | string \| null | Human-readable summary of what happened |
| `error` | string \| null | Error details (only if `status` is `"UNKNOWN"`) |
| `timestamp` | string | ISO 8601 timestamp of when the check was performed |

#### Example Output (Active Review)

```json
{
  "url": "https://www.google.com/maps/contrib/114972551601633519894/place/...",
  "status": "ACTIVE",
  "reviewer_name": "John Doe",
  "review_stars": 5,
  "review_text": "This place has amazing coffee and great service!",
  "review_text_original": null,
  "review_date": "3 months ago",
  "review_language": "en",
  "business_name": "Awesome Cafe",
  "business_address": "123 Main St, City, ST 12345, United States",
  "owner_reply": "Thank you for the kind words!",
  "owner_reply_date": "3 months ago",
  "text_snippet": "This place has amazing coffee and great service!",
  "error": null,
  "timestamp": "2024-05-15T14:32:01.123456+00:00"
}
````

#### Example Output (Removed Review)

```json
{
  "url": "https://www.google.com/maps/reviews/data=!4m8!14m7...",
  "status": "REMOVED",
  "reviewer_name": null,
  "review_stars": null,
  "review_text": null,
  "review_text_original": null,
  "review_date": null,
  "review_language": null,
  "business_name": "STG Auto Group of Montclair",
  "business_address": "10477 Central Ave, Montclair, CA 91763, United States",
  "owner_reply": null,
  "owner_reply_date": null,
  "text_snippet": "Review block missing from RPC data. Review removed.",
  "error": null,
  "timestamp": "2024-05-15T14:32:05.789012+00:00"
}
```

***

### 💡 Common Workflows

#### 1. One-Time Bulk Check

Paste hundreds of review URLs into the input and run once to get a full status report. Export the results as CSV, JSON, or Excel.

#### 2. Scheduled Monitoring

Set up an Apify Schedule to run the Actor daily or weekly. Combine with Apify's webhook integrations to get Slack, email, or API notifications when a review status changes from `ACTIVE` to `REMOVED`.

#### 3. API Integration

Call this Actor programmatically via the [Apify API](https://docs.apify.com/api/v2) to integrate review monitoring directly into your existing CRM, dashboard, or SaaS product.

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("scraperpro/google-review-tracker").call(run_input={
    "reviewsToCheck": [
        "https://www.google.com/maps/contrib/114972551601633519894/place/...",
        "https://www.google.com/maps/reviews/data=!4m8!14m7..."
    ]
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if item["status"] == "REMOVED":
        print(f"⚠️ Review removed: {item['url']}")
```

***

### 📈 Performance & Cost

Because this Actor uses pure HTTP requests instead of headless browsers:

- **Speed:** 50-100 reviews per minute (depending on proxy speed and concurrency settings)
- **Cost:** Fractions of a cent per run. A standard $5/month Apify plan can handle tens of thousands of review checks.
- **Memory:** Runs on minimal memory (256MB). No browser overhead.

***

### 🛡️ Reliability & Error Handling

- **403/Rate Limits:** Automatically retries with exponential backoff, then rotates to a fresh proxy IP.
- **500/Server Errors:** Retries up to 3 times, then safely returns `status: "UNKNOWN"` with the error details — never a false `REMOVED`.
- **Apify Restarts/Aborts:** Checkpoints progress to Key-Value Store. Restarted runs resume exactly where they left off without re-checking already processed URLs.

***

### 👨‍💻 Support & Maintenance

This Actor is actively maintained by an expert scraping team. If Google changes their API structures, we patch the Actor within 24-48 hours. For bugs or feature requests, use the **Issues** tab.

***

#### 🔍 Search Keywords

*Google review removal checker, check if Google review was deleted, Google Maps review tracker, monitor Google reviews, track deleted Google reviews, Google review status checker, Google Business Profile review monitor, reputation management tool, fake review detection, detect removed Google reviews, Google review scraper, verify Google review status, Google Maps contributor scraper, review removal verification, local SEO review tracking, Google review API, bulk review status check, review monitoring automation, check Google review still active, Google review disappeared, missing Google reviews, Google review filter detection, appeal removed Google review, review takedown verification, negative review removal tracker, Google review changed stars, detect review text edit, review star rating changed, monitor review updates, Google review edit detection, track review modifications, review content changed, owner reply tracker*

# Actor input Schema

## `reviewsToCheck` (type: `array`):

Paste your Google Maps review URLs here. We support both direct Review URLs (`/maps/reviews/data=...`) and Contrib Profile URLs (`/maps/contrib/...`).

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

Select the proxies to use. Google actively blocks datacenter IPs, so **Apify Residential Proxies** are highly recommended for this Actor.

## `maxConcurrency` (type: `integer`):

How many reviews to check at the exact same time. Higher values are faster but require more stable proxies. (Default: 3)

## `maxProxyRetries` (type: `integer`):

How many times to automatically swap your proxy IP if Google temporarily blocks the request. Set to 5 or higher for maximum reliability.

## Actor input object example

```json
{
  "reviewsToCheck": [
    "https://www.google.com/maps/contrib/114972551601633519894/place/ChIJa5s6R5u3QjQRvF2bS-Vlq58/@39.6953258,-101.4082729,6z/data=!4m6!1m5!8m4!1e1!2s114972551601633519894!3m1!1e1?hl=en-US",
    "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xKT1JXRkdkbXhFTjNWbWVESTFWbEZYUlhvdFJYYxAB!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 3,
  "maxProxyRetries": 5
}
```

# 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 = {
    "reviewsToCheck": [
        "https://www.google.com/maps/contrib/114972551601633519894/place/ChIJa5s6R5u3QjQRvF2bS-Vlq58/@39.6953258,-101.4082729,6z/data=!4m6!1m5!8m4!1e1!2s114972551601633519894!3m1!1e1?hl=en-US",
        "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xKT1JXRkdkbXhFTjNWbWVESTFWbEZYUlhvdFJYYxAB!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperpro/google-maps-reviews-tracker").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 = {
    "reviewsToCheck": [
        "https://www.google.com/maps/contrib/114972551601633519894/place/ChIJa5s6R5u3QjQRvF2bS-Vlq58/@39.6953258,-101.4082729,6z/data=!4m6!1m5!8m4!1e1!2s114972551601633519894!3m1!1e1?hl=en-US",
        "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xKT1JXRkdkbXhFTjNWbWVESTFWbEZYUlhvdFJYYxAB!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scraperpro/google-maps-reviews-tracker").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 '{
  "reviewsToCheck": [
    "https://www.google.com/maps/contrib/114972551601633519894/place/ChIJa5s6R5u3QjQRvF2bS-Vlq58/@39.6953258,-101.4082729,6z/data=!4m6!1m5!8m4!1e1!2s114972551601633519894!3m1!1e1?hl=en-US",
    "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xKT1JXRkdkbXhFTjNWbWVESTFWbEZYUlhvdFJYYxAB!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scraperpro/google-maps-reviews-tracker --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Track Google Maps Reviews Changes & Deletions",
        "description": "Check if Google Maps reviews are removed or edited. Extracts stars, text, original language, owner replies, and deletion status per review URL.",
        "version": "0.0",
        "x-build-id": "MuCvmffixJrghmUge"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperpro~google-maps-reviews-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperpro-google-maps-reviews-tracker",
                "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/scraperpro~google-maps-reviews-tracker/runs": {
            "post": {
                "operationId": "runs-sync-scraperpro-google-maps-reviews-tracker",
                "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/scraperpro~google-maps-reviews-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-scraperpro-google-maps-reviews-tracker",
                "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": [
                    "reviewsToCheck"
                ],
                "properties": {
                    "reviewsToCheck": {
                        "title": "Google Review URLs",
                        "type": "array",
                        "description": "Paste your Google Maps review URLs here. We support both direct Review URLs (`/maps/reviews/data=...`) and Contrib Profile URLs (`/maps/contrib/...`).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select the proxies to use. Google actively blocks datacenter IPs, so **Apify Residential Proxies** are highly recommended for this Actor.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many reviews to check at the exact same time. Higher values are faster but require more stable proxies. (Default: 3)",
                        "default": 3
                    },
                    "maxProxyRetries": {
                        "title": "Max Anti-Bot Retries",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many times to automatically swap your proxy IP if Google temporarily blocks the request. Set to 5 or higher for maximum reliability.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
