# Youtube Transcript Extractor (`curious_coder/youtube-transcript-extractor`) Actor

Scrape transcripts or captions from youtube videos without getting blocked
✅ 99% Success rate

- **URL**: https://apify.com/curious\_coder/youtube-transcript-extractor.md
- **Developed by:** [Curious Coder](https://apify.com/curious_coder) (community)
- **Categories:** AI, Agents, Videos
- **Stats:** 124 total users, 21 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 transcripts

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

The most reliable YouTube transcript extractor on Apify. Extract transcripts, subtitles, and captions from YouTube videos in seconds — with built-in proxy rotation, multi-language support, and multiple output formats. Works with regular videos, Shorts, and auto-generated captions.

### Features 

There are 20+ YouTube transcript scrapers on Apify. Here's why this one stands out:

- **Doesn't break when YouTube changes** — Most transcript actors broke for days or even weeks during YouTube's backend changes in Dec 2025 and Jan 2026. This actor is built for resilience with fast recovery
- **Clear errors, not empty results** — Other actors silently return null/empty when something goes wrong. This actor tells you exactly what happened: no captions available, video age-restricted, IP blocked, or video removed, Also scrapes 100% of transcripts from video urls when available publicly
- **Built-in proxy management** — Many actors fail on free-tier because they use datacenter proxies that YouTube blocks instantly. This actor selects and rotates through best proxies automatically — no configuration needed
- **4 output formats** — Most actors only output JSON. This one supports JSON (with timestamps), plain text (for AI/LLM pipelines), SRT (for video editors), and WebVTT (for web players)
- **Actual multi-language support** — Several competing actors claim language support but default to English only or have broken language parameters. This actor supports priority-based language fallback and YouTube's built-in translation
- **Rich metadata included** — Many actors return only the transcript. This one includes title, description, keywords, channel name, view count, duration, thumbnails, and more — no need for a separate metadata scraper
- **Handles all URL formats** — Other actors choke on `youtu.be` short links or `/shorts/` URLs. This actor handles all standard YouTube URL formats
- **State persistence for large batches** — Long-running jobs survive Apify platform migrations without losing progress. Other actors often timeout or OOM on large batches

### Input Configuration

#### Required Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `urls` | Array | List of YouTube video URLs to scrape transcripts from |

#### Optional Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `outputFormat` | String | `json` | Output format: `json`, `text`, `srt`, or `vtt` |
| `languages` | Array | `["en"]` | Language codes in priority order (e.g., `["es", "en", "fr"]`). The actor tries each language in order and uses the first available transcript |
| `translateTo` | String | — | Translate the transcript to this language code (e.g., `"es"` for Spanish). Uses YouTube's built-in translation |
| `preserveFormatting` | Boolean | `false` | Keep HTML formatting tags (bold, italic, etc.) in transcript text |

#### Supported URL Formats

| Format | Example |
|--------|---------|
| Standard watch URL | `https://www.youtube.com/watch?v=VIDEO_ID` |
| Short URL | `https://youtu.be/VIDEO_ID` |
| Shorts | `https://www.youtube.com/shorts/VIDEO_ID` |

### Usage Examples

#### Basic — Extract English Transcript

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
  ]
}
````

#### Plain Text Output (No Timestamps)

Perfect for feeding into AI/LLM pipelines, summarization tools, or text analysis:

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
  ],
  "outputFormat": "text"
}
```

#### Multi-Language with Fallback

Request Spanish first, fall back to English, then French:

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
  ],
  "languages": ["es", "en", "fr"]
}
```

#### Translate Transcript

Get the transcript translated to Japanese using YouTube's built-in translation:

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
  ],
  "translateTo": "ja"
}
```

#### SRT Subtitles for Video Editing

Export transcripts in SRT format for use in video editors like Premiere Pro, DaVinci Resolve, or Final Cut:

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ" }
  ],
  "outputFormat": "srt"
}
```

#### Batch Processing — Multiple Videos

