Youtube Shorts Downloader avatar

Youtube Shorts Downloader

Pricing

$2.65 / 1,000 shorts

Go to Apify Store
Youtube Shorts Downloader

Youtube Shorts Downloader

Download known public YouTube Shorts from URLs or video IDs. Get video and audio files saved in Apify storage, source media links, quality and format details, thumbnails, channel data, and view, like, and comment counts when available.

Pricing

$2.65 / 1,000 shorts

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

344

Total users

22

Monthly active users

12 days ago

Last modified

Features

Limited permissions

Share

🎬 Download known YouTube Shorts as video and audio files

YouTube Shorts Downloader is for creators, developers, and teams that already have public Shorts links. Submit those links to get downloaded video and audio files in Apify storage, plus source media URLs, available quality, format details, thumbnails, duration, channel data, and public view, like, and comment counts when available. You get one dataset row for each Short, ready to review, catalog, or pass into another workflow.

This Actor does not search YouTube or crawl channels. It does not handle regular long videos, private videos, transcripts, comment contents, or MP3 conversion.

📦 YouTube Shorts files and details

Saved rows

Each saved row represents one resolved public Short. If the same video ID appears more than once, only the first URL or ID for it is processed. Later ones are ignored, even if the first one fails.

Rows include the video ID, title and channel details, duration, thumbnail, counts, the selected video and audio formats, and every kept format. Each format has a downloaded file link in Apify storage and its source media link. Fields can be null when YouTube does not expose them. Source media links may expire or stop working after the run.

🚀 Resolve known YouTube Shorts

  1. Open the Actor input.
  2. Add one or more public YouTube Shorts URLs or video IDs in shortUrls.
  3. Choose the highest video quality to try in preferredResolution.
  4. Optionally set a video file size limit in maxFileSizeMb.
  5. Start the run.
  6. Open the dataset and use mediaFileUrl to download the main file.

You can also start runs with the Apify API, schedules, or webhooks.

⚙️ Input

Input fields

FieldTypeWhat it does
shortUrlsarray of stringsAdds public YouTube Shorts URLs or 11-character video IDs. Shorts, watch, youtu.be, embed, and live URLs work when they identify a Short. Each array item is one URL or ID.
preferredResolutionstringRequests the highest quality to try: 8k, 4k, 2k, 1080p, 720p, 480p, or 360p. The default is 2k. If no video is at or below this quality, the best available video is used. The saved row shows the quality that was available.
maxFileSizeMbintegerSkips video files larger than this many MB. One MB is 1,000,000 bytes. When a limit is set, video files with an unknown size are skipped too. Leave it blank or use 0 for no limit. The input form prefills 3, but there is no schema default. Audio-only files are not limited.

The Actor supports batches of unique Shorts in one run. A bad or unavailable input does not stop the other inputs. If no video file fits your options for a Short, that Short gets a warning and no row.

Default input

This is the public input used by a successful current-beta default run:

{
"shortUrls": [
"https://www.youtube.com/shorts/8Zk5XzLJSAw"
],
"preferredResolution": "2k",
"maxFileSizeMb": 3
}

🧾 Output

Output fields

Each saved row has the same public field set. A combined format has video and audio in one file. When the main format has video only, audioFileUrl gives the matching audio file when available. Fields marked as nullable can be null.

