Search the catalog
View as MarkdownSearch 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:readscope jqanduuidgenfor 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.
| Field | Use |
|---|---|
products[].id | Identifies the product family. Do not assume this ID is purchasable. |
products[].variants[].id | Identifies a purchasable option to send as line_items[].item.id. |
price and list_price | Show the current selling price and optional comparison price. |
renewal_price | Shows an optional renewal amount for recurring products. |
availability.available | Indicates whether the variant can be purchased. |
inputs[] | Correlates lookup results with requested IDs. |
input_schema | Defines 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
| Response | messages[].code | Cause | Action |
|---|---|---|---|
200 with info message | not_found | A batch lookup could not resolve one requested ID. | Use the returned matches and inspect each informational message. |
400 | invalid_request | A required request field is missing. | Correct the request body. |
404 | product_not_found | Product detail could not resolve the requested ID. | Verify the ID from a catalog search. |
422 | unsupported_currency | The 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
shopping.catalog:readRelated
API References
Concepts
Last updated on
How is this guide?