# Youtube Video Downloader (`scraperoka/youtube-video-downloader`) Actor

📥 Download YouTube videos fast with our YouTube Video Downloader! ✅ Save in MP4/MP3, high quality options, and simple steps. 🚀 Perfect for offline viewing, sharing, and learning—no hassle, just quick results! 🌟

- **URL**: https://apify.com/scraperoka/youtube-video-downloader.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (community)
- **Categories:** Videos, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 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 Video Downloader 🚀
Manually downloading YouTube videos (and then hunting for links) wastes time you don’t have. **YouTube Video Downloader** lets you process one or many video URLs at once, returning direct download links and video/audio options in a single run. This YouTube video downloader (including a youtube downloader for android–friendly workflow) is ideal for marketers, recruiters, and growth teams that need fast, repeatable access to video files—often at scale, from a single batch of URLs.  

### What You Get: Sample Output
Here’s a sample record from a single run:

```json
{
  "original_url": "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz",
  "requested_resolution": "2k",
  "provided_resolution": 1440,
  "download_type": "progressive",
  "downloadable_video_link": {
    "mp4": "https://example.com/video-mp4-direct-url"
  },
  "downloadable_audio_link": "https://example.com/audio-direct-url",
  "title": "N/A",
  "author": "N/A",
  "thumbnail": "N/A",
  "duration": "N/A",
  "channel": "N/A",
  "source": "youtube",
  "video_type": "Video",
  "note": "Requested 1440p found.",
  "prog_video_type": "Video+Audio",
  "prog_resolution": "1440p",
  "prog_video_format": "mp4",
  "prog_downloadable_link": {
    "url": "https://example.com/best-progressive-url"
  },
  "best_progressive_format_info": {
    "resolution": 1440,
    "format": "mp4",
    "url": "https://example.com/best-progressive-url",
    "format_id": "134",
    "bitrate_kbps": 4500
  },
  "apify_storage_url": null,
  "storage_note": null,
  "status": "SUCCEEDED"
}
````

| Field | Type | What It Tells You |
|---|---|---|
| `original_url` | string | The exact YouTube URL you provided for processing |
| `requested_resolution` | string | The resolution setting you selected (for example, `2k`) |
| `provided_resolution` | number | The resolution actually provided for the selected video format |
| `download_type` | string | Whether the returned video link was selected as `progressive` or `video_only` |
| `downloadable_video_link` | object | Direct downloadable link(s) for video (format keyed, e.g. `mp4`) |
| `downloadable_audio_link` | string | A direct downloadable link for the audio stream (when available) |
| `title` | string | Video title as detected by the extractor |
| `author` | string | Video author/uploader name |
| `thumbnail` | string | Thumbnail URL (when available) |
| `duration` | string | Human-readable duration (formatted by the actor) |
| `video_type` | string | Categorizes input as `Shorts` (under 61 seconds) or `Video` |
| `note` | string | A short message describing how the requested resolution was matched |
| `apify_storage_url` | string | null | Public download URL after upload to Apify storage (when enabled) |
| `status` | string | Run status like `SUCCEEDED`; failures are marked with `FAILED_PROCESSING` |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

### Why YouTube Video Downloader?

There are a lot of ways to pull download links from YouTube — here’s what sets **YouTube Video Downloader** apart.

#### Resolution-aware download link selection

You choose `desired_resolution` (8K, 4K, 2K, 1080p, 720p, 480p, 360p), and the actor picks the closest available format when the exact one isn’t found. This makes it a practical youtube mp4 downloader and youtube to mp3 downloader workflow depending on what streams are available.

#### Built-in storage upload (optional) 📦

If you enable **Upload Video to Storage** (`upload_video_to_apify`), the actor uploads the 360p video to Apify storage and returns a link. This turns “download youtube videos” into a managed storage-based flow for downstream use.

#### Resilience-focused retries & fallbacks 🔁

When extraction or downloads fail (for example, with longer videos), the actor is designed with retries and fallback attempts so you can re-run only the failed URLs when needed. It’s built for day-to-day reliability rather than one-off attempts.

#### Output is structured for automation

The actor writes a consistent set of fields to the dataset, including both your chosen download links and extra progressive-format details (`prog_*` fields). That makes it easy to plug into reporting, media pipelines, or CRM imports without manual cleanup.

### Configuring Your Run

Drop this into your `input.json` to get started:

```json
{
  "video_urls": [
    "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz",
    "https://youtube.com/shorts/s9YG00vZ09c?si=fMtwzCARAHbcuJQu"
  ],
  "desired_resolution": "1080p",
  "proxyConfiguration": {},
  "upload_video_to_apify": false
}
```

| Parameter | Required | What It Does |
|---|---|---|
| `video_urls` | ✅ | List of YouTube video URLs to process |
| `desired_resolution` | ⬜ | Select the desired resolution: `8k`, `4k`, `2k`, `1080p`, `720p`, `480p`, or `360p` |
| `proxyConfiguration` | ⬜ | Configure proxies for this Actor (optional) |
| ↳ `proxyConfiguration` (object) | ⬜ | Controls whether a proxy setup is created for the run |
| `upload_video_to_apify` | ⬜ | Toggle this option to upload the 360p video to Apify storage (may be slow) |

### Core Capabilities

#### Batch YouTube processing at once

Send multiple `video_urls` in a single input and the actor processes them in one run. This is ideal when you need a fast youtube video downloader workflow for campaigns, content ops, or research batches.

#### Direct downloadable links for video and audio

The output includes `downloadable_video_link` and `downloadable_audio_link` fields so you can immediately fetch the streams you need. It supports the common “youtube to mp4” style use cases via the returned video link selection.

#### Progressive format details for better downstream handling

The dataset also includes `prog_video_type`, `prog_resolution`, `prog_video_format`, and `prog_downloadable_link`. If you’re building automation around the “best” combined option, those fields make the result easy to interpret and reuse.

#### Optional Apify storage publishing (360p upload)

When `upload_video_to_apify` is enabled, the actor uploads the 360p version to Apify storage and fills `apify_storage_url` plus `storage_note`. This gives you a stable storage link for further processing—useful for workflows like “online youtube video downloader” pipelines that expect persisted files.

#### Reliability features for real-world runs

The actor includes retries and fallback behavior for extraction and download steps. If a download fails (especially for long videos), the input guidance recommends re-running with the failed URL(s)—often it works on the second try.

#### Clean, dataset-ready JSON output

Each processed URL produces a structured record with metadata (title, author, duration, channel, thumbnail) plus the download link fields. That makes it straightforward to export into JSON/CSV/Excel or push results into your existing tooling.

### Who Gets the Most Out of This

Here's how different teams put **YouTube Video Downloader** to work:

**Content marketers & campaign ops** — Build a library of video assets at controlled quality (for example, `1080p` or `4k`) and store results for review cycles. You get direct downloadable links and, if enabled, Apify storage links to hand off to editors.

**Recruiters & talent sourcers** — Collect creator and interview clips without manual downloads across devices. A batch run helps you move from candidate discovery to internal review faster, especially when content is split across Shorts and full videos.

**Data analysts & media researchers** — Generate repeatable datasets that include video metadata plus resolution-matched download options. The structured fields (like `provided_resolution`, `duration`, and `video_type`) are useful for analysis and cataloging.

**Developers & automation specialists** — Integrate the actor output into pipelines that expect consistent JSON fields, including progressive-format details (`prog_*`) and optional storage URLs (`apify_storage_url`).

### Step-by-Step: How to Use It

No coding needed. Here's how to run **YouTube Video Downloader** from start to finish:

1. **Open the actor on Apify** — go to [console.apify.com](https://console.apify.com) and find YouTube Video Downloader.
2. **Enter your inputs** — add one or more items in `video_urls`, choose `desired_resolution`, and decide whether to set `upload_video_to_apify`.
3. **Configure proxy settings (optional)** — use `proxyConfiguration` if you need specific proxy behavior for your environment.
4. **Hit Run and watch the live log** — monitor progress and any retry/fallback behavior in the logs.
5. **View results in the dataset tab** — each URL produces an output record with download link fields and metadata.
6. **Export as JSON, CSV, or Excel** — download the dataset directly from the Apify interface for your next steps.

The whole process takes under 5 minutes to set up.

### Integrations & Export Options

Once your data is collected, **YouTube Video Downloader** plugs directly into your existing workflow.

Export formats are handled via the Apify dataset: JSON, CSV, and Excel are available from the dataset tab.

If you use automation or orchestration, you can connect the actor run to downstream steps using Apify’s API (see https://apify.com/docs/api), webhooks, and no-code tools like Zapier or Make. For deeper integration patterns and automation options, refer to the Apify documentation.

You can also schedule runs so your youtube downloader for android–style workflows keep media links fresh without manual triggers.

### Pricing & Free Trial

**YouTube Video Downloader** runs on the Apify platform, which offers a **free tier** — no credit card required to get started.

On Apify, you typically pay as you go based on Actor compute usage (CU), and you can scale up by adding more runs or larger batches. For exact pricing details and plan options, check Apify’s pricing page at https://apify.com.

Start for free at [apify.com](https://apify.com) and scale when you're ready.

### Reliability & Performance

| What We Handle | How |
|---|---|
| Rate-limit style failures | Retries and fallbacks to improve success rates |
| Unavailable resolution matches | Selects the closest available resolution when the exact one isn’t found |
| Long-running jobs | Storage upload can take longer—plan for extra time when enabled |
| Failed downloads | Re-run only the failed URL(s) when a download fails |

Limitations: the actor focuses on processing provided video URLs and extracting available formats. Private, login-gated content isn’t within scope, so results depend on what’s publicly accessible for each video.

For enterprise-scale runs, contact us to discuss custom configurations.

### Frequently Asked Questions

#### Is there a free plan or trial?

Yes—Apify provides a free tier to help you test **YouTube Video Downloader** before scaling up. You’ll be able to run small batches and inspect the output in the dataset tab.

#### Do I need to log in to YouTube to use this?

No. This actor processes the video URLs you provide and extracts available download options and metadata without requiring a YouTube login in your workflow.

#### How accurate is the data?

The output is based on what the actor can extract for each provided `video_url`. Fields like `title`, `author`, `thumbnail`, `duration`, and the selected `downloadable_video_link` / `downloadable_audio_link` reflect what’s available through the extraction process.

#### How many results can I get per run?

You control how many URLs you process by how many items you include in `video_urls` for that run. There’s no single hardcoded “results per run” limit described in the actor’s input schema—your batch size determines output volume.

#### How often is the data updated / how fresh is it?

Each run generates fresh results for the URLs you submit at run time. If you want updated links or refreshed metadata, re-run the actor with your video URLs.

#### Is this legal? Does it comply with GDPR / CCPA?

The actor is designed to work with **publicly available data** for the provided video URLs. You are responsible for compliance with GDPR, CCPA, applicable platform terms, and any local regulations when using or storing the results.

#### Can I export results to Google Sheets or Excel?

Yes. You can export from the Apify dataset as JSON, CSV, or Excel. For pushing into Google Sheets specifically, you can use Apify integrations and automation workflows described in Apify’s documentation.

#### Can I run this on a schedule automatically?

Yes—Apify supports automated execution patterns, including scheduling via Apify tooling. Use the Apify documentation for the exact scheduling method that fits your use case.

#### Can I access this via API?

Yes. You can trigger and retrieve results programmatically using the Apify API (https://apify.com/docs/api).

#### What happens if the actor hits an error?

If a video fails during processing, the actor records a failure object with `status: "FAILED_PROCESSING"` and includes the `error` message. For failed downloads (especially long videos), the input description recommends re-running with the failed URL(s), which usually works on the second try.

### Need Help or Have a Request?

Got a question about **YouTube Video Downloader** or want a new feature added? Reach out at <dataforleads@gmail.com>. We respond quickly and actively maintain this actor based on user feedback—ideas like batch CSV upload or webhook notifications on completion are always welcome.

### Disclaimer & Responsible Use

*YouTube Video Downloader is the fastest, most reliable way to get download links and ready-to-use video metadata from YouTube—start your free run today.*

This actor accesses **publicly available data** for the provided YouTube video URLs. It does not access private accounts, login-gated content, or password-protected pages. You’re responsible for complying with GDPR, CCPA, platform Terms of Service, and any applicable local regulations. For data-removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

# Actor input Schema

## `video_urls` (type: `array`):

List of YouTube video URLs to process.

## `desired_resolution` (type: `string`):

Select the desired resolution: 8K, 4K, 2K, 1080p, 720p, 480p, or 360p.

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

Configure proxies for this Actor. If no proxy is selected, the actor will automatically use RESIDENTIAL proxy to bypass YouTube bot detection (recommended). Only Residential (default) and Own proxies are available.

## `upload_video_to_apify` (type: `boolean`):

Toggle this option to upload the 360p video to Apify storage (this may be slow).

## Actor input object example

```json
{
  "video_urls": [
    {
      "url": "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz"
    },
    {
      "url": "https://youtu.be/aoBrCkinq88?si=WAzndltEQm531aAO"
    },
    {
      "url": "https://youtube.com/shorts/s9YG00vZ09c?si=fMtwzCARAHbcuJQu"
    }
  ],
  "desired_resolution": "2k",
  "upload_video_to_apify": false
}
```

# 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 = {
    "video_urls": [
        {
            "url": "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz"
        },
        {
            "url": "https://youtu.be/aoBrCkinq88?si=WAzndltEQm531aAO"
        },
        {
            "url": "https://youtube.com/shorts/s9YG00vZ09c?si=fMtwzCARAHbcuJQu"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/youtube-video-downloader").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 = { "video_urls": [
        { "url": "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz" },
        { "url": "https://youtu.be/aoBrCkinq88?si=WAzndltEQm531aAO" },
        { "url": "https://youtube.com/shorts/s9YG00vZ09c?si=fMtwzCARAHbcuJQu" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scraperoka/youtube-video-downloader").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 '{
  "video_urls": [
    {
      "url": "https://youtu.be/YZ84iQrbYjw?si=_8-Y64fWSGA82dOz"
    },
    {
      "url": "https://youtu.be/aoBrCkinq88?si=WAzndltEQm531aAO"
    },
    {
      "url": "https://youtube.com/shorts/s9YG00vZ09c?si=fMtwzCARAHbcuJQu"
    }
  ]
}' |
apify call scraperoka/youtube-video-downloader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Youtube Video Downloader",
        "description": "📥 Download YouTube videos fast with our YouTube Video Downloader! ✅ Save in MP4/MP3, high quality options, and simple steps. 🚀 Perfect for offline viewing, sharing, and learning—no hassle, just quick results! 🌟",
        "version": "1.3",
        "x-build-id": "0cIJCaOb2R3htdaAa"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperoka~youtube-video-downloader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperoka-youtube-video-downloader",
                "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/scraperoka~youtube-video-downloader/runs": {
            "post": {
                "operationId": "runs-sync-scraperoka-youtube-video-downloader",
                "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/scraperoka~youtube-video-downloader/run-sync": {
            "post": {
                "operationId": "run-sync-scraperoka-youtube-video-downloader",
                "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": [
                    "video_urls"
                ],
                "properties": {
                    "video_urls": {
                        "title": "YouTube Video URLs",
                        "type": "array",
                        "description": "List of YouTube video URLs to process.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "desired_resolution": {
                        "title": "Desired Resolution",
                        "enum": [
                            "8k",
                            "4k",
                            "2k",
                            "1080p",
                            "720p",
                            "480p",
                            "360p"
                        ],
                        "type": "string",
                        "description": "Select the desired resolution: 8K, 4K, 2K, 1080p, 720p, 480p, or 360p.",
                        "default": "2k"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration (Optional)",
                        "type": "object",
                        "description": "Configure proxies for this Actor. If no proxy is selected, the actor will automatically use RESIDENTIAL proxy to bypass YouTube bot detection (recommended). Only Residential (default) and Own proxies are available."
                    },
                    "upload_video_to_apify": {
                        "title": "Upload Video to Storage",
                        "type": "boolean",
                        "description": "Toggle this option to upload the 360p video to Apify storage (this may be slow).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
