AvatarEditorService:SearchCatalog() returning suboptimal results

As a Roblox developer, it is currently too hard to show players the optimal catalog items in our avatar editor interface. Here is an example, showing the exact same search parameters when I enter the Roblox catalog vs when I use AvatarEditorService:SearchCatalog()

Roblox Catalog/Website:

AvatarEditorService:SearchCatalog() (using the exact same search parameters as the website pictured above^):

As you can see the Roblox website catalog shows me tons of paid results. When I try to display the same catalog results in-game, we see about 50-70 free results before showing paid items.

We could limit the default search in our interface to show items that cost at least 1 Robux, but those results still don’t seem to be as relevant to players and may be a less ideal UX (particularly FTUX as people are still learning how the UI works).

If Roblox is able to address this issue, it would improve my development experience because we would be able to play results that are as relevant to players as the results on the Roblox catalog website. I believe this will result in more UGC revenue for developers.

4 Likes

Hi Genya,

To help us reproduce the issue you are experiencing, can you copy and paste the exact script you are running to get the results via AvatarEditorService:SearchCatalog(), specifically what is your CatalogSearchParams? Do it for the case you showed above for the All accessories category.

Also, are you running the script on server side via the ServerScriptService or client side via the LocalScript service?

2 Likes

Sorry for the delay! This is running client side.

It’s a bit difficult to extract just the code we run but I’ve added a bunch of prints to confirm what SearchParams go into the call from the client.

SearchKeyword: “” (empty string)
MinPrice: 0
MaxPrice: 2147483647
CreatorName:
SortType: Relevance
SortAggregation: Past3Days
CategoryFilter: None
SalesTypeFilter: All
IncludeOffSale: false
AssetTypes: Hat
AssetTypes: HairAccessory
AssetTypes: FaceAccessory
AssetTypes: NeckAccessory
AssetTypes: ShoulderAccessory
AssetTypes: FrontAccessory
AssetTypes: BackAccessory
AssetTypes: WaistAccessory
AssetTypes: EyebrowAccessory
AssetTypes: EyelashAccessory
Page 1

The above search parameters result in these accessories:

But when I try to recreate these search settings on the website, I get these results:

If it helps at all here is the entire page 1 printed out

Page 1 Results

