Instead of ‘login’ and ‘password’ use your credentials from https://app.dataforseo.com/api-access
<?php // You can download this file from here https://cdn.dataforseo.com/v3/examples/php/php_RestClient.zip require('RestClient.php'); $api_url = 'https://api.dataforseo.com/'; try { // Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access $client = new RestClient($api_url, null, 'login', 'password'); } catch (RestClientException $e) { echo "n"; print "HTTP code: {$e->getHttpCode()}n"; print "Error code: {$e->getCode()}n"; print "Message: {$e->getMessage()}n"; print $e->getTraceAsString(); echo "n"; exit(); } try { $result = array(); // #1 - using this method you can get a list of completed tasks // GET /v3/serp/youtube/video_info/tasks_ready // in addition to 'youtube' and 'video_info' you can also set other search engine and type parameters // the full list of possible parameters is available in documentation $tasks_ready = $client->get('/v3/serp/youtube/video_info/tasks_ready'); // you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors if (isset($tasks_ready['status_code']) AND $tasks_ready['status_code'] === 20000) { foreach ($tasks_ready['tasks'] as $task) { if (isset($task['result'])) { foreach ($task['result'] as $task_ready) { // #2 - using this method you can get results of each completed task // GET /v3/serp/youtube/video_info/task_get/advanced/$id if (isset($task_ready['endpoint_advanced'])) { $result[] = $client->get($task_ready['endpoint_advanced']); } // #3 - another way to get the task results by id // GET /v3/serp/youtube/video_info/task_get/advanced/$id /* if (isset($task_ready['id'])) { $result[] = $client->get('/v3/serp/youtube/video_info/task_get/advanced/' . $task_ready['id']); } */ } } } } print_r($result); // do something with result } catch (RestClientException $e) { echo "n"; print "HTTP code: {$e->getHttpCode()}n"; print "Error code: {$e->getCode()}n"; print "Message: {$e->getMessage()}n"; print $e->getTraceAsString(); echo "n"; } $client = null; ?>
The above command returns JSON structured like this:
{ "version": "0.1.20240801", "status_code": 20000, "status_message": "Ok.", "time": "0.0529 sec.", "cost": 0, "tasks_count": 1, "tasks_error": 0, "tasks": [ { "id": "08131609-1535-0066-0000-f40adb4a8001", "status_code": 20000, "status_message": "Ok.", "time": "0.0192 sec.", "cost": 0, "result_count": 1, "path": [ "v3", "serp", "youtube", "video_info", "task_get", "advanced", "08131609-1535-0066-0000-f40adb4a8001" ], "data": { "api": "serp", "function": "task_get", "se": "youtube", "se_type": "video_info", "language_code": "en", "location_code": 2840, "video_id": "vQXvyV0zIP4", "device": "desktop", "os": "windows" }, "result": [ { "video_id": "vQXvyV0zIP4", "se_domain": "youtube.com", "location_code": 2840, "language_code": "en", "check_url": "https://www.youtube.com/watch?v=vQXvyV0zIP4", "datetime": "2024-08-13 13:09:29 +00:00", "spell": null, "refinement_chips": null, "item_types": [ "youtube_video_info" ], "items_count": 1, "items": [ { "type": "youtube_video_info", "rank_group": 1, "rank_absolute": 1, "video_id": "vQXvyV0zIP4", "title": "The first-ever BMW M5 CS.", "url": "https://www.youtube.com/watch?v=vQXvyV0zIP4", "thumbnail_url": "https://i.ytimg.com/vi_webp/vQXvyV0zIP4/maxresdefault.webp?v=629bd562", "channel_id": "UCl1hby9X42xkXUiAVcJS81A", "channel_name": "BMW M", "channel_url": "https://www.youtube.com/channel/UCl1hby9X42xkXUiAVcJS81A", "channel_logo": "https://i.ytimg.com/an/l1hby9X42xkXUiAVcJS81A/featured_channel.jpg?v=640af58c", "description": "The most powerful BMW production car there has ever been: the BMW M5 CS. Reduced in weight by 70 kg, it delivers ground-breaking performance figures and BMW M5 genes down to the smallest detail. A superior output of 635 hp catapults the high performance saloon from 0 to 100 km/h in an impressive 3.0 seconds.\nFuel consumption weighted combined in l/100km; 11.3-11.1 (NECD); 11.3-10.9 (WLTP)\nCO2 emmissions weighted combined in g/km: 258-253 (NEDC); 257-248 (WLTP)\nThe values of fuel consumptions, CO2 emissions and energy consumptions shown were determined according to the European Regulation (EC) 715/2007 in the version applicable at the time of type approval. The figures refer to a vehicle with basic configuration in Germany and the range shown considers optional equipment and the different size of wheels and tires available on the selected model. The values of the vehicles are already based on the new WLTP regulation and are translated back into NEDC-equivalent values in order to ensure the comparison between the vehicles. [With respect to these vehicles, for vehicle related taxes or other duties based (at least inter alia) on CO2-emissions the CO2 values may differ to the values stated here.] The CO2 efficiency specifications are determined according to Directive 1999/94/EC and the European Regulation in its current version applicable. The values shown are based on the fuel consumption, CO2 values and energy consumptions according to the NEDC cycle for the classification. Further information on official fuel consumption figures and specific CO2 emission values of new passenger cars is included in the following guideline: 'Leitfaden über den Kraftstoffverbrauch, die CO2-Emissionen und den Stromverbrauch neuer Personenkraftwagen' (Guide to the fuel economy, CO2 emissions and electric power consumption of new passenger cars), which can be obtained free of charge from all dealerships, from Deutsche Automobil Treuhand GmbH (DAT), Hellmuth-Hirth-Str. 1, 73760 Ostfildern-Scharnhausen and at https://www.dat.de/co2/.", "views_count": 5582858, "likes_count": 100649, "comments_count": 4367, "channel_subscribers_count": { "displayed_count": "478K subscribers", "count": 478000 }, "publication_date": "Premiered Jan 26, 2021", "timestamp": "2021-01-26 23:00:09 +00:00", "keywords": [ "bmw m5 cs", "bmw m5", "2021 bmw m5 cs", "new bmw m5 cs", "m5 cs", "bmw m5 cs 2020", "bmw m5 cs 2021" ], "category": "Autos & Vehicles", "is_live": false, "is_embeddable": true, "duration_time": "02:09", "duration_time_seconds": 129, "subtitles": null, "streaming_quality": [ { "type": "streaming_quality_element", "label": "1080p", "width": 1920, "height": 1080, "bitrate": 2509265, "mime_type": "video/mp4; codecs=\"avc1.640028\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "1080p", "width": 1920, "height": 1080, "bitrate": 1674650, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "1080p", "width": 1920, "height": 1080, "bitrate": 1422179, "mime_type": "video/mp4; codecs=\"av01.0.08M.08\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "720p", "width": 1280, "height": 720, "bitrate": 790161, "mime_type": "video/mp4; codecs=\"avc1.4d401f\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "720p", "width": 1280, "height": 720, "bitrate": 771076, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "720p", "width": 1280, "height": 720, "bitrate": 813957, "mime_type": "video/mp4; codecs=\"av01.0.05M.08\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "480p", "width": 854, "height": 480, "bitrate": 442360, "mime_type": "video/mp4; codecs=\"avc1.4d401e\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "480p", "width": 854, "height": 480, "bitrate": 503683, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "480p", "width": 854, "height": 480, "bitrate": 452294, "mime_type": "video/mp4; codecs=\"av01.0.04M.08\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "360p", "width": 640, "height": 360, "bitrate": 252069, "mime_type": "video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "360p", "width": 640, "height": 360, "bitrate": 285831, "mime_type": "video/mp4; codecs=\"avc1.4d401e\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "360p", "width": 640, "height": 360, "bitrate": 357824, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "360p", "width": 640, "height": 360, "bitrate": 301339, "mime_type": "video/mp4; codecs=\"av01.0.01M.08\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "240p", "width": 426, "height": 240, "bitrate": 159791, "mime_type": "video/mp4; codecs=\"avc1.4d4015\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "240p", "width": 426, "height": 240, "bitrate": 209657, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "240p", "width": 426, "height": 240, "bitrate": 114773, "mime_type": "video/mp4; codecs=\"av01.0.00M.08\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "144p", "width": 256, "height": 144, "bitrate": 94615, "mime_type": "video/mp4; codecs=\"avc1.4d400c\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "144p", "width": 256, "height": 144, "bitrate": 94779, "mime_type": "video/webm; codecs=\"vp9\"", "fps": 25 }, { "type": "streaming_quality_element", "label": "144p", "width": 256, "height": 144, "bitrate": 87281, "mime_type": "video/mp4; codecs=\"av01.0.00M.08\"", "fps": 25 } ] } ] } ] } ] }
Description of the fields for sending a request:
Field name | Type | Description |
---|---|---|
id |
string | task identifier unique task identifier in our system in the UUID format you will be able to use it within 30 days to request the results of the task at any time |
As a response of the API server, you will receive JSON-encoded data containing a tasks
array with the information specific to the set tasks.
You can also get all available SERP features and possible extra elements by making a request to the following Sandbox URL:
https://sandbox.dataforseo.com/v3/serp/youtube/video_info/task_get/advanced/00000000-0000-0000-0000-000000000000
The response will include all available items in the YouTube Video Info SERP Advanced endpoint with the fields containing dummy data.
You won’t be charged for using Sandbox endpoints.
Description of the fields in the results array:
Field name | Type | Description |
---|---|---|
version |
string | the current version of the API |
status_code |
integer | general status code you can find the full list of the response codes here Note: we strongly recommend designing a necessary system for handling related exceptional or error conditions |
status_message |
string | general informational message you can find the full list of general informational messages here |
time |
string | execution time, seconds |
cost |
float | total tasks cost, USD |
tasks_count |
integer | the number of tasks in the tasks array |
tasks_error |
integer | the number of tasks in the tasks array returned with an error |
tasks |
array | array of tasks |
id |
string | task identifier unique task identifier in our system in the UUID format |
status_code |
integer | status code of the task generated by DataForSEO; can be within the following range: 10000-60000 you can find the full list of the response codes here |
status_message |
string | informational message of the task you can find the full list of general informational messages here |
time |
string | execution time, seconds |
cost |
float | cost of the task, USD |
result_count |
integer | number of elements in the result array |
path |
array | URL path |
data |
object | contains the same parameters that you specified in the POST request |
result |
array | array of results |
video_id |
string | ID of the video received in a POST array |
se_domain |
string | search engine domain in a POST array |
location_code |
integer | location code in a POST array |
language_code |
string | language code in a POST array |
check_url |
string | direct URL to search engine results you can use it to make sure that we provided accurate results |
datetime |
string | date and time when the result was received in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00 |
spell |
object | autocorrection of the search engine if the search engine provided results for a keyword that was corrected, we will specify the keyword corrected by the search engine and the type of autocorrection |
refinement_chips |
object | search refinement chips equals null |
item_types |
array | types of search results in SERP contains types of search results ( items ) found in SERP.possible item: youtube_video_info |
items_count |
integer | the number of results returned in the items array |
items |
array | elements of search results found in SERP |
type |
string | type of element = ‘youtube_video_info’ |
rank_group |
integer | group rank in SERP position within a group of elements with identical type valuespositions of elements with different type values are omitted from rank_group |
rank_absolute |
integer | absolute rank in SERP for the target domain absolute position among all the elements in SERP |
video_id |
string | ID of the video received in a POST array |
title |
string | title of the video |
url |
string | URL of the video |
thumbnail_url |
string | the URL of the page where the thumbnail is hosted |
channel_id |
string | the ID of the channel where the video is published |
channel_name |
string | the name of the channel where the video is published |
channel_url |
string | the URL of the channel where the video is published |
channel_logo |
string | the URL of the page where the logo image of the channel is hosted |
description |
string | description of the video |
views_count |
integer | number of views of the video |
likes_count |
integer | number of likes on the video |
comments_count |
integer | number of comments on the video |
channel_subscribers_count |
object | number of subscribers of the channel |
displayed_count |
string | displayed subscriber count subscriber count as displayed on YouTube |
count |
integer | subscriber count |
publication_date |
string | the date when the video is published |
timestamp |
string | date and time when the result is published in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2022-11-15 12:57:46 +00:00
|
keywords |
array | keywords relevant to the video |
category |
string | the category the video belongs to |
is_live |
boolean | indicates whether the video is on live |
is_embeddable |
boolean | indicates whether the video is embeddable |
duration_time |
string | duration of the video |
duration_time_seconds |
integer | duration of the video in seconds |
subtitles |
array | array of elements describing properties of subtitles in the video |
language |
string | language of subtitles |
is_translatable |
boolean | defines if subtitles are translatable |
is_auto_generated |
boolean | defines if subtitles are auto generated |
streaming_quality |
array | array of elements that contain information about all possible streaming qualities of the video |
type |
string/td> | type of element = ‘streaming_quality_element’ |
label |
string/td> | label of the quality element |
width |
integer | video width in pixels |
height |
integer | video height in pixels |
bitrate |
integer | bit rate of the video |
mime_type |
string | media type of the video |
fps |
integer | frame rate of the video |