---
title: "Get Xbox Title ID for a product ID"
method: GET
path: "/v2/marketplace/titleid/{productId}"
tags: ["marketplace"]
---

# Get Xbox Title ID for a product ID

`GET /v2/marketplace/titleid/{productId}`

## Request

- Base URL: `https://api.xbl.io`
- URL: `https://api.xbl.io/v2/marketplace/titleid/{productId}`
- Auth: API key in header `X-Authorization`
- TypeScript: <https://skmtc.dev/xbl/apis/openxbl-api/docs/v2/marketplace/titleid/:productId/get.ts> (a function with typed inputs; its response is checked against the schema)

Resolves a Microsoft Store product ID (e.g. `9PP5G1F0C2B6`) to its
Xbox title ID (e.g. `2043073184`), which is what the achievements, stats and title
history endpoints expect.

## Finding a title ID from a game name

```
GET /v2/marketplace/autosuggest?q=halo+infinite   ->  ProductId  9PP5G1F0C2B6
GET /v2/marketplace/titleid/9PP5G1F0C2B6          ->  titleId    2043073184
GET /v2/achievements/title/2043073184             ->  achievements
```

To resolve many at once, use `GET /v2/marketplace/search?q=...&enrich=titleid`, which
attaches `XboxTitleId` to every search result in a single call.

## Products without a title ID

Returns **404** when the product exists but carries no Xbox title ID. This is normal
rather than an error, and happens for add-ons, bundles and PC-only listings.

Some games are listed twice in the Store - once for PC and once for Xbox - with the same
title and publisher, and only the Xbox listing has a title ID. Halo Infinite is listed as
both `9PP5G1F0C2B6` (has title ID `2043073184`) and `9NP1P1WFS0LB` (no title ID).
If you get a 404, check whether a second listing of the same game exists and use that
product ID instead.

The underlying value is also available in the raw
`POST /v2/marketplace/details` response, under `AlternateIds` with
`IdType: "XboxTitleId"`.

## Path parameters

- `productId` string, required

## Response `200`

Resolved title ID

- ApiResponse: Standard API response wrapper. All endpoints return responses in this format.
  - `content` unknown, required
  - `code` integer, required: HTTP status code from the upstream API. Common values: 200 (success), 400 (bad request), 401 (unauthorized), 404 (not found), 410 (deprecated/gone), 429 (rate limited), 500 (server error)

## Other responses

- `401`: Invalid or missing API key
- `404`: Product not found, or product has no Xbox title ID
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/xbl/apis/openxbl-api.md) - [All operations](https://skmtc.dev/xbl/apis/openxbl-api/llms.txt) - [OpenAPI document](https://skmtc.dev/xbl/apis/openxbl-api/revisions/3dfa67fd8083?raw)
