Creator Store Queries

You can search Roblox's assets outside Studio by accessing the Creator Store API. Use the Creator Store API to query Studio assets, such as meshes, models, and audio, and the Marketplace API to query avatar assets on the Marketplace.

Each API requires a URL and custom search parameters for that specific catalog. If both URL and parameters are valid, the API returns a JSON format with the results of your search.

Creator Store API

You can query items from the Creator Store catalog using the following URL: https://apis.roblox.com/toolbox-service/v1/marketplace/{categoryId}[params]

You can replace [categoryId] and [params] with the appropriate query parameters to customize your search.

Valid category IDs are:

  • Audio = 3
  • Model = 10
  • Decal = 13
  • Animation = 24
  • Plugin = 38
  • MeshPart = 40
  • Video = 62
  • FontFamily = 73
  • Music = 300

Query Parameters

You can specify search parameters by appending a series of parameters and values to the URL, each separated by a &.

Use the following parameters to query the Creator Store:

ParameterTypeOptions and Values
categoryId (path)int3 = Audio
10 = Model
13 = Decal
24 = Animation
38 = Plugin
40 = MeshPart
62 = Video
73 = FontFamily
300 = Music
sortOrderint1 = Asc
2 = Desc
limitintNumber of results to return, maximum 100.
cursorstringPagination cursor
pageNumberintPage number to request for
keywordstringSearch keyword
assetSubTypesarray[string]Ad, MaterialPack, Package
excludeAssetSubTypesarray[string]Ad, MaterialPack, Package
creatorTypeint1 = User
2 = Group
creatorTargetIdint64User or Group Id to search for
minDurationint64Minimum value of the duration range for audio assets in seconds
maxDurationint64Maximum value of the duration range for audio assets in seconds
sortDirectionint0 = None
1 = Ascending
2 = Descending
artiststringThe name of the artist
albumstringThe album you are looking for
audioTypesarray[int]0 = Music
1 = SoundEffect
uiSortIntentintWhat sort order to rank the results by

1 = Relevance
6 = Trending
7 = AllTime
8 = Top
9 = Duration
10 = DateCreated
11 = DateModified
12 = Creator
13 = Name
includeOnlyVerifiedCreatorsboolA flag to include only results from verified creators. Verified creators are those that are ID or phone verified.
minPriceInCentsint64Minimum cost in cents (only applicable to plugins)
maxPriceInCentsint64Maximum cost in cents (only applicable to plugins)

For more details regarding toolbox-service, please refer to the updated documentation below.

This is a sample response from the endpoint:


{
"totalResults": int,
"filteredKeyword": string,
"spellCheckerResult": {
"correctionState": int,
"correctedQuery": string,
"userQuery": string
},
"queryFacets": {
"appliedFacets": Array[string],
"availableFacets": Array[string]
},
"imageSearchStatus": int,
"previousPageCursor": string,
"nextPageCursor": string,
"data": [
{
"id": int,
"name": string,
"searchResultSource": string
}
]
}

To get back the asset metadata, you can go over the data array and extract the IDs with the GetItemDetails endpoint on toolbox-service like this:


GET https://apis.roblox.com/toolbox-service/v1/items/details?assetIds={assetId1}%2C{assetId2}

Response Fields

This is the response you should expect to get back from that endpoint:


{
"data": [
{
"asset": {
"audioDetails": {
"audioType": Array[int],
"artist": string,
"title": string,
"musicAlbum": string,
"musicGenre": string,
"soundEffectCategory": string,
"soundEffectSubcategory": string,
"tags": Array[string]
},
"id": int64,
"name": string,
"typeId": int,
"assetSubTypes": Array[string],
"assetGenres": Array[string],
"ageGuidelines":{
"ageGuideline: int,
"blood": {
"realism": int,
"level": int
},
"violence": {
"intensity": int
},
"profanity": {
"presence": int
},
"alcohol": {
"presence": int
},
"romance": {
"type": int
}
},
"isEndorsed": bool,
"description": string,
"duration": int,
"hasScripts": bool?,
"createdUtc": string($date-time),
"updatedUtc": string($date-time),
"creatingUniverseId": int64?,
"isAssetHashApproved": bool,
"visibilityStatus": int?,
"socialLinks": [{
"linkType": int,
"url": string,
"title": string
}]
},
"creator": {
"id": int64,
"name": string,
"type": int,
"isVerifiedCreator": bool,
"latestGroupUpdaterUserId": int64?,
"latestGroupUpdaterUserName": string
},
"voting": {
"showVotes": bool,
"upVotes": int64,
"downVotes": int64,
"canVote": bool,
"userVote": bool?,
"hasVoted": bool,
"voteCount": int64,
"upVotePercent": int
},
"product": {
"productId": int64,
"price": int64?,
"isForSaleOrIsPublicDomain": bool
},
"fiatProduct": {
"purchasePrice": {
"currencyCode": string,
"quantity": {
"significand": int64,
"exponent": int
}
},
"published": bool,
"purchasable": bool
}
}
]
}

Marketplace API

You can query avatar items from the Marketplace using the following URL: https://catalog.roblox.com/v1/search/items/details?[params]

You can replace [params] with the appropriate query parameters to customize your search.

Query Parameters

You can specify search parameters by appending a series of parameters and values to the URL, each separated by a &.

Use the following parameters to query the Marketplace:

