Nimbryxo Studio

YouTube Video, Playlist & Channel Downloader with Metadata

Download YouTube videos from direct links, playlists, channels, or search phrases at your chosen quality, with a public file link plus title, stats, description and subtitles per video.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredWhat to return: metadata only, media files, or caption files without media.
videoUrlsarrayoptionalDirect YouTube video, Shorts, live-replay, or youtu.be URLs, or 11-character video IDs.
playlistUrlsarrayoptionalYouTube playlist URLs. Videos are expanded up to maxVideos in total.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredWhat to return: metadata only, media files, or caption files without media.
videoUrlsarrayoptionalDirect YouTube video, Shorts, live-replay, or youtu.be URLs, or 11-character video IDs.
playlistUrlsarrayoptionalYouTube playlist URLs. Videos are expanded up to maxVideos in total.
channelUrlsarrayoptionalYouTube channel URLs, @handles, or UC channel IDs. The Videos tab is used.
searchQueriesarrayoptionalYouTube search phrases. Each query resolves public results up to maxVideos in total.
videoQualitystringoptionalSDR target quality. 360p-1080p prefer H.264/AAC MP4. 1440p and 2160p require allow4K and are delivered with their real codec and container.
containerstringoptionalAuto uses MP4 H.264/AAC when available and MKV for VP9/AV1. Explicit MP4 never relabels AV1/Opus content as MP4; if no compatible stream exists the video gets a failure row.
audioOnlybooleanoptionalDownload the source audio track without video and without re-encoding.
audioFormatstringoptionalSource audio passthrough format used when audioOnly is enabled.
downloadSubtitlesbooleanoptionalFetch available manual or automatic captions for the requested languages.
subtitleLanguagesarrayoptionalCaption language codes to request. Only tracks that already exist on the video are used; translations are not promised.
subtitleFormatstringoptionalFile format for downloaded captions.
includeTranscriptbooleanoptionalAdd a plain-text transcript from the first requested caption track.
maxVideosintegeroptionalTotal videos processed across all inputs.
maxMinutesintegeroptionalReject a video before download when its duration exceeds this cap. 4K opt-in downloads are additionally capped at 10 minutes.
maxMBintegeroptionalReject oversized downloads. Values above 500 are only used for 4K opt-in downloads, which are capped at 1000 MB.
allow4KbooleanoptionalEnable 1440p/2160p SDR downloads. These are capped at 10 minutes and 1000 MB and may use MKV with VP9/AV1 because YouTube rarely serves H.264 above 1080p.
storagestringoptionalWhere downloaded files are written. Named KVS persists while the store exists; ephemeral KVS follows your Apify account retention.
kvsNamestringoptionalNamed key-value store name when storage=named_kvs. Defaults to youtube-downloader.
storageRetentionDaysintegeroptionalSigned-link lifetime for S3/R2 storage (1-7 days). KVS retention is controlled by your Apify account.
s3BucketstringoptionalBucket name when storage=s3.
s3PrefixstringoptionalObject key prefix when storage=s3.
s3EndpointstringoptionalCustom endpoint for S3-compatible storage such as Cloudflare R2.
s3RegionstringoptionalRegion for S3 or S3-compatible storage.
s3AccessKeyIdstringoptionalOptional access key ID when storage=s3.
s3SecretAccessKeystringoptionalOptional secret access key when storage=s3.
s3PublicBaseUrlstringoptionalOptional public bucket URL. When set, files use public URLs instead of expiring presigned URLs.
cookiesstringoptionalOptional cookies.txt content for age-restricted or members-only videos. Public videos work without cookies.
proxyConfigurationobjectoptionalOptional. Metadata and player extraction use this connection; media bytes are downloaded directly.

Download the published input schema