Process multiple videos in one run. The actor handles state persistence, so even large batches survive migrations:

```json
{
  "urls": [
    { "url": "https://www.youtube.com/watch?v=VIDEO1" },
    { "url": "https://www.youtube.com/watch?v=VIDEO2" },
    { "url": "https://youtu.be/VIDEO3" },
    { "url": "https://www.youtube.com/shorts/VIDEO4" }
  ],
  "outputFormat": "json",
  "languages": ["en"]
}
```

### Output

#### JSON Format (Default)

Each video produces a dataset item with transcript data and full video metadata:

```json
{
  "inputUrl": "https://www.youtube.com/watch?v=neabI31ofMc",
  "language": "English (auto-generated)",
  "languageCode": "en",
  "isGenerated": true,
  "transcript": [
    {
      "text": "today I'm going to show you all the",
      "start": 0.04,
      "duration": 3.359
    },
    {
      "text": "things that can help suppress your",
      "start": 1.36,
      "duration": 4.64
    }
  ],
  "snippetCount": 185,
  "videoDetails": {
    "videoId": "neabI31ofMc",
    "title": "BETTER Than Ozempic! STOP Your Cravings",
    "lengthSeconds": "412",
    "keywords": ["appetite suppressant", "natural appetite suppressants", "..."],
    "channelId": "UC3w193M5tYPJqF0Hi-7U-2g",
    "shortDescription": "Avoiding cravings is not up to sheer willpower...",
    "thumbnail": {
      "thumbnails": [
        { "url": "https://i.ytimg.com/vi_webp/neabI31ofMc/sddefault.webp", "width": 640, "height": 480 }
      ]
    },
    "viewCount": "1088282",
    "author": "Dr. Eric Berg DC",
    "isLiveContent": false
  }
}
```

#### Text Format

Returns the full transcript as a single plain-text string — no timestamps, no JSON nesting. Ideal for AI processing.

#### SRT Format

Standard SubRip subtitle format, ready for video editors and subtitle players:

```
1
00:00:00,040 --> 00:00:03,399
today I'm going to show you all the

2
00:00:01,360 --> 00:00:06,000
things that can help suppress your
```

#### WebVTT Format

Web Video Text Tracks format for HTML5 video players and web applications:

```
WEBVTT

00:00:00.040 --> 00:00:03.399
today I'm going to show you all the

00:00:01.360 --> 00:00:06.000
things that can help suppress your
```

### Related YouTube Scrapers

