# YouTube 4K Video Downloader + Full Metadata (`sian.agency/youtube-4k-video-downloader-full-metadata`) Actor

Download YouTube videos (360p-4K) with best video + audio quality links, full metadata, captions & streams. Supports all URL formats. FREE: 5 URLs/run. Pay per success only.

- **URL**: https://apify.com/sian.agency/youtube-4k-video-downloader-full-metadata.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Videos, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 youtube video downloadeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## YouTube 4K Video Downloader — Best Quality Links + Full Metadata 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store-YouTube%20Shorts%20Transcript](https://img.shields.io/badge/Store-YouTube%20Shorts%20Transcript-FF0000)](https://apify.com/sian.agency/youtube-shorts-ai-transcript-and-metadata-extractor?fpr=sian) [![Store-YouTube%20Video%20Intelligence](https://img.shields.io/badge/Store-YouTube%20Video%20Intelligence-FF0000)](https://apify.com/sian.agency/youtube-video-360-intelligence?fpr=sian) [![Store-YouTube%20Channel%20Intelligence](https://img.shields.io/badge/Store-YouTube%20Channel%20Intelligence-FF0000)](https://apify.com/sian.agency/youtube-channel-360-intelligence?fpr=sian)

#### 🎉 Best 4K + audio download links + complete metadata in one call. Pay only for videos that actually deliver working links.
##### Built for automation teams, media companies, researchers, and developers who need reliable, high-quality YouTube downloads at scale.

---

### 📋 Overview

**The YouTube 4K Video Downloader is built for people who need the highest quality download links without the headache.** Paste any YouTube URL and get the single best video stream + best audio stream surfaced as clean top-level fields, plus full metadata, captions, and every available format — optimized for bulk jobs and automation pipelines.

Unlike other downloaders that force you to dig through complex adaptiveFormats arrays or return low-quality progressive streams, this actor always gives you the highest resolution video-only and highest bitrate audio-only links ready to use.

**Why thousands of professionals choose us:**
- ✅ **Best Quality Links on Top**: `bestVideoDownloadUrl` and `bestAudioDownloadUrl` always contain the single highest quality streams available (up to 4K)
- ⚡ **Bulk + Automation Ready**: Process hundreds of URLs per run with clean JSON perfect for Zapier, Make, n8n, and custom pipelines
- 🎯 **Full Metadata Included**: Title, description, channel, views, keywords, captions availability, thumbnails, and all formats
- 💰 **Pay Per Success Only**: Charged solely for videos that return working download links — never pay for private, removed, or failed videos
- ✨ **True 4K + Adaptive Support**: Highest resolution video streams plus best audio-only tracks for post-production and archiving
- 📦 **No Software Needed**: Runs in the cloud. Get structured data + direct download links instantly via API or Apify Console

---

### ✨ Features

- 🎬 **Best Quality Download Links**: Top-level `bestVideoDownloadUrl` and `bestAudioDownloadUrl` fields — the single best video and audio streams available (no manual merging needed)
- 📹 **True 4K + Adaptive Support**: Access highest resolution video streams (up to 4K) plus all adaptive formats
- 🎧 **Best Audio Extraction**: Dedicated best audio-only stream link (AAC/Opus) for podcasts, music, and transcription workflows
- 📝 **Captions & Metadata Included**: Full list of available subtitle languages + rich video metadata (title, description, channel, views, keywords, thumbnails)
- ⚡ **Bulk & Automation Ready**: Process hundreds of URLs per run. Clean, structured JSON output designed for Zapier, Make, n8n, and custom pipelines
- 💰 **Pay Only for Success**: Charged per successfully downloaded video only — zero cost for private, removed, or failed videos
- 🌐 **Universal URL Support**: Works with youtube.com/watch, youtu.be, Shorts, embeds, mobile links, and more
- 📦 **No Software or Accounts Needed**: Cloud-based. Get direct download links + metadata instantly via API or Apify console

---

### 🎬 Quick Start

Paste a YouTube URL and get the single best 4K/1080p video + best audio download links plus full metadata in clean JSON.

