# Google Shopping Product Search

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

Searches Google Shopping for products matching a keyword query, with support for filtering, sorting, pagination, and locale settings.

## Facts

- Endpoint: GET https://agents.openwebninja.com/realtime-product-search/search?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-product-search-5bee09b1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_FxXDNeQxqogHWvKkWAGki

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-product-search-5bee09b1
```

Example prompt: Search Google Shopping for wireless noise-cancelling headphones in the US, sorted by lowest price, and show me the top 10 results — only include items that are on sale and have free shipping.

## When to prefer this

Use this endpoint when you need real-time Google Shopping product listings — especially when you want to search across many sellers, filter by price range, sale status, shipping speed, product condition, or seller, and sort results by rating or price. Prefer this over Amazon-specific or retailer-specific endpoints when you need broad multi-merchant discovery.

## Known failure modes

- Missing required 'q' parameter returns a 400 bad request error
- Invalid country or language code may return empty results or an error
- Page number exceeding available results returns an empty products array
- Store ID not matching any seller returns empty results
- Filters from outside the valid filter set for the query may be ignored or cause errors
- Rate limiting or quota exhaustion may return a 429 or 402 payment-required error

## How this service works

Search for products on Google Shopping V1. Pagination/scrolling is supported using the page and limit parameters.

## Output

Returns a list of products with titles, unique IDs, average ratings, number of reviews, number of offers, typical price ranges, and URLs to the product page, specifications, offers, and reviews. Also returns an array of available filter options (name and whether multiple values are selectable) and a request status and ID.

## 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 100 product results)."
  },
  "limit": {
   "type": "integer",
   "default": 10,
   "maximum": 100,
   "minimum": 1,
   "description": "Maximum number of products to return."
  },
  "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."
  },
  "filters": {
   "type": "string",
   "description": "A list of filters (e.g. Size, Color, Price, etc) supported by Google Shopping for a specific query and result set. The filter values should be taken from the Search response filters array (separated by comma when multiple values are specified).  \n  In case a refinement filter is defined as multivalue (i.e. multivalue: true), multiple values from within the specific filter can be specified in the filters list (e.g. Seller), otherwise, only a single value can be specified for the filter (e.g. Price).  "
  },
  "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."
  },
  "store_id": {
   "type": "string",
   "description": "Only return product offers from specific stores.  \n  Store IDs can be obtained from the Google Shopping URL after using the Seller filter by taking the part after the merchagg: variable within the tbs parameter.  \n  When filtering for a certain Seller / Store on Google Shopping, a URL similar to the following is shown on the address bar:  \n  https://www.google.com/search?gl=us&tbm=shop&q=shoes&tbs=mr:1,merchagg:m100456214|m114373355, in that case, the Store IDs are m100456214 and m114373355 - to filter for these stores set store_id=m100456214,m114373355."
  },
  "max_price": {
   "type": "number",
   "de
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "data": {
   "type": "object",
   "properties": {
    "filters": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "name": {
        "type": "string",
        "description": "The name of the filter."
       },
       "multivalue": {
        "type": "boolean",
        "description": "Indicates whether multiple values can be selected for the filter."
       }
      }
     }
    },
    "products": {
     "type": "array",
     "items": {
      "type": "object",
      "properties": {
       "product_id": {
        "type": "string",
        "description": "A unique identifier for the product."
       },
       "product_title": {
        "type": "string",
        "description": "The title of the product."
       },
       "product_rating": {
        "type": "number",
        "description": "The average rating of the product."
       },
       "product_page_url": {
        "type": "string",
        "description": "The URL of the product's main page."
       },
       "product_num_offers": {
        "type": "string",
        "description": "The number of offers available for the product."
       },
       "product_description": {
        "type": "string",
        "description": "A brief description of the product."
       },
       "product_num_reviews": {
        "type": "integer",
        "description": "The total number of reviews for the product."
       },
       "typical_price_range": {
        "type": "array",
        "items": {
         "type": "string"
        },
        "description": "The usual price range of the product."
       },
       "product_specs_page_url": {
        "type": "string",
        "description": "The URL to view the product specifications."
       },
       "product_offers_page_url": {
        "type": "string",
        "description": "The URL to view different offers for the product."
       },
       "product_reviews_page_url": {
        "type": "string",
        "description": "The URL to view customer reviews of the product."
       }
      }
     }
    }
   }
  },
  "status": {
   "type": "string",
   "description": "The status of the response, typically indicating success or failure."
  },
  "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-product-search-5bee09b1/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)