FieldTypeWhat it does
videoIdstringGives the stable YouTube video ID for the Short.
titlestring or nullGives the Short title when available.
channelNamestring or nullGives the channel name when available.
channelIdstring or nullGives the YouTube channel ID when available.
durationSecondsnumber or nullGives the Short length in seconds when available.
thumbnailUrlstring or nullGives the thumbnail image URL when available.
publishedAtstring or nullGives the Short publication date and time when available.
viewCountinteger or nullGives the view count YouTube reports when available. It is not a count of unique viewers.
likeCountinteger or nullGives the public like count when available.
commentCountinteger or nullGives the public comment count when available.
mediaFileUrlstringGives the Apify storage link to download the selected main file.
audioFileUrlstring or nullGives the Apify storage link to download the selected audio-only file when available.
bestDownloadUrlstringGives the source media link for the selected main format.
audioDownloadUrlstring or nullGives the source media link for the selected audio-only format when available.
bestFormatobjectDescribes the selected main media format.
bestFormat.formatIdstring or nullGives the source format ID for the selected media.
bestFormat.qualitystring or nullGives the quality label for the selected media when available.
bestFormat.resolutionstring or nullGives the selected media resolution when available.
bestFormat.widthinteger or nullGives the video width in pixels when available.
bestFormat.heightinteger or nullGives the video height in pixels when available.
bestFormat.frameRatenumber or nullGives the video frames per second when available.
bestFormat.bitrateKbpsnumber or nullGives the bitrate in kilobits per second when available.
bestFormat.extensionstring or nullGives the file extension when available.
bestFormat.videoCodecstring or nullGives the video codec when available.
bestFormat.audioCodecstring or nullGives the audio codec when available.
bestFormat.audioSampleRateHzinteger or nullGives the audio samples per second when available.
bestFormat.filesizeBytesinteger or nullGives the selected media size in bytes when available.
audioFormatobject or nullDescribes the selected audio-only format when available.
audioFormat.formatIdstring or nullGives the source format ID for the audio format.
audioFormat.qualitystring or nullGives the audio format quality when available.
audioFormat.extensionstring or nullGives the audio file extension when available.
audioFormat.audioCodecstring or nullGives the audio codec when available.
audioFormat.bitrateKbpsnumber or nullGives the audio bitrate in kilobits per second when available.
audioFormat.audioSampleRateHzinteger or nullGives the audio samples per second when available.
audioFormat.filesizeBytesinteger or nullGives the audio file size in bytes when available.
audioFormat.audioTrackobject or nullGives audio track details when YouTube supplies them.
audioFormat.audioTrack.idstring or nullGives the YouTube track ID. It is not a language code.
audioFormat.audioTrack.displayNamestring or nullGives the track name YouTube shows.
audioFormat.audioTrack.audioIsDefaultboolean or nullShows whether YouTube marks this as the default track. null means YouTube did not say.
audioFormat.audioTrack.isAutoDubbedboolean or nullShows whether YouTube marks this track as auto-dubbed. null means YouTube did not say.
mediaobjectHolds details for the selected media.
media.mimeTypestring or nullGives the selected media MIME type when available.
formatsarray of objectsLists every kept video and audio format, each with its own downloaded file.
formats[].fileUrlstringGives the Apify storage link to download this format's file.
formats[].downloadUrlstringGives the source media link for this format.
formats[].formatIdstring or nullGives the source format ID.
formats[].qualitystring or nullGives the quality label when available.
formats[].resolutionstring or nullGives the resolution when available.
formats[].widthinteger or nullGives the video width in pixels when available.
formats[].heightinteger or nullGives the video height in pixels when available.
formats[].frameRatenumber or nullGives the video frames per second when available.
formats[].bitrateKbpsnumber or nullGives the bitrate in kilobits per second when available.
formats[].extensionstring or nullGives the file extension when available.
formats[].videoCodecstring or nullGives the video codec when available.
formats[].audioCodecstring or nullGives the audio codec when available.
formats[].audioSampleRateHzinteger or nullGives the audio samples per second when available.
formats[].filesizeBytesinteger or nullGives the file size in bytes when available.
formats[].audioTrackobject or nullGives audio track details when YouTube supplies them, with the same fields as audioFormat.audioTrack.

Example Short row

This is a genuine row from a successful current-beta default run. It is shortened: the real formats list has 24 entries, and only the first two are shown. "..." marks the omitted entries.

