Pricing
Your account will be charged only for posting a task. You can get the results of the task within the next 7 days for free.
The cost can be calculated on the Pricing page.
Your account will be charged only for posting a task. You can get the results of the task within the next 7 days for free.
The cost can be calculated on the Pricing page.
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 7 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.
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 |
keyword |
string | keyword received in a POST array keyword is returned with decoded %## (plus symbol ‘+’ will be decoded to a space character) |
type |
string | search engine type 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 |
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 |
items_count |
integer | the number of results returned in the items array |
items |
array | elements of search results found in SERP |
page |
integer | serial number of the returned HTML page |
date |
string | date and time when the HTML page was scanned in the UTC format: “yyyy-mm-dd hh-mm-ss +00:00” example: 2019-11-15 12:57:46 +00:00 |
html |
string | HTML page |
Instead of ‘login’ and ‘password’ use your credentials from https://app.dataforseo.com/api-access
# Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
login="login"
password="password"
cred="$(printf ${login}:${password} | base64)"
id="02261816-2027-0066-0000-c27d02864073"
curl --location --request GET "https://api.dataforseo.com/v3/serp/google/images/task_get/html/${id}"
--header "Authorization: Basic ${cred}"
--header "Content-Type: application/json"
--data-raw ""<?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/google/images/tasks_ready
// in addition to 'google' and 'images' 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/google/images/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/google/images/task_get/html/$id
if (isset($task_ready['endpoint_html'])) {
$result[] = $client->get($task_ready['endpoint_html']);
}
// #3 - another way to get the task results by id
// GET /v3/serp/google/images/task_get/html/$id
/*
if (isset($task_ready['id'])) {
$result[] = $client->get('/v3/serp/google/images/task_get/html/' . $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;
?>const task_id = '02201650-1073-0066-2000-1d132bb28897';
const axios = require('axios');
axios({
method: 'get',
url: 'https://api.dataforseo.com/v3/serp/google/images/task_get/html/' + task_id,
auth: {
username: 'login',
password: 'password'
},
headers: {
'content-type': 'application/json'
}
}).then(function (response) {
var result = response['data']['tasks'];
// Result data
console.log(result);
}).catch(function (error) {
console.log(error);
});from client import RestClient
# You can download this file from here https://cdn.dataforseo.com/v3/examples/python/python_Client.zip
client = RestClient("login", "password")
# 1 - using this method you can get a list of completed tasks
# GET /v3/serp/google/images/tasks_ready
# in addition to 'google' and 'images' you can also set other search engine and type parameters
# the full list of possible parameters is available in documentation
response = client.get("/v3/serp/google/images/tasks_ready")
# you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if response['status_code'] == 20000:
results = []
for task in response['tasks']:
if (task['result'] and (len(task['result']) > 0)):
for resultTaskInfo in task['result']:
# 2 - using this method you can get results of each completed task
# GET /v3/serp/google/images/html/$id
if(resultTaskInfo['endpoint_html']):
results.append(client.get(resultTaskInfo['endpoint_html']))
'''
# 3 - another way to get the task results by id
# GET /v3/serp/google/images/task_get/html/$id
if(resultTaskInfo['id']):
results.append(client.get("/v3/serp/google/images/task_get/html/" + resultTaskInfo['id']))
'''
print(results)
# do something with result
else:
print("error. Code: %d Message: %s" % (response["status_code"], response["status_message"]))using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
namespace DataForSeoDemos
{
public static partial class Demos
{
public static async Task serp_task_get()
{
var httpClient = new HttpClient
{
BaseAddress = new Uri("https://api.dataforseo.com/"),
// Instead of 'login' and 'password' use your credentials from https://app.dataforseo.com/api-access
DefaultRequestHeaders = { Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password"))) }
};
// #1 - using this method you can get a list of completed tasks
// GET /v3/serp/google/images/tasks_ready
// in addition to 'google' and 'images' you can also set other search engine and type parameters
// the full list of possible parameters is available in documentation
var response = await httpClient.GetAsync("/v3/serp/google/images/tasks_ready");
var tasksInfo = JsonConvert.DeserializeObject<dynamic>(await response.Content.ReadAsStringAsync());
var tasksResponses = new List<object>();
// you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if (tasksInfo.status_code == 20000)
{
if (tasksInfo.tasks != null)
{
foreach (var tasks in tasksInfo.tasks)
{
if (tasks.result != null)
{
foreach (var task in tasks.result)
{
if (task.endpoint_html != null)
{
// #2 - using this method you can get results of each completed task
// GET /v3/serp/google/images/task_get/html/$id
var taskGetResponse = await httpClient.GetAsync((string)task.endpoint_html);
var taskResultObj = JsonConvert.DeserializeObject<dynamic>(await taskGetResponse.Content.ReadAsStringAsync());
if (taskResultObj.tasks != null)
{
var fst = taskResultObj.tasks.First;
// you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if (fst.status_code >= 40000 || fst.result == null)
Console.WriteLine($"error. Code: {fst.status_code} Message: {fst.status_message}");
else
tasksResponses.Add(fst.result);
}
// #3 - another way to get the task results by id
// GET /v3/serp/google/images/task_get/html/$id
/*
var tasksGetResponse = await httpClient.GetAsync("/v3/serp/google/images/task_get/html/" + (string)task.id);
var tasksResultObj = JsonConvert.DeserializeObject<dynamic>(await tasksGetResponse.Content.ReadAsStringAsync());
if (tasksResultObj.tasks != null)
{
var fst = taskResultObj.tasks.First;
// you can find the full list of the response codes here https://docs.dataforseo.com/v3/appendix/errors
if (fst.status_code >= 40000 || fst.result == null)
Console.WriteLine($"error. Code: {fst.status_code} Message: {fst.status_message}");
else
tasksResponses.Add(fst.result);
}
*/
}
}
}
}
}
if (tasksResponses.Count > 0)
// do something with result
Console.WriteLine(String.Join(Environment.NewLine, tasksResponses));
else
Console.WriteLine("No completed tasks");
}
else
Console.WriteLine($"error. Code: {tasksInfo.status_code} Message: {tasksInfo.status_message}");
}
}
}The above command returns JSON structured like this:
{
"version": "0.1.20200129",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.3212 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "11151505-0696-0066-0000-340aec686f0d",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0684 sec.",
"cost": 0.00,
"result_count": 1,
"path": [
"v3",
"serp",
"google",
"images",
"task_get",
"html",
"11151505-0696-0066-0000-340aec686f0d"
],
"data": {
"api": "serp",
"function": "task_get",
"se": "google",
"se_type": "images",
"language_name": "English",
"location_code": 2840,
"keyword": "flight ticket new york san francisco",
"tag": "tag1",
"device": "desktop",
"os": "windows"
},
"result": [
{
"keyword": "flight ticket new york san francisco",
"type": "images",
"se_domain": "google.com",
"location_code": 2840,
"language_code": "en",
"datetime": "2019-11-15 13:05:36 +0000",
"items_count": 1,
"items": [
{
"page": 1,
"date": "2019-11-15 13:05:36 +0000",
"html": "