Skip to content

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

MethodEndpoint
Live AdvancedPOST /v3/serp/google/organic/live/advanced
Live RegularPOST /v3/serp/google/organic/live/regular
Live HTMLPOST /v3/serp/google/organic/live/html
Standard Task POSTPOST /v3/serp/google/organic/task_post
Standard Task GETGET /v3/serp/google/organic/task_get/{function}/{id}
Tasks ReadyGET /v3/serp/google/organic/tasks_ready

Endpoint Differences

EndpointWhat you get
RegularOrganic and paid results only — no rich elements
AdvancedFull SERP: featured snippets, knowledge panels, People Also Ask, local packs, AI overviews, shopping results
HTMLRaw 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_post

Up to 100 tasks per POST call. Each task is charged only on setting. Results are retrieved separately via Task GET or callbacks.

Required Parameters

FieldTypeDescription
keywordstringSearch query. Max 700 characters. URL-encode % as %25, + as %2B.
location_codeintegerLocation code (required if location_name not set). Example: 2840 for United States.
language_codestringLanguage code (required if language_name not set). Example: en.

Optional Parameters

FieldTypeDefaultDescription
depthinteger10Number of results to return. Max 700. Billing increments by 10.
devicestringdesktopdesktop or mobile
osstringwindows / androidOS for device. Desktop: windows, macos. Mobile: android, ios.
priorityinteger11 = normal, 2 = high (higher cost)
tagstringCustom task identifier (max 255 chars)
postback_urlstringURL to receive completed results via POST
pingback_urlstringURL to notify on task completion
load_async_ai_overviewbooleanfalseLoad AI overviews that render asynchronously. Adds $0.002/task.
calculate_rectanglesbooleanfalseReturn pixel positions of SERP elements. Multiplies cost by 2.
people_also_ask_click_depthintegerExpand 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/advanced

One 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

FieldTypeDescription
typestringElement type: organic, paid, featured_snippet, people_also_ask, local_pack, knowledge_graph, ai_overview, etc.
rank_groupintegerPosition within this element type group
rank_absoluteintegerAbsolute position across all SERP elements
domainstringRoot domain of the result
titlestringPage title as shown in SERP
urlstringFull URL of the result
descriptionstringMeta description / snippet text shown in SERP
breadcrumbstringDisplay URL breadcrumb shown below title
is_imagebooleanWhether the result includes an image
is_videobooleanWhether the result includes a video
pre_snippetstringText shown above the main snippet
extended_snippetstringAdditional snippet text (sitelinks, etc.)
timestampstringPage publish or update date if shown
rectangleobjectPixel position data (only when calculate_rectangles: true)

SERP Element Types

The Advanced endpoint returns many element types beyond standard organic listings:

TypeDescription
organicStandard organic result
paidGoogle Ads result
featured_snippetPosition zero featured snippet
people_also_askPeople Also Ask questions
local_packLocal 3-pack results
knowledge_graphKnowledge panel
ai_overviewGoogle AI Overview (formerly SGE)
shoppingGoogle Shopping results
top_storiesNews carousel
imagesImage pack
videoVideo carousel
related_searchesRelated 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.

Internal SOP reference — not affiliated with DataForSEO.