# YouTube Outlier Finder — Viral Videos on Small Channels (`datascoutlab/youtube-outlier-finder`) Actor

Spot YouTube videos going viral on small channels — the earliest signal a topic is taking off. Get a ranked list of breakouts with outlier score, channel size & baseline views. Perfect for content ideas, niche research & trend discovery. No API key. Creators pay $30+/mo for tools like this.

- **URL**: https://apify.com/datascoutlab/youtube-outlier-finder.md
- **Developed by:** [Anton DataScout](https://apify.com/datascoutlab) (community)
- **Categories:** AI, Social media, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.60 / 1,000 outlier videos

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 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/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

## YouTube Outlier Finder

Find breakout YouTube videos on small channels — videos massively outperforming their own channel's baseline, the earliest public signal that the algorithm is pushing a topic.

An **outlier** is a video on a small channel doing 5x, 20x, even 100x the channel's typical views. That gap isn't the channel's own audience showing up — it's the **YouTube algorithm testing a topic on cold viewers** it has never served the channel before. Spot those breakouts and you see which formats and niches are heating up *before* they get crowded.

Most tools dump 1,000 raw search rows and leave the analysis to you. This actor does the opposite: it applies a three-gate filter, scores every survivor, and returns a **ranked shortlist of confirmed breakouts** — insight, not a data dump. No API key, no Google Cloud project, no quota. SaaS research tools like VidIQ and 1of10 sell this exact signal for $30–50/month; here you pay per scan.

| You give it | You get back |
| --- | --- |
| Search queries (topics/niches) | A ranked list of breakout videos |
| An upload window (week / month / year) | Each scored: views ÷ channel baseline |
| View, score, and subscriber gates | Only videos that clear every gate |
| A results cap | Sorted by outlier score, highest first |

### What does the YouTube Outlier Finder do?

It runs each of your search queries against YouTube's own Innertube API, collects fresh videos in your chosen upload window, then does the analysis a human researcher would do by hand:

1. **Collects candidates** across every query and deduplicates them, keeping only videos above your absolute view floor.
2. **Fetches each unique channel once** to read its subscriber count and the view counts of its recent uploads.
3. **Computes a baseline** — the median views of the channel's recent uploads, excluding the candidate video itself so its own virality can't inflate the number it's judged against.
4. **Gates and scores** — drops channels above your subscriber cap, computes `outlierScore = views ÷ baseline`, and discards anything below your minimum score.
5. **Ranks and returns** the top breakouts, sorted by score descending.

The result is a confirmed shortlist: every row is a small-channel video that demonstrably beat its own track record by the multiple you asked for.

### Who is it for?

| Audience | What they pull from it |
| --- | --- |
| **YouTubers & creators** | Proven formats and hooks the algorithm is rewarding in their niche right now |
| **Content agencies** | Weekly breakout reports across a roster of client niches, ready for a deck |
| **Niche researchers** | Evidence that small channels in a niche *can* break out at all — before betting on it |
| **Trend scouts** | An early map of where attention is moving across several topics at once |
| **AI content pipelines** | Clean, ranked rows to feed an agent that drafts ideas, titles, or scripts from winners |

### Why use this tool?

- **Insight, not raw dumps.** Search scrapers hand you thousands of rows to sift. This actor returns a ranked shortlist of breakouts with the scoring already done.
- **Three-gate filter, minimal noise.** Absolute view floor + outlier multiple + channel-size cap. A video has to clear all three to show up.
- **No API key, no quota.** Runs on YouTube's public Innertube API — no Google Cloud setup, no YouTube Data API key, no daily quota ceiling.
- **Baseline that can't be gamed.** The channel baseline excludes the candidate video and uses the median (not the average), so one past viral hit can't hide today's breakout.
- **Built by a practitioner.** The gates and defaults come from running this exact detection pipeline for real channel research, not from guesswork.

### What data do you get?

Each dataset row is one confirmed outlier:

```json
{
  "outlierScore": 6.4,
  "videoId": "dQw4w9WgXcQ",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "title": "The Hidden Cost of Letting AI Write Your Code",
  "views": 14064,
  "published": "4 days ago",
  "length": "11:48",
  "channelName": "Uma Abu",
  "channelUrl": "https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw",
  "channelSubs": 26000,
  "channelBaselineViews": 2200,
  "channelRecentUploads": 15,
  "matchedQuery": "ai tools"
}
````

| Field | Meaning |
| --- | --- |
| `outlierScore` | **Views ÷ channel baseline.** `6.4` means the video did 6.4x what this channel typically does |
| `videoId` | YouTube video ID |
| `url` | Direct watch URL |
| `title` | Video title |
| `views` | View count at scan time |
| `published` | Relative upload time, e.g. `4 days ago` |
| `length` | Video duration, e.g. `11:48` |
| `channelName` | Channel name |
| `channelUrl` | Direct channel URL |
| `channelSubs` | Channel subscriber count (`null` if hidden) |
| `channelBaselineViews` | Median views of the channel's recent uploads — the number the score is measured against |
| `channelRecentUploads` | How many recent uploads went into the baseline |
| `matchedQuery` | Which of your search queries surfaced this video |

### How to find viral YouTube videos on small channels

Set `maxSubscribers` to keep only small channels (default 100,000), pick a fresh `uploadWindow` like `week` or `month`, and raise `minOutlierScore` to demand a bigger over-performance multiple. The actor filters out big-brand channels — where views come from an existing audience, not the topic — and surfaces small channels whose latest upload suddenly outran everything they've posted. That spike is the algorithm distributing the video beyond the channel's subscribers, which is exactly the "viral on a small channel" pattern.

### How to find YouTube content ideas

Point `queries` at the topics you cover and read the returned titles, formats, and lengths. Because every row already beat its own channel's baseline by your chosen multiple, you're looking at hooks and angles the algorithm is actively rewarding — not just popular videos from channels that are popular anyway. Sort by `outlierScore`, open the top results, and reverse-engineer what made them break out. Feed the rows to an AI agent (see the MCP section) to generate title and script variations from proven winners.

### How to discover trending YouTube topics early

Run several `queries` across adjacent niches with `uploadWindow: "week"`. Fresh windows surface videos while they're still climbing, before the trend is obvious enough to be crowded. A cluster of high-score outliers around a theme across different small channels is an early signal that attention is shifting there. Re-run the same query set on a schedule and watch which themes keep producing breakouts week over week.

### How much does it cost

There's no YouTube API key and no per-request quota to buy. You pay only for the Apify platform compute of each run, and the actor is designed to be economical: it fetches each unique channel once (not per video), applies gates before scoring, and returns a small ranked shortlist rather than raw search pages. Compared with VidIQ, 1of10, and similar outlier-research subscriptions at $30–50/month, you run it on demand and only when you need a fresh scan.

### How to validate a YouTube niche before starting a channel

Before committing to a niche, run the actor with queries describing it and a low `maxSubscribers` cap. If small channels in that niche are producing outliers, newcomers *can* break through on topic strength alone — the algorithm is willing to push unknown channels there. If you get almost nothing back even with a wide `uploadWindow` and a modest `minOutlierScore`, that's a signal the niche is saturated by established brands and hard to enter cold. It's cheap evidence for a decision that otherwise takes months to learn the hard way.

### How to export YouTube outliers to CSV or Google Sheets

Every run writes to an Apify dataset. From the run's **Storage** tab you can export the results to CSV, Excel, JSON, or XML in one click, or pull them programmatically via the Apify API and Dataset endpoints. To land rows in Google Sheets, connect the dataset through Apify integrations (Make, Zapier) or fetch the dataset JSON and import it. The dataset also ships with a clean Overview table view — score, title, views, channel, subs, baseline, published, length, and URL — for quick scanning without exporting.

### YouTube trend discovery API alternative

If you were reaching for the YouTube Data API to build trend discovery, this actor is a lighter path: no Google Cloud project, no OAuth, no API key, and no daily quota that caps how much you can scan. It talks to YouTube's public Innertube endpoints directly and hands back structured, scored rows. Call it as an API or as an MCP tool, wire it into an agent, and get outlier detection without managing API credentials or rationing quota.

### Is it legal to scrape YouTube?

This actor reads only publicly visible data — the same search results and channel pages any signed-out visitor sees — and does not log in, bypass access controls, or touch private information. Public data collection is broadly permissible, but you are responsible for your own use: review YouTube's Terms of Service and your local laws before running at scale, and don't republish content in ways that infringe creators' rights. See the disclaimer below.

### Input configuration

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `queries` | string\[] | *(required)* | Topics or niches to scan, e.g. `ai tools`, `homestead off grid`, `woodworking asmr`. Each is searched separately, then results are deduplicated |
| `uploadWindow` | string | `month` | Only consider videos uploaded within this window: `week`, `month`, or `year`. Fresher windows surface earlier signals |
| `duration` | string | `any` | `any` includes everything; `long` restricts to 20+ minute videos — the strongest signal for serious niches |
| `minViews` | integer | `5000` | Absolute view floor. A video needs at least this many views regardless of channel size (min 100) |
| `minOutlierScore` | integer | `5` | Minimum multiple over the channel baseline. `5` = the video did 5x the channel's typical views (min 2, max 100) |
| `maxSubscribers` | integer | `100000` | Ignore channels above this size — small channels are the purest topic signal (min 1,000) |
| `maxResults` | integer | `50` | Cap on outliers returned, sorted by score descending (min 1, max 500) |

### FAQ

**How is the baseline computed?** It's the median views of the channel's ~15 most recent uploads, with the candidate video's own views removed from the pool first, and floored at 1,000 so a near-empty channel can't produce a junk score. The median (not the average) means one previous viral hit doesn't drag the baseline up and mask a new breakout. A channel needs at least two other recent uploads to score; otherwise it's skipped.

**Why did I get only a few results?** Outliers are rare by design — that's the entire point. Every row cleared three gates. To widen the net, extend `uploadWindow`, add more `queries`, lower `minOutlierScore`, or drop `minViews`.

**Do I need a YouTube account or API key?** No. No login, no API key, no OAuth, and no quota. It runs on YouTube's public Innertube API.

### Integrations

Connect the Actor to the tools you already use through Apify integrations:

- **Outliers → Google Sheets** — auto-append each scan's breakout videos into a running content-idea board.
- **Outliers → Slack / Discord** — get notified when a fresh breakout appears in your niche.
- **Outliers → Make / Zapier** — feed winning videos into a content pipeline, a Notion board, or an AI script generator.
- **Outliers → BigQuery / Snowflake** — warehouse outlier data via Airbyte to track topic momentum over time.
- **Scheduled runs & webhooks** — run a weekly niche scan automatically, or POST results the moment a scan completes.

### Use with AI agents via MCP

The actor is available as a tool over the Model Context Protocol, so agents can call it directly:

```
claude mcp add --transport http apify "https://mcp.apify.com?tools=datascoutlab/youtube-outlier-finder"
```

Example prompt: *"Find breakout videos on small channels for 'ai tools' and 'local llm' from the last week and summarize the common hooks."*

### Related scrapers

- [App Store Reviews Scraper](https://apify.com/datascoutlab/appstore-reviews-scraper) — reviews from 175 countries with filters and clean JSON
- [Google Play Reviews Scraper](https://apify.com/datascoutlab/googleplay-reviews-scraper) — Android app reviews from any country, no API key
- [Google Trends Scraper](https://apify.com/datascoutlab/google-trends-reliable) — interest-over-time data that actually works
- [Telegram Channel Scraper](https://apify.com/datascoutlab/telegram-channels-scraper) — messages, views, and keyword search across channels

### Disclaimer

This actor is not affiliated with, endorsed by, or sponsored by YouTube or Google LLC. YouTube is a trademark of Google LLC. It collects only publicly available data and does not access private or restricted content. You are responsible for complying with YouTube's Terms of Service and applicable laws in your jurisdiction.

### SEO Keywords

youtube outlier finder, youtube outlier detection, find viral youtube videos small channels, youtube breakout videos, youtube content ideas, discover trending youtube topics, youtube trend discovery api, youtube niche validation, youtube video scraper no api key, youtube innertube api, small channel outliers, youtube algorithm signal, vidiq alternative, 1of10 alternative, youtube outlier score, youtube research tool, early youtube trends, viral video finder, youtube channel baseline, export youtube outliers csv

# Actor input Schema

## `queries` (type: `array`):

Topics or niches to scan, e.g. `ai tools`, `homestead off grid`, `woodworking asmr`. Each query is searched separately; results are deduplicated.

## `uploadWindow` (type: `string`):

Only consider videos uploaded within this window. Fresh windows surface early signals.

## `duration` (type: `string`):

Long-form (20+ min) is the strongest signal for serious niches; `any` includes everything.

## `minViews` (type: `integer`):

Video must have at least this many views regardless of channel size.

## `minOutlierScore` (type: `integer`):

Video views must exceed the channel's typical views (median of recent uploads) by at least this multiple. 5 = video does 5x better than the channel usually does.

## `maxSubscribers` (type: `integer`):

Ignore big channels — outliers on small channels are the purest signal that the topic (not the brand) is driving views.

## `maxResults` (type: `integer`):

Upper cap on outliers returned, sorted by score descending.

## Actor input object example

```json
{
  "queries": [
    "ai tools"
  ],
  "uploadWindow": "month",
  "duration": "any",
  "minViews": 5000,
  "minOutlierScore": 5,
  "maxSubscribers": 100000,
  "maxResults": 50
}
```

# 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 = {
    "queries": [
        "ai tools"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("datascoutlab/youtube-outlier-finder").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 = { "queries": ["ai tools"] }

# Run the Actor and wait for it to finish
run = client.actor("datascoutlab/youtube-outlier-finder").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 '{
  "queries": [
    "ai tools"
  ]
}' |
apify call datascoutlab/youtube-outlier-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datascoutlab/youtube-outlier-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Outlier Finder — Viral Videos on Small Channels",
        "description": "Spot YouTube videos going viral on small channels — the earliest signal a topic is taking off. Get a ranked list of breakouts with outlier score, channel size & baseline views. Perfect for content ideas, niche research & trend discovery. No API key. Creators pay $30+/mo for tools like this.",
        "version": "1.0",
        "x-build-id": "BsIyB6FFxhlEchQ7j"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datascoutlab~youtube-outlier-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datascoutlab-youtube-outlier-finder",
                "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/datascoutlab~youtube-outlier-finder/runs": {
            "post": {
                "operationId": "runs-sync-datascoutlab-youtube-outlier-finder",
                "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/datascoutlab~youtube-outlier-finder/run-sync": {
            "post": {
                "operationId": "run-sync-datascoutlab-youtube-outlier-finder",
                "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": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "Topics or niches to scan, e.g. `ai tools`, `homestead off grid`, `woodworking asmr`. Each query is searched separately; results are deduplicated.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "uploadWindow": {
                        "title": "Upload window",
                        "enum": [
                            "week",
                            "month",
                            "year"
                        ],
                        "type": "string",
                        "description": "Only consider videos uploaded within this window. Fresh windows surface early signals.",
                        "default": "month"
                    },
                    "duration": {
                        "title": "Video duration",
                        "enum": [
                            "any",
                            "long"
                        ],
                        "type": "string",
                        "description": "Long-form (20+ min) is the strongest signal for serious niches; `any` includes everything.",
                        "default": "any"
                    },
                    "minViews": {
                        "title": "Min views (absolute floor)",
                        "minimum": 100,
                        "type": "integer",
                        "description": "Video must have at least this many views regardless of channel size.",
                        "default": 5000
                    },
                    "minOutlierScore": {
                        "title": "Min outlier score",
                        "minimum": 2,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Video views must exceed the channel's typical views (median of recent uploads) by at least this multiple. 5 = video does 5x better than the channel usually does.",
                        "default": 5
                    },
                    "maxSubscribers": {
                        "title": "Max channel subscribers",
                        "minimum": 1000,
                        "type": "integer",
                        "description": "Ignore big channels — outliers on small channels are the purest signal that the topic (not the brand) is driving views.",
                        "default": 100000
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Upper cap on outliers returned, sorted by score descending.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
