Appearance
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
| Method | Endpoint |
|---|---|
| Live Advanced | POST /v3/serp/google/news/live/advanced |
| Live HTML | POST /v3/serp/google/news/live/html |
| Standard Task POST | POST /v3/serp/google/news/task_post |
| Standard Task GET Advanced | GET /v3/serp/google/news/task_get/advanced/{id} |
| Standard Task GET HTML | GET /v3/serp/google/news/task_get/html/{id} |
| Tasks Ready | GET /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
| Field | Type | Description |
|---|---|---|
keyword | string | Search query for the News tab. Max 700 characters. |
location_code | integer | Location code. Required if location_name not set. Example: 2840 (United States). |
language_code | string | Language code. Required if language_name not set. Example: en. |
Optional
| Field | Type | Default | Description |
|---|---|---|---|
depth | integer | 100 | Number of results. Max 100. Billed per 100 results. |
os | string | windows | windows or macos. Only desktop OS supported. |
priority | integer | 1 | 1 = normal, 2 = high priority |
tag | string | — | Custom task identifier (max 255 chars) |
postback_url | string | — | Receive results when complete |
pingback_url | string | — | Notify on completion |
location_name | string | — | Full location name (alternative to location_code) |
language_name | string | — | Full 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
| Field | Type | Description |
|---|---|---|
type | string | Always news_element |
rank_group | integer | Position within news results |
rank_absolute | integer | Absolute position across all returned items |
title | string | Article headline |
url | string | Article URL |
source | string | Publication name |
domain | string | Root domain of the publication |
timestamp | string | Article publish date and time |
description | string | Article preview text or meta description |
check_url | string | Google News URL to verify results in browser |
Cost Structure
| Method | Priority | Relative Cost |
|---|---|---|
| Live | — | Highest |
| Standard | Normal (1) | Base |
| Standard | High (2) | Above base |
Results are stored for 30 days for Standard method; HTML results for 7 days.