```bash
curl -X POST "https://api.apify.com/v2/acts/sian.agency~youtube-4k-video-downloader-full-metadata/runs?token=YOUR_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Add your URLs

Paste a single YouTube URL, add multiple URLs in the bulk field, or provide a remote CSV/TXT file URL.

#### Step 2: Run the actor

Click **Start**. The actor validates each URL, fetches the best download links and metadata, and skips anything unavailable.

#### Step 3: Export your data

Download results as JSON, CSV, or Excel — or pull them via the Apify API / webhooks.

**That's it! In under a minute, you'll have:**

- Direct best-quality video and audio download links
- Complete metadata for each video (title, description, views, keywords, captions)
- A ready-to-use dataset for your workflow or automation

***

### 📥 Input Configuration

You can provide YouTube URLs in three different ways:

| Field              | Type   | Best For                              | Description |
|--------------------|--------|---------------------------------------|-------------|
| `youtubeUrl`       | string | Single video / testing                | One YouTube video URL |
| `bulkUrls`         | array  | Manual bulk jobs (recommended for most users) | Paste URLs or upload a local CSV/TXT file in the UI. Best for up to a few thousand URLs. |
| `requestsFromUrl`  | string | Large lists, automation & recurring runs | URL to a remote file (`.txt`, `.csv`, or JSON) hosted on Google Sheets, GitHub, S3, etc. The actor downloads the file at runtime. |

#### When to use which method?

- **`bulkUrls`** — Use this for most normal bulk jobs. It has the best UI experience (paste + local file upload).
- **`requestsFromUrl`** — Use this when:
  - You have thousands of URLs
  - Your list is stored in Google Sheets, GitHub, or another hosted location
  - You want to update the list without editing the actor input
  - You're triggering the actor from automation tools or running it on a schedule

**Single URL example:**

```json
{
  "youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"
}
```

**Bulk URLs example:**

```json
{
  "bulkUrls": [
    "https://www.youtube.com/watch?v=arj7oStGLkU",
    "https://youtu.be/9bZkp7q19f0",
    "https://www.youtube.com/shorts/abc123XYZ45"
  ]
}
```

**Remote file example (`requestsFromUrl`):**

```json
{
  "requestsFromUrl": "https://docs.google.com/spreadsheets/d/.../export?format=csv"
}
```

> **Tip:** `requestsFromUrl` is especially powerful for scheduled runs. Update your Google Sheet or file, and the next scheduled run will automatically use the latest list.

#### Supported URL Formats

| Format | Example |
|--------|---------|
| Standard | `https://www.youtube.com/watch?v=arj7oStGLkU` |
| Short link | `https://youtu.be/arj7oStGLkU` |
| Shorts | `https://www.youtube.com/shorts/arj7oStGLkU` |
| Embed | `https://www.youtube.com/embed/arj7oStGLkU` |
| Old format | `https://www.youtube.com/v/arj7oStGLkU` |
| Mobile | `https://m.youtube.com/watch?v=arj7oStGLkU` |

***

### 📤 Output

Each processed video is saved to the Apify dataset with direct **best-quality** download links (highest resolution video + highest bitrate audio) plus the full set of streams and metadata.

> **Note:** Download links are time-limited (they typically expire within a few hours). Download your files promptly after the run, or simply re-run the actor to generate fresh links.

| Field | Type | Description |
|-------|------|-------------|
| `videoId` | string | YouTube video identifier (11 characters) |
| `title` | string | Video title |
| `bestVideoDownloadUrl` | string | **Best video quality** — highest resolution video-only stream available (often 4K) |
| `bestAudioDownloadUrl` | string | **Best audio quality** — highest bitrate audio-only stream available |
| `downloadUrl` | string | Easy one-file download — best combined video+audio progressive stream |
| `description` | string | Full video description |
| `lengthSeconds` | string | Video duration in seconds |
| `channelTitle` | string | Channel name |
| `channelId` | string | Channel identifier |
| `keywords` | array | Video tags / keywords |
| `thumbnailUrl` | string | Highest-resolution thumbnail URL |
| `viewCount` | string | Total view count |
| `isPrivate` | boolean | Whether the video is private |
| `isLiveContent` | boolean | Whether the video is / was a live stream |
| `availableCaptions` | array | Available subtitle language codes |
| `formats` | array | Combined video+audio streams — ready for direct download |
| `adaptiveFormats` | array | Separate video-only and audio-only streams (up to 4K) |
| `sourceUrl` | string | Original input URL |
| `status` | string | Processing status (`success` or `error`) |

**Example:**

