Skip to content

Google News SERP Fresh

Google News SERP delivers up to 100 results from the "News" tab in Google Search (not the news.google.com subdomain). Results are specific to the keyword, location, and language you specify. Desktop only.

Important Limitation

Google News SERP API is desktop only. Mobile results are not supported for this endpoint.

Supported OS types for desktop: windows, macos.

Endpoint Summary

MethodEndpoint
Live AdvancedPOST /v3/serp/google/news/live/advanced
Live HTMLPOST /v3/serp/google/news/live/html
Standard Task POSTPOST /v3/serp/google/news/task_post
Standard Task GET AdvancedGET /v3/serp/google/news/task_get/advanced/{id}
Standard Task GET HTMLGET /v3/serp/google/news/task_get/html/{id}
Tasks ReadyGET /v3/serp/google/news/tasks_ready

Delivery Methods

Live

Returns results immediately. One task per API call. Highest cost.

Standard

Asynchronous POST + GET pattern. Lower cost. Supports normal and high priority.

Use pingback_url or postback_url to avoid polling. If postback_url is used, specify the function: advanced or html.

Parameters

Required

FieldTypeDescription
keywordstringSearch query for the News tab. Max 700 characters.
location_codeintegerLocation code. Required if location_name not set. Example: 2840 (United States).
language_codestringLanguage code. Required if language_name not set. Example: en.

Optional

FieldTypeDefaultDescription
depthinteger100Number of results. Max 100. Billed per 100 results.
osstringwindowswindows or macos. Only desktop OS supported.
priorityinteger11 = normal, 2 = high priority
tagstringCustom task identifier (max 255 chars)
postback_urlstringReceive results when complete
pingback_urlstringNotify on completion
location_namestringFull location name (alternative to location_code)
language_namestringFull language name (alternative to language_code)

Example Requests

curl

bash
login="your_login"
password="your_password"
cred="$(printf ${login}:${password} | base64)"

curl --location --request POST \
  "https://api.dataforseo.com/v3/serp/google/news/live/advanced" \
  --header "Authorization: Basic ${cred}" \
  --header "Content-Type: application/json" \
  --data '[{
    "keyword": "local seo news",
    "location_code": 2840,
    "language_code": "en",
    "depth": 20
  }]'

Python

python
import requests
from requests.auth import HTTPBasicAuth

login = "your_login"
password = "your_password"

url = "https://api.dataforseo.com/v3/serp/google/news/live/advanced"
payload = [{
    "keyword": "local seo news",
    "location_code": 2840,
    "language_code": "en",
    "depth": 20
}]

response = requests.post(
    url,
    auth=HTTPBasicAuth(login, password),
    json=payload
)
result = response.json()

for task in result.get("tasks", []):
    for res in task.get("result", []):
        for item in res.get("items", []):
            print(
                item.get("rank_absolute"),
                item.get("title"),
                item.get("source"),
                item.get("url"),
                item.get("timestamp")
            )

Standard Method (Python)

python
import requests
from requests.auth import HTTPBasicAuth
import time

login = "your_login"
password = "your_password"
auth = HTTPBasicAuth(login, password)
base_url = "https://api.dataforseo.com/v3/serp/google/news"

# Step 1: Set the task
post_response = requests.post(
    f"{base_url}/task_post",
    auth=auth,
    json=[{
        "keyword": "local seo updates",
        "location_code": 2840,
        "language_code": "en"
    }]
)
task_id = post_response.json()["tasks"][0]["id"]

# Step 2: Poll for results
time.sleep(10)
get_response = requests.get(
    f"{base_url}/task_get/advanced/{task_id}",
    auth=auth
)
result = get_response.json()
print(result)

Response Structure

json
{
  "tasks": [
    {
      "id": "01010101-0101-0101-0101-010101010101",
      "status_code": 20000,
      "status_message": "Ok.",
      "result": [
        {
          "keyword": "local seo news",
          "type": "news",
          "se_domain": "google.com",
          "location_code": 2840,
          "language_code": "en",
          "check_url": "https://www.google.com/search?q=local+seo+news&tbm=nws&...",
          "items_count": 20,
          "items": [
            {
              "type": "news_element",
              "rank_group": 1,
              "rank_absolute": 1,
              "title": "Google Rolls Out New Local SEO Update",
              "url": "https://searchengineland.com/...",
              "source": "Search Engine Land",
              "domain": "searchengineland.com",
              "timestamp": "2026-04-15 09:30:00 +00:00",
              "description": "Google has rolled out a new update affecting local search rankings..."
            }
          ]
        }
      ]
    }
  ]
}

Key Response Fields — News Items

FieldTypeDescription
typestringAlways news_element
rank_groupintegerPosition within news results
rank_absoluteintegerAbsolute position across all returned items
titlestringArticle headline
urlstringArticle URL
sourcestringPublication name
domainstringRoot domain of the publication
timestampstringArticle publish date and time
descriptionstringArticle preview text or meta description
check_urlstringGoogle News URL to verify results in browser

Cost Structure

MethodPriorityRelative Cost
LiveHighest
StandardNormal (1)Base
StandardHigh (2)Above base

Results are stored for 30 days for Standard method; HTML results for 7 days.

Internal SOP reference — not affiliated with DataForSEO.