Appearance
Google Organic SERP Fresh
Google Organic SERP delivers search engine results for a specified keyword, location, language, and device. Results are location-emulated and exclude personalization signals.
Endpoint Summary
| Method | Endpoint |
|---|---|
| Live Advanced | POST /v3/serp/google/organic/live/advanced |
| Live Regular | POST /v3/serp/google/organic/live/regular |
| Live HTML | POST /v3/serp/google/organic/live/html |
| Standard Task POST | POST /v3/serp/google/organic/task_post |
| Standard Task GET | GET /v3/serp/google/organic/task_get/{function}/{id} |
| Tasks Ready | GET /v3/serp/google/organic/tasks_ready |
Endpoint Differences
| Endpoint | What you get |
|---|---|
| Regular | Organic and paid results only — no rich elements |
| Advanced | Full SERP: featured snippets, knowledge panels, People Also Ask, local packs, AI overviews, shopping results |
| HTML | Raw SERP HTML for custom parsing |
Use Advanced for any production integration that needs complete SERP coverage.
Setting a Task (Standard Method)
POST https://api.dataforseo.com/v3/serp/google/organic/task_postUp to 100 tasks per POST call. Each task is charged only on setting. Results are retrieved separately via Task GET or callbacks.
Required Parameters
| Field | Type | Description |
|---|---|---|
keyword | string | Search query. Max 700 characters. URL-encode % as %25, + as %2B. |
location_code | integer | Location code (required if location_name not set). Example: 2840 for United States. |
language_code | string | Language code (required if language_name not set). Example: en. |
Optional Parameters
| Field | Type | Default | Description |
|---|---|---|---|
depth | integer | 10 | Number of results to return. Max 700. Billing increments by 10. |
device | string | desktop | desktop or mobile |
os | string | windows / android | OS for device. Desktop: windows, macos. Mobile: android, ios. |
priority | integer | 1 | 1 = normal, 2 = high (higher cost) |
tag | string | — | Custom task identifier (max 255 chars) |
postback_url | string | — | URL to receive completed results via POST |
pingback_url | string | — | URL to notify on task completion |
load_async_ai_overview | boolean | false | Load AI overviews that render asynchronously. Adds $0.002/task. |
calculate_rectangles | boolean | false | Return pixel positions of SERP elements. Multiplies cost by 2. |
people_also_ask_click_depth | integer | — | Expand People Also Ask by this many levels. Additional charge per level. |
Search Operator Warning
If keyword contains operators like site:, intitle:, filetype:, inurl:, allintext:, etc., the charge per task is multiplied by 5.
Live Advanced Endpoint
For real-time results — no polling required.
POST https://api.dataforseo.com/v3/serp/google/organic/live/advancedOne task per API call. Charged per request (not per task set).
Example Request (curl)
bash
login="your_login"
password="your_password"
cred="$(printf ${login}:${password} | base64)"
curl --location --request POST \
"https://api.dataforseo.com/v3/serp/google/organic/live/advanced" \
--header "Authorization: Basic ${cred}" \
--header "Content-Type: application/json" \
--data '[{
"keyword": "best seo tools",
"location_code": 2840,
"language_code": "en",
"device": "desktop",
"depth": 10
}]'Example Request (Python)
python
import requests
from requests.auth import HTTPBasicAuth
import json
login = "your_login"
password = "your_password"
url = "https://api.dataforseo.com/v3/serp/google/organic/live/advanced"
payload = [{
"keyword": "best seo tools",
"location_code": 2840,
"language_code": "en",
"device": "desktop",
"depth": 10
}]
response = requests.post(
url,
auth=HTTPBasicAuth(login, password),
json=payload
)
result = response.json()
# Extract organic results
tasks = result.get("tasks", [])
for task in tasks:
for item in task.get("result", []):
for element in item.get("items", []):
if element.get("type") == "organic":
print(element.get("rank_absolute"), element.get("title"), element.get("url"))Example Request (PHP)
php
<?php
$client = new RestClient('https://api.dataforseo.com/', null, 'your_login', 'your_password');
$post_array = [[
'keyword' => 'best seo tools',
'location_code' => 2840,
'language_code' => 'en',
'device' => 'desktop',
'depth' => 10
]];
$result = $client->post('/v3/serp/google/organic/live/advanced', $post_array);
print_r($result);
?>Response Structure
json
{
"version": "0.1.20240101",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.5489 sec.",
"tasks": [
{
"id": "01010101-0101-0101-0101-010101010101",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.4562 sec.",
"data": {
"keyword": "best seo tools",
"location_code": 2840,
"language_code": "en",
"device": "desktop"
},
"result": [
{
"keyword": "best seo tools",
"type": "organic",
"se_domain": "google.com",
"location_code": 2840,
"language_code": "en",
"check_url": "https://www.google.com/search?q=best+seo+tools&...",
"datetime": "2026-01-01 12:00:00 +00:00",
"items_count": 10,
"items": [...]
}
]
}
]
}Key Response Fields — Organic Items
| Field | Type | Description |
|---|---|---|
type | string | Element type: organic, paid, featured_snippet, people_also_ask, local_pack, knowledge_graph, ai_overview, etc. |
rank_group | integer | Position within this element type group |
rank_absolute | integer | Absolute position across all SERP elements |
domain | string | Root domain of the result |
title | string | Page title as shown in SERP |
url | string | Full URL of the result |
description | string | Meta description / snippet text shown in SERP |
breadcrumb | string | Display URL breadcrumb shown below title |
is_image | boolean | Whether the result includes an image |
is_video | boolean | Whether the result includes a video |
pre_snippet | string | Text shown above the main snippet |
extended_snippet | string | Additional snippet text (sitelinks, etc.) |
timestamp | string | Page publish or update date if shown |
rectangle | object | Pixel position data (only when calculate_rectangles: true) |
SERP Element Types
The Advanced endpoint returns many element types beyond standard organic listings:
| Type | Description |
|---|---|
organic | Standard organic result |
paid | Google Ads result |
featured_snippet | Position zero featured snippet |
people_also_ask | People Also Ask questions |
local_pack | Local 3-pack results |
knowledge_graph | Knowledge panel |
ai_overview | Google AI Overview (formerly SGE) |
shopping | Google Shopping results |
top_stories | News carousel |
images | Image pack |
video | Video carousel |
related_searches | Related searches at bottom |
Pixel Ranking
Set calculate_rectangles: true to receive the rectangle object on each item. This gives the distance from the top of the SERP page to the element, useful for above-the-fold analysis.
json
"rectangle": {
"x": 0,
"y": 287,
"width": 652,
"height": 110
}Cost is multiplied by 2 when this parameter is enabled.