For extracting video metadata including titles, descriptions, view counts, and engagement metrics, use the [YouTube Video Scraper](https://apify.com/supreme_coder/youtube-scraper). To collect comments from YouTube videos and shorts, the [YouTube Comment Scraper](https://apify.com/supreme_coder/youtube-comment-scraper) extracts complete comment details including author information, likes, and replies.

### Error Handling

The actor provides clear, specific error codes so you always know what happened:

| Error Code | Meaning | What to Do |
|------------|---------|------------|
| `TranscriptNotFound` | No captions/subtitles available for this video in the requested languages | Try different language codes, or check if the video has captions enabled |
| `URL_NOT_SUPPORTED` | The provided URL is not a valid YouTube video URL | Use a standard YouTube video URL format (see Supported URL Formats above) |
| `VIDEO_ID_NOT_FOUND` | Could not extract a video ID from the URL | Check that the URL contains a valid video ID |
| `AgeRestricted` | Video is age-restricted and requires authentication | Age-restricted videos cannot be scraped without login |
| `VideoUnavailable` | Video has been removed or is no longer available | The video no longer exists on YouTube |
| `IpBlocked` | YouTube is blocking requests from this IP | Usually temporary — retry later or the actor's proxy rotation will handle it |

**Note:** When a video genuinely has no captions (common with music videos, some Shorts, and older content), the actor returns a clear `TranscriptNotFound` error rather than an empty result.

### Proxy Support

The actor includes built-in residential proxy rotation — no configuration needed. This handles YouTube's aggressive IP blocking automatically. You don't need to provide your own proxies.

### Language Codes

The actor supports any language code that YouTube supports. Common codes:

| Code | Language | Code | Language |
|------|----------|------|----------|
| `en` | English | `ko` | Korean |
| `es` | Spanish | `zh` | Chinese |
| `fr` | French | `ar` | Arabic |
| `de` | German | `hi` | Hindi |
| `it` | Italian | `ja` | Japanese |
| `pt` | Portuguese | `ru` | Russian |

**Tip:** Use the `languages` parameter with multiple codes to set up automatic fallback. The actor tries each language in order and uses the first transcript it finds.

### Integration Examples

#### n8n / Make.com

This actor works with Apify's official integrations for [n8n](https://docs.apify.com/platform/integrations/n8n) and [Make.com](https://www.make.com/en/register?pc=growthhack). Use the **Run Actor** module with the input schema above.

#### API

Access transcripts programmatically via the [YouTube Transcript Scraper API](https://apify.com/supreme_coder/youtube-transcript-scraper/api/endpoints). Results are stored in a dataset that you can export as JSON, CSV, XML, or other formats.

```bash
## Start a run via API
curl -X POST "https://api.apify.com/v2/acts/supreme_coder~youtube-transcript-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [{ "url": "https://www.youtube.com/watch?v=VIDEO_ID" }],
    "outputFormat": "text"
  }'
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("supreme_coder/youtube-transcript-scraper").call(
    run_input={
        "urls": [{"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}],
        "outputFormat": "text",
        "languages": ["en"]
    }
)

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

### Pricing

This scraper costs approximately **$0.30 per 1,000 YouTube transcripts**. With the Apify Starter plan, you can extract up to ~16,000 transcripts per month.

### Limitations

- Videos without captions/subtitles cannot be transcribed (the actor extracts existing captions, not audio)
- Age-restricted videos require authentication and are not currently supported
- Translation availability depends on what YouTube offers for each specific video
- Very long videos (3+ hours) may require higher memory allocation

### Is It Legal to Scrape YouTube?

Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the [GDPR](https://docs.apify.com/academy/get-most-of-actors/actor-readme#:~:text=protected%20by%20the-,GDPR,-in%20the%20European) in the European Union and by other regulations around the world.

You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can also read our blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Related Actors

- [YouTube Comment Scraper](https://apify.com/supreme_coder/youtube-comment-scraper) — Extract comments from YouTube videos

### Feedback

We're always working on improving the performance of our actors. If you've got any technical feedback or found a bug, please create an issue on the actor's [Issues](https://apify.com/supreme_coder/youtube-transcript-scraper/issues) tab in Apify Console.

# Actor input Schema

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

List of youtube video/shorts URLs to scrape transcripts

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

Output format for the transcripts

## Actor input object example

```json
{
  "urls": [
    {
      "url": "https://www.youtube.com/watch?v=5AdKqkNmJj4"
    },
    {
      "url": "https://www.youtube.com/watch?v=iTOAIP9DfYo"
    },
    {
      "url": "https://www.youtube.com/watch?v=pJ9xTMkGxXg"
    },
    {
      "url": "https://www.youtube.com/watch?v=bksYSwtJVM0"
    },
    {
      "url": "https://www.youtube.com/watch?v=Sn7T46fCjLE"
    },
    {
      "url": "https://www.youtube.com/watch?v=zW8Cu4vcReY"
    },
    {
      "url": "https://www.youtube.com/watch?v=K1whvDMDogU"
    },
    {
      "url": "https://www.youtube.com/watch?v=xEg9b3YPJj0"
    },
    {
      "url": "https://www.youtube.com/watch?v=23yNXtR-N1s"
    },
    {
      "url": "https://www.youtube.com/watch?v=CvBR-GoBvzk"
    }
  ],
  "outputFormat": "json"
}
```

# 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": [
        {
            "url": "https://www.youtube.com/watch?v=5AdKqkNmJj4"
        },
        {
            "url": "https://www.youtube.com/watch?v=iTOAIP9DfYo"
        },
        {
            "url": "https://www.youtube.com/watch?v=pJ9xTMkGxXg"
        },
        {
            "url": "https://www.youtube.com/watch?v=bksYSwtJVM0"
        },
        {
            "url": "https://www.youtube.com/watch?v=Sn7T46fCjLE"
        },
        {
            "url": "https://www.youtube.com/watch?v=zW8Cu4vcReY"
        },
        {
            "url": "https://www.youtube.com/watch?v=K1whvDMDogU"
        },
        {
            "url": "https://www.youtube.com/watch?v=xEg9b3YPJj0"
        },
        {
            "url": "https://www.youtube.com/watch?v=23yNXtR-N1s"
        },
        {
            "url": "https://www.youtube.com/watch?v=CvBR-GoBvzk"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("curious_coder/youtube-transcript-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": [
        { "url": "https://www.youtube.com/watch?v=5AdKqkNmJj4" },
        { "url": "https://www.youtube.com/watch?v=iTOAIP9DfYo" },
        { "url": "https://www.youtube.com/watch?v=pJ9xTMkGxXg" },
        { "url": "https://www.youtube.com/watch?v=bksYSwtJVM0" },
        { "url": "https://www.youtube.com/watch?v=Sn7T46fCjLE" },
        { "url": "https://www.youtube.com/watch?v=zW8Cu4vcReY" },
        { "url": "https://www.youtube.com/watch?v=K1whvDMDogU" },
        { "url": "https://www.youtube.com/watch?v=xEg9b3YPJj0" },
        { "url": "https://www.youtube.com/watch?v=23yNXtR-N1s" },
        { "url": "https://www.youtube.com/watch?v=CvBR-GoBvzk" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("curious_coder/youtube-transcript-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": [
    {
      "url": "https://www.youtube.com/watch?v=5AdKqkNmJj4"
    },
    {
      "url": "https://www.youtube.com/watch?v=iTOAIP9DfYo"
    },
    {
      "url": "https://www.youtube.com/watch?v=pJ9xTMkGxXg"
    },
    {
      "url": "https://www.youtube.com/watch?v=bksYSwtJVM0"
    },
    {
      "url": "https://www.youtube.com/watch?v=Sn7T46fCjLE"
    },
    {
      "url": "https://www.youtube.com/watch?v=zW8Cu4vcReY"
    },
    {
      "url": "https://www.youtube.com/watch?v=K1whvDMDogU"
    },
    {
      "url": "https://www.youtube.com/watch?v=xEg9b3YPJj0"
    },
    {
      "url": "https://www.youtube.com/watch?v=23yNXtR-N1s"
    },
    {
      "url": "https://www.youtube.com/watch?v=CvBR-GoBvzk"
    }
  ]
}' |
apify call curious_coder/youtube-transcript-extractor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Youtube Transcript Extractor",
        "description": "Scrape transcripts or captions from youtube videos without getting blocked \n✅ 99% Success rate",
        "version": "1.0",
        "x-build-id": "P551rKD7JXin1oxo6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/curious_coder~youtube-transcript-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-curious_coder-youtube-transcript-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/curious_coder~youtube-transcript-extractor/runs": {
            "post": {
                "operationId": "runs-sync-curious_coder-youtube-transcript-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/curious_coder~youtube-transcript-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-curious_coder-youtube-transcript-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": "🔗 Video URLs",
                        "type": "array",
                        "description": "List of youtube video/shorts URLs to scrape transcripts",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "outputFormat": {
                        "title": "Output Format",
                        "enum": [
                            "json",
                            "text",
                            "vtt",
                            "srt"
                        ],
                        "type": "string",
                        "description": "Output format for the transcripts",
                        "default": "json"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
