Each YouTube video has four generated images. They are predictably formatted as follows:
https://img.youtube.com/vi/
https://img.youtube.com/vi/
https://img.youtube.com/vi/
https://img.youtube.com/vi/
The first one in the list is a full size image and others are thumbnail images. The default thumbnail image (i.e., one of 1.jpg, 2.jpg, 3.jpg) is:
https://img.youtube.com/vi/
For the high quality version of the thumbnail use a URL similar to this:
https://img.youtube.com/vi/
There is also a medium quality version of the thumbnail, using a URL similar to the HQ:
https://img.youtube.com/vi/
For the standard definition version of the thumbnail, use a URL similar to this:
https://img.youtube.com/vi/
For the maximum resolution version of the thumbnail use a URL similar to this:
https://img.youtube.com/vi/
All of the above URLs are available over HTTP too. Additionally, the slightly shorter hostname i3.ytimg.com works in place of img.youtube.com in the example URLs above.
Alternatively, you can use the YouTube Data API (v3) to get thumbnail images.
You can use YouTube Data API to retrieve video thumbnails, caption, description, rating, statistics and more. API version 3 requires a key*. Obtain the key and create a videos: list request:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Example PHP Code
$data = file_get_contents(“https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40”);
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);
Output
object(stdClass)#5 (5) {
[“default”]=>
object(stdClass)#6 (3) {
[“url”]=>
string(46) “https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg”
[“width”]=>
int(120)
[“height”]=>
int(90)
}
[“medium”]=>
object(stdClass)#7 (3) {
[“url”]=>
string(48) “https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg”
[“width”]=>
int(320)
[“height”]=>
int(180)
}
[“high”]=>
object(stdClass)#8 (3) {
[“url”]=>
string(48) “https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg”
[“width”]=>
int(480)
[“height”]=>
int(360)
}
[“standard”]=>
object(stdClass)#9 (3) {
[“url”]=>
string(48) “https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg”
[“width”]=>
int(640)
[“height”]=>
int(480)
}
[“maxres”]=>
object(stdClass)#10 (3) {
[“url”]=>
string(52) “https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg”
[“width”]=>
int(1280)
[“height”]=>
int(720)
}
}
* Not only that you need a key, you might be asked for billing information depending on the number of API requests you plan to make. However, few million requests per day are free.
Source article.