```json
{
  "videoId": "arj7oStGLkU",
  "title": "Inside the Mind of a Master Procrastinator | Tim Urban | TED",
  "bestVideoDownloadUrl": "https://redirector.googlevideo.com/videoplayback?...",
  "bestAudioDownloadUrl": "https://redirector.googlevideo.com/videoplayback?...",
  "downloadUrl": "https://redirector.googlevideo.com/videoplayback?...",
  "description": "Tim Urban knows that procrastination doesn't make sense...",
  "lengthSeconds": "844",
  "channelTitle": "TED",
  "keywords": ["TED Talk", "Tim Urban", "procrastination"],
  "thumbnailUrl": "https://i.ytimg.com/vi/arj7oStGLkU/sddefault.jpg",
  "viewCount": "61101438",
  "availableCaptions": ["en", "es", "de"],
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Content Archiving

**Media libraries and creators preserving reference videos with direct high-quality links and complete metadata.**

**Input:** A list of important video URLs\
**Output:** Best quality download links + full metadata + captions\
**Use:** Build a searchable, downloadable archive before videos disappear or get taken down.

#### 2. Media Production & Editing

**Video editors and post-production teams who need specific resolutions and clean audio tracks.**

**Input:** Video URLs for a project\
**Output:** Highest resolution video-only streams + best audio-only tracks\
**Use:** Pull exact 4K or 1080p video and separate high-quality audio for professional editing workflows.

#### 3. Research & Analysis

**Researchers and analysts extracting metadata, keywords, and caption availability at scale.**

**Input:** Hundreds or thousands of URLs via CSV or Google Sheets\
**Output:** Structured metadata including views, keywords, duration, and caption languages\
**Use:** Analyze trends, compare channels, or build datasets for academic or market research.

#### 4. Automation & Repurposing Pipelines

**Developers and no-code users feeding fresh YouTube content into downstream tools.**

**Input:** URLs triggered from schedules, webhooks, or other apps\
**Output:** Clean JSON with direct download links and metadata\
**Use:** Automatically send new videos into transcription tools, archives, or content repurposing systems via Zapier, Make, or n8n.

#### 5. Subtitle & Localization Workflows

**Localization teams checking caption availability before committing to translation.**

**Input:** Batches of video URLs from a channel or campaign\
**Output:** `availableCaptions` array for every video\
**Use:** Quickly identify which languages are already available and prioritize translation work.

#### 6. Channel Auditing & Competitive Analysis

**Marketers and agencies benchmarking a channel's full video catalog.**

**Input:** All video URLs from a YouTube channel\
**Output:** View counts, durations, keywords, and metadata in bulk\
**Use:** Analyze performance, content strategy, and metadata patterns across an entire channel.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/youtube-4k-video-downloader-full-metadata').call({
  youtubeUrl: 'https://www.youtube.com/watch?v=arj7oStGLkU'
});

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

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/youtube-4k-video-downloader-full-metadata').call(
    run_input={'youtubeUrl': 'https://www.youtube.com/watch?v=arj7oStGLkU'}
)

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

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~youtube-4k-video-downloader-full-metadata/runs?token=YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"}'
```

#### Automation Workflows (Zapier / Make / n8n)

1. **Trigger**: Schedule, new row in Google Sheets, or webhook
2. **HTTP Request**: Start the actor run via the Apify API
3. **Process**: Handle the JSON dataset results
4. **Action**: Download files, send to transcription service, or store in your database

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Up to 5 URLs** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** URLs per run
- Faster processing, no delays
- Pay-per-result: only charged for successfully downloaded videos

💰 **Transparent pay-per-success pricing** — failed, private, or unavailable videos are never charged.

