How can I retrieve YouTube video details from video URL using PHP? How can I retrieve YouTube video details from video URL using PHP? php php

How can I retrieve YouTube video details from video URL using PHP?


You can get data from youtube oembed interface in two formats: XML and JSON

Interface address: http://www.youtube.com/oembed?url=youtubeurl&format=json

Use this PHP function to get data

 function get_youtube($url){ $youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json"; $curl = curl_init($youtube); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $return = curl_exec($curl); curl_close($curl); return json_decode($return, true); }$url = // youtube video url // Display Data print_r(get_youtube($url));

Don't forget to enable extension=php_curl.dll in your php.ini


This returns metadata about a video:

http://www.youtube.com/oembed?url={videoUrlHere}&format=json

Using your example, a call to:

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=B4CRkpBGQzU&format=json

Returns the following, which you can digest and parse with PHP:

{    "provider_url": "http:\/\/www.youtube.com\/",    "thumbnail_url": "http:\/\/i3.ytimg.com\/vi\/B4CRkpBGQzU\/hqdefault.jpg",    "title": "Joan Osborne - One Of Us",    "html": "\u003ciframe width=\"459\" height=\"344\" src=\"http:\/\/www.youtube.com\/embed\/B4CRkpBGQzU?fs=1\u0026feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e",    "author_name": "jzsdhk",    "height": 344,    "thumbnail_width": 480,    "width": 459,    "version": "1.0",    "author_url": "http:\/\/www.youtube.com\/user\/jzsdhk",    "provider_name": "YouTube",    "type": "video",    "thumbnail_height": 360}


Yet another URL API that can be helpful is: https://www.youtube.com/get_video_info?video_id=B4CRkpBGQzU

video_id is "v" argument of youTube. Result is a dictionary in URL-encoded format (key1=value1&key2=value2&...)

This is undocumented API existing for long time, so exploring it is up to developer. I am aware of "status" (ok/fail), "errorcode" (100 and 150 in my practice), "reason" (string description of error). I am getting duration ("length_seconds") this way because oEmbed does not provide this information (strange, but true) and I can hardly motivate every employer to get keys from youTube to use official API