{
"videoId": "8Zk5XzLJSAw",
"title": "wax cracking is even more satisfying when you DIY it #soundon #wax #DIY",
"channelName": "YouTube",
"channelId": "UCBR8-60-B28hp2BmDPdntcQ",
"durationSeconds": 25,
"thumbnailUrl": "https://i.ytimg.com/vi/8Zk5XzLJSAw/maxres2.jpg?sqp=-oaymwEoCIAKENAF8quKqQMcGADwAQH4AbYIgAKAD4oCDAgAEAEYZSBbKFkwDw==&rs=AOn4CLCbXhMHlKxo82Hg1Rti-8vtf01c8w",
"publishedAt": "2026-06-10T22:00:38-07:00",
"likeCount": 1463,
"commentCount": 142,
"viewCount": 239915,
"bestDownloadUrl": "https://rr8---sn-u0g3jxaa-n5fd.googlevideo.com/videoplayback?expire=1793344576&ei=4O_jasjTLdnf1PIPsK-30QQ&ip=176.234.130.211&id=o-AF_UT9lGt_pLuvG5MS3p3zdumqKZkLRqpt3uP8XkV_5X&itag=399&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C247%2C248%2C395%2C396%2C398%2C399%2C779%2C780%2C787%2C788&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=151&met=1793322976%2C&mh=n1&mm=31%2C29&mn=sn-u0g3jxaa-n5fd%2Csn-ajnv4c-5p&ms=au%2Crdu&mv=m&mvi=8&pl=21&rms=au%2Cau&initcwndbps=2324000&bui=AZFAFb_0KQqdV6z8XTOdok9w_yk0oQW3QvAufFq60W-odFVItbvn3SLYQm-IBrTIO1W9ORxjtawmS3kF&spc=mpRQ__K1zaxw3hlLKTj1xfFNYpR2mPnUf7BkgXzt_SFsAgVC-Y2AAu5M5Dum_BC7vMblf0pkGyI&vprv=1&svpuc=1&mime=video%2Fmp4&ns=KZbqx_oPNmA4RZzTkrzO0hYZ&rqh=1&gir=yes&clen=1854464&dur=24.733&lmt=1781164177946757&mt=1793322341&fvip=4&epbp=1&keepalive=yes&fexp=51565115%2C52184237%2C52271470&c=WEB_EMBEDDED_PLAYER&sefc=1&txp=443C534&n=GnZwWtYAv40DPw&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIgV5EreDWtvxXZO7cbJfmxq4_z1hoqpzU1vVb_NXX25xoCIQCbzzelZ2e7oAcx6MNSs_GpBeNoBKLAu5WjPWpVj-zcIA%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRAIgRFdq-XU_d8OzTD45nksLj8HRYG0eUYxH2xyijK7iZoMCIAUpon5mEA8uTboCao8ViGRo8PCaoyEnBUWpd9rmyqPl",
"audioDownloadUrl": "https://rr8---sn-u0g3jxaa-n5fd.googlevideo.com/videoplayback?expire=1793344576&ei=4O_jasjTLdnf1PIPsK-30QQ&ip=176.234.130.211&id=o-AF_UT9lGt_pLuvG5MS3p3zdumqKZkLRqpt3uP8XkV_5X&itag=140&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=151&met=1793322976%2C&mh=n1&mm=31%2C29&mn=sn-u0g3jxaa-n5fd%2Csn-ajnv4c-5p&ms=au%2Crdu&mv=m&mvi=8&pl=21&rms=au%2Cau&initcwndbps=2324000&bui=AZFAFb_0KQqdV6z8XTOdok9w_yk0oQW3QvAufFq60W-odFVItbvn3SLYQm-IBrTIO1W9ORxjtawmS3kF&spc=mpRQ__K1zaxw3hlLKTj1xfFNYpR2mPnUf7BkgXzt_SFsAgVC-Y2AAu5M5Dum_BC7vMblf0pkGyI&vprv=1&svpuc=1&mime=audio%2Fmp4&ns=KZbqx_oPNmA4RZzTkrzO0hYZ&rqh=1&gir=yes&clen=402514&dur=24.798&lmt=1781161039117955&mt=1793322341&fvip=4&epbp=1&keepalive=yes&fexp=51565115%2C52184237%2C52271470&c=WEB_EMBEDDED_PLAYER&sefc=1&txp=4432534&n=GnZwWtYAv40DPw&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIgbnOIu0pJbvWmghhnvyMVNeBnbqX_X53zFMcNHz-VN0ICIQDQLm5NVmAhrR_Vte-u58jqfeE9qa2d7Yph_biQiWbxAg%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRAIgRFdq-XU_d8OzTD45nksLj8HRYG0eUYxH2xyijK7iZoMCIAUpon5mEA8uTboCao8ViGRo8PCaoyEnBUWpd9rmyqPl",
"mediaFileUrl": "https://api.apify.com/v2/key-value-stores/TdpY2hidyH82jedrp/records/8Zk5XzLJSAw-format-1?signature=1D8dvzXdJISNja7sxKtgl",
"audioFileUrl": "https://api.apify.com/v2/key-value-stores/TdpY2hidyH82jedrp/records/8Zk5XzLJSAw-format-16?signature=lDpPwS38IMQlMUpa0AJL",
"bestFormat": {
"formatId": "399",
"quality": "1080p",
"resolution": "1080x1920",
"extension": "mp4",
"videoCodec": "av01.0.08M.08",
"audioCodec": null,
"filesizeBytes": 1854464,
"width": 1080,
"height": 1920,
"frameRate": 30,
"bitrateKbps": 697.43,
"audioSampleRateHz": null
},
"audioFormat": {
"formatId": "140",
"quality": "tiny",
"extension": "mp4",
"audioCodec": "mp4a.40.2",
"filesizeBytes": 402514,
"bitrateKbps": 130.168,
"audioSampleRateHz": 44100,
"audioTrack": null
},
"media": {
"mimeType": "video/mp4"
},
"formats": [
{
"formatId": "18",
"quality": "360p",
"resolution": "360x640",
"extension": "mp4",
"videoCodec": "avc1.42001E",
"audioCodec": "mp4a.40.2",
"filesizeBytes": 1867885,
"width": 360,
"height": 640,
"frameRate": 30,
"bitrateKbps": 604.175,
"audioSampleRateHz": 48000,
"audioTrack": null,
"downloadUrl": "https://rr8---sn-u0g3jxaa-n5fd.googlevideo.com/videoplayback?expire=1793344576&ei=4O_jasjTLdnf1PIPsK-30QQ&ip=176.234.130.211&id=o-AF_UT9lGt_pLuvG5MS3p3zdumqKZkLRqpt3uP8XkV_5X&itag=18&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=151&met=1793322976%2C&mh=n1&mm=31%2C29&mn=sn-u0g3jxaa-n5fd%2Csn-ajnv4c-5p&ms=au%2Crdu&mv=m&mvi=8&pl=21&rms=au%2Cau&initcwndbps=2324000&bui=AZFAFb-GkfVzLfUu2B2R3OgOsqUqe-KjV-gjo9IH0hsAYgegc133wnnrN7rdDJryRcFjPgJ30O131d_D&spc=mpRQ__K2zaxw3hlLKTj1xfFNYpR2mPnUf7BkgXzt_SFsAgVC-Y2AAu5M5Dum_BC7vMblT0-MG7rYng&vprv=1&svpuc=1&mime=video%2Fmp4&ns=yIKHBXpwIlBOFgF09d0SwHMZ&rqh=1&gir=yes&clen=1867885&ratebypass=yes&dur=24.789&lmt=1781162250611376&mt=1793322341&fvip=4&epbp=1&fexp=51565115%2C52184237%2C52271470&c=WEB_EMBEDDED_PLAYER&sefc=1&txp=4430534&n=rZV2XhKVGpuecg&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cratebypass%2Cdur%2Clmt&sig=AE0s2JYwRgIhAOSyOPHyxzTWnDCykKwLEo32p4rm7jve1N0T80EFgellAiEA-DJHxLbxfCbqYNqiRRpG4Oh61aZ0ZYX0BmNdp84ApQk%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRAIgRFdq-XU_d8OzTD45nksLj8HRYG0eUYxH2xyijK7iZoMCIAUpon5mEA8uTboCao8ViGRo8PCaoyEnBUWpd9rmyqPl",
"fileUrl": "https://api.apify.com/v2/key-value-stores/TdpY2hidyH82jedrp/records/8Zk5XzLJSAw-format-0?signature=1Dn4504BqvvRQGBZUcDS0"
},
{
"formatId": "399",
"quality": "1080p",
"resolution": "1080x1920",
"extension": "mp4",
"videoCodec": "av01.0.08M.08",
"audioCodec": null,
"filesizeBytes": 1854464,
"width": 1080,
"height": 1920,
"frameRate": 30,
"bitrateKbps": 697.43,
"audioSampleRateHz": null,
"audioTrack": null,
"downloadUrl": "https://rr8---sn-u0g3jxaa-n5fd.googlevideo.com/videoplayback?expire=1793344576&ei=4O_jasjTLdnf1PIPsK-30QQ&ip=176.234.130.211&id=o-AF_UT9lGt_pLuvG5MS3p3zdumqKZkLRqpt3uP8XkV_5X&itag=399&aitags=133%2C134%2C135%2C136%2C137%2C160%2C242%2C243%2C247%2C248%2C395%2C396%2C398%2C399%2C779%2C780%2C787%2C788&source=youtube&requiressl=yes&xpc=EgVo2aDSNQ%3D%3D&cps=151&met=1793322976%2C&mh=n1&mm=31%2C29&mn=sn-u0g3jxaa-n5fd%2Csn-ajnv4c-5p&ms=au%2Crdu&mv=m&mvi=8&pl=21&rms=au%2Cau&initcwndbps=2324000&bui=AZFAFb_0KQqdV6z8XTOdok9w_yk0oQW3QvAufFq60W-odFVItbvn3SLYQm-IBrTIO1W9ORxjtawmS3kF&spc=mpRQ__K1zaxw3hlLKTj1xfFNYpR2mPnUf7BkgXzt_SFsAgVC-Y2AAu5M5Dum_BC7vMblf0pkGyI&vprv=1&svpuc=1&mime=video%2Fmp4&ns=KZbqx_oPNmA4RZzTkrzO0hYZ&rqh=1&gir=yes&clen=1854464&dur=24.733&lmt=1781164177946757&mt=1793322341&fvip=4&epbp=1&keepalive=yes&fexp=51565115%2C52184237%2C52271470&c=WEB_EMBEDDED_PLAYER&sefc=1&txp=443C534&n=GnZwWtYAv40DPw&sparams=expire%2Cei%2Cip%2Cid%2Caitags%2Csource%2Crequiressl%2Cxpc%2Cbui%2Cspc%2Cvprv%2Csvpuc%2Cmime%2Cns%2Crqh%2Cgir%2Cclen%2Cdur%2Clmt&sig=AE0s2JYwRQIgV5EreDWtvxXZO7cbJfmxq4_z1hoqpzU1vVb_NXX25xoCIQCbzzelZ2e7oAcx6MNSs_GpBeNoBKLAu5WjPWpVj-zcIA%3D%3D&lsparams=cps%2Cmet%2Cmh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Crms%2Cinitcwndbps&lsig=APaTxxMwRAIgRFdq-XU_d8OzTD45nksLj8HRYG0eUYxH2xyijK7iZoMCIAUpon5mEA8uTboCao8ViGRo8PCaoyEnBUWpd9rmyqPl",
"fileUrl": "https://api.apify.com/v2/key-value-stores/TdpY2hidyH82jedrp/records/8Zk5XzLJSAw-format-1?signature=1D8dvzXdJISNja7sxKtgl"
},
"..."
]
}

