Support
Search and purchaseSearch the catalog

Search the catalog

View as Markdown

Search for GoDaddy products, look up variants by ID, and retrieve product detail using the Shopping API.

Overview

Use the Shopping API v1 Catalog endpoints to browse products, resolve known IDs, and retrieve product detail before checkout.

All catalog operations use shopping.catalog:read scope.

Go to About the Shopping API for required headers and the error model.

Prerequisites

The following prerequisites are required before you can search the catalog:

  • a PAT with shopping.catalog:read scope
  • jq and uuidgen for the curl examples

Authenticate

These examples use a $GODADDY_PAT with shopping.catalog:read scope.

Go to About the Shopping API for the full list of required scopes.

Search products

POST /v1/shopping/catalog/search returns products matching a free-text query or filters. Use this endpoint to show buyers a browsable product list.

The following procedure searches the product catalog.

  • Search for available products:

    curl --fail-with-body --silent --show-error -X POST "https://api.godaddy.com/v1/shopping/catalog/search" \
      -H "Authorization: Bearer $GODADDY_PAT" \
      -H "Request-Id: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
        "context": { "address_country": "US", "currency": "USD", "language": "en" },
        "pagination": { "limit": 20 }
      }'
  • Search for hosting products by keyword:

    curl --fail-with-body --silent --show-error -X POST "https://api.godaddy.com/v1/shopping/catalog/search" \
      -H "Authorization: Bearer $GODADDY_PAT" \
      -H "Request-Id: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d '{
        "query": "hosting",
        "context": { "address_country": "US", "currency": "USD", "language": "en" },
        "pagination": { "limit": 20 }
      }'

Use pagination.cursor from the response and pass it in pagination.cursor on the next request to page through results when has_next_page is true.

Look up products by ID

POST /v1/shopping/catalog/lookup fetches one or more specific variants by their IDs. Use this when you already know the variant ID and need current pricing and availability.

The following procedure looks up variants by ID.

  • Look up specific variants:

    curl --fail-with-body --silent --show-error -X POST "https://api.godaddy.com/v1/shopping/catalog/lookup" \
      -H "Authorization: Bearer $GODADDY_PAT" \
      -H "Request-Id: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d "$(jq -n --arg id "$VARIANT_ID" '{"ids":[$id],"context":{"address_country":"US","currency":"USD","language":"en"}}')"

Each returned variant includes an inputs[] array showing how the variant matched the requested ID — either exact or featured.

Get product detail

POST /v1/shopping/catalog/product retrieves one product and its available variants. The current catalog does not use option-selection narrowing, so send only id and optional context.

The following procedure retrieves product detail.

  • Get detail for a specific product:

    curl --fail-with-body --silent --show-error -X POST "https://api.godaddy.com/v1/shopping/catalog/product" \
      -H "Authorization: Bearer $GODADDY_PAT" \
      -H "Request-Id: $(uuidgen)" \
      -H "Content-Type: application/json" \
      -d "$(jq -n --arg id "$VARIANT_ID" '{"id":$id,"context":{"address_country":"US","currency":"USD","language":"en"}}')"

Required agreements

Product detail responses might include required_agreements[]. The resolved checkout is authoritative. Go to Create a checkout and place an order for the consent flow.

Interpret catalog results

Catalog amounts use ISO 4217 minor units. For USD, an amount of 999 represents $9.99.

FieldUse
products[].idIdentifies the product family. Do not assume this ID is purchasable.
products[].variants[].idIdentifies a purchasable option to send as line_items[].item.id.
price and list_priceShow the current selling price and optional comparison price.
renewal_priceShows an optional renewal amount for recurring products.
availability.availableIndicates whether the variant can be purchased.
inputs[]Correlates lookup results with requested IDs.
input_schemaDefines product-specific configuration to send as line_items[].input.
included_products[]Describes products bundled into a catalog offer.
required_agreements[]Provides early disclosure; the checkout's resolved agreements remain authoritative.

Verify the result

Confirm that the selected variant has availability.available: true, a price in the expected currency, and any required product input.

Save the variant ID for checkout. Go to Create a checkout and place an order to purchase it.

Example response

The search endpoint returns a products[] array. Each product contains a variants[] array. Use variants[].id to create a checkout session:

{
  "products": [
    {
      "id": "hosting-economyapi",
      "title": "Economy Hosting",
      "variants": [
        {
          "id": "hosting-economyapi:1mo",
          "title": "Economy 1 Month",
          "price": { "amount": 999, "currency": "USD" },
          "availability": { "available": true }
        }
      ]
    }
  ],
  "pagination": { "has_next_page": false }
}

Common errors

Responsemessages[].codeCauseAction
200 with info messagenot_foundA batch lookup could not resolve one requested ID.Use the returned matches and inspect each informational message.
400invalid_requestA required request field is missing.Correct the request body.
404product_not_foundProduct detail could not resolve the requested ID.Verify the ID from a catalog search.
422unsupported_currencyThe requested currency is not supported.Use a supported catalog currency.
401—The PAT is missing, invalid, or expired.Generate or export a valid PAT.
403—The PAT lacks shopping.catalog:read.Generate a PAT with the required scope.
429—Rate limit exceeded.Wait for the Retry-After header value, then retry.

Partial lookup results

Batch lookup can return HTTP 200 with matches and informational not_found messages. Successful responses can omit ucp.status. Go to About the Shopping API for error handling.

Agent & Automation Notes

PermissionsShopping Catalog
Scopesshopping.catalog:read
Rate limitRate-limited per credential. Go to /docs/api-users/rate-limits for current values.
IdempotentYes
DestructiveNo
On failureAll catalog operations are safe to retry. Use a new Request-Id on each retry.

Last updated on

How is this guide?

On this page