# Look up products by ID (https://developer.godaddy.com/en/docs/references/rest/shopping/lookup-catalog)

---
title: Look up products by ID
description: Retrieve products or variants by known ID.
full: true
---

Full description

> Retrieve products or variants by known ID. Each returned variant includes `inputs[]` that identifies the requested ID it matched. Unresolved IDs are returned as informational messages instead of a not-found response. Use catalog search for product discovery.

## POST /catalog/lookup

Look up products by ID

Retrieve products or variants by known ID. Each returned variant includes `inputs[]` that identifies the requested ID it matched. Unresolved IDs are returned as informational messages instead of a not-found response. Use catalog search for product discovery.


### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `Request-Id` | string <uuid> | yes | For tracing the request across network layers and components. |

### Request body (required)

Content-Type: `application/json`

```json
{
  "ids": [
    "hosting-deluxeapi:1mo"
  ],
  "context": {
    "currency": "USD"
  }
}
```

Schema:

- schema reference: `#/components/schemas/lookup_request`

### Responses

**200** — Lookup results, informational unresolved-ID messages, or an error envelope.

Content-Type: `application/json`

```json
{
  "ucp": {
    "version": "2026-04-08",
    "capabilities": {
      "dev.ucp.shopping.catalog.lookup": [
        {
          "version": "2026-04-08"
        }
      ],
      "com.godaddy.shopping.input": [
        {
          "version": "2026-04-08"
        }
      ],
      "com.godaddy.shopping.catalog_action": [
        {
          "version": "2026-04-08"
        }
      ],
      "com.godaddy.shopping.catalog_offer": [
        {
          "version": "2026-04-08"
        }
      ]
    }
  },
  "products": [
    {
      "id": "hosting-deluxeapi",
      "title": "Web Hosting Deluxe — Monthly",
      "description": {
        "plain": "Web Hosting on the Deluxe plan, which also includes Node.js Hosting for deploying your app. Billed monthly with automatic renewal."
      },
      "categories": [
        {
          "value": "webHosting"
        }
      ],
      "price_range": {
        "min": {
          "amount": 1099,
          "currency": "USD"
        },
        "max": {
          "amount": 1099,
          "currency": "USD"
        }
      },
      "variants": [
        {
          "id": "hosting-deluxeapi:1mo",
          "title": "Web Hosting Deluxe — 1 Month",
          "description": {
            "plain": "Web Hosting Deluxe, 1-month term."
          },
          "price": {
            "amount": 1099,
            "currency": "USD"
          },
          "list_price": {
            "amount": 1099,
            "currency": "USD"
          },
          "availability": {
            "available": true
          },
          "options": [
            {
              "name": "Term",
              "id": "1mo",
              "label": "1 Month"
            }
          ],
          "inputs": [
            {
              "id": "hosting-deluxeapi:1mo",
              "match": "exact"
            }
          ]
        }
      ]
    }
  ]
}
```

Schema:

- oneOf(unknown | unknown)

**400** — Request validation or caller-correctable business error.

Content-Type: `application/json`

```json
{
  "ucp": {
    "version": "2026-04-08",
    "status": "error"
  },
  "messages": [
    {
      "type": "error",
      "code": "invalid_request",
      "content": "Lookup request must include at least one id.",
      "severity": "recoverable"
    }
  ]
}
```

Schema:

- schema reference: `#/components/schemas/error_response`

**401** — Missing or invalid credentials.

**403** — Authenticated credential lacks the required Shopping scope.

**404** — Resource does not exist.

Content-Type: `application/json`

```json
{
  "ucp": {
    "version": "2026-04-08",
    "status": "error"
  },
  "messages": [
    {
      "type": "error",
      "code": "product_not_found",
      "content": "Product not found: not-a-real-product",
      "severity": "unrecoverable"
    }
  ]
}
```

Schema:

- schema reference: `#/components/schemas/error_response`

**422** — Request is syntactically valid but cannot be processed in its current state.

Content-Type: `application/json`

```json
{
  "ucp": {
    "version": "2026-04-08",
    "status": "error"
  },
  "messages": [
    {
      "type": "error",
      "code": "unsupported_currency",
      "content": "Currency not supported: ZZZ",
      "severity": "recoverable"
    }
  ]
}
```

Schema:

- schema reference: `#/components/schemas/error_response`

**429** — Too many requests.

**Security:** requires `bearerAuth`.