💳 Pricing

This Actor uses pay-per-event pricing. You pay for each Short row saved with a download link and metadata. Inputs that do not save a row do not create this event. See the Pricing tab for the current event price.

🔌 Integrations

Use the Apify API to start runs with shortUrls and preferredResolution. You can schedule runs, export datasets, or send completed run data through webhooks.

❓ FAQ

What happens if a submitted value cannot be processed?

The run warns once for that value and says whether other values remain. It keeps any saved Shorts and completes with zero or partial results. The final summary shows the saved count and the number of failed values. A value without a saved row is not charged.

Use Shorts, watch, youtu.be, embed, or live URLs that identify a Short. You can also submit its 11-character video ID.

What happens if I submit the same Short twice?

Only the first URL or ID for each video is processed. Later URLs or IDs for the same video are ignored, even if the first one fails.

Why is the saved quality lower than the quality I requested?

preferredResolution is the highest quality to try. YouTube may not expose that quality. Check bestFormat.quality to see what was available.

Check bestFormat.audioCodec. When it is null, the main stream has no audio. Use audioDownloadUrl for the audio stream when available.

What does the maximum file size do?

maxFileSizeMb skips video files larger than the limit, and video files with an unknown size. If no video fits, the Short gets a warning, no row, and no charge. Use 0 or leave it blank to keep every size.

