---
title: "Get Google News SERP Advanced Results by id"
url: "https://docs.dataforseo.com/v3/serp/google/news/task_get/advanced/"
date: "2026-06-06"
---

## Get Google News SERP Advanced Results by id

 

 

 ![checked](https://docs.dataforseo.com/v3/wp-content/themes/dataforseo/assets/img/icons/checked-circle.svg) GET  https://api.dataforseo.com/v3/serp/google/news/task\_get/advanced/$id     

      

Pricing

  Your account will be charged only for posting a task. You can get the results of the task within the next 30 days for free.  
The cost can be calculated on the [Pricing](https://dataforseo.com/pricing/serp/google-news-serp-api "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](https://en.wikipedia.org/wiki/Universally_unique_identifier) 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](https://en.wikipedia.org/wiki/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](https://docs.dataforseo.com/v3/appendix/sandbox.md) URL:  
`https://sandbox.dataforseo.com/v3/serp/google/news/task_get/advanced/00000000-0000-0000-0000-000000000000`  
The response will include all available items in the Google News SERP Advanced endpoint with the fields containing dummy data.  
You won’t be charged for using [Sandbox](https://docs.dataforseo.com/v3/appendix/sandbox.md) 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](https://docs.dataforseo.com/v3/appendix/errors.md)   **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](https://docs.dataforseo.com/v3/appendix/errors.md) |
| `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](https://en.wikipedia.org/wiki/Universally_unique_identifier) 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](https://docs.dataforseo.com/v3/appendix/errors.md) |
| `status_message` | string | *informational message of the task*   you can find the full list of general informational messages [here](https://docs.dataforseo.com/v3/appendix/errors.md) |
| `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* **the 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* |
| `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 |
| `keyword` | string | *keyword obtained as a result of search engine autocorrection*   the results will be provided for the corrected keyword |
| `type` | string | *type of autocorrection*   possible values:   `did_you_mean`, `showing_results_for`, `no_results_found_for`, `including_results_for` |
| `refinement_chips` | object | *search refinement chips* |
| `type` | string | *type of element = **‘refinement\_chips’*** |
| `xpath` | string | *the [XPath](https://en.wikipedia.org/wiki/XPath) of the element* |
| `items` | array | *items of the element* |
| `type` | string | *type of element = **‘refinement\_chips\_element’*** |
| `title` | string | *title of the element* |
| `url` | string | *search URL with refinement parameters* |
| `domain` | string | *domain in SERP* |
| `options` | array | *further search refinement options* |
| `type` | string | *type of element = **‘refinement\_chips\_option’*** |
| `title` | string | *title of the element* |
| `url` | string | *search URL with refinement parameters* |
| `domain` | string | *domain in SERP* |
| `includes_non_news_search_results` | boolean | *indicates whether the response contains non-news search results in addition to news content* |
| `item_types` | array | *types of search results in SERP*   contains types of search results (`items`) found in SERP.   possible item types:   `top_stories`, `news_search` |
| `se_results_count` | integer | *total number of results in SERP* |
| `items_count` | integer | *the number of results returned in the **`items`** array* |
| **`items`** | array | *elements of search results found in SERP* |
| **‘Google News’ SERP element** |  |  |
| `type` | string | *type of element = **‘news\_search’*** |
| `rank_group` | integer | *group rank in SERP*   position within a group of elements with identical `type` values   positions of elements with different `type` values are omitted from `rank_group` |
| `rank_absolute` | integer | *absolute rank in SERP*   absolute position among all the elements in SERP |
| `xpath` | string | *the [XPath](https://en.wikipedia.org/wiki/XPath) of the element* |
| `domain` | string | *domain name of the result in SERP* |
| `title` | string | *title of the result in SERP* |
| `url` | string | *URL of the result in SERP* |
| `image_url` | string | *URL of the image*   the URL leading to the image on the original resource or DataForSEO storage (in case the original source is not available) |
| `snippet` | string | *snippet of the result in SERP* |
| `time_published` | string | *indicates the time the result was published* |
| `timestamp` | string | *date and time when the news was published*   in the format “year-month-date:minutes:UTC\_difference\_hours:UTC\_difference\_minutes”   example:   `2019-11-15 12:57:46 +00:00` |
| `rectangle` | object | *rectangle parameters*   contains cartesian coordinates and pixel dimensions of the result’s snippet in SERP   equals `null` if `calculate_rectangles` in the POST request is not set to `true` |
| `x` | integer | *x-axis coordinate*   x-axis coordinate of the top-left corner of the result’s snippet, where top-left corner of the screen is the origin |
| `y` | integer | *y-axis coordinate*   y-axis coordinate of the top-left corner of the result’s snippet, where top-left corner of the screen is the origin |
| `width` | integer | *width of the element in pixels* |
| `height` | integer | *height of the element in pixels* |
| **‘Top Stories’ SERP element** |  |  |
| `type` | string | *type of element = **‘top\_stories’*** |
| `rank_group` | integer | *group rank in SERP*   position within a group of elements with identical `type` values   positions of elements with different `type` values are omitted from `rank_group` |
| `rank_absolute` | integer | *absolute rank in SERP*   absolute position among all the elements in SERP |
| `position` | string | *the alignment of the element in SERP*   can take the following values:   `left` |
| `xpath` | string | *the [XPath](https://en.wikipedia.org/wiki/XPath) of the element* |
| `title` | string | *title of the result in SERP* |
| `items` | array | *additional items present in the element*   if there are none, equals `null` |
| `type` | string | *type of element = ‘**top\_stories\_element**‘* |
| `source` | string | *name of the news source* |
| `domain` | string | *domain name of the news source* |
| `title` | string | *news title* |
| `date` | string | *time of publishing*   the approximate time when the news article appeared online   example:   `"23 hours ago"` |
| `amp_version` | boolean | *amp version available*   indicates whether the AMP version of the webpage is available |
| `timestamp` | string | *date and time when the news was published*   in the format “year-month-date:minutes:UTC\_difference\_hours:UTC\_difference\_minutes”   example:   `2019-11-15 12:57:46 +00:00` |
| `url` | string | *URL of the result in SERP* |
| `image_url` | string | *URL of the image*   the URL leading to the image on the original resource or DataForSEO storage (in case the original source is not available) |
| `rectangle` | object | *rectangle parameters*   contains cartesian coordinates and pixel dimensions of the result’s snippet in SERP   equals `null` if `calculate_rectangles` in the POST request is not set to `true` |
| `x` | integer | *x-axis coordinate*   x-axis coordinate of the top-left corner of the result’s snippet, where top-left corner of the screen is the origin |
| `y` | integer | *y-axis coordinate*   y-axis coordinate of the top-left corner of the result’s snippet, where top-left corner of the screen is the origin |
| `width` | integer | *width of the element in pixels* |
| `height` | integer | *height of the element in pixels* |



 

 









> 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/news/task_get/advanced/${id}" 
--header "Authorization: Basic ${cred}"  
--header "Content-Type: application/json" 
--data-raw ""
```





```php
<?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/news/tasks_ready
    // in addition to 'google' and 'news' 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/news/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/news/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/google/news/task_get/advanced/$id
                    /*
                    if (isset($task_ready['id'])) {
                        $result[] = $client->get('/v3/serp/google/news/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;
?>
```





```js
const task_id = '02231256-2604-0066-2000-57133b8fc54e';

const axios = require('axios');

axios({
    method: 'get',
    url: 'https://api.dataforseo.com/v3/serp/google/news/task_get/advanced/' + 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);
});
```





```python
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/news/tasks_ready
# in addition to 'google' and 'news' 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/news/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/news/task_get/advanced/$id
                if(resultTaskInfo['endpoint_advanced']):
                    results.append(client.get(resultTaskInfo['endpoint_advanced']))
                '''
                # 3 - another way to get the task results by id
                # GET /v3/serp/google/news/task_get/advanced/$id                
                if(resultTaskInfo['id']):
                    results.append(client.get("//v3/serp/google/news/task_get/advanced/" + resultTaskInfo['id']))
                '''
    print(results)
    # do something with result
else:
    print("error. Code: %d Message: %s" % (response["status_code"], response["status_message"]))
```





```csharp
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/news/tasks_ready
            // in addition to 'google' and 'organic' 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/news/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)
            {
                foreach (var tasks in tasksInfo.tasks)
                {
                    if (tasks.First.result != null)
                    {
                        foreach (var task in tasks.First.result)
                        {
                            if (task.endpoint_advanced != null)
                            {
                                // #2 - using this method you can get results of each completed task
                                // GET /v3/serp/google/news/task_get/advanced/$id
                                var tasksGetResponse = await httpClient.GetAsync((string)task.endpoint_advanced);
                                var tasksResultObj = JsonConvert.DeserializeObject<dynamic>(await tasksGetResponse.Content.ReadAsStringAsync());
                                if (tasksResultObj.tasks != null)
                                {
                                    foreach (var taskResult in tasksResultObj.tasks)
                                    {
                                        var fst = taskResult.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/news/task_get/advanced/$id
                                /*
                                var tasksGetResponse = await httpClient.GetAsync("/v3/serp/google/news/task_get/advanced/" + (string)task.id);
                                var tasksResultObj = JsonConvert.DeserializeObject<dynamic>(await tasksGetResponse.Content.ReadAsStringAsync());
                                if (tasksResultObj.tasks != null)
                                {
                                    foreach (var taskResult in tasksResultObj.tasks)
                                    {
                                        var fst = taskResult.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.20200923",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.0733 sec.",
  "cost": 0,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "10061219-1535-0066-0000-268f221de517",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "0.0193 sec.",
      "cost": 0,
      "result_count": 1,
      "path": [
        "v3",
        "serp",
        "google",
        "news",
        "task_get",
        "advanced",
        "10061219-1535-0066-0000-268f221de517"
      ],
      "data": {
        "api": "serp",
        "function": "task_get",
        "se": "google",
        "se_type": "news",
        "language_code": "en",
        "location_code": "2840",
        "keyword": "android",
        "device": "desktop",
        "calculate_rectangles": true,
        "depth": 5,
        "os": "windows"
      },
      "result": [
        {
          "keyword": "android",
          "type": "news",
          "se_domain": "google.com",
          "location_code": 2840,
          "language_code": "en",
          "check_url": "https://www.google.com/search?q=android&num=100&hl=en&gl=US&gws_rd=cr&tbm=nws&uule=w+CAIQIFISCQs2MuSEtepUEUK33kOSuTsc&ie=UTF-8&oe=UTF-8",
          "datetime": "2022-01-13 18:07:52 +00:00",
          "spell": null,
          "refinement_chips": null,
          "includes_non_news_search_results": false,
          "item_types": [
            "news_search",
            "top_stories"
          ],
          "se_results_count": 771000000,
          "items_count": 100,
          "items": [
            {
              "type": "news_search",
              "rank_group": 1,
              "rank_absolute": 1,
              "xpath": "/html[1]/body[1]/div[7]/div[1]/div[10]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]",
              "domain": "www.eff.org",
              "title": "VICTORY: Google Releases “disable 2g” Feature for New Android Smartphones",
              "url": "https://www.eff.org/deeplinks/2022/01/victory-google-releases-disable-2g-feature-new-android-smartphones",
              "image_url": "https://api.dataforseo.com/cdn/i/01132007-1535-0139-0000-7b275022ce6d:0",
              "snippet": "Last year Google quietly pushed a new feature to its Android operating nsystem allowing users to optionally disable 2G at the modem level in...",
              "time_published": null,
              "timestamp": "2022-01-12 22:07:51 +00:00",
              "rectangle": {
                "x": 180,
                "y": 182,
                "width": 652,
                "height": 178
              }
            },
            {
              "type": "top_stories",
              "rank_group": 1,
              "rank_absolute": 2,
              "position": "left",
              "xpath": "/html[1]/body[1]/div[7]/div[1]/div[10]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/g-section-with-header[1]",
              "title": "Nvidia's Shield TVs get Android 11 upgrade",
              "items": [
                {
                  "type": "top_stories_element",
                  "source": "The Verge",
                  "domain": "www.theverge.com",
                  "title": "The Nvidia Shield is getting Android 11 and other upgrades",
                  "date": "1 day ago",
                  "amp_version": false,
                  "timestamp": "2022-01-12 18:07:51 +00:00",
                  "url": "https://www.theverge.com/2022/1/12/22880057/nvidia-shield-android-11-update-set-top-box-streaming",
                  "image_url": null
                },
                {
                  "type": "top_stories_element",
                  "source": "PC Gamer",
                  "domain": "www.pcgamer.com",
                  "title": "Nvidia Shield Android 11 update brings improved 4k streaming and gaming",
                  "date": "10 hours ago",
                  "amp_version": false,
                  "timestamp": "2022-01-13 08:07:51 +00:00",
                  "url": "https://www.pcgamer.com/nvidia-shield-android-11-update-brings-improved-4k-streaming-and-gaming/",
                  "image_url": null
                },
                {
                  "type": "top_stories_element",
                  "source": "Gizmodo",
                  "domain": "gizmodo.com",
                  "title": "Nvidia Shield TVs Are Getting a Long-Awaited Update, but Not Android 12",
                  "date": "1 day ago",
                  "amp_version": false,
                  "timestamp": "2022-01-12 18:07:51 +00:00",
                  "url": "https://gizmodo.com/nvidia-shield-tvs-are-getting-a-long-awaited-update-bu-1848342653",
                  "image_url": null
                }
              ],
              "rectangle": {
                "x": 180,
                "y": 376,
                "width": 652,
                "height": 325
              }
            },
            {
              "type": "news_search",
              "rank_group": 2,
              "rank_absolute": 3,
              "xpath": "/html[1]/body[1]/div[7]/div[1]/div[10]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[2]",
              "domain": "www.cnet.com",
              "title": "Nvidia's GeForce Now service can stream Fortnite on iPhone and Android",
              "url": "https://www.cnet.com/tech/gaming/nvidias-geforce-now-service-can-stream-fortnite-on-iphone-and-android/",
              "image_url": "https://api.dataforseo.com/cdn/i/01132007-1535-0139-0000-7b275022ce6d:1",
              "snippet": "The game streaming service, offered by chipmaker Nvidia, has new touch ncontrols to make it easier to play the game too.",
              "time_published": null,
              "timestamp": "2022-01-13 17:07:51 +00:00",
              "rectangle": {
                "x": 180,
                "y": 729,
                "width": 652,
                "height": 178
              }
            },
            {
              "type": "top_stories",
              "rank_group": 2,
              "rank_absolute": 4,
              "position": "left",
              "xpath": "/html[1]/body[1]/div[7]/div[1]/div[10]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/g-section-with-header[2]",
              "title": "News about Android",
              "items": [
                {
                  "type": "top_stories_element",
                  "source": "Ars Technica",
                  "domain": "arstechnica.com",
                  "title": "After ruining Android messaging, Google says iMessage is too powerful",
                  "date": "2 days ago",
                  "amp_version": false,
                  "timestamp": "2022-01-11 18:07:51 +00:00",
                  "url": "https://arstechnica.com/gadgets/2022/01/after-ruining-android-messaging-google-says-imessage-is-too-powerful/"
                },
                {
                  "type": "top_stories_element",
                  "source": "How-To Geek",
                  "domain": "www.howtogeek.com",
                  "title": "Watch Out for Wordle Scams on iPhone and Android",
                  "date": "1 day ago",
                  "amp_version": false,
                  "timestamp": "2022-01-12 18:07:51 +00:00",
                  "url": "https://www.howtogeek.com/779288/watch-out-for-wordle-scams-on-iphone-and-android/"
                },
                {
                  "type": "top_stories_element",
                  "source": "Android Police",
                  "domain": "www.androidpolice.com",
                  "title": "Apple’s leaked take on the punch-hole camera would make it stand out from nthe Android crowd once again",
                  "date": "4 hours ago",
                  "amp_version": false,
                  "timestamp": "2022-01-13 14:07:51 +00:00",
                  "url": "https://www.androidpolice.com/apples-leaked-take-on-the-punch-hole-camera-would-make-it-stand-out-from-the-android-crowd-once-again/"
                }
              ],
              "rectangle": {
                "x": 180,
                "y": 923,
                "width": 652,
                "height": 325
              }
            }
          ]
        }
      ]
    }
  ]
}
```









 

  cURL   php   Node.js   Python   cSharp