{
[1] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “3cf11ae8-79ef-4cbd-aac8-7ef442a5b2e8”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “She doesn’t need a reason to love the Halloween season.”,
[“FavoriteCount”] = 2256252,
[“HasResellers”] = false,
[“Id”] = 1103003368,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Orange Beanie with Black Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3744598675575633,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[2] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “1690445b-fe59-4ee2-ab84-9080ae5f749a”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Rock your red locks!”,
[“FavoriteCount”] = 2672033,
[“HasResellers”] = false,
[“Id”] = 2956239660,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Belle Of Belfast Long Red Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 7797597963809607,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[3] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “a16b6e4b-c88a-402b-b3ce-59b69c911af0”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “I like you best because you’re true blue.”,
[“FavoriteCount”] = 2411073,
[“HasResellers”] = false,
[“Id”] = 451221329,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “True Blue Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 4060072626785800,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[4] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “a48d72ba-c1fc-40c1-be99-a345977b47cc”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Powering Imagination!”,
[“FavoriteCount”] = 865068,
[“HasResellers”] = false,
[“Id”] = 607702162,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Roblox Baseball Cap”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 8790469655787870,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[5] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “17cf6570-1cac-482a-8132-5beab8e6af28”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Your thoughts are as down to earth as your hair!”,
[“FavoriteCount”] = 374669,
[“HasResellers”] = false,
[“Id”] = 1772336109,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Down to Earth Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 4412016787788475,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[6] = ▼ {
[“AssetType”] = “NeckAccessory”,
[“CollectibleItemId”] = “92b51bad-1c36-487f-8fe3-0a306a454395”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “User Ads VIP for life”,
[“FavoriteCount”] = 55207,
[“HasResellers”] = false,
[“Id”] = 18112476810,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “User Ads Backstage Pass”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3692333567562523,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[7] = ▼ {
[“AssetType”] = “FaceAccessory”,
[“CollectibleItemId”] = “2926da0c-5b54-4387-ad7c-db7d367d018b”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Lookin’ cool in your orange shades!”,
[“FavoriteCount”] = 438749,
[“HasResellers”] = false,
[“Id”] = 376527500,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Orange Shades”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 6904107489950962,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[8] = ▼ {
[“AssetType”] = “NeckAccessory”,
[“CollectibleItemId”] = “96bcc719-daeb-474f-ab08-8c48e5becfdd”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = " A true breakthrough in advertising technology",
[“FavoriteCount”] = 88693,
[“HasResellers”] = false,
[“Id”] = 18112503797,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Living Art User Ads”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 249444749193566,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[9] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “f54df0ab-481e-4a85-afa0-e602aee84fc1”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “What could be more wonderful than lavender?”,
[“FavoriteCount”] = 857360,
[“HasResellers”] = false,
[“Id”] = 451220849,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Lavender Updo”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 7256798873733385,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[10] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “5f311179-a354-446b-9330-ec7125209c9e”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Stay cool under this Roblox Visor.”,
[“FavoriteCount”] = 288878,
[“HasResellers”] = false,
[“Id”] = 2646473721,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Roblox Visor”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 1777652331019859,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[11] = ▼ {
[“AssetType”] = “NeckAccessory”,
[“CollectibleItemId”] = “11751bfa-7b6b-42f6-b76c-6e0575397ad6”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Jade goes with pretty much anything.”,
[“FavoriteCount”] = 693937,
[“HasResellers”] = false,
[“Id”] = 376527115,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Jade Necklace with Shell Pendant”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 1239852214395945,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[12] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “fd1f220f-b804-4bc3-a171-dcb9df4d8cdb”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “You’re ready to play anywhere in this stylish Roblox visor!”,
[“FavoriteCount”] = 383203,
[“HasResellers”] = false,
[“Id”] = 607700713,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Roblox Logo Visor”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 2526466842815443,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[13] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “c4a3c431-fe6d-45a3-94d6-e7e2ffd1c5d6”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “A PoweRed by Imagination item for a sLick, FashiOnable, Original Look.”,
[“FavoriteCount”] = 729135,
[“HasResellers”] = false,
[“Id”] = 4819740796,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Robox”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3594078503808252,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[14] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “089fa88b-a89b-4393-9309-84fa518cc314”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Imagine a world where you own this baseball cap. Oh - that’s this world!”,
[“FavoriteCount”] = 553893,
[“HasResellers”] = false,
[“Id”] = 417457461,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “ROBLOX ‘R’ Baseball Cap”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 2922084402778165,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[15] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “74765493-be65-4a10-91b6-e51dddc7a7f7”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = "What’s under the hood of that mysterious traveler?

",
[“FavoriteCount”] = 463407,
[“HasResellers”] = false,
[“Id”] = 617605556,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Medieval Hood of Mystery”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 5135675940622407,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[16] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “be6a562f-7dbf-4581-b90f-c0e4d5298028”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Yeah buddy! Pal hair for the win.”,
[“FavoriteCount”] = 1797132,
[“HasResellers”] = false,
[“Id”] = 63690008,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Pal Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 5020167754645659,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[17] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “b16f0af3-6c15-4011-947b-88c7ccce7b0f”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Classy, yet sassy.”,
[“FavoriteCount”] = 45132,
[“HasResellers”] = false,
[“Id”] = 9244111257,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Wavy Middle Part - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 6340114005797582,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[18] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “d012d059-6f24-4a5c-9f56-9d0fa6cb547c”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Swish things up.”,
[“FavoriteCount”] = 29042,
[“HasResellers”] = false,
[“Id”] = 9244095135,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Pony Tail - Blonde”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3315051919003110,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[19] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “8cc25907-fc62-4105-b700-6d77ef487404”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “The most famous bull-run – what a capitalized “the Running of the Bulls” most often refers to in English – is the encierro held in Pamplona during the nine-day festival of Sanfermines”,
[“FavoriteCount”] = 168336,
[“HasResellers”] = false,
[“Id”] = 3403874988,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “The Encierro Cap”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 1138345286140736,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[20] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “5db690d0-4d51-40a8-aa45-42ef5195ac52”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Swish things up.”,
[“FavoriteCount”] = 58402,
[“HasResellers”] = false,
[“Id”] = 7193442167,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Pony Tail - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 1536391925808557,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[21] = ▼ {
[“AssetType”] = “Hat”,
[“CollectibleItemId”] = “40174a95-b2ba-444c-bbe6-adba036d3c0e”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “It’s an instant classic!”,
[“FavoriteCount”] = 265660,
[“HasResellers”] = false,
[“Id”] = 48474313,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Red Roblox Cap”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 8062571868793540,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[22] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “129e8e0b-1329-44a3-8bb5-56b8143389c9”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “A winning 'do.”,
[“FavoriteCount”] = 1189511,
[“HasResellers”] = false,
[“Id”] = 376524487,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Blonde Spiked Hair”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 5391794356462480,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[23] = ▼ {
[“AssetType”] = “FaceAccessory”,
[“CollectibleItemId”] = “847acc38-6040-4c7d-8af8-51a6bac79c55”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Shades this stylish can’t be beat!”,
[“FavoriteCount”] = 1352295,
[“HasResellers”] = false,
[“Id”] = 376526673,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Stylish Aviators”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3233405710727901,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[24] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “1fdd395e-f04b-495a-8a16-78bfe1e3c1de”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “9 out of 10 fairytale princes recommend this charming look.”,
[“FavoriteCount”] = 13261,
[“HasResellers”] = false,
[“Id”] = 9243992729,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Short and Sleek - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 6035240108811984,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[25] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “6cdeaf61-8599-4772-abb9-683b0815823a”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = "Rock your locs no matter the occasion! ",
[“FavoriteCount”] = 31904,
[“HasResellers”] = false,
[“Id”] = 9174355709,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Sideswept Dreads - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 2047906293355754,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[26] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “2dff08c0-c1d2-4fe3-bb00-6f037f3821d5”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Mousse. Lots and lots of it.”,
[“FavoriteCount”] = 23470,
[“HasResellers”] = false,
[“Id”] = 9244021842,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Side Part - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 3125170445052055,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[27] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “6cd47626-891c-4db3-a044-9fae17211775”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Swish things up.”,
[“FavoriteCount”] = 21031,
[“HasResellers”] = false,
[“Id”] = 9244097555,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Pony Tail - Brown”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 7408225436589997,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[28] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “6999073a-8239-42c3-8117-a3f675b1d609”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Lookin’ sharp my man!”,
[“FavoriteCount”] = 158541,
[“HasResellers”] = false,
[“Id”] = 3814474927,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Cool Side Shave”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 8666607176245562,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[29] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “d273bb85-fab5-4a00-826d-9ae6cb260514”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Classy, yet sassy.”,
[“FavoriteCount”] = 46970,
[“HasResellers”] = false,
[“Id”] = 7193448258,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Wavy Middle Part - Brown”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 2232137438475716,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
},
[30] = ▼ {
[“AssetType”] = “HairAccessory”,
[“CollectibleItemId”] = “59081dec-b782-4cb7-85e9-19ef9313e2c9”,
[“CreatorHasVerifiedBadge”] = true,
[“CreatorName”] = “Roblox”,
[“CreatorTargetId”] = 1,
[“CreatorType”] = “User”,
[“Description”] = “Perfect for raven-haired folks with shy foreheads.”,
[“FavoriteCount”] = 56932,
[“HasResellers”] = false,
[“Id”] = 6993754725,
[“ItemRestrictions”] = {},
[“ItemStatus”] = {},
[“ItemType”] = “Asset”,
[“LowestPrice”] = 0,
[“LowestResalePrice”] = 0,
[“Name”] = “Straight Bangs - Black”,
[“Price”] = 0,
[“PriceStatus”] = “Free”,
[“ProductId”] = 960802402494153,
[“PurchaseCount”] = 0,
[“SaleLocationType”] = “ShopAndAllExperiences”,
[“TotalQuantity”] = 0,
[“UnitsAvailableForConsumption”] = 0
}
}

3 Likes

This is only an issue for Categories that contain multiple AvatarAssetTypes, therefore being an issue for categories like “Accessories” that contain multiple AssetTypes in a string. Using the same search parms for CatalogCategoryFilter and CatalogSortType for the entire catalog, specifically Featured/None (same) and Relevance, will show the same results as Roblox, except for multiple AvatarAssetTypes categories.

I’ve posted a bug report about this and I’m hoping to see it resolved in the future. It’s a pain when you’re using multiple AvatarAssetTypes - but Catalog Avatar Creator doesn’t seem to have any issues with it somehow?

Have you found a workaround?

Hi Genya,

To reproduce the results you see on Roblox website or on the universal app, this is how you can do it for Accessories top level category:

local aes = game:GetService(“AvatarEditorService”);
local params = CatalogSearchParams.new();
params.SortType = Enum.CatalogSortType.Relevance;
params.SalesTypeFilter = Enum.SalesTypeFilter.All;
params.AssetTypes = {
Enum.AvatarAssetType.Gear,
Enum.AvatarAssetType.Hat,
Enum.AvatarAssetType.FaceAccessory,
Enum.AvatarAssetType.NeckAccessory,
Enum.AvatarAssetType.ShoulderAccessory,
Enum.AvatarAssetType.FrontAccessory,
Enum.AvatarAssetType.BackAccessory,
Enum.AvatarAssetType.WaistAccessory
};

print(aes:SearchCatalogAsync(params):GetCurrentPage());

The combination of AssetTypes that you query for must match exactly what is being sent from our website on our own marketplace.

The results are personalized according to the platform, so the exact order and ranking of these items cannot be guaranteed to be the same. In fact, they very likely will be different, but the results will very much be similar to what you see on web and UA.

Sorry for the delay and thank you for your patience.

1 Like

Ah okay, I think I’ve found a bug then!

If I use these settings

[CatalogSearch] SearchCatalog params: ▼ {
[“AssetTypes”] = ▼ {
[1] = “WaistAccessory”,
[2] = “FaceAccessory”,
[3] = “NeckAccessory”,
[4] = “BackAccessory”,
[5] = “HairAccessory”,
[6] = “Hat”,
[7] = “FrontAccessory”,
[8] = “ShoulderAccessory”
},
[“BundleTypes”] = {},
[“CategoryFilter”] = “None”,
[“CreatorName”] = “”,
[“IncludeOffSale”] = false,
[“MaxPrice”] = 2147483647,
[“MinPrice”] = 0,
[“SalesTypeFilter”] = “All”,
[“SearchKeyword”] = “”,
[“SortAggregation”] = “Past3Days”,
[“SortType”] = “Relevance”
}

I see this result from the in-game API:

Which also matches the website, if I enable “Show unavailable items”:

And if I toggle “Show unavailable items” to on in the Roblox API, aka using these search query settings:

[CatalogSearch] SearchCatalog params: ▼ {
[“AssetTypes”] = ▼ {
[1] = “WaistAccessory”,
[2] = “FaceAccessory”,
[3] = “NeckAccessory”,
[4] = “BackAccessory”,
[5] = “HairAccessory”,
[6] = “Hat”,
[7] = “FrontAccessory”,
[8] = “ShoulderAccessory”
},
[“BundleTypes”] = {},
[“CategoryFilter”] = “None”,
[“CreatorName”] = “”,
[“IncludeOffSale”] = true,
[“MaxPrice”] = 2147483647,
[“MinPrice”] = 0,
[“SalesTypeFilter”] = “All”,
[“SearchKeyword”] = “”,
[“SortAggregation”] = “Past3Days”,
[“SortType”] = “Relevance”
}

I still see exactly the same bug. I notice that if I change the Accessory type to just “Hat”, then the setting for IncludeOffsale actually does something.

I am not sure what exactly is the bug here. That no offsale items are included when includeOffSale = true, or the developer-api results does not match the results you see on web.

Regarding the former, includeOffSale does not mean we only return you exclusively offsale items, it means we return you both onsale and offsale items, and the order is according to whatever SortType you specified.

Regarding the latter, the AssetTypes do not exactly line up which explains the discrepancy. You need to replace HairAccessory with Gear. See my script below. You don’t have to set params like MinPrice, MaxPrice, CreatorName, SearchKeyword explicitly, it will be initialized to their defaults. Not that it makes a difference here, but it makes your life easier and it makes our life easier when debugging issues on the backend.

local aes = Game:GetService("AvatarEditorService")
local params = CatalogSearchParams.new();
params.AssetTypes = {
	Enum.AvatarAssetType.Hat,
	Enum.AvatarAssetType.WaistAccessory,
	Enum.AvatarAssetType.FaceAccessory,
	Enum.AvatarAssetType.NeckAccessory,
	Enum.AvatarAssetType.BackAccessory,
	Enum.AvatarAssetType.Gear,
	Enum.AvatarAssetType.FrontAccessory,
	Enum.AvatarAssetType.ShoulderAccessory,
}
params.CategoryFilter = Enum.CatalogCategoryFilter.None;
params.CreatorName = "";
params.IncludeOffSale = true;
params.MaxPrice = 2147483647;
params.MinPrice = 0;
params.SalesTypeFilter = Enum.SalesTypeFilter.All;
params.SearchKeyword = "";
params.SortAggregation = Enum.CatalogSortAggregation.Past3Days;
params.SortType = Enum.CatalogSortType.Relevance;

print(aes:SearchCatalogAsync(params):GetCurrentPage());
1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.