# Meta Ad Library - Competitor Ad Scaling Tracker (`xtracto/meta-ad-library-tracker`) Actor

Scrape live competitor ads from the public Meta Ad Library (Facebook & Instagram): ad copy, creative images/videos, landing page URL, start date, and active status. No account or API key required.

- **URL**: https://apify.com/xtracto/meta-ad-library-tracker.md
- **Developed by:** [Xtractoo](https://apify.com/xtracto) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

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

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

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

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

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

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

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

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Meta Ad Scraper — Competitor Ad Scaling Tracker

Extract the live ads any brand is running on **Facebook & Instagram** straight from Meta's
public Ad Library — the ad creative, the copy, when it started, the raw image/video files,
and the landing-page link it sends people to. Built for e-commerce and affiliate marketers
who want to see which competitor creatives are being aggressively scaled, without paying
for a heavyweight ad-spy subscription.

### Why use this actor

- **No account, no login, no API key** — searches the public Ad Library directly.
- **Find competitors by name or keyword** — give it `nike`, `gymshark`, or any brand and it
  returns every matching advertiser's active ads.
- **The creative, not just the headline** — direct `.jpg` / `.mp4` URLs for every image and
  video in the ad, ready to download and review.
- **Knows what's being scaled** — each ad's start date and active status let you spot the
  creatives a brand is doubling down on right now.
- **The full funnel** — primary ad copy plus the call-to-action and its landing-page link.
- **Stable JSON output** suitable for pipelines, spreadsheets, or a database — with
  automatic retries built in.

### How it works

1. You give the actor one or more **search terms** (brand names or keywords) and a country.
2. The actor looks each term up in the Meta Ad Library and pulls the matching ads —
   advertiser, ad copy, start date, media files, and the call-to-action link.
3. It keeps turning the pages for each term until it reaches your `maxAdsPerTerm` limit,
   pausing politely between pages so the search stays reliable.
4. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You don't manage any scrapers, browsers, or sessions — just provide the brands you want to
watch and press **Run**.

### Use Cases

**Competitor creative intelligence**
Track what your top 5 competitors are running right now — the exact copy, visuals, and offer angles — and set a weekly schedule to catch when they launch a new campaign. Use `collationCount` as a scaling signal: a creative with many grouped variants is one they're actively pushing budget behind.

**Winning product & offer discovery (e-commerce / dropshipping)**
Search category keywords (`"posture corrector"`, `"teeth whitening"`, `"minimalist wallet"`) to surface which brands are actively spending on a product right now, what hook they use, and what landing page they send traffic to — without a paid ad-spy subscription.

**Ad creative swipe file**
Build a rolling library of tested creatives by running weekly searches for brands in your niche. Filter on `isActive: true` and `displayFormat: "VIDEO"` to focus on the video ads getting current budget — the richest source of copywriting and creative inspiration.

**Brand launch & campaign monitoring**
Watch a specific brand's new launches by scheduling daily runs on their name. When a new `startDate` appears in the output that wasn't there yesterday, you know they just went live — useful for both competitive intel and affiliate/media buying timing.

**Landing page & funnel research**
Pull `landingPageUrl` for every ad a brand is running to map their full funnel — which offer pages, quiz funnels, or product bundles they're driving paid traffic to. Stack against `ctaType` to understand which call-to-action is paired with which destination.

### Input

```json
{
  "searchTerms": ["nike", "gymshark"],
  "country": "US",
  "activeStatus": "active",
  "adType": "all",
  "mediaType": "all",
  "maxAdsPerTerm": 100,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

| Field | Type | Description |
|---|---|---|
| `searchTerms` | array | **Required.** Brand names or keywords to track, e.g. `["nike", "gymshark"]`. Each term is searched independently. |
| `country` | string | Two-letter country code of the ad market to search (where the ads are shown). Default `US`. Use `ALL` for worldwide. |
| `activeStatus` | string | `active` (currently running — default), `inactive`, or `all`. |
| `adType` | string | Ad category. `all` (default) covers standard commercial ads. Others: `political_and_issue_ads`, `employment_ads`, `housing_ads`, `financial_products_and_services_ads`. |
| `mediaType` | string | Filter by creative format: `all` (default), `image`, `video`, `meme`, `image_and_meme`, `none`. |
| `maxAdsPerTerm` | integer | Stop after this many unique ads per term. Default `100`. |
| `maxConcurrency` | integer | How many terms to process in parallel. Default `2`. Keep low to stay reliable. |
| `pageSize` | integer | Advanced: ads requested per page. Default `30`. |
| `proxyConfiguration` | object | Residential proxy is strongly recommended. Default groups: `["RESIDENTIAL"]`. |

Every string field is **prefilled** — you can open the actor and press **Run** without
typing anything to get a sample of Nike ads in the US.

### Output

Each ad becomes one record. The most useful fields are lifted to the top level for easy
reading, and the **complete raw ad data** from Meta is kept alongside them so nothing is
lost. Long media URLs are shortened below for readability.

**Sample — a video ad (keyword `nike`):**

```json
{
  "_input": "nike",
  "_scrapedAt": "2026-05-29T08:48:20Z",
  "adArchiveId": "1502078871070045",
  "pageName": "Whatnot",
  "pageId": "112727500143177",
  "isActive": true,
  "startDate": "2025-11-14",
  "endDate": "2026-05-29",
  "publisherPlatform": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],
  "displayFormat": "VIDEO",
  "adCopy": "Yup, you can buy new outfits without breaking the bank. Save on fashion ⚡️ Shop on Whatnot!",
  "ctaType": "INSTALL_MOBILE_APP",
  "ctaText": "Install now",
  "landingPageUrl": "http://play.google.com/store/apps/details?id=com.whatnot_mobile",
  "imageUrls": ["https://scontent.fcgk28-1.fna.fbcdn.net/v/t39.35426-6/583053533_....jpg"],
  "videoUrls": ["https://video.fcgk28-1.fna.fbcdn.net/o1/v/t2/f2/m366/AQMOGXdjy7j_....mp4"],
  "collationCount": 2,
  "adLibraryUrl": "https://www.facebook.com/ads/library/?id=1502078871070045"
}
```

**Sample — an image/carousel ad (keyword `gymshark`):**

```json
{
  "_input": "gymshark",
  "_scrapedAt": "2026-05-29T08:48:20Z",
  "adArchiveId": "2352951151882109",
  "pageName": "Gymshark",
  "pageId": "129669023798560",
  "isActive": true,
  "startDate": "2026-04-30",
  "endDate": "2026-05-28",
  "publisherPlatform": ["INSTAGRAM"],
  "displayFormat": "DCO",
  "landingPageUrl": "https://gym.sh/Shop_Gymshark",
  "imageUrls": [
    "https://scontent.fcgk10-1.fna.fbcdn.net/v/t39.35426-6/681237441_....jpg",
    "https://scontent.fcgk10-2.fna.fbcdn.net/v/t39.35426-6/684673644_....jpg"
  ],
  "videoUrls": ["https://video.fcgk10-2.fna.fbcdn.net/o1/v/t2/f2/m366/AQNiDKqerby....mp4", "... 3 more"],
  "collationCount": 3,
  "adLibraryUrl": "https://www.facebook.com/ads/library/?id=2352951151882109"
}
```

| Field | Type | Description |
|---|---|---|
| `adArchiveId` | string | The ad's unique ID in the Meta Ad Library. |
| `pageName` | string | The advertiser's Facebook Page name. |
| `pageId` | string | The advertiser's Page ID. |
| `isActive` | boolean | Whether the ad is currently running. |
| `startDate` | string | Date the ad started running (`YYYY-MM-DD`). |
| `endDate` | string | Date the ad last ran / was last seen (`YYYY-MM-DD`). |
| `publisherPlatform` | array | Where the ad runs, e.g. `["FACEBOOK", "INSTAGRAM"]`. |
| `displayFormat` | string | Creative format, e.g. `VIDEO`, `IMAGE`, `DPA`, `DCO`, `CAROUSEL`. |
| `adCopy` | string | The primary ad text. |
| `title` / `caption` | string | Headline and caption, when present. |
| `ctaType` | string | Call-to-action type, e.g. `SHOP_NOW`, `INSTALL_MOBILE_APP` (may be empty). |
| `ctaText` | string | Button label, e.g. `Install now`. |
| `landingPageUrl` | string | The destination link the ad sends people to. |
| `imageUrls` | array | Direct `.jpg` image URLs in the ad. |
| `videoUrls` | array | Direct `.mp4` video URLs in the ad. |
| `collationCount` | number | How many near-identical variants of this creative are grouped together (a signal of scaling). |
| `adLibraryUrl` | string | Direct link to view this ad in the Meta Ad Library. |
| `snapshot` | object | The complete raw creative block from Meta (cards, byline, page profile, etc.) — kept for full fidelity. |
| *(plus all raw Meta fields)* | — | `spend`, `currency`, `reach_estimate`, `impressions_with_index`, `categories`, `targeted_or_reached_countries`, and more are passed through verbatim. |
| `_input` | string | The search term this record came from. |
| `_scrapedAt` | string | UTC timestamp (ISO 8601) of when the record was collected. |

A search term that cannot be reached returns an error record carrying `_error` and
`_errorDetail` — it is never silently dropped.

#### Notes & limits

- Keyword search returns **all advertisers matching the term**, not only the exact brand —
  e.g. `nike` surfaces Nike, Jordan, and resellers running Nike-related ads. Filter on
  `pageName` downstream if you want a single advertiser.
- Reach, spend, and impressions are only disclosed by Meta for political/issue ads;
  standard commercial ads show these as ranges or `null`.
- Media URLs are time-limited by Meta's CDN — download the creatives you need promptly.
- Residential proxy is strongly recommended; Meta rate-limits datacenter addresses.

### Other actors in this collection

| Actor | What it extracts |
|---|---|
| [Crexi Commercial Real Estate Yield & Off-Market Scraper](https://apify.com/) | Commercial property listings with Cap Rate, NOI, asking price, and broker details. |
| [ThomasNet US B2B Supplier & Manufacturer Scraper](https://apify.com/) | US/North-American manufacturers & suppliers: capabilities, certifications, revenue, employees, location. |
| [Myfxbook Community Outlook / Retail Sentiment Scraper](https://apify.com/) | Retail FX long/short sentiment, positions, and volume by currency pair. |

# Actor input Schema

## `searchTerms` (type: `array`):

Advertiser brand names or keywords to track in the Meta Ad Library, e.g. competitor brands. Each term is searched independently.

## `country` (type: `string`):

Two-letter country code for the ad market to search (where the ads are shown). Use ALL for worldwide.

## `activeStatus` (type: `string`):

Which ads to include by run status.

## `adType` (type: `string`):

Ad Library category. 'all' covers standard commercial ads (the default for competitor tracking).

## `mediaType` (type: `string`):

Filter by creative format.

## `maxAdsPerTerm` (type: `integer`):

Stop collecting for a term after this many unique ads.

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

How many search terms to process in parallel (each gets its own session + proxy IP). Keep low (1-3) to stay under Meta's rate limits.

## `pageSize` (type: `integer`):

Advanced: ads requested per pagination call.

## `browserProfile` (type: `string`):

Advanced: client profile used to fetch pages. Leave as default unless instructed.

## `logLevel` (type: `string`):

Set to DEBUG for verbose per-page tracing.

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

Residential proxy is strongly recommended — Meta rate-limits datacenter IPs aggressively.

## Actor input object example

```json
{
  "searchTerms": [
    "nike",
    "gymshark"
  ],
  "country": "US",
  "activeStatus": "active",
  "adType": "all",
  "mediaType": "all",
  "maxAdsPerTerm": 100,
  "maxConcurrency": 2,
  "pageSize": 30,
  "browserProfile": "chrome131",
  "logLevel": "INFO",
  "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 = {
    "searchTerms": [
        "nike"
    ],
    "country": "US",
    "activeStatus": "active",
    "adType": "all",
    "mediaType": "all",
    "maxAdsPerTerm": 100,
    "maxConcurrency": 2,
    "pageSize": 30,
    "browserProfile": "chrome131",
    "logLevel": "INFO",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("xtracto/meta-ad-library-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 = {
    "searchTerms": ["nike"],
    "country": "US",
    "activeStatus": "active",
    "adType": "all",
    "mediaType": "all",
    "maxAdsPerTerm": 100,
    "maxConcurrency": 2,
    "pageSize": 30,
    "browserProfile": "chrome131",
    "logLevel": "INFO",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("xtracto/meta-ad-library-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 '{
  "searchTerms": [
    "nike"
  ],
  "country": "US",
  "activeStatus": "active",
  "adType": "all",
  "mediaType": "all",
  "maxAdsPerTerm": 100,
  "maxConcurrency": 2,
  "pageSize": 30,
  "browserProfile": "chrome131",
  "logLevel": "INFO",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call xtracto/meta-ad-library-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=xtracto/meta-ad-library-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Meta Ad Library - Competitor Ad Scaling Tracker",
        "description": "Scrape live competitor ads from the public Meta Ad Library (Facebook & Instagram): ad copy, creative images/videos, landing page URL, start date, and active status. No account or API key required.",
        "version": "0.1",
        "x-build-id": "GFKAMjGwivBk7bf0F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/xtracto~meta-ad-library-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-xtracto-meta-ad-library-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/xtracto~meta-ad-library-tracker/runs": {
            "post": {
                "operationId": "runs-sync-xtracto-meta-ad-library-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/xtracto~meta-ad-library-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-xtracto-meta-ad-library-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": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms (brands / keywords)",
                        "type": "array",
                        "description": "Advertiser brand names or keywords to track in the Meta Ad Library, e.g. competitor brands. Each term is searched independently.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Two-letter country code for the ad market to search (where the ads are shown). Use ALL for worldwide.",
                        "default": "US"
                    },
                    "activeStatus": {
                        "title": "Ad status",
                        "enum": [
                            "active",
                            "inactive",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which ads to include by run status.",
                        "default": "active"
                    },
                    "adType": {
                        "title": "Ad category",
                        "enum": [
                            "all",
                            "political_and_issue_ads",
                            "employment_ads",
                            "housing_ads",
                            "financial_products_and_services_ads"
                        ],
                        "type": "string",
                        "description": "Ad Library category. 'all' covers standard commercial ads (the default for competitor tracking).",
                        "default": "all"
                    },
                    "mediaType": {
                        "title": "Media type",
                        "enum": [
                            "all",
                            "image",
                            "meme",
                            "image_and_meme",
                            "video",
                            "none"
                        ],
                        "type": "string",
                        "description": "Filter by creative format.",
                        "default": "all"
                    },
                    "maxAdsPerTerm": {
                        "title": "Max ads per term",
                        "minimum": 1,
                        "maximum": 12000,
                        "type": "integer",
                        "description": "Stop collecting for a term after this many unique ads.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent terms",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "How many search terms to process in parallel (each gets its own session + proxy IP). Keep low (1-3) to stay under Meta's rate limits.",
                        "default": 2
                    },
                    "pageSize": {
                        "title": "Ads per page request",
                        "minimum": 5,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Advanced: ads requested per pagination call.",
                        "default": 30
                    },
                    "browserProfile": {
                        "title": "Browser profile",
                        "type": "string",
                        "description": "Advanced: client profile used to fetch pages. Leave as default unless instructed.",
                        "default": "chrome131"
                    },
                    "logLevel": {
                        "title": "Log level",
                        "enum": [
                            "INFO",
                            "DEBUG"
                        ],
                        "type": "string",
                        "description": "Set to DEBUG for verbose per-page tracing.",
                        "default": "INFO"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is strongly recommended — Meta rate-limits datacenter IPs aggressively.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
