Inclusion of missing fields from the Catalog API into MarketplaceService:GetProductInfo()

As a Roblox developer, it’s essentially impossible to reliably fetch all of the information of an asset in-game.

Currently, the only way to accomplish this from a running server is by setting up a proxy server and then using the Catalog API to hopefully retrieve the correct item in its JSON format. While this works, I’ve seen rumours that requests have the possibility to be blocked if there is an excess of them (source). If my game suddenly spiked and there were lots of requests, they could be blocked leading to a poor UX for players.

It’s possible to use MarketplaceService:GetProductInfo() to get most of the details about an asset including its price (the original price for limited and limited unique items), description, sales, and more. Therefore, I propose adding the BestPrice, PrivateSales, and Favourites keys of the CatalogAPI to the dictionary of said function.

I’ve used my inspect element skills to modify the :GetProductInfo() page to reflect if these were implemented:

While there are a few other fields in the Catalog API, I don’t think they’d necessarily worth adding like the Url, Updated, CreatorUrl, and PriceView. The CatalogAPI page states that most of these are used by the website, but I don’t see as much of a need for developers. The Url field can be self-constructed from the AssetId, Updated can be determined from the already included Updated timestamp, the CreatorUrl can be made from CreatorTypeId key, and PriceView is used by the website to display prices.

If Roblox is able to address this issue, it would improve my game / my development experience because there would be a reliable, in-game way to fetch all information about assets. In my game, a user can view all of the details about an asset. When the asset is limited/limited unique and there are private sellers for the item, I can only show the user the original price of it which isn’t accurate if they were to go purchase it. This is misleading and has the possibility of causing unnecessary confusion among them.

2 Likes