---
title: "Lists bundles that contain the given asset (hydrated search-detail shape for marketplace)."
method: GET
path: "/v2/assets/{assetId}/bundles"
tags: ["Assets"]
---

# Lists bundles that contain the given asset (hydrated search-detail shape for marketplace).

`GET /v2/assets/{assetId}/bundles`

## Request

- Base URL: `https://catalog.roblox.com`
- URL: `https://catalog.roblox.com/v2/assets/{assetId}/bundles`
- Auth: one of:
  - none
  - API key in cookie `.ROBLOSECURITY`

## Path parameters

- `assetId` integer, required

## Query parameters

- `limit` 10 | 25 | 50 | 100
- `cursor` string
- `sortOrder` 'Asc' | 'Desc'

## Headers

- `Roblox-Place-Id` integer, required
- `Roblox-Game-Id` string, required

## Response `200`

OK

- RobloxWebWebAPIModelsApiPageResponseRobloxCatalogApiCatalogSearchDetailedResponseItem
  - `previousPageCursor` string
  - `nextPageCursor` string
  - `data` RobloxCatalogApiCatalogSearchDetailedResponseItem[]
    - `id` integer: The Item Id.
    - `itemType` 1 | 2: The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.ItemType item type. ['Asset' = 1, 'Bundle' = 2]
    - `assetType` 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96: The Roblox.Platform.Assets.AssetType serialized if item is an asset.
    - `bundleType` 1 | 2 | 3 | 4: The Roblox.Platform.Bundles.Core.BundleType serialized if item is a bundle.
    - `isRecolorable` boolean: Gets or sets the property whether a bundle is recolorable or not. Not serialized for asset.
    - `name` string: The item name.
    - `description` string: The item description.
    - `productId` integer: The product id of corresponding item.
    - `bundledItems` RobloxCatalogApiBundleItemDetailModel[]: The System.Collections.Generic.IEnumerable`1 contained in the bundle, serialized if item is a bundle.
      - `owned` boolean
      - `id` integer
      - `name` string
      - `type` string
      - `supportsHeadShapes` boolean: Whether the bundle item supports head shapes.
      - `assetType` integer: The asset type of the bundle item, if it's an asset.
    - `itemStatus` integer[]: The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemStatus.
    - `itemRestrictions` integer[]: The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemRestriction.
    - `creatorHasVerifiedBadge` boolean: The verified status of a creator.
    - `creatorType` 0 | 1 | 2: The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.CreatorType of the item's creator.
    - `creatorTargetId` integer: The creator id of the item's creator.
    - `creatorName` string: The creator name of the item's creator.
    - `price` integer: The item's price.
    - `lowestPrice` integer: The item's lowest price, only if the item is resellable and there are resellers.
    - `lowestResalePrice` integer: The item's lowest resale price, only if the item is resellable and there are resellers, including current user.
    - `priceStatus` string: The localized string item status if the item's price should not be displayed.
    - `unitsAvailableForConsumption` integer: The number of items in stock, only if the item is resellable and is limitedEdition.
    - `favoriteCount` integer: The number of times the item has been favorited.
    - `offSaleDeadline` string, date-time: When the item will go off sale, if the item has an off deadline.
    - `collectibleItemId` string: The item's collectible item id. It is an UUID if a item is collectible type. Otherwise, it is null.
    - `totalQuantity` integer: The collectible or limited-unique item's total quantity of unique instances.
    - `saleLocationType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7: The sale location type of the item. ['NotApplicable' = 0, 'ShopOnly' = 1, 'MyExperiencesOnly' = 2, 'ShopAndMyExperiences' = 3, 'ExperiencesById' = 4, 'ShopAndAllExperiences' = 5, 'ExperiencesDevApiOnly' = 6, 'ShopAndExperiencesById' = 7]
    - `hasResellers` boolean: An indicator if the item has resellers or not (null if not resellable).
    - `isOffSale` boolean: An indicator if the item is off sale or not.
    - `quantityLimitPerUser` integer: Quantity limit for how many instances a user can buy.
    - `supportsHeadShapes` boolean: Whether the item supports head shapes.
    - `timedOptions` RobloxCatalogApiTimedOption[]: The timed options for the item.
      - `days` integer: The days for the timed option.
      - `price` integer: The price for the timed option.
      - `discountInformation` RobloxCatalogApiDiscountInformation
        - `originalPrice` integer
        - `totalDiscountPercentage` number, float
        - `totalDiscountAmount` integer
        - `discounts` RobloxCatalogApiDiscount[]
          - `robuxDiscountAmount` integer
          - `robuxDiscountPercentage` number, float
          - `discountCampaign` string
          - `localizedDiscountAttribution` string
      - `selected` boolean: To indicate if this option is selected by the client.

## Other responses

- `400`: 1: Invalid assetId 4: Invalid Cursor.
- `403`: 7: User is unauthorized.

## Changes

- **2026-10-14** `5dcfa33df56a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/roblox/apis/roblox-api/changes/v2/assets/:assetId/bundles/get.md)

---

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