# YouTube Full Channel Transcripts Extractor (`scrapier/youtube-full-channel-transcripts-extractor`) Actor

Extract transcripts from all videos on a YouTube channel with a single run. Collect captions, subtitles, video metadata, and spoken text at scale for content research, SEO, AI training, sentiment analysis, competitive intelligence, and workflow automation.

- **URL**: https://apify.com/scrapier/youtube-full-channel-transcripts-extractor.md
- **Developed by:** [Scrapier](https://apify.com/scrapier) (community)
- **Categories:** AI, Automation, SEO tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

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 Full Channel Transcripts Extractor

Extract **every** transcript from an entire YouTube channel — videos, shorts, streams/lives, podcasts, even playlists — with just a link. Get clean, structured captions alongside rich video & channel metadata, ready to download as JSON, CSV or Excel.

Give it `@handle`, a channel ID, a channel URL, or a playlist link and it crawls the whole thing, pulling transcripts in the **format you choose** — plain text, timestamped text, SRT, VTT, TTML, JSON3, srv1/2/3 or SBV.

### 🌟 Why Choose This Actor?

- ⚡ **Bulk by design** — drop in many channels/playlists at once and scrape them in one run.
- 🧾 **13 transcript formats** — from a simple text array to broadcast-ready SRT/VTT.
- 🧷 **Pick your fields** — toggle channel and video metadata on/off to keep results lean.
- 🛡️ **Self-healing proxies** — starts direct, then auto-falls-back to datacenter and sticky residential proxies if YouTube pushes back.
- 💾 **Live results** — every video is saved the moment it's ready, so a long run never loses progress.
- 📊 **Organized output** — four ready-made dataset views (Transcripts, Video Metadata, Channel Info, Full Records).

### ✨ Key Features

- Works with **videos**, **shorts**, **streams/lives**, **podcasts** and **playlists**.
- Dynamic, deployment-proof extraction (no hardcoded keys that rot when YouTube updates).
- Retries with backoff on blocks/timeouts.
- Comment counts, like counts, view counts, publish dates, thumbnails, keywords and full channel stats.

### 📥 Input

| Field | Type | Description |
|-------|------|-------------|
| `urls` | array | **Required.** Channel/playlist links, @handles or IDs — one per line. |
| `url` | string | Optional single source (for convenience). |
| `outputFormat` | string | Transcript format (`captions`, `srt`, `vtt`, `json3`, …). |
| `maxVideos` | integer | Max videos per source (`0` = all). |
| `*Boolean` | boolean | Toggle each channel/video metadata field. |
| `maxRetries` | integer | Retries per blocked request. |
| `maxScrollRetries` | integer | Retries while paginating the channel. |
| `proxyConfiguration` | object | Proxy settings (fallback ladder applies automatically). |

```json
{
  "urls": ["https://www.youtube.com/@Vexento/shorts"],
  "outputFormat": "captions",
  "maxVideos": 50,
  "channelNameBoolean": true,
  "viewCountBoolean": true,
  "likesBoolean": true,
  "commentsBoolean": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
````

### 📤 Output

Each item is one video:

```json
{
  "videoId": "MdRB7mX9iWI",
  "title": "Do you guys think Cloudy approves?…",
  "channelName": "Vexento",
  "channelHandle": "@Vexento",
  "channelID": "UCYZ9rknEmE4R1J_HBJ2yBlQ",
  "subscriberCount": "513K subscribers",
  "datePublished": "2026-05-05T16:15:44.000Z",
  "viewCount": "5,012 views",
  "likes": "262",
  "comments": "55",
  "thumbnailUrl": "https://i.ytimg.com/vi/MdRB7mX9iWI/maxres2.jpg",
  "captions": ["[music]", ">> It's cute.", "Do you approve or not?"]
}
```

### 🚀 How to Use (Apify Console)

1. Log in at [console.apify.com](https://console.apify.com) → **Actors**.
2. Open **YouTube Full Channel Transcripts Extractor**.
3. Paste your channel / playlist links, pick a format and metadata fields.
4. Click **Start** and watch the live log fill up.
5. Open the **Output** tab — switch between the Transcripts, Video Metadata, Channel Info and Full Records views.
6. Export to JSON / CSV / XLSX.

### 🤖 Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"urls":["https://www.youtube.com/@Vexento/shorts"],"outputFormat":"captions","maxVideos":25}'
```

### 💡 Best Use Cases

- Build searchable text databases from entire channels.
- Repurpose video content into blogs, articles and social snippets.
- Feed transcripts into NLP / LLM pipelines.
- Accessibility and study aids from educational content.

### 💳 Pricing

Billed per scraped video record (pay-per-event). Runs that hit your spend limit stop cleanly, keeping everything already collected.

### ❓ FAQ

**Can I scrape multiple channels at once?** Yes — add as many links to `urls` as you want.

**What if YouTube blocks me?** The actor automatically escalates from a direct connection to a datacenter proxy, then to a sticky residential proxy, retrying along the way.

**Which formats are supported?** captions, textWithTimestamps, xmlWithoutTimestamps, xmlWithTimestamps, singleStringText, srt, ttml, vtt, json3, srv3, srv2, srv1, sbv.

### 🛟 Support

Only publicly available data is collected. You are responsible for complying with YouTube's Terms of Service and applicable laws (GDPR/CCPA, etc.).

# Actor input Schema

## `urls` (type: `array`):

One entry per line. Accepts a channel @handle, channel ID (UC…), full channel URL (/videos, /shorts, /streams), or a playlist URL/ID. Bulk-friendly: add as many as you like.

## `outputFormat` (type: `string`):

Choose how transcripts are returned.

## `maxVideos` (type: `integer`):

Cap how many videos to extract from each source. 0 means every video.

## `channelNameBoolean` (type: `boolean`):

Include the channel name in each record.

## `channelHandleBoolean` (type: `boolean`):

Include the channel @handle.

## `channelIDBoolean` (type: `boolean`):

Include the channel ID (UC…).

## `subscriberCountBoolean` (type: `boolean`):

Include the channel subscriber count.

## `channelCreationDateBoolean` (type: `boolean`):

Include the channel's creation date.

## `channelCountryBoolean` (type: `boolean`):

Include the channel's country.

## `channelViewCountBoolean` (type: `boolean`):

Include the channel's total view count.

## `channelVideoCountBoolean` (type: `boolean`):

Include the channel's total video count.

## `datePublishedBoolean` (type: `boolean`):

Include the full ISO publish date/time.

## `dateTextBoolean` (type: `boolean`):

Include the formatted publish date (e.g. Feb 7, 2025).

## `relativeDateTextBoolean` (type: `boolean`):

Include the relative date (e.g. 3 days ago).

## `viewCountBoolean` (type: `boolean`):

Include the video view count.

## `likesBoolean` (type: `boolean`):

Include the like count.

## `commentsBoolean` (type: `boolean`):

Include the comment count.

## `keywordsBoolean` (type: `boolean`):

Include the video keywords/tags.

## `thumbnailBoolean` (type: `boolean`):

Include the video thumbnail URL.

## `descriptionBoolean` (type: `boolean`):

Include the video description.

## `maxRetries` (type: `integer`):

How many times to retry a blocked/failed request before giving up. Higher = more resilient.

## `maxScrollRetries` (type: `integer`):

How many times to retry empty/failed pagination pages while collecting videos.

## `saveInBatches` (type: `boolean`):

If on, results are also written into separate batch datasets (in addition to the main output) so very large channels stay organised and memory-friendly.

## `videosPerBatch` (type: `integer`):

When batching is enabled, how many videos to put in each batch dataset.

## `concurrency` (type: `integer`):

How many videos to fetch at the same time. Higher = faster, but heavier load. Lower it if you hit blocks.

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

The run starts with a direct connection. If YouTube blocks it, the actor automatically falls back to a Datacenter proxy, then to a sticky Residential proxy.

## Actor input object example

```json
{
  "urls": [
    "https://www.youtube.com/@Vexento/shorts"
  ],
  "outputFormat": "captions",
  "maxVideos": 0,
  "channelNameBoolean": true,
  "channelHandleBoolean": false,
  "channelIDBoolean": false,
  "subscriberCountBoolean": false,
  "channelCreationDateBoolean": false,
  "channelCountryBoolean": false,
  "channelViewCountBoolean": false,
  "channelVideoCountBoolean": false,
  "datePublishedBoolean": false,
  "dateTextBoolean": false,
  "relativeDateTextBoolean": false,
  "viewCountBoolean": false,
  "likesBoolean": false,
  "commentsBoolean": false,
  "keywordsBoolean": false,
  "thumbnailBoolean": false,
  "descriptionBoolean": false,
  "maxRetries": 5,
  "maxScrollRetries": 3,
  "saveInBatches": false,
  "videosPerBatch": 100,
  "concurrency": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "urls": [
        "https://www.youtube.com/@Vexento/shorts"
    ],
    "maxVideos": 0,
    "maxRetries": 5,
    "maxScrollRetries": 3,
    "videosPerBatch": 100,
    "concurrency": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapier/youtube-full-channel-transcripts-extractor").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 = {
    "urls": ["https://www.youtube.com/@Vexento/shorts"],
    "maxVideos": 0,
    "maxRetries": 5,
    "maxScrollRetries": 3,
    "videosPerBatch": 100,
    "concurrency": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapier/youtube-full-channel-transcripts-extractor").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 '{
  "urls": [
    "https://www.youtube.com/@Vexento/shorts"
  ],
  "maxVideos": 0,
  "maxRetries": 5,
  "maxScrollRetries": 3,
  "videosPerBatch": 100,
  "concurrency": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapier/youtube-full-channel-transcripts-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube Full Channel Transcripts Extractor",
        "description": "Extract transcripts from all videos on a YouTube channel with a single run. Collect captions, subtitles, video metadata, and spoken text at scale for content research, SEO, AI training, sentiment analysis, competitive intelligence, and workflow automation.",
        "version": "0.1",
        "x-build-id": "kE9PVkmhhRqrQQ1Zr"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapier~youtube-full-channel-transcripts-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapier-youtube-full-channel-transcripts-extractor",
                "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/scrapier~youtube-full-channel-transcripts-extractor/runs": {
            "post": {
                "operationId": "runs-sync-scrapier-youtube-full-channel-transcripts-extractor",
                "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/scrapier~youtube-full-channel-transcripts-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-scrapier-youtube-full-channel-transcripts-extractor",
                "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": [
                    "urls"
                ],
                "properties": {
                    "urls": {
                        "title": "📺 Channel / Playlist URLs (bulk)",
                        "type": "array",
                        "description": "One entry per line. Accepts a channel @handle, channel ID (UC…), full channel URL (/videos, /shorts, /streams), or a playlist URL/ID. Bulk-friendly: add as many as you like.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "outputFormat": {
                        "title": "🧾 Caption / Transcript Format",
                        "enum": [
                            "captions",
                            "textWithTimestamps",
                            "xmlWithoutTimestamps",
                            "xmlWithTimestamps",
                            "singleStringText",
                            "srt",
                            "ttml",
                            "vtt",
                            "json3",
                            "srv3",
                            "srv2",
                            "srv1",
                            "sbv"
                        ],
                        "type": "string",
                        "description": "Choose how transcripts are returned.",
                        "default": "captions"
                    },
                    "maxVideos": {
                        "title": "🔢 Maximum videos per source (0 = All)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap how many videos to extract from each source. 0 means every video.",
                        "default": 0
                    },
                    "channelNameBoolean": {
                        "title": "📛 Channel Name",
                        "type": "boolean",
                        "description": "Include the channel name in each record.",
                        "default": true
                    },
                    "channelHandleBoolean": {
                        "title": "🪪 Channel Handle",
                        "type": "boolean",
                        "description": "Include the channel @handle.",
                        "default": false
                    },
                    "channelIDBoolean": {
                        "title": "🆔 Channel ID",
                        "type": "boolean",
                        "description": "Include the channel ID (UC…).",
                        "default": false
                    },
                    "subscriberCountBoolean": {
                        "title": "👥 Subscriber Count",
                        "type": "boolean",
                        "description": "Include the channel subscriber count.",
                        "default": false
                    },
                    "channelCreationDateBoolean": {
                        "title": "🎂 Channel Creation Date",
                        "type": "boolean",
                        "description": "Include the channel's creation date.",
                        "default": false
                    },
                    "channelCountryBoolean": {
                        "title": "🌍 Channel Country",
                        "type": "boolean",
                        "description": "Include the channel's country.",
                        "default": false
                    },
                    "channelViewCountBoolean": {
                        "title": "📈 Channel Total Views",
                        "type": "boolean",
                        "description": "Include the channel's total view count.",
                        "default": false
                    },
                    "channelVideoCountBoolean": {
                        "title": "🎞️ Channel Total Videos",
                        "type": "boolean",
                        "description": "Include the channel's total video count.",
                        "default": false
                    },
                    "datePublishedBoolean": {
                        "title": "📅 Date Published (video)",
                        "type": "boolean",
                        "description": "Include the full ISO publish date/time.",
                        "default": false
                    },
                    "dateTextBoolean": {
                        "title": "🗓️ Date Text (video)",
                        "type": "boolean",
                        "description": "Include the formatted publish date (e.g. Feb 7, 2025).",
                        "default": false
                    },
                    "relativeDateTextBoolean": {
                        "title": "⏳ Relative Date (video)",
                        "type": "boolean",
                        "description": "Include the relative date (e.g. 3 days ago).",
                        "default": false
                    },
                    "viewCountBoolean": {
                        "title": "👁️ View Count (video)",
                        "type": "boolean",
                        "description": "Include the video view count.",
                        "default": false
                    },
                    "likesBoolean": {
                        "title": "👍 Likes (video)",
                        "type": "boolean",
                        "description": "Include the like count.",
                        "default": false
                    },
                    "commentsBoolean": {
                        "title": "💬 Comments (video)",
                        "type": "boolean",
                        "description": "Include the comment count.",
                        "default": false
                    },
                    "keywordsBoolean": {
                        "title": "🏷️ Keywords / Tags (video)",
                        "type": "boolean",
                        "description": "Include the video keywords/tags.",
                        "default": false
                    },
                    "thumbnailBoolean": {
                        "title": "🖼️ Thumbnail URL (video)",
                        "type": "boolean",
                        "description": "Include the video thumbnail URL.",
                        "default": false
                    },
                    "descriptionBoolean": {
                        "title": "📝 Description (video)",
                        "type": "boolean",
                        "description": "Include the video description.",
                        "default": false
                    },
                    "maxRetries": {
                        "title": "🔁 Maximum retries when blocked",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many times to retry a blocked/failed request before giving up. Higher = more resilient.",
                        "default": 5
                    },
                    "maxScrollRetries": {
                        "title": "📜 Maximum scroll retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many times to retry empty/failed pagination pages while collecting videos.",
                        "default": 3
                    },
                    "saveInBatches": {
                        "title": "📦 Save results in batches (for large channels)",
                        "type": "boolean",
                        "description": "If on, results are also written into separate batch datasets (in addition to the main output) so very large channels stay organised and memory-friendly.",
                        "default": false
                    },
                    "videosPerBatch": {
                        "title": "🔢 Number of videos per batch",
                        "minimum": 1,
                        "type": "integer",
                        "description": "When batching is enabled, how many videos to put in each batch dataset.",
                        "default": 100
                    },
                    "concurrency": {
                        "title": "⚡ Maximum parallel requests (concurrency)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "How many videos to fetch at the same time. Higher = faster, but heavier load. Lower it if you hit blocks.",
                        "default": 25
                    },
                    "proxyConfiguration": {
                        "title": "🛡️ Proxy Configuration",
                        "type": "object",
                        "description": "The run starts with a direct connection. If YouTube blocks it, the actor automatically falls back to a Datacenter proxy, then to a sticky Residential proxy.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
