# OpenWeb Ninja Search Full (Heavy SERP)

> OpenWeb Ninja Search Full (Heavy SERP) is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Returns real-time, full-depth Google SERP results including organic results, ads, AI overviews, knowledge graph, places, top stories, inline videos, answer box, and discussions via a heavy scrape path.

## Facts

- Endpoint: GET https://agents.openwebninja.com/realtime-web-search/search-full?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-openweb-ninja-search-full-heavy-serp-ee058e15
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_piMzknAFCSVXvCUO-Mr9s

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-openweb-ninja-search-full-heavy-serp-ee058e15
```

Example prompt: Do a full Google search for 'best electric cars 2025' targeting the US in English, and give me everything — organic results, any AI overview, answer box, top stories, and ads — up to 10 results.

## When to prefer this

Choose this endpoint when you need the richest, most complete Google SERP data in a single call — including AI overviews, knowledge graph, places, ads, and answer boxes — rather than just organic links. It costs 2 credits per request (vs 1 for the lighter Search endpoint), so prefer it when you need the full SERP surface: local pack, answer box, AI summaries, or ad intelligence. Use the lighter Search endpoint for simple organic-results-only queries where cost efficiency matters more than breadth.

## Known failure modes

- Missing required 'q' parameter returns validation error
- Invalid country code (gl) or language code (hl) may cause unexpected results or errors
- Combining 'location' and 'uule' parameters simultaneously is not allowed and will cause an error
- Query returns no results for very obscure or misspelled queries (with nfpr=1 set)
- Rate limit or credit exhaustion causes 402 Payment Required response
- Google may not surface all result types (ads, AI overviews, places) for all queries — those fields return null

## How this service works

Get real-time full-depth web search results via the heavy serp path, including organic results, ads, AI overviews, knowledge graph, places, top stories, inline videos, answer box, and discussions. Supports Google Search parameters (gl, hl, tbs, etc.) and city-level geo targeting. Note: Each request to this endpoint consumes 2 request credits.

## Output

A JSON object containing: organic_results array (up to 10 items with titles, URLs, snippets), optional ads array, optional AI overviews with structured text fragments and reference links, optional answer_box with type and plain-text answer, optional places/local pack array, optional top_stories array, optional inline_videos array, optional discussions array, optional knowledge_graph, plus request metadata (status, request_id, parameters).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "q"
 ],
 "properties": {
  "q": {
   "type": "string",
   "example": "albert einstein",
   "description": "Search query. Supports all Google Advanced Search operators (site:, inurl:, intitle:, etc)."
  },
  "gl": {
   "type": "string",
   "default": "us",
   "description": "The country / region for which to make the query. 2-letter country code, see ISO 3166-1 alpha-2."
  },
  "hl": {
   "type": "string",
   "default": "en",
   "description": "The language to use for the search (Google's hl parameter). 2-letter language code, see ISO 639-1 alpha-2."
  },
  "lr": {
   "type": "string",
   "description": "Restrict search results to a specific language. Uses lang_{two-letter language code} with | as delimiter (e.g. lang_fr|lang_de searches French and German pages only)."
  },
  "nhr": {
   "enum": [
    "0",
    "1"
   ],
   "type": "string",
   "default": "0",
   "description": "Exclude 'People also ask' style related questions from the results with nhr=1. Include them with nhr=0 (default)."
  },
  "num": {
   "type": "integer",
   "default": 10,
   "maximum": 10,
   "minimum": 1,
   "description": "Maximum number of organic results to return per request (1-10)."
  },
  "tbs": {
   "type": "string",
   "description": "Advanced Google search parameters that aren't available using regular query parameters (e.g. qdr:d for the last day, qdr:w for the last week)."
  },
  "nfpr": {
   "enum": [
    "0",
    "1"
   ],
   "type": "string",
   "default": "0",
   "description": "Exclude results of the auto-corrected query when the original query is misspelled with nfpr=1, and include them with nfpr=0 (default)."
  },
  "uule": {
   "type": "string",
   "description": "Google's own encoded location string (e.g. w+CAIQICIgU2VhdHRsZSxXYXNoaW5ndG9uLFVuaXRlZCBTdGF0ZXM=), passed to Google as is. Use it instead of location when you already generate uule values. Cannot be combined with location."
  },
  "start": {
   "type": "integer",
   "default": 0,
   "description": "Number of results to skip for pagination (default 0)."
  },
  "device": {
   "enum": [
    "desktop",
    "mobile",
    "tablet"
   ],
   "type": "string",
   "default": "desktop",
   "description": "The device to simulate for the search. Mobile and tablet return Google's mobile SERP layout, whose rankings and features can differ from desktop. Allowed values: desktop (default), mobile, tablet."
  },
  "location": {
   "type": "string",
   "description": "Where the search 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "organic_results",
    "has_ai_overviews"
   ],
   "properties": {
    "ads": {
     "type": "array",
     "items": {
      "type": "object"
     },
     "nullable": true,
     "description": "Sponsored / ad results, when Google surfaces them for this query."
    },
    "places": {
     "type": "array",
     "items": {
      "type": "object"
     },
     "nullable": true,
     "description": "Local pack / places results, when Google surfaces them for this query."
    },
    "answer_box": {
     "type": "object",
     "nullable": true,
     "properties": {
      "type": {
       "type": "string",
       "description": "Answer box variant. Examples: instant_answer, calculator, definition."
      },
      "answer": {
       "type": "string",
       "nullable": true,
       "description": "Plain-text answer Google displays."
      }
     },
     "description": "Google answer box (instant answer / calculator / definition), when Google surfaces one."
    },
    "top_stories": {
     "type": "array",
     "items": {
      "type": "object"
     },
     "nullable": true,
     "description": "Top Stories results, when Google surfaces them for this query."
    },
    "ai_overviews": {
     "type": "object",
     "nullable": true,
     "properties": {
      "text_parts": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "type"
        ],
        "properties": {
         "list": {
          "type": "array",
          "items": {
           "type": "object",
           "properties": {
            "text": {
             "type": "string",
             "description": "Item body text."
            },
            "title": {
             "type": "string",
             "nullable": true,
             "description": "Bold label preceding the item text, when present."
            }
           }
          },
          "nullable": true,
          "description": "Items of a list fragment."
         },
         "text": {
          "type": "string",
          "nullable": true,
          "description": "Text content of paragraph/heading fragments."
         },
         "type": {
          "type": "string",
          "description": "Fragment kind. Values: paragraph, heading, list."
         },
         "ordered": {
          "type": "boolean",
          "nullable": true,
     
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-openweb-ninja-search-full-heavy-serp-ee058e15/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
