# YouTube Channel Scraper (`automation-lab/youtube-channel-scraper`) Actor

Scrape YouTube channel metadata and video listings. Get subscriber counts, video views, titles, durations, and more. Uses the InnerTube API — no browser needed, fast and reliable. Export to JSON, CSV, Excel, or connect via API.

- **URL**: https://apify.com/automation-lab/youtube-channel-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Videos, Social media, Lead generation
- **Stats:** 68 total users, 19 monthly users, 99.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## YouTube Channel Scraper

Extract channel metadata and video listings from any YouTube channel — subscriber counts, total views, video titles, view counts, durations, thumbnails, and more. Uses YouTube's internal InnerTube API directly (no browser, no Selenium, no Playwright). Fast, reliable, and low-cost.

---

### What Does It Do?

YouTube Channel Scraper fetches two types of data from any YouTube channel:

1. **Channel metadata** — name, handle, description, subscriber count, total videos, total views, avatar, banner, verification status, keywords, and external links.
2. **Video listings** — all public videos with their title, URL, view count, duration, thumbnail, and relative publish time (e.g., "3 days ago", "2 years ago").

It handles all common channel URL formats: `@handles`, `/channel/UCxxxxxxx` IDs, and full `youtube.com` URLs.

---

### Who Is It For?

- **Content creators** researching competitors and trending channels in their niche
- **Marketing teams** building influencer databases or tracking channel growth
- **Data analysts** building YouTube datasets for modeling and reporting
- **Developers** integrating YouTube channel data into dashboards, CRMs, or apps
- **Researchers** studying social media, digital culture, or media trends
- **SEO professionals** tracking video publishing cadence and view velocity

---

### Why Use This Scraper?

- **No browser required** — pure HTTP via InnerTube API means fast runs and minimal memory
- **256 MB memory** — runs efficiently without expensive compute instances
- **Handles pagination** — fetches up to 5,000 videos per channel with automatic continuation
- **Flexible input** — accepts @handles, channel IDs, or full YouTube URLs
- **Structured output** — two clean item types (channel + video) ready for export
- **Cost-efficient pricing** — pay per channel scraped and per video listed, not per page loaded

---

### Data Fields

#### Channel Item (`type: "channel"`)

| Field | Type | Description |
|---|---|---|
| `type` | string | Always `"channel"` |
| `channelId` | string | YouTube channel ID (UCxxxxxxx) |
| `channelName` | string | Display name of the channel |
| `channelHandle` | string | @handle (e.g. `@MrBeast`) |
| `channelUrl` | string | Canonical channel URL |
| `description` | string | Full channel description |
| `subscriberCount` | number | Subscriber count as a number (null if hidden) |
| `totalVideos` | number | Total public videos on the channel |
| `totalViews` | number | All-time total views across all videos |
| `joinedDate` | string | Date the channel was created |
| `location` | string | Channel's stated location |
| `country` | string | Country from channel metadata |
| `avatarUrl` | string | URL to the channel avatar image |
| `bannerUrl` | string | URL to the channel banner image |
| `isVerified` | boolean | Whether the channel has a verified badge |
| `isFamilySafe` | boolean | Whether the channel is marked family-safe |
| `keywords` | array | Channel keywords/tags |
| `links` | array | External links with `{text, url}` for each |

#### Video Item (`type: "video"`)

| Field | Type | Description |
|---|---|---|
| `type` | string | Always `"video"` |
| `videoId` | string | YouTube video ID |
| `title` | string | Video title |
| `url` | string | Full YouTube video URL |
| `thumbnailUrl` | string | URL to the video thumbnail |
| `viewCount` | number | Total views as a number (null if hidden) |
| `duration` | string | Duration in `HH:MM:SS` or `MM:SS` format |
| `publishedText` | string | Relative publish time (e.g. "2 months ago") |
| `channelName` | string | Name of the channel this video belongs to |
| `channelId` | string | ID of the channel this video belongs to |

---

### Pricing

This actor uses pay-per-event pricing — you only pay for results:

| Event | Price | Description |
|---|---|---|
| Run start | $0.005 | One-time charge when the actor starts |
| Channel scraped | $0.003 | Per channel metadata item extracted |
| Video scraped | $0.001 | Per video listing extracted |

**Example costs:**
- 1 channel + 50 videos: $0.005 + $0.003 + $0.050 = **$0.058**
- 5 channels + 100 videos each: $0.005 + $0.015 + $0.500 = **$0.520**
- 1 channel + 500 videos: $0.005 + $0.003 + $0.500 = **$0.508**

Compute costs (memory/time) are minimal since this is HTTP-only with no browser.

---

### How to Use