🔗 [View current pricing](https://apify.com/sian.agency/youtube-4k-video-downloader-full-metadata?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many videos can I process?**
A: FREE tier: 5 per run. PAID tier: unlimited.

**Q: Do I get the absolute best quality available?**
A: Yes. The actor always returns the single highest resolution video-only stream and highest bitrate audio-only stream as top-level fields (`bestVideoDownloadUrl` and `bestAudioDownloadUrl`).

**Q: Can I download private or age-restricted videos?**
A: No. Only publicly accessible YouTube videos can be processed.

**Q: How long do the download links stay valid?**
A: Download links are temporary and typically expire within a few hours. Process and download promptly.

**Q: What video qualities are available?**
A: The top-level best quality fields give you the highest available. The full `adaptiveFormats` array (with every resolution up to 4K) is also included.

**Q: Can I get audio only?**
A: Yes. Use the `bestAudioDownloadUrl` field for the highest quality audio-only stream.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: What happens if a URL fails?**
A: It is saved with an `error` status and a clear message. You are **not** charged for failed videos.

***

### 🐛 Troubleshooting

**No results or empty dataset**

- Confirm the video is public (private, removed, and age-restricted videos can't be processed)
- Check that the URL is a valid YouTube format

**Download links return errors when opened**

- Links are time-limited — re-run the actor to generate fresh links

**Only 5 URLs processed**

- That's the FREE tier limit — upgrade to PAID for unlimited URLs per run

**Best quality links are lower than expected**

- The actor returns the highest quality the upstream source provides for that specific video. Some older or restricted videos simply don't have 4K available.

***

### ⚖️ Is it legal to scrape data?

Our actors 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 actors, 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** 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 Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's Issues tab
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `youtubeUrl` (type: `string`):

Paste any YouTube video URL to extract download links and metadata.

Supported formats:

- https://www.youtube.com/watch?v=VIDEO\_ID
- https://youtu.be/VIDEO\_ID
- https://www.youtube.com/shorts/VIDEO\_ID
- https://www.youtube.com/embed/VIDEO\_ID
- https://www.youtube.com/v/VIDEO\_ID
- https://m.youtube.com/watch?v=VIDEO\_ID

## `bulkUrls` (type: `array`):

Process multiple YouTube videos in one run. Best choice for most manual bulk jobs.

You can paste a list of URLs or upload a local CSV / TXT file directly in the UI.

Recommended when working with up to a few thousand URLs.

FREE tier: 5 URLs/run | PAID tier: Unlimited URLs/run

## `requestsFromUrl` (type: `string`):

URL pointing to a remote file (.txt, .csv, or JSON array) that contains YouTube video URLs. The actor will download and parse this file at the start of the run.

Use this instead of bulkUrls when:

- You have a very large list (thousands of URLs)
- Your list lives in Google Sheets, GitHub, S3, or any publicly accessible URL
- You want to update the list externally without changing the actor input
- You run the actor on a schedule or trigger it from automation tools (Make, Zapier, n8n, etc.)

This is the best option for recurring, automated, or very large-scale jobs.

## Actor input object example

```json
{
  "youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"
}
```

# Actor output Schema

## `youtubeVideos` (type: `string`):

Processed YouTube videos with download links in multiple qualities, metadata, audio streams, and caption information

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics and processing statistics

# 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 = {
    "youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/youtube-4k-video-downloader-full-metadata").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 = { "youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU" }

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/youtube-4k-video-downloader-full-metadata").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 '{
  "youtubeUrl": "https://www.youtube.com/watch?v=arj7oStGLkU"
}' |
apify call sian.agency/youtube-4k-video-downloader-full-metadata --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "YouTube 4K Video Downloader + Full Metadata",
        "description": "Download YouTube videos (360p-4K) with best video + audio quality links, full metadata, captions & streams. Supports all URL formats. FREE: 5 URLs/run. Pay per success only.",
        "version": "1.0",
        "x-build-id": "kzYJ8kml3ok8EGhae"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~youtube-4k-video-downloader-full-metadata/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-youtube-4k-video-downloader-full-metadata",
                "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/sian.agency~youtube-4k-video-downloader-full-metadata/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-youtube-4k-video-downloader-full-metadata",
                "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/sian.agency~youtube-4k-video-downloader-full-metadata/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-youtube-4k-video-downloader-full-metadata",
                "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",
                "properties": {
                    "youtubeUrl": {
                        "title": "Single YouTube Video URL",
                        "pattern": "^(https?:\\/\\/)?(www\\.|m\\.)?(youtube\\.com\\/(watch\\?.*v=|shorts\\/|embed\\/|v\\/)|youtu\\.be\\/)[A-Za-z0-9_-]{11}",
                        "type": "string",
                        "description": "Paste any YouTube video URL to extract download links and metadata.\n\nSupported formats:\n- https://www.youtube.com/watch?v=VIDEO_ID\n- https://youtu.be/VIDEO_ID\n- https://www.youtube.com/shorts/VIDEO_ID\n- https://www.youtube.com/embed/VIDEO_ID\n- https://www.youtube.com/v/VIDEO_ID\n- https://m.youtube.com/watch?v=VIDEO_ID"
                    },
                    "bulkUrls": {
                        "title": "Bulk URLs (Multiple Videos)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Process multiple YouTube videos in one run. Best choice for most manual bulk jobs.\n\nYou can paste a list of URLs or upload a local CSV / TXT file directly in the UI.\n\nRecommended when working with up to a few thousand URLs.\n\nFREE tier: 5 URLs/run | PAID tier: Unlimited URLs/run",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "requestsFromUrl": {
                        "title": "URL List File (Remote)",
                        "pattern": "^https?://",
                        "type": "string",
                        "description": "URL pointing to a remote file (.txt, .csv, or JSON array) that contains YouTube video URLs. The actor will download and parse this file at the start of the run.\n\nUse this instead of bulkUrls when:\n- You have a very large list (thousands of URLs)\n- Your list lives in Google Sheets, GitHub, S3, or any publicly accessible URL\n- You want to update the list externally without changing the actor input\n- You run the actor on a schedule or trigger it from automation tools (Make, Zapier, n8n, etc.)\n\nThis is the best option for recurring, automated, or very large-scale jobs."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