View complete JSON
{
  "description": "Download metadata, video, audio, or captions for YouTube content you own or are authorized to download.",
  "properties": {
    "allow4K": {
      "default": false,
      "description": "Enable 1440p/2160p SDR downloads. These are capped at 10 minutes and 1000 MB and may use MKV with VP9/AV1 because YouTube rarely serves H.264 above 1080p.",
      "prefill": false,
      "title": "Allow 4K",
      "type": "boolean"
    },
    "audioFormat": {
      "default": "m4a",
      "description": "Source audio passthrough format used when audioOnly is enabled.",
      "editor": "select",
      "enum": [
        "m4a",
        "opus"
      ],
      "enumTitles": [
        "M4A (AAC passthrough)",
        "Opus (passthrough)"
      ],
      "prefill": "m4a",
      "title": "Audio Format",
      "type": "string"
    },
    "audioOnly": {
      "default": false,
      "description": "Download the source audio track without video and without re-encoding.",
      "prefill": false,
      "title": "Audio Only",
      "type": "boolean"
    },
    "channelUrls": {
      "default": [],
      "description": "YouTube channel URLs, @handles, or UC channel IDs. The Videos tab is used.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Channel URLs",
      "type": "array"
    },
    "container": {
      "default": "auto",
      "description": "Auto uses MP4 H.264/AAC when available and MKV for VP9/AV1. Explicit MP4 never relabels AV1/Opus content as MP4; if no compatible stream exists the video gets a failure row.",
      "editor": "select",
      "enum": [
        "auto",
        "mp4",
        "webm",
        "mkv"
      ],
      "enumTitles": [
        "Auto (compatible first)",
        "MP4 (H.264/AAC)",
        "WebM (VP9/AV1 + Opus)",
        "MKV (any codec)"
      ],
      "prefill": "auto",
      "title": "Container",
      "type": "string"
    },
    "cookies": {
      "description": "Optional cookies.txt content for age-restricted or members-only videos. Public videos work without cookies.",
      "editor": "textarea",
      "isSecret": true,
      "title": "Cookies (Netscape format)",
      "type": "string"
    },
    "downloadSubtitles": {
      "default": false,
      "description": "Fetch available manual or automatic captions for the requested languages.",
      "prefill": false,
      "title": "Download Subtitles",
      "type": "boolean"
    },
    "includeTranscript": {
      "default": false,
      "description": "Add a plain-text transcript from the first requested caption track.",
      "prefill": false,
      "title": "Include Transcript Text",
      "type": "boolean"
    },
    "kvsName": {
      "default": "",
      "description": "Named key-value store name when storage=named_kvs. Defaults to youtube-downloader.",
      "editor": "textfield",
      "prefill": "",
      "title": "KVS Name",
      "type": "string"
    },
    "maxMB": {
      "default": 500,
      "description": "Reject oversized downloads. Values above 500 are only used for 4K opt-in downloads, which are capped at 1000 MB.",
      "maximum": 1000,
      "minimum": 1,
      "prefill": 100,
      "title": "Max MB Per Video",
      "type": "integer"
    },
    "maxMinutes": {
      "default": 30,
      "description": "Reject a video before download when its duration exceeds this cap. 4K opt-in downloads are additionally capped at 10 minutes.",
      "maximum": 30,
      "minimum": 1,
      "prefill": 30,
      "title": "Max Minutes Per Video",
      "type": "integer"
    },
    "maxVideos": {
      "default": 10,
      "description": "Total videos processed across all inputs.",
      "maximum": 50,
      "minimum": 1,
      "prefill": 1,
      "title": "Max Videos",
      "type": "integer"
    },
    "mode": {
      "default": "metadata",
      "description": "What to return: metadata only, media files, or caption files without media.",
      "editor": "select",
      "enum": [
        "metadata",
        "download",
        "subtitles"
      ],
      "enumTitles": [
        "Metadata only",
        "Download media",
        "Subtitles only"
      ],
      "prefill": "metadata",
      "title": "Mode",
      "type": "string"
    },
    "playlistUrls": {
      "default": [],
      "description": "YouTube playlist URLs. Videos are expanded up to maxVideos in total.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Playlist URLs",
      "type": "array"
    },
    "proxyConfiguration": {
      "default": {
        "useApifyProxy": true
      },
      "description": "Optional. Metadata and player extraction use this connection; media bytes are downloaded directly.",
      "editor": "proxy",
      "prefill": {
        "useApifyProxy": true
      },
      "title": "Proxy Configuration",
      "type": "object"
    },
    "s3AccessKeyId": {
      "description": "Optional access key ID when storage=s3.",
      "editor": "textfield",
      "isSecret": true,
      "title": "S3 Access Key ID",
      "type": "string"
    },
    "s3Bucket": {
      "description": "Bucket name when storage=s3.",
      "editor": "textfield",
      "title": "S3 Bucket",
      "type": "string"
    },
    "s3Endpoint": {
      "description": "Custom endpoint for S3-compatible storage such as Cloudflare R2.",
      "editor": "textfield",
      "title": "S3 Endpoint",
      "type": "string"
    },
    "s3Prefix": {
      "default": "youtube-downloader",
      "description": "Object key prefix when storage=s3.",
      "editor": "textfield",
      "prefill": "youtube-downloader",
      "title": "S3 Prefix",
      "type": "string"
    },
    "s3PublicBaseUrl": {
      "description": "Optional public bucket URL. When set, files use public URLs instead of expiring presigned URLs.",
      "editor": "textfield",
      "title": "S3 Public Base URL",
      "type": "string"
    },
    "s3Region": {
      "default": "auto",
      "description": "Region for S3 or S3-compatible storage.",
      "editor": "textfield",
      "prefill": "auto",
      "title": "S3 Region",
      "type": "string"
    },
    "s3SecretAccessKey": {
      "description": "Optional secret access key when storage=s3.",
      "editor": "textfield",
      "isSecret": true,
      "title": "S3 Secret Access Key",
      "type": "string"
    },
    "searchQueries": {
      "default": [],
      "description": "YouTube search phrases. Each query resolves public results up to maxVideos in total.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Search Queries",
      "type": "array"
    },
    "storage": {
      "default": "ephemeral_kvs",
      "description": "Where downloaded files are written. Named KVS persists while the store exists; ephemeral KVS follows your Apify account retention.",
      "editor": "select",
      "enum": [
        "ephemeral_kvs",
        "named_kvs",
        "s3"
      ],
      "enumTitles": [
        "Ephemeral Apify KVS",
        "Named Apify KVS",
        "S3 or S3-compatible (R2)"
      ],
      "prefill": "ephemeral_kvs",
      "title": "Storage",
      "type": "string"
    },
    "storageRetentionDays": {
      "default": 7,
      "description": "Signed-link lifetime for S3/R2 storage (1-7 days). KVS retention is controlled by your Apify account.",
      "maximum": 7,
      "minimum": 1,
      "prefill": 7,
      "title": "Storage Retention Days",
      "type": "integer"
    },
    "subtitleFormat": {
      "default": "vtt",
      "description": "File format for downloaded captions.",
      "editor": "select",
      "enum": [
        "vtt",
        "srt"
      ],
      "enumTitles": [
        "WebVTT (.vtt)",
        "SubRip (.srt)"
      ],
      "prefill": "vtt",
      "title": "Subtitle Format",
      "type": "string"
    },
    "subtitleLanguages": {
      "default": [
        "en"
      ],
      "description": "Caption language codes to request. Only tracks that already exist on the video are used; translations are not promised.",
      "editor": "select",
      "items": {
        "enum": [
          "en",
          "en-US",
          "en-GB",
          "es",
          "es-419",
          "pt",
          "pt-BR",
          "fr",
          "de",
          "it",
          "nl",
          "pl",
          "ru",
          "uk",
          "tr",
          "ar",
          "fa",
          "he",
          "hi",
          "bn",
          "ta",
          "te",
          "mr",
          "ur",
          "gu",
          "kn",
          "ml",
          "pa",
          "zh-Hans",
          "zh-Hant",
          "ja",
          "ko",
          "vi",
          "th",
          "id",
          "ms",
          "fil",
          "sv",
          "no",
          "da",
          "fi",
          "cs",
          "sk",
          "hu",
          "ro",
          "bg",
          "el",
          "hr",
          "sr",
          "sl",
          "lt",
          "lv",
          "et",
          "is",
          "sq",
          "mk",
          "bs",
          "ca",
          "gl",
          "eu",
          "af",
          "sw",
          "am",
          "km",
          "lo",
          "my",
          "ne",
          "si",
          "ka",
          "hy",
          "az",
          "kk",
          "ky",
          "uz",
          "mn",
          "mt",
          "cy",
          "ga"
        ],
        "enumTitles": [
          "English",
          "English (US)",
          "English (UK)",
          "Spanish",
          "Spanish (Latin America)",
          "Portuguese",
          "Portuguese (Brazil)",
          "French",
          "German",
          "Italian",
          "Dutch",
          "Polish",
          "Russian",
          "Ukrainian",
          "Turkish",
          "Arabic",
          "Persian",
          "Hebrew",
          "Hindi",
          "Bengali",
          "Tamil",
          "Telugu",
          "Marathi",
          "Urdu",
          "Gujarati",
          "Kannada",
          "Malayalam",
          "Punjabi",
          "Chinese (Simplified)",
          "Chinese (Traditional)",
          "Japanese",
          "Korean",
          "Vietnamese",
          "Thai",
          "Indonesian",
          "Malay",
          "Filipino",
          "Swedish",
          "Norwegian",
          "Danish",
          "Finnish",
          "Czech",
          "Slovak",
          "Hungarian",
          "Romanian",
          "Bulgarian",
          "Greek",
          "Croatian",
          "Serbian",
          "Slovenian",
          "Lithuanian",
          "Latvian",
          "Estonian",
          "Icelandic",
          "Albanian",
          "Macedonian",
          "Bosnian",
          "Catalan",
          "Galician",
          "Basque",
          "Afrikaans",
          "Swahili",
          "Amharic",
          "Khmer",
          "Lao",
          "Burmese",
          "Nepali",
          "Sinhala",
          "Georgian",
          "Armenian",
          "Azerbaijani",
          "Kazakh",
          "Kyrgyz",
          "Uzbek",
          "Mongolian",
          "Maltese",
          "Welsh",
          "Irish"
        ],
        "type": "string"
      },
      "prefill": [
        "en"
      ],
      "title": "Subtitle Languages",
      "type": "array"
    },
    "videoQuality": {
      "default": "720p",
      "description": "SDR target quality. 360p-1080p prefer H.264/AAC MP4. 1440p and 2160p require allow4K and are delivered with their real codec and container.",
      "editor": "select",
      "enum": [
        "360p",
        "480p",
        "720p",
        "1080p",
        "1440p",
        "2160p",
        "best"
      ],
      "enumTitles": [
        "360p",
        "480p",
        "720p (default)",
        "1080p",
        "1440p (requires allow4K)",
        "2160p / 4K (requires allow4K)",
        "Best available (capped at 1080p unless allow4K)"
      ],
      "prefill": "360p",
      "title": "Video Quality",
      "type": "string"
    },
    "videoUrls": {
      "default": [],
      "description": "Direct YouTube video, Shorts, live-replay, or youtu.be URLs, or 11-character video IDs.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "https://www.youtube.com/watch?v=jNQXAC9IVRw"
      ],
      "title": "Video URLs",
      "type": "array"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "YouTube Video Downloader Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
videosstringoptionalDataset containing one row per video, subtitle-only result, or failure.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "YouTube video metadata, media files, captions, transcripts, and honest failure rows.",
  "properties": {
    "videos": {
      "description": "Dataset containing one row per video, subtitle-only result, or failure.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "YouTube Video Downloader dataset",
      "type": "string"
    }
  },
  "title": "YouTube Video, Playlist & Channel Downloader with Metadata Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "metadata": {
      "display": {
        "component": "table",
        "properties": {
          "comment_count": {
            "label": "Comments"
          },
          "description": {
            "label": "Description"
          },
          "download_status": {
            "label": "Status"
          },
          "downloaded_at": {
            "format": "datetime",
            "label": "Processed At"
          },
          "like_count": {
            "label": "Likes"
          },
          "thumbnail": {
            "format": "image",
            "label": "Thumbnail"
          },
          "title": {
            "label": "Title"
          },
          "upload_date": {
            "label": "Upload Date"
          },
          "uploader": {
            "label": "Channel"
          },
          "video_id": {
            "label": "Video ID"
          },
          "video_url": {
            "format": "link",
            "label": "Video URL"
          },
          "view_count": {
            "label": "Views"
          }
        }
      },
      "title": "Video Metadata",
      "transformation": {
        "fields": [
          "video_url",
          "video_id",
          "title",
          "description",
          "uploader",
          "upload_date",
          "duration_seconds",
          "view_count",
          "like_count",
          "comment_count",
          "thumbnail",
          "download_status",
          "downloaded_at"
        ]
      }
    },
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "delivered_quality": {
            "label": "Delivered"
          },
          "download_status": {
            "label": "Status"
          },
          "download_url": {
            "format": "link",
            "label": "Download Link"
          },
          "downloaded_at": {
            "format": "datetime",
            "label": "Processed At"
          },
          "duration_seconds": {
            "label": "Duration (s)"
          },
          "failure_code": {
            "label": "Failure Code"
          },
          "filesize_bytes": {
            "label": "Bytes"
          },
          "requested_quality": {
            "label": "Requested"
          },
          "resolution": {
            "label": "Resolution"
          },
          "storage_mode": {
            "label": "Storage"
          },
          "title": {
            "label": "Title"
          },
          "uploader": {
            "label": "Channel"
          },
          "video_url": {
            "format": "link",
            "label": "Video URL"
          }
        }
      },
      "title": "YouTube Videos",
      "transformation": {
        "fields": [
          "video_url",
          "title",
          "uploader",
          "duration_seconds",
          "download_status",
          "failure_code",
          "requested_quality",
          "delivered_quality",
          "resolution",
          "filesize_bytes",
          "download_url",
          "storage_mode",
          "downloaded_at"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

YouTube Video, Playlist & Channel Downloader with Metadata

Inspect or download YouTube videos from a direct link, a playlist, a channel, or a search phrase in one run. Every row carries the video's metadata, and download rows add a readable file link, the real container and codec, the requested and delivered quality, captions, and an optional transcript.

Use this actor only for content you own or are authorized to download. YouTube's Terms of Service may prohibit downloading content without permission, and you are responsible for complying with them. This actor is not affiliated with YouTube or Google, and it does not bypass DRM, private-video access, or geographic restrictions.

What this actor does

  • Four input paths: direct video URLs, playlists, channels, and keyword search
  • Metadata, download, or subtitles: choose what each run returns
  • Compatible video: SDR 360p-1080p H.264/AAC MP4 when YouTube provides it
  • Opt-in 4K: 1440p/2160p SDR with a 10-minute and 1000 MB cap
  • Audio passthrough: M4A (AAC) or Opus, without a fake bitrate uplift
  • Captions and transcript: WebVTT, SubRip, or plain text
  • Honest failures: rows explain private, live, DRM, geo-blocked, oversized, and unavailable videos
  • Empty fields are omitted — records only contain values that are actually populated

Output per video

  • record_type — video, failure, or input_error
  • video_url, video_id, title, description
  • uploader, uploader_id, uploader_url, channel_id
  • upload_date, duration_seconds
  • view_count, like_count, comment_count
  • thumbnail, tags[], categories[], is_live
  • playlist_index — position inside a playlist, channel listing, or search result
  • source_label — direct, playlist:..., channel:..., or search:...
  • download_status — success, metadata_only, subtitles_only, failed, skipped_unsupported, or upload_failed
  • failure_code — e.g. private, removed, live_unsupported, drm_unsupported, geo_blocked, bot_check, too_long, too_large, no_formats, upload_failed, no_captions, captions_unavailable
  • error, retryable
  • requested_quality, delivered_quality, quality_match
  • container, vcodec, acodec, dynamic_range, is_hdr
  • width, height, resolution, fps, aspect_ratio, audio_only
  • filesize_bytes, total_bitrate_kbps, checksum_sha256
  • download_url, storage_key, storage_mode, expires_at
  • four_k_cap_applied — present when the 4K duration/size cap governed the row
  • subtitle_files[], subtitle_urls[], subtitle_languages[], caption_kind
  • caption_status — no_captions, captions_unavailable, or upload_failed when no caption file was produced
  • transcript — when transcript output is requested
  • video_meta — nested technical details for the downloaded file
  • downloaded_at
  • search_query — on an input-error row for an empty search result

Input

Field Type Default Description
mode string metadata metadata, download, or subtitles
videoUrls array — Direct video, Shorts, replay, youtu.be URLs, or 11-character IDs
playlistUrls array — Playlist URLs
channelUrls array — Channel URLs, @handles, or UC... IDs
searchQueries array — Search phrases
videoQuality string 720p 360p, 480p, 720p, 1080p, 1440p, 2160p, or best
container string auto auto, mp4, webm, or mkv
audioOnly boolean false Download source audio only
audioFormat string m4a m4a (AAC) or opus
downloadSubtitles boolean false Fetch existing caption tracks
subtitleLanguages array ["en"] Language codes to request
subtitleFormat string vtt vtt or srt
includeTranscript boolean false Add a plain-text transcript
maxVideos integer 10 Total videos per run (1–50)
maxMinutes integer 30 Per-video duration cap (1–30)
maxMB integer 500 Per-video size cap; 4K opt-in allows up to 1000
allow4K boolean false Enable 1440p/2160p SDR
storage string ephemeral_kvs ephemeral_kvs, named_kvs, or s3
kvsName string — Named KVS name
storageRetentionDays integer 7 Presigned S3/R2 link lifetime (1–7 days)
s3Bucket, s3Prefix, s3Endpoint, s3Region string — S3 or R2 destination
s3AccessKeyId, s3SecretAccessKey secret — Optional S3/R2 credentials
s3PublicBaseUrl string — Use public bucket URLs instead of presigned links
cookies secret — Optional Netscape cookies for authorized age-restricted or members-only access
proxyConfiguration object automatic Optional connection override

Examples

Metadata for one video

{
  "mode": "metadata",
  "videoUrls": ["https://www.youtube.com/watch?v=jNQXAC9IVRw"]
}

Download a 720p MP4

{
  "mode": "download",
  "videoUrls": ["https://www.youtube.com/watch?v=dQw4w9WgXcQ"],
  "videoQuality": "720p",
  "container": "mp4",
  "maxVideos": 1
}

Playlist with captions and transcript

{
  "mode": "download",
  "playlistUrls": ["https://www.youtube.com/playlist?list=PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI"],
  "videoQuality": "480p",
  "maxVideos": 5,
  "downloadSubtitles": true,
  "subtitleLanguages": ["en"],
  "subtitleFormat": "srt",
  "includeTranscript": true
}

Search to audio

{
  "mode": "download",
  "searchQueries": ["public domain jazz"],
  "audioOnly": true,
  "audioFormat": "m4a",
  "maxVideos": 3
}

Opt-in 4K SDR

{
  "mode": "download",
  "videoUrls": ["https://www.youtube.com/watch?v=LXb3EKWsInQ"],
  "videoQuality": "2160p",
  "container": "auto",
  "allow4K": true,
  "maxMinutes": 10,
  "maxMB": 1000
}

Use cases

  • Own-channel archiving — export metadata, captions, and small compatible files for channels you manage
  • Authorized media research — collect titles, descriptions, dates, and public statistics for analysis
  • Caption workflows — pull existing VTT or SRT tracks and transcript text for translation or accessibility
  • Audio libraries — save authorized M4A or Opus audio without re-encoding
  • Content audits — compare requested and delivered quality, codecs, and file sizes
  • Pipeline integrations — one row per video with stable status and failure fields

FAQ

What can I download with this actor?

Content you own or are authorized to download. The actor does not grant rights to third-party media and does not bypass DRM, private access, or geographic restrictions.

Does it support live streams?

No. Live and upcoming broadcasts have no finite file and are returned as live_unsupported failure rows.

Can I download age-restricted or members-only videos?

Sometimes, when you have authorized access and supply your own cookies. Public videos work without cookies.

Does it bypass geo-blocks or DRM?

No. Geo-restricted and DRM-protected videos are reported as failure rows. Changing proxy settings is not a guaranteed workaround.

Where is the MP3 option?

There is no MP3 option because YouTube does not serve 320 kbps MP3. The actor passes through the source M4A (AAC) or Opus audio track and reports the real codec. Claiming a higher bitrate would only mean re-encoding and inflating the file.

Why did I get 480p when I asked for 720p?

Not every video has every resolution. The actor delivers the closest available quality at or below your request and sets quality_match to false when it had to step down.

Why is my 4K file MKV or WebM instead of MP4?

YouTube usually serves 1440p and 2160p as VP9 or AV1 video, often with Opus audio. Those streams are not H.264/AAC MP4. The actor keeps the real codec and container instead of mislabelling a file. Choose container: "auto" or mkv for 4K.

What are the download caps?

Each video is capped at 30 minutes and 500 MB by default, with at most 50 videos per run. Opt-in 4K is capped at 10 minutes and 1000 MB. A video outside the caps gets a too_long or too_large failure row instead of a partial file.

Ephemeral KVS links follow your Apify account's key-value store retention. Named KVS persists while the store exists. S3/R2 links are presigned for the configured retention period, or permanent when a public bucket URL is configured. KVS file URLs do not support HTTP Range requests, so use S3/R2 when a downstream system needs resumable or partial downloads.

Do I need to set up a proxy?

No. The actor chooses a working connection automatically for metadata and player access. Media bytes are fetched directly whenever possible.

What happens when a video fails?

The run continues and writes a failure row with failure_code, error, and retryable. A failed row never claims a download link.

Is this affiliated with YouTube?

No. This is an independent third-party tool and is not affiliated with, endorsed by, or sponsored by YouTube or Google.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build tyaMzg62TcJZfZ4Pv. Documentation is regenerated from the default published build; private drafts are not included.