Source links in bestDownloadUrl, audioDownloadUrl, and formats[].downloadUrl come from YouTube. They can expire or return an error later. For files that do not depend on YouTube links, use the Apify storage links in mediaFileUrl, audioFileUrl, and formats[].fileUrl. They work as long as the run's storage is kept.

Can I submit many Shorts in one run?

Yes. The Actor supports a list of unique Shorts in one run. An invalid or unavailable input does not stop the other inputs.

Do I need cookies, a login, or a YouTube API key?

No. The input accepts public Shorts URLs or video IDs. The Actor does not ask for cookies, a YouTube login, or an API key.

Does it search YouTube or download regular videos?

No. Submit Shorts you already know. The Actor does not search YouTube, crawl channels or playlists, or handle regular long videos.

Does it create MP3 files or merge video and audio?

No. It saves each kept format as it is in Apify storage. It does not convert files to MP3 or merge separate video and audio files.

Can I use the results in an automated workflow?

Yes. Start runs with the Apify API, schedules, or webhooks. You can also export the dataset as JSON, CSV, Excel, XML, RSS, or HTML.

📝 Changelog

v3.1 (30-10-2026)

  • Save the media files in Apify storage. Download the selected files from the new mediaFileUrl and audioFileUrl fields, and each listed format from its fileUrl. bestDownloadUrl still shows the original source link.
  • Add the new maxFileSizeMb input to skip video files larger than a size you choose. When you set a limit, video files with an unknown size are skipped too.
  • Add viewCount and a formats list with the available video and audio formats and their details.
  • Keep processing the other submitted Shorts when one Short hits an internal error, instead of stopping the run early.
  • Reject a YouTube link that names two different videos.

v3.0 (02-10-2026)

  • Saved rows no longer include channelUrl, requestedQuality, downloadType, videoDownloadUrl, videoFormat, or availability. Audio format details no longer include resolution or videoCodec. Use bestDownloadUrl, bestFormat, audioDownloadUrl, and audioFormat for media links and format details.
  • Warn once for each submitted value that cannot be processed, and say whether other values remain.
  • Keep processing other Shorts and show the number of failed values in the final summary. Values without a saved row are not charged.

v2.0 (11-09-2026)

  • Accept each shortUrls item as a public Shorts URL or video ID string.
  • Return playable media or separate video and audio links, and skip results without a video stream.
  • Keep normal runs focused on progress, saved rows, and completion messages without SDK startup details.

v1.1 (05-09-2026)

  • Reject regular long videos without saving a Short row or charging the Short event.
  • Keep valid Shorts in the same run and report the number of saved rows accurately.
  • Add the publication date, like count, and comment count when YouTube provides them.

v1.0

  • Process batches of Shorts and keep successful rows with direct media links, quality, and metadata.

v0.2

  • Improved default runs for more reliable first results.

v0.1

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré