Xbox API endpoint
Returns one page of a named, editorially curated Xbox collection (e.g. Top Free Games, Top Paid Games, Optimized for Series X|S, Xbox Play Anywhere). Pages forward via an opaque cursor: pass the previous response's next_cursor to fetch the next page. This is a partial, non-exhaustive list of known collection ids -- there is no discovery endpoint for the full set.
/xbox/collectionReturns one page of a named, editorially curated Xbox collection — the same "channel" mechanism that powers xbox.com's own marketing hub pages (e.g. /games/free-to-play, /games/optimized).
Query parameters:
id (required) — the collection to fetch. One of TopFreeGames, TopPaidGames, OptimizedSeriesXS, XboxPlayAnywhere.cursor (optional) — opaque pagination cursor from a previous response's next_cursor. Omit for the first page.locale (optional, default en-US) — display locale (BCP-47).This is a partial, non-exhaustive list of collection ids. No listing of all collection ids is available. An invalid id returns {title:"Failed to Get Channel"} rather than a generic error. More collection ids most likely exist.
Returns id, title (the collection's own display name, e.g. "Top free games"), total_items, has_more, next_cursor, and items[] (the same game-summary shape as /xbox/browse). Page size is fixed at 25 items and is not configurable.
Example response (truncated):
{"code":200,"msg":"OK","data":{"id":"TopFreeGames","title":"Top free games","total_items":500,"has_more":true,"next_cursor":"eyJIYXNNb3JlIjp0cnVlLC4uLn0=","items":[{"product_id":"BQ1TN1T79V9K","title":"Roblox - Xbox","price":{"list_price":0,"is_free":true},"url":"https://www.xbox.com/en-US/games/store/game/bq1tn1t79v9k"}]}}
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| product_id | 25 | |
| title | 25 | “Fortnite” and 24 other values |
| publisher | 25 | “Epic Games Inc.” and 18 other values |
| product_kind | 25 | Game in all 25 |
| categories | 25 | median 2 entries |
| available_on | 25 | median 3 entries |
| average_rating | 25 | 2.6 to 4.7, median 3.6 |
| rating_count | 25 | 23 to 728,380, median 20,592 |
| release_date_utc | 25 | 2012-07-27 to 9998-12-30 |
| content_rating | 25 | |
| price | 25 | |
| box_art_url | 24 | store-images.s-microsoft.com |
| poster_url | 25 | store-images.s-microsoft.com |
| hero_art_url | 23 | store-images.s-microsoft.com |
| url | 25 | xbox.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | Curated collection to fetch Allowed values: TopFreeGames, TopPaidGames, OptimizedSeriesXS, XboxPlayAnywhere. | TopFreeGames | |
| cursor | string | No | Opaque pagination cursor from a previous response's next_cursor | ||
| locale | string | No | Display locale (BCP-47) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/xbox/collection?id=TopFreeGames" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "TopFreeGames",
"title": "Top free games",
"total_items": 500,
"has_more": true,
"next_cursor": "eyJIYXNNb3JlIjp0cnVlLC4uLn0=",
"items": [
{
"product_id": "BQ1TN1T79V9K",
"title": "Roblox - Xbox",
"price": {
"list_price": 0,
"is_free": true
},
"url": "https://www.xbox.com/en-US/games/store/game/bq1tn1t79v9k"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/xbox.collectionResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | xbox.CollectionResponse | No | ||||
| data.has_more | boolean | No | true | |||
| data.id | string | No | TopFreeGames | |||
| data.items | array | No | GameSummary record, 28 fields: available_on, average_rating, box_art_url, categories, content_rating, hero_art_url, is_preorder, poster_url, price, product_id, product_kind, publisher and 4 more. Described under Xbox Catalog Browse API. | |||
| data.next_cursor | string | No | ||||
| data.title | string | No | Top free games | |||
| data.total_items | integer | No | 500 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/xbox/collection?id=TopFreeGames" \
-H "x-api-key: $CRAWLORA_API_KEY"