YouTube Thumbnail Extractor: all sizes, best available, bulk avatar

YouTube Thumbnail Extractor: all sizes, best available, bulk

Pricing

from $0.65 / 1,000 video thumbnails

Go to Apify Store
YouTube Thumbnail Extractor: all sizes, best available, bulk

YouTube Thumbnail Extractor: all sizes, best available, bulk

Thumbnail URLs of YouTube videos, up to 500 per run: every size from default to maxresdefault, which ones exist with their file size, the best available one with width and height, WebP variants, the three frame stills, plus video title, channel and watch URL. No downloads, no API key. Pay per video.

Pricing

from $0.65 / 1,000 video thumbnails

Rating

0.0

(0)

Developer

Steadydata Team

Steadydata Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Thumbnail URLs of YouTube videos, up to 500 per run: every size from default to maxresdefault, which ones exist with their file size, the best available one with width and height, WebP variants, the three frame stills, plus video title, channel and watch URL. No downloads, no API key. Pay per video.

Why this scraper

  • Only delivered results are charged. Inputs that fail come back as clear error records at no cost.
  • One official oEmbed call plus five lightweight HEAD checks per video, nothing downloaded, no API key, no browser. Measured on the platform: three videos in 5 seconds for a tenth of a cent; a tenth of the price of the busiest alternative in this niche.
  • Not just URLs but the truth about them: YouTube's thumbnail addresses are predictable, but the 1280 and 640 pixel versions exist only for videos uploaded in enough resolution. Each size is verified and delivered with its byte size, and bestUrl is the largest one that really exists, with width and height (measured: the 2005 video Me at the zoo tops out at 480 pixels, a 4K remaster has all five).
  • Everything a thumbnail workflow needs on one row: the five JPEG sizes, the WebP variants, the three frame stills YouTube generates, the video title, channel name and link, and the watch URL.

Who this is for

Paste video URLs (watch, youtu.be, shorts, embed) or 11-character ids in videos (up to 500 per run). Leave checkSizes on to know which sizes exist and how large they are; switch it off for URLs only with a single request per video. Built for content pipelines, newsletters, link previews, thumbnail A/B research and archiving that need the right image address without scraping the watch page.

Who this is not for

The images are not downloaded; you get their addresses and sizes and fetch them yourself. Private, unlisted-and-not-embeddable and removed videos come back as a free NOT_FOUND row, because oEmbed answers nothing for them. Custom thumbnails and auto-generated ones look the same to this actor; it cannot tell which the creator chose. Byte sizes are what the image host reports at the moment of the run. Titles and channel names come from oEmbed and are not localised.

Input example

{
"videos": [
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"jNQXAC9IVRw"
],
"checkSizes": true
}

Output example

  • videoId
  • title
  • channelName
  • channelUrl
  • videoUrl
  • bestUrl
  • bestSize
  • bestWidth
  • bestHeight
  • hasMaxres
  • maxresUrl
  • sdUrl
  • hqUrl
  • mqUrl
  • defaultUrl
  • sizes
  • webpMaxresUrl
  • webpHqUrl
  • frameUrls
  • oembedThumbnailUrl

Error codes: INVALID_VIDEO, NOT_FOUND, BLOCKED.

One delivered row looks like this:

{
"videoId": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video) (4K Remaster)",
"channelName": "Rick Astley",
"channelUrl": "https://www.youtube.com/@RickAstleyYT",
"videoUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"bestUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"bestSize": "maxresdefault",
"bestWidth": 1280,
"bestHeight": 720,
"hasMaxres": true,
"maxresUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"sdUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/sddefault.jpg",
"hqUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"mqUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
"defaultUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/default.jpg",
"webpMaxresUrl": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/maxresdefault.webp",
"webpHqUrl": "https://i.ytimg.com/vi_webp/dQw4w9WgXcQ/hqdefault.webp",
"frameUrls": [
"https://i.ytimg.com/vi/dQw4w9WgXcQ/1.jpg",
"https://i.ytimg.com/vi/dQw4w9WgXcQ/2.jpg",
"https://i.ytimg.com/vi/dQw4w9WgXcQ/3.jpg"
],
"sizes": [
{
"size": "maxresdefault",
"url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"width": 1280,
"height": 720,
"exists": true,
"bytes": 65324
},
{
"size": "sddefault",
"url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/sddefault.jpg",
"width": 640,
"height": 480,
"exists": true,
"bytes": 31029
},
{
"size": "hqdefault",
"url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"width": 480,
"height": 360,
"exists": true,
"bytes": 21011
},
{
"size": "mqdefault",
"url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/mqdefault.jpg",
"width": 320,
"height": 180,
"exists": true,
"bytes": 10303
},
{
"size": "default",
"url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/default.jpg",
"width": 120,
"height": 90,
"exists": true,
"bytes": 2888
}
],
"oembedThumbnailUrl": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
"status": "ok"
}

Pricing

Pay per event: one video-thumbnails event per delivered result. No charge for inputs that fail, no separate platform-usage surcharge.

Free Apify plan: this actor delivers up to 25 rows per run for accounts on the Apify free plan, and then stops with a message. That limit is set by us, not by Apify. It exists so the actor keeps paying for itself for the people who do pay. Any paid Apify plan runs it at full size, billed per delivered row, with failed rows never charged.

Reviews: if this actor saves you time, a short review on this page is the one thing that helps most. Ratings are what other buyers look at first, and we have no other way to ask.

FAQ

Is personal data collected? Only the public video title and channel name that YouTube itself returns through oEmbed; no viewer or commenter data is touched.

Which URL should I use? bestUrl: the largest size that exists. For a fixed layout use the size columns directly; hqUrl (480x360) exists for every public video.

Why is hasMaxres false for some videos? YouTube only renders the 1280x720 thumbnail for uploads of at least 720p; older or low-resolution videos have no such file, and the actor tells you rather than handing you a URL that 404s.

What are the frame stills? frameUrls are the three automatic stills YouTube takes at the start, middle and end of a video (1.jpg, 2.jpg, 3.jpg), handy as alternatives when the main thumbnail is not suitable.

What does a run cost when a video is gone? Nothing. NOT_FOUND, INVALID_VIDEO and BLOCKED rows are free; only delivered videos are charged.

What happens when the source changes? Sources change from time to time; that is the nature of this work. The actor is monitored daily and fixed fast, and while it is broken you are not charged, because only delivered results cost anything.