GET request limits for catalog.roblox.com

Roblox recently removed the search.roblox.com API links, my GET requests there only return a nil JSON []

I’ve started using catalog.roblox.com and have gotten around the annoying cursor (I miss you &PageNumber=n), but I’m meeting {"errors":[{"code":0,"message":"TooManyRequests"}]} far quicker than I did through the search.roblox.com API.

Does anyone know of any documentation that describes the rate limits for catalog.roblox.com so I can add a throttler to my service as well as the already implemented caching?

Similarly, I would imagine the cursor is being used as an identifier to reduce scraping as well as for pagination (thanks to UGC inflating the DS…), I imagine there’s no way to jump to a specific page as in previous iterations of the API?

There is never documentation for rate limits, if there is it’s very rare, the only reason your search.roblox.com requests are responding with an empty array must be because of a bad request of some sort.

Interesting. Have they changed the URL parameters? It worked fine until fairly recently (and by that I mean a fair few months ago, it’s been a while since I touched this proj).

I’m querying with parameters such as:

https://search.roblox.com/catalog/json?Category=%d&Subcategory=%d

e.g. https://search.roblox.com/catalog/json?Category=5&Subcategory=5

In the past, if I had sent a bad request, I’d normally be met with a 400 error

I just realised that the endpoint was deprecated. You’ll have to use https://catalog.roblox.com/v1/search/items/details

Yeah, I would have guessed that from the request response(s). As in OP, I am currently using catalog.roblox.com but would love further info with regard to rate limits and/or attempting to request specific pages without having to use the cursor pagination in an attempt to limit requests.

It’s unfortunate internal requests are treated as external despite only using this in a RBX server.

Wait, did you say you are using this API from a game server?

(Technically) I suppose not. I am using a proxy but I am making that request from the game server.

My comment is more in frustration as to why I need to do that in the first place when its an internal request, not entirely certain as to why the focus is on externally-minded API

I’ve never understood this either and I hope that Roblox will consider modifying this in the future.

That being said, I don’t know if you’ve seen this before but I consider this link extremely helpful for working with Roblox API’s

Not really when it can’t load the Xsrf lib, and you can also use this:

Where I myself, from the knowledge of the api will dump endpoints and subdomains, and show some usage based on how I’ve seen them being used

Extremely frustrating knowing that it’s most likely going to stay with a very low rate limit, getting a list of UGC and Roblox-created items shouldn’t take me a few hours just to retrieve data for it to become outdated only minutes after. (FYI: I don’t need the endpoint anymore, my sales archive has been complete for a while before they enacted a stronger rate limit)

3 Likes

Like @0x6e7367 said, it’s not really reliable. Viewing the documentation of the subdomains directly is more reliable and more readable personally.

Along with their resource, you could also see my list, which at the moment only has undocumented and documented endpoints that allow GET requests. I haven’t had time to document properly yet.

3 Likes

FYI the catalog API will stop returning information when you get to cursor 36; even if you KNOW there is more assets it should be returning.

If you’re trying to scrape the catalog you should instead just try scraping the information off rolimons, or try splitting up your search queries into asset genre and asset type.

If you’re trying to make a decent list of most of the on sale assets, here is something I made recently. (disclaimer: this is not all on sale assets)

Accessories.json (214.5 KB)

2 Likes

Hadn’t heard of Rolimon, seems like the best option - wonderful, thanks!