1. **Open the actor** on [Apify Store](https://apify.com/automation-lab/youtube-channel-scraper)
2. **Enter channel URLs** in the "Channels to Scrape" field — one per line. Accepts `@handles`, full URLs, or channel IDs.
3. **Set max videos** — how many videos to collect per channel (default: 50, max: 5,000)
4. **Choose what to include** — toggle channel info and/or video listings on/off
5. **Click Start** and wait for results (usually seconds for small channels, minutes for large ones)
6. **Download results** as JSON, CSV, or Excel from the dataset tab

---

### Input Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `channels` | array | required | Channel URLs, @handles, or channel IDs to scrape |
| `maxVideosPerChannel` | integer | `50` | Max videos to fetch per channel (0 = skip videos) |
| `includeChannelInfo` | boolean | `true` | Include channel metadata item in output |
| `includeVideos` | boolean | `true` | Include individual video items in output |

#### Accepted Channel Input Formats

All of the following are valid entries in the `channels` array:

````

@MrBeast
https://www.youtube.com/@MrBeast
https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA
UCX6OQ3DkcsbYNE6H8uQQuVA
https://www.youtube.com/c/MrBeast6000

````

---

### Output Example

#### Channel item

```json
{
  "type": "channel",
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA",
  "channelName": "MrBeast",
  "channelHandle": "@MrBeast",
  "channelUrl": "https://www.youtube.com/channel/UCX6OQ3DkcsbYNE6H8uQQuVA",
  "description": "SUBSCRIBE FOR A COOKIE\n\nOr don't. I'm a description, not a cop.",
  "subscriberCount": 350000000,
  "totalVideos": 800,
  "totalViews": 60000000000,
  "joinedDate": "Feb 19, 2012",
  "location": "",
  "country": "US",
  "avatarUrl": "https://yt3.googleusercontent.com/...",
  "bannerUrl": "https://yt3.googleusercontent.com/...",
  "isVerified": true,
  "isFamilySafe": true,
  "keywords": ["mrbeast", "challenge", "philanthropy"],
  "links": [
    { "text": "Instagram", "url": "https://www.instagram.com/mrbeast/" },
    { "text": "Twitter", "url": "https://twitter.com/MrBeast" }
  ]
}
````

#### Video item

```json
{
  "type": "video",
  "videoId": "dQw4w9WgXcQ",
  "title": "I Spent 50 Hours Buried Alive",
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "thumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
  "viewCount": 45000000,
  "duration": "14:32",
  "publishedText": "3 months ago",
  "channelName": "MrBeast",
  "channelId": "UCX6OQ3DkcsbYNE6H8uQQuVA"
}
```

***

### Tips and Best Practices

#### Scraping many channels efficiently

- Use an array of channels in a single run — the actor processes them sequentially without extra cost.
- Set `includeChannelInfo: false` if you only need video listings for channels you already have metadata for.
- Set `maxVideosPerChannel: 0` if you only want channel metadata without any videos.

#### Getting more than 50 videos

The default is 50 videos per channel for quick runs. To get all videos from a large channel, set `maxVideosPerChannel` to a high value like `5000`. The actor handles pagination automatically.

#### Channels with hidden subscriber counts

Some channels (especially smaller creators) hide their subscriber count. In that case, `subscriberCount` will be `null` rather than a number.

#### Private or removed channels

If a channel URL is invalid, private, or the channel has been terminated, the actor will log a warning and skip it — it will not fail the entire run.

***

### Integrations

#### Google Sheets / Spreadsheets

Use the Apify → Google Sheets integration to automatically push scraped channel or video data into a spreadsheet. Go to **Integrations** tab → Google Sheets → connect your account.

#### Webhooks and Zapier

Trigger downstream workflows when the actor finishes using webhooks. Compatible with Zapier, Make (Integromat), and n8n for no-code automations like sending results to Slack or updating a CRM.

#### Scheduled Runs

Use Apify's built-in scheduler to run this actor daily or weekly to track channel growth over time. Combine with a Google Sheet integration to build a live dashboard.

***

### API Usage

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('automation-lab/youtube-channel-scraper').call({
  channels: ['@MrBeast', '@mkbhd'],
  maxVideosPerChannel: 25,
  includeChannelInfo: true,
  includeVideos: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient(token="YOUR_API_TOKEN")

run = client.actor("automation-lab/youtube-channel-scraper").call(run_input={
    "channels": ["@MrBeast", "@mkbhd"],
    "maxVideosPerChannel": 25,
    "includeChannelInfo": True,
    "includeVideos": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~youtube-channel-scraper/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "channels": ["@MrBeast"],
    "maxVideosPerChannel": 10
  }'
```

***

### Use with Claude AI (MCP)

This actor is available as a tool in Claude AI through the Model Context Protocol (MCP). Add it to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/youtube-channel-scraper"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com?tools=automation-lab/youtube-channel-scraper"
        }
    }
}
```

#### Example prompts

- "Get the last 50 videos from @LinusTechTips along with their view counts and durations."
- "Scrape the channel metadata for these 10 YouTube channels and compare their subscriber counts."
- "Fetch all videos from @mkbhd and list the ones with over 5 million views."

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

***

### Legality

This actor accesses publicly available YouTube channel pages and video listings using the same InnerTube API that YouTube's own web client uses. All data extracted is publicly visible to any visitor on YouTube.

**Important notes:**

- Only public channels and public videos are accessible
- Private videos, private channels, and age-restricted content cannot be accessed
- Do not use this tool for harassment, doxxing, or bulk-tracking individual creators without legitimate purpose
- Respect YouTube's Terms of Service and use data responsibly
- This tool does not download video files, only metadata

***

### FAQ

**Q: Does this work with brand accounts or YouTube Music channels?**
A: Yes — any public YouTube channel with a UC... channel ID works, including brand accounts and music channels.

**Q: Why is `subscriberCount` null for some channels?**
A: YouTube allows creators to hide their exact subscriber count. When a channel has fewer than 1,000 subscribers or has opted to hide the count, the API returns no number. The actor returns `null` in that case.

**Q: Can I get video comments or descriptions?**
A: This actor focuses on channel and video listing data. For video transcripts and metadata including descriptions, use [YouTube Transcript Scraper](https://apify.com/automation-lab/youtube-transcript).

**Q: Why are some videos missing from large channels?**
A: YouTube sometimes limits how many videos appear in the videos tab for very large channels (1,000+ videos). This is a YouTube platform limitation, not an actor bug. Setting a high `maxVideosPerChannel` value will fetch all available videos.

**Q: Why is `publishedText` relative ("2 months ago") instead of an exact date?**
A: YouTube's InnerTube API returns relative time for the videos listing tab. To get exact publish dates, you would need to call the individual video page, which would significantly increase cost. The relative text is sufficient for most use cases.

**Q: How do I get data for multiple channels at once?**
A: Simply enter multiple channels in the `channels` array. Each channel is processed in the same run — there's no need to run the actor separately for each one.

**Q: The actor skipped my channel — what happened?**
A: The actor logs a warning and continues when a channel cannot be resolved. Check the actor log for details. Common causes: typo in the handle, channel deleted or suspended, or channel set to private.

***

### Related Scrapers

- [YouTube Transcript Scraper](https://apify.com/automation-lab/youtube-transcript) — Extract full video transcripts and captions
- [YouTube Shorts Scraper](https://apify.com/automation-lab/youtube-shorts) — Scrape YouTube Shorts with engagement data
- [Google News Scraper](https://apify.com/automation-lab/google-news-scraper) — Collect news articles from Google News
- [Google Trends Scraper](https://apify.com/automation-lab/google-trends-scraper) — Track keyword trends over time

# Actor input Schema

## `channels` (type: `array`):

List of YouTube channels to scrape. Accepts: @handles (e.g. @MrBeast), full channel URLs (https://www.youtube.com/@MrBeast), channel IDs (UCX6OQ3DkcsbYNE6H8uQQuVA), or /channel/ URLs.

## `maxVideosPerChannel` (type: `integer`):

Maximum number of videos to scrape per channel. Videos are returned newest first. Set to 0 to skip video scraping and only get channel metadata.

## `includeChannelInfo` (type: `boolean`):

When enabled, outputs a channel info item (type: 'channel') with subscriber count, description, avatar, banner, and other metadata.

## `includeVideos` (type: `boolean`):

When enabled, outputs one item per video (type: 'video') with title, views, duration, and thumbnail.

## Actor input object example

```json
{
  "channels": [
    "@MrBeast"
  ],
  "maxVideosPerChannel": 10,
  "includeChannelInfo": true,
  "includeVideos": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "channels": [
        "@MrBeast"
    ],
    "maxVideosPerChannel": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/youtube-channel-scraper").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 = {
    "channels": ["@MrBeast"],
    "maxVideosPerChannel": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/youtube-channel-scraper").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 '{
  "channels": [
    "@MrBeast"
  ],
  "maxVideosPerChannel": 10
}' |
apify call automation-lab/youtube-channel-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Channel Scraper",
        "description": "Scrape YouTube channel metadata and video listings. Get subscriber counts, video views, titles, durations, and more. Uses the InnerTube API — no browser needed, fast and reliable. Export to JSON, CSV, Excel, or connect via API.",
        "version": "0.1",
        "x-build-id": "jmRTWNqfV6yHYbafB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~youtube-channel-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-youtube-channel-scraper",
                "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/automation-lab~youtube-channel-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-youtube-channel-scraper",
                "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/automation-lab~youtube-channel-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-youtube-channel-scraper",
                "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": [
                    "channels"
                ],
                "properties": {
                    "channels": {
                        "title": "📺 Channel URLs or handles",
                        "type": "array",
                        "description": "List of YouTube channels to scrape. Accepts: @handles (e.g. @MrBeast), full channel URLs (https://www.youtube.com/@MrBeast), channel IDs (UCX6OQ3DkcsbYNE6H8uQQuVA), or /channel/ URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxVideosPerChannel": {
                        "title": "🎬 Max videos per channel",
                        "minimum": 0,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of videos to scrape per channel. Videos are returned newest first. Set to 0 to skip video scraping and only get channel metadata.",
                        "default": 50
                    },
                    "includeChannelInfo": {
                        "title": "Include channel metadata",
                        "type": "boolean",
                        "description": "When enabled, outputs a channel info item (type: 'channel') with subscriber count, description, avatar, banner, and other metadata.",
                        "default": true
                    },
                    "includeVideos": {
                        "title": "Include video listings",
                        "type": "boolean",
                        "description": "When enabled, outputs one item per video (type: 'video') with title, views, duration, and thumbnail.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
