# Google Ads Transparency Competitor Monitor (`jy-labs/google-ads-transparency-competitor-monitor`) Actor

Monitor competitor Google Ads Transparency creatives and detect new or changed ads from public transparency data.

- **URL**: https://apify.com/jy-labs/google-ads-transparency-competitor-monitor.md
- **Developed by:** [Juyeop Park](https://apify.com/jy-labs) (community)
- **Categories:** Marketing, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 google ad creative results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Google Ads Transparency Competitor Monitor

Monitor competitor Google Ads Transparency Center creatives from public transparency data, export stable creative IDs, and detect newly launched, changed, or no-longer-observed ads across scheduled Apify runs.

This Actor is designed as a **schedule-ready competitor intelligence monitor**. It is **not** a complete landing page scraper, not a complete ad copy extractor, and not a replacement for the official Google Ads API.

### What it does

- Searches public Google Ads Transparency Center data by competitor domain, advertiser ID, or both.
- Emits one dataset item per current creative using the stable key `advertiser_id::creative_id`.
- Captures advertiser ID/name/domain, creative ID, first/last seen dates, creative type code, media URL, preview URL, and fetch timestamp.
- Optionally parses public creative preview scripts for best-effort CTA, ad text snippets, and landing URLs.
- Diffs the current run against either an explicit previous dataset/run or a saved `monitorId` baseline.
- Marks creatives as `new`, `existing`, `changed`, or `not_observed` so scheduled users can see what changed since the last run.
- Writes a compact JSON `OUTPUT` summary and human-readable Markdown `REPORT` to the key-value store.

### Good use cases

- Scheduled competitor ad monitoring for ecommerce, SaaS, agencies, or brand teams.
- Detecting new Google/YouTube/Display creative launches from known competitor domains.
- Checking which ads disappeared or changed after each weekly or daily run.
- Exporting stable creative IDs and media/preview URLs for downstream research.
- Building a lightweight ad-change report without Google login, cookies, or private account access.

### Input examples

#### Small single-domain monitor

```json
{
    "domains": ["adidas.com"],
    "region": "KR",
    "maxAdsPerDomain": 10,
    "includePreviewParsing": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
````

#### First baseline run for a scheduled monitor

Run this once to create the baseline. The Actor saves the current dataset under `monitorId`, so later runs can compare automatically.

```json
{
    "domains": ["nike.com"],
    "region": "KR",
    "maxAdsPerDomain": 25,
    "monitorId": "nike-kr-weekly",
    "autoDiff": true,
    "saveMonitorState": true,
    "includePreviewParsing": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Later schedule run with automatic diff

Use the same `monitorId` in your Apify schedule. You do not need to paste `previousDatasetId` or `previousRunId`; when `autoDiff=true`, the Actor loads the last saved dataset and reports newly seen, changed, existing, and no-longer-observed ads.

```json
{
    "domains": ["nike.com"],
    "region": "KR",
    "maxAdsPerDomain": 25,
    "monitorId": "nike-kr-weekly",
    "autoDiff": true,
    "saveMonitorState": true,
    "includePreviewParsing": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Multiple competitors for a scheduled run

```json
{
    "domains": ["nike.com", "samsung.com", "temu.com"],
    "region": "KR",
    "maxAdsPerDomain": 25,
    "monitorId": "kr-competitors-weekly",
    "autoDiff": true,
    "saveMonitorState": true,
    "includePreviewParsing": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Direct advertiser ID

Use this when you already know the Google Ads Transparency Center advertiser ID. Set `domains` to an empty array for a pure advertiser-ID run, so no domain source is mixed into the results.

```json
{
    "domains": [],
    "advertiserIds": ["AR14017378248766259201"],
    "region": "KR",
    "maxAdsPerDomain": 10,
    "monitorId": "adidas-advertiser-kr",
    "autoDiff": true,
    "includePreviewParsing": false
}
```

#### Explicit diff against a previous run or dataset

Use either `previousRunId` or `previousDatasetId` from an earlier run when you want to control the baseline manually. `previousDatasetId` takes highest precedence, then `previousRunId`, then saved `monitorId` state.

```json
{
    "domains": ["adidas.com"],
    "region": "KR",
    "maxAdsPerDomain": 25,
    "previousRunId": "LAST_RUN_ID",
    "monitorId": "adidas-kr-weekly",
    "includePreviewParsing": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

#### Experiment without updating the saved baseline

Set `saveMonitorState=false` when you want a one-off test run that should not become the next baseline for the schedule.

```json
{
    "domains": ["nike.com"],
    "region": "KR",
    "maxAdsPerDomain": 5,
    "monitorId": "nike-kr-weekly",
    "autoDiff": true,
    "saveMonitorState": false,
    "includePreviewParsing": false
}
```

### How scheduled auto-diff works

1. Choose a stable `monitorId`, for example `nike-kr-weekly` or `client-a-saas-us`.
2. First run: no previous dataset is available, so the run is treated as a baseline and `diff_source` is `none`.
3. The run saves a small monitor state record with the current run ID, dataset ID, item count, domains, advertiser IDs, and region. It does not store raw preview scripts or page HTML.
4. Second and later runs with the same `monitorId` and `autoDiff=true` use the saved dataset as the baseline. `diff_source` becomes `saved_monitor_state`.
5. If you provide `previousDatasetId`, it overrides everything. If you provide only `previousRunId`, it overrides saved state.
6. If `saveMonitorState=false`, the current run is not written as the next baseline.

### Output fields

Each dataset item includes:

- `input_domain` / `input_advertiser_id`
- `matched_input_domains` / `matched_input_advertiser_ids`
- `advertiser_id`, `advertiser_name`, `advertiser_domain`
- `creative_id`
- `stable_key` as `advertiser_id::creative_id`
- `first_seen`, `last_seen`
- `region`, `region_code`
- `creative_type_code`
- `media_url`, `preview_url`
- `fetched_at`
- `coverage_status`
- `cta`, `ad_text_snippet`, `landing_url`, `landing_status`
- `change_status` and `changed_fields` when diffing is enabled
- `monitor_id`, `monitor_state_key`, `diff_source`, and `baseline_dataset_id` for scheduled monitor runs

### Diff source guide

- `none`: baseline run; no explicit previous dataset/run and no saved monitor baseline was used.
- `saved_monitor_state`: the Actor used the last saved dataset for the same monitor.
- `explicit_previous_dataset`: you provided `previousDatasetId`; it took precedence.
- `explicit_previous_run`: you provided `previousRunId`; it took precedence over saved state.

### Coverage status guide

- `ok`: core creative metadata was collected.
- `zero_results`: source returned no creatives.
- `partial_preview_parse`: preview parsing found at least some optional CTA/text/landing signal, but coverage is still partial.
- `preview_parse_failed`: preview script was present but could not be parsed/fetched.
- `blocked_or_unparseable`: public RPC response was blocked or not parseable for that source.

### Key-value store artifacts

- `OUTPUT`: JSON summary with source counts, diff totals, monitor state, and limitations.
- `REPORT`: Markdown report for quick human review, including whether the run was a baseline or saved-state diff.

### Pricing note

The intended Store pricing model is pay-per-event per collected creative/ad item. Initial pricing should stay in the low per-creative range (`$0.001–$0.005`) so scheduled monitoring remains affordable. The Actor uses the custom billing event `creative-result` for current creative rows; `not_observed` historical diff rows are not charged as new creative results.

### Limitations

- Uses public Google Ads Transparency Center surfaces; it is not an official Google Ads API replacement.
- Google can change public RPC schemas or throttle unauthenticated access.
- CTA, ad text, and landing URL extraction are best-effort only and not guaranteed for every creative.
- Static image creatives often expose media URLs but not text without OCR; OCR is outside this MVP.
- The Actor parses public preview scripts but does not click or follow ad tracking links.
- It does not provide spend, targeting, conversion, impression, or final redirect metrics.

### Recommended schedule pattern

1. Run once with your competitor domains, region, and a stable `monitorId`.
2. Create an Apify schedule with the same `monitorId`, domains, and region.
3. Leave `autoDiff=true` so each later run compares against the last saved dataset automatically.
4. Review the `REPORT` artifact and dataset `change_status` values after each run.
5. Use `saveMonitorState=false` only for experiments you do not want to become the next baseline.

### Store-facing copy candidates — draft only, not applied

These are draft wording options for a future Store metadata review. They do not change the Store title, pricing, PPE configuration, or public release status.

- Short description candidate: “Schedule Google Ads Transparency Center competitor monitoring and automatically detect new, changed, and no-longer-observed creatives by monitor ID.”
- Use-case headline candidate: “Set a competitor monitor once; get a weekly Google ads change report without manually copying previous run IDs.”
- Buyer-facing bullets:
  - “Track competitor Google/YouTube/Display creative launches from public transparency data.”
  - “Use `monitorId` to turn one-off scraping into repeat scheduled diff reports.”
  - “Get dataset rows plus a Markdown report that explains the baseline, diff source, and next-run behavior.”

# Actor input Schema

## `domains` (type: `array`):

Domains to monitor, such as adidas.com or nike.com. Use bare domains; http/https and paths are normalized away. Leave this empty when you want to query only advertiserIds.

## `advertiserIds` (type: `array`):

Optional Google Ads Transparency Center advertiser IDs such as AR14017378248766259201. These are queried directly and can be combined with domains. For an advertiser-ID-only run, leave domains empty or set domains to \[] in API input.

## `region` (type: `string`):

Country/region filter used by Google Ads Transparency Center.

## `maxAdsPerDomain` (type: `integer`):

Hard cap per input source. The Actor stops paging a domain or advertiser after this many current creatives.

## `includePreviewParsing` (type: `boolean`):

Best-effort parsing of public creative preview scripts for CTA, text snippets, and landing URLs. Coverage is partial and not guaranteed.

## `previousDatasetId` (type: `string`):

Optional dataset ID from a previous monitor run. This is the highest-priority diff baseline and overrides previousRunId and saved monitor state.

## `previousRunId` (type: `string`):

Optional previous Apify run ID. The Actor resolves its default dataset for diffing. Used only when previousDatasetId is empty and overrides saved monitor state.

## `monitorId` (type: `string`):

A stable name for this competitor monitor, such as nike-kr-weekly or client-a-saas-us. Use the same monitorId in a schedule so the Actor remembers the last dataset and automatically compares the next run.

## `autoDiff` (type: `boolean`):

When enabled and no previousDatasetId/previousRunId is provided, the Actor looks up the saved state for this monitorId and compares the current run with the last saved dataset. First runs become the baseline.

## `saveMonitorState` (type: `boolean`):

When enabled, a successful run stores its current dataset ID for the monitorId so the next scheduled run can auto-diff. Disable this for experiments you do not want to become the next baseline.

## `requestDelayMillis` (type: `integer`):

Conservative delay to reduce throttling risk from the public Transparency Center RPC.

## `maxPreviewBytes` (type: `integer`):

Safety cap for preview script parsing. Raw preview script bodies are not stored in the dataset or monitor state.

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

Optional Apify proxy configuration. The default uses Apify Proxy to reduce public endpoint throttling; disable only for small trusted tests.

## Actor input object example

```json
{
  "domains": [
    "adidas.com"
  ],
  "advertiserIds": [
    "AR14017378248766259201"
  ],
  "region": "KR",
  "maxAdsPerDomain": 25,
  "includePreviewParsing": true,
  "previousDatasetId": "",
  "previousRunId": "",
  "monitorId": "",
  "autoDiff": true,
  "saveMonitorState": true,
  "requestDelayMillis": 350,
  "maxPreviewBytes": 250000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Dataset rows with stable creative keys, advertiser metadata, change status, preview links, CTA, landing URL, and coverage fields.

## `summary` (type: `string`):

Compact run summary stored in the default key-value store under the OUTPUT key.

## `report` (type: `string`):

Human-readable monitoring report stored in the default key-value store under the REPORT key.

# 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 = {
    "domains": [
        "adidas.com"
    ],
    "advertiserIds": [
        "AR14017378248766259201"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jy-labs/google-ads-transparency-competitor-monitor").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 = {
    "domains": ["adidas.com"],
    "advertiserIds": ["AR14017378248766259201"],
}

# Run the Actor and wait for it to finish
run = client.actor("jy-labs/google-ads-transparency-competitor-monitor").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 '{
  "domains": [
    "adidas.com"
  ],
  "advertiserIds": [
    "AR14017378248766259201"
  ]
}' |
apify call jy-labs/google-ads-transparency-competitor-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jy-labs/google-ads-transparency-competitor-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Ads Transparency Competitor Monitor",
        "description": "Monitor competitor Google Ads Transparency creatives and detect new or changed ads from public transparency data.",
        "version": "0.1",
        "x-build-id": "9kKF0NiY8wBFxF3sc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jy-labs~google-ads-transparency-competitor-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jy-labs-google-ads-transparency-competitor-monitor",
                "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/jy-labs~google-ads-transparency-competitor-monitor/runs": {
            "post": {
                "operationId": "runs-sync-jy-labs-google-ads-transparency-competitor-monitor",
                "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/jy-labs~google-ads-transparency-competitor-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-jy-labs-google-ads-transparency-competitor-monitor",
                "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",
                "properties": {
                    "domains": {
                        "title": "Competitor domains",
                        "type": "array",
                        "description": "Domains to monitor, such as adidas.com or nike.com. Use bare domains; http/https and paths are normalized away. Leave this empty when you want to query only advertiserIds.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "advertiserIds": {
                        "title": "Advertiser IDs",
                        "type": "array",
                        "description": "Optional Google Ads Transparency Center advertiser IDs such as AR14017378248766259201. These are queried directly and can be combined with domains. For an advertiser-ID-only run, leave domains empty or set domains to [] in API input.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "region": {
                        "title": "Target region",
                        "enum": [
                            "KR",
                            "US",
                            "GB",
                            "CA",
                            "AU",
                            "DE",
                            "FR",
                            "JP"
                        ],
                        "type": "string",
                        "description": "Country/region filter used by Google Ads Transparency Center.",
                        "default": "KR"
                    },
                    "maxAdsPerDomain": {
                        "title": "Max ads per domain / advertiser",
                        "minimum": 0,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Hard cap per input source. The Actor stops paging a domain or advertiser after this many current creatives.",
                        "default": 25
                    },
                    "includePreviewParsing": {
                        "title": "Parse preview scripts",
                        "type": "boolean",
                        "description": "Best-effort parsing of public creative preview scripts for CTA, text snippets, and landing URLs. Coverage is partial and not guaranteed.",
                        "default": true
                    },
                    "previousDatasetId": {
                        "title": "Previous dataset ID",
                        "type": "string",
                        "description": "Optional dataset ID from a previous monitor run. This is the highest-priority diff baseline and overrides previousRunId and saved monitor state.",
                        "default": ""
                    },
                    "previousRunId": {
                        "title": "Previous run ID",
                        "type": "string",
                        "description": "Optional previous Apify run ID. The Actor resolves its default dataset for diffing. Used only when previousDatasetId is empty and overrides saved monitor state.",
                        "default": ""
                    },
                    "monitorId": {
                        "title": "Monitor ID",
                        "type": "string",
                        "description": "A stable name for this competitor monitor, such as nike-kr-weekly or client-a-saas-us. Use the same monitorId in a schedule so the Actor remembers the last dataset and automatically compares the next run.",
                        "default": ""
                    },
                    "autoDiff": {
                        "title": "Automatically compare with last saved run",
                        "type": "boolean",
                        "description": "When enabled and no previousDatasetId/previousRunId is provided, the Actor looks up the saved state for this monitorId and compares the current run with the last saved dataset. First runs become the baseline.",
                        "default": true
                    },
                    "saveMonitorState": {
                        "title": "Save this run as the next baseline",
                        "type": "boolean",
                        "description": "When enabled, a successful run stores its current dataset ID for the monitorId so the next scheduled run can auto-diff. Disable this for experiments you do not want to become the next baseline.",
                        "default": true
                    },
                    "requestDelayMillis": {
                        "title": "Delay between Google requests",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Conservative delay to reduce throttling risk from the public Transparency Center RPC.",
                        "default": 350
                    },
                    "maxPreviewBytes": {
                        "title": "Max preview script bytes",
                        "minimum": 20000,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Safety cap for preview script parsing. Raw preview script bodies are not stored in the dataset or monitor state.",
                        "default": 250000
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy configuration. The default uses Apify Proxy to reduce public endpoint throttling; disable only for small trusted tests.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