ParameterTypeOptions and Values
Categorybyte0 = Featured
1 = All
2 = Collectibles
3 = Clothing
4 = BodyParts
5 = Gear
11 = Accessories
12 = AvatarAnimations
13 = CommunityCreations
CreatorTypebyte1 = User
2 = Group
CreatorNamestringSearch by creator name. If Enum.CreatorType is not provided, search is for users only.
CreatorTargetIdlongThe user or group ID depending on the CreatorType provided.
CursorstringEach search response contains a nextPageCursor if there is a next page and previousPageCursor if there is a previous page. Pass either of these values in the Cursor parameter of your next query to get the next or previous page of results. The cursor is valid if the other query parameters remain the same.
GenresbyteSpecifies the genre for the search. The recommended approach to filtering on genres is to match the URL of a catalog page.

1 = TownAndCity
2 = Medieval
3 = SciFi
4 = Fighting
5 = Horror
6 = Naval
7 = Adventure
8 = Sports
9 = Comedy
10 = Western
11 = Military
13 = Building
14 = FPS
15 = RPG
KeywordstringStandard keyword search.
LimitintNumber of results to return. Values are currently limited to 10, 28, and 30.
MaxPriceintThe maximum price in Robux of items in the query.
MinPriceintThe minimum price in Robux of items in the query.
SortAggregationbyte1 = PastDay
3 = PastWeek
4 = PastMonth
5 = AllTime
SortTypebyte0 = Relevance (Default)
1 = Favorited
2 = Sales
3 = Updated
4 = PriceAsc
5 = PriceDesc
Subcategorybyte0 = Featured
1 = All
2 = Collectibles
3 = Clothing
4 = BodyParts
5 = Gear
9 = Hats
10 = Faces
12 = Shirts
13 = TShirts
14 = Pants
15 = Heads
19 = Accessories
20 = HairAccessories
21 = FaceAccessories
22 = NeckAccessories
23 = ShoulderAccessories
24 = FrontAccessories
25 = BackAccessories
26 = WaistAccessories
27 = AvatarAnimations
37 = Bundles
38 = AnimationBundles
39 = EmoteAnimations
40 = CommunityCreations
41 = Melee
42 = Ranged
43 = Explosive
44 = PowerUp
45 = Navigation
46 = Musical
47 = Social
48 = Building
49 = Transport
54 = HeadAccessories
55 = ClassicTShirts
56 = ClassicShirts
57 = ClassicPants
58 = TShirtAccessories
59 = ShirtAccessories
60 = PantsAccessories
61 = JacketAccessories
62 = SweaterAccessories
63 = ShortsAccessories
64 = ShoesBundles
65 = DressSkirtAccessories
66 = DynamicHeads

The following URL will search for the first 10 "Gear" items in "Accessories" sorted by all-time ("SortAggregation") and relevance ("SortType") created by Roblox ("CreatorTargetId"):

https://catalog.roblox.com/v1/search/items/details?Category=11&Subcategory=5&CreatorTargetId=1&SortType=0&SortAggregation=5&Limit=10

Response Fields

API responses return in a JSON format. The response provides asset details in the data key using the following fields:

FieldDescription
assetTypeOne of the following asset type values (only returned if the item is an asset).

2 = T-Shirt
8 = Hat
11 = Shirt
12 = Pants
17 = Head
18 = Face
19 = Gear
25 = Arms
26 = Legs
27 = Torso
28 = RightArm
29 = LeftArm
30 = LeftLeg
31 = RightLeg
41 = HairAccessory
42 = FaceAccessory
43 = NeckAccessory
44 = ShoulderAccessory
45 = FrontAccessory
46 = BackAccessory
47 = WaistAccessory
48 = ClimbAnimation
49 = DeathAnimation
50 = FallAnimation
51 = IdleAnimation
52 = JumpAnimation
53 = RunAnimation
54 = SwimAnimation
55 = WalkAnimation
56 = PoseAnimation
61 = EmoteAnimation
bundleTypeThe bundle type ID (only returned if the item is a bundle). Possible values are BodyParts and AvatarAnimations.
creatorNameThe creator's name.
creatorTargetIdThe creator's ID.
creatorTypeThe item's creator type.
descriptionThe item description.
favoriteCountThe favorite count of an item.
genresList of the item's genres. Possible values include All, Tutorial, Scary, TownAndCity, War, Funny, Fantasy, Adventure, SciFi, Pirate, FPS, RPG, Sports, Ninja, and WildWest.
idThe ID of the item.
itemRestrictionsList of the item's restrictions. Possible values include ThirteenPlus, LimitedUnique, Limited, and Rthro.
itemStatusList of the item's status flags. Possible values include New, Sale, XboxExclusive, AmazonExclusive, GooglePlayExclusive, IosExclusive, and SaleTimer.
itemTypeThe item type. Possible values are Asset or Bundle.
lowestPriceThe lowest reseller price of the item (only returned if the item is resellable).
nameThe item name.
priceThe listing price of the item (current price may differ if the item is resellable).
priceStatusThe price status of an item that is not on sale. Possible values are Free, OffSale, or NoResellers.
purchaseCountThe purchase count of an item.
unitsAvailableForConsumptionThe unit available for consumption of a limited unique item.

The following is an example of expected return output for a single item:


{
"keyword": null,
"previousPageCursor": null,
"nextPageCursor": "2_1_c541d05046b5c1c78a5d386b5e302243",
"data": [
{
"id":527373900,
"itemType":
"Asset",
"assetType":42,
"name":"Restless Souls Bandana",
"description":"This bandana won't help you blend in with ghosts, but at least you'll be stylish.",
"productId":41270974,
"genres":[
"Scary",
"Adventure"
],
"itemStatus":[],
"itemRestrictions":[],
"creatorType":"User",
"creatorTargetId":1,
"creatorName":"Roblox",
"price":300,
"favoriteCount":15943,
"offSaleDeadline":null
}
]
}