# Google Shopping Deals Search

> Google Shopping Deals Search 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).

Search for product deals on Google Shopping with filtering by store, price range, condition, sale status, shipping, and sorting options.

## Facts

- Endpoint: GET https://agents.openwebninja.com/realtime-product-search/v2/deals?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-google-shopping-deals-search-d2c47e89
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Gnz3jAXxaAjNgpQn1sXZ_

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-google-shopping-deals-search-d2c47e89
```

Example prompt: Find me deals on noise-cancelling headphones on Google Shopping — only show items on sale with free shipping, sorted by lowest price, from Amazon or Best Buy, under $200.

## When to prefer this

Use this endpoint when you need to search for product deals specifically indexed on Google Shopping, with rich filtering options including sale status, free shipping, free returns, store filtering, condition, and price range. Prefer this over generic product search endpoints when the user wants to compare deals across multiple retailers or needs Google Shopping's deal-specific catalog.

## Known failure modes

- Missing required 'q' parameter returns validation error
- Invalid country or language code may return no results or an error
- Stores that don't exist on Google Shopping may yield empty results
- Page number beyond available results returns empty data
- Rate limiting or quota exhaustion from the underlying API returns an error response

## How this service works

Search for product deals on Google Shopping with pagination/scrolling support.

## Output

Returns a list of product deals from Google Shopping matching the query and filters, along with available filter options (including shoprs reference IDs for further filtering), a status string, and a unique request ID. Each page contains up to 40 results.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "q"
 ],
 "properties": {
  "q": {
   "type": "string",
   "description": "Search query / keyword"
  },
  "page": {
   "type": "integer",
   "default": 1,
   "maximum": 100,
   "minimum": 1,
   "description": "Results page to return (each page contains up to 40 product results)."
  },
  "limit": {
   "type": "integer",
   "default": 40,
   "maximum": 120,
   "minimum": 1,
   "description": "Maximum number of products to return."
  },
  "shoprs": {
   "type": "string",
   "description": "The parameter controls filtering, along with the q parameter.  \n  It should be used in combination with the updated q parameter, which now contains the name of the filter applied next to your original query.  \n  You can get the shoprs filter value from the response of this endpoint, under the filters response field.  \n  In addition, it can be obtained directly from Google Shopping and used with the endpoint."
  },
  "stores": {
   "type": "string",
   "description": "Only return product offers from specific stores.  Accepts a single or a comma delimited list of store names (e.g. best buy,walmart,amazon)."
  },
  "country": {
   "type": "string",
   "default": "us",
   "description": "Country code of the region/country to return offers for. Allowed values: See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2."
  },
  "on_sale": {
   "type": "boolean",
   "default": false,
   "description": "Only return product offers that are currently on sale."
  },
  "sort_by": {
   "enum": [
    "BEST_MATCH",
    "TOP_RATED",
    "LOWEST_PRICE",
    "HIGHEST_PRICE"
   ],
   "type": "string",
   "default": "BEST_MATCH",
   "description": "Sort product offers by best match, top rated, lowest or highest price."
  },
  "language": {
   "type": "string",
   "default": "en",
   "description": "The language of the results. Allowed values: See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes."
  },
  "max_price": {
   "type": "number",
   "description": "Only return product offers with price lower than a certain value"
  },
  "min_price": {
   "type": "number",
   "description": "Only return product offers with price greater than a certain value"
  },
  "free_returns": {
   "type": "boolean",
   "default": false,
   "description": "Only return product offers that offer free returns."
  },
  "free_shipping": {
   "type": "boolean",
   "default": false,
   "description": "Only return product offers that offer free shipping/delivery."
  },
  "return_filte
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "data": {
   "type": "object",
   "properties": {
    "filters": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "title": {
        "type": "string",
        "description": "The title of the filter."
       },
       "values": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "q": {
           "type": "string",
           "description": "The query parameter value for the filter."
          },
          "title": {
           "type": "string",
           "description": "The display name of the filter value."
          },
          "shoprs": {
           "type": "string",
           "description": "A reference ID for shopping results."
          }
         }
        }
       },
       "multivalue": {
        "type": "boolean",
        "description": "Indicates if multiple values can be selected for the filter."
       }
      }
     }
    }
   }
  },
  "status": {
   "type": "string",
   "description": "The status of the response"
  },
  "request_id": {
   "type": "string",
   "description": "A unique identifier for the request"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-google-shopping-deals-search-d2c47e89/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)
