Roblox tells you its rate limit on every response, and the number is different for the page and for the data behind it. On 28 September 2026 we fetched roblox.com through residential exits: the home page answered a plain HTTP client with 200, 101,528 bytes and zero words, and a headless browser spent 4,440,448 bytes and 19.9 seconds to return 128. The public games endpoint answered 1,802 bytes with 226,518 players online, 64.7 billion visits and 19,996,280 favourites for one experience, under a header that reads x-ratelimit-limit: 300;w=60. Roblox proxies are for reading that JSON at scale and for seeing the localised page a player sees; this article gives the exact setting.
The page is empty without JavaScript, and thin with it
The Roblox website is a shell. A logged-out request for the home returns the title, the meta description, a canonical, an Organization JSON-LD block and no words at all, because every list on the page is fetched by scripts after load. Rendering fixes less than you would expect: the audit's rendered pass returned 128 words and the heading One platform. Millions of games., a signed-out landing page whose content is a sign-up form.
| Fetch | Exit | Status | Words | Bytes | x-ratelimit-limit |
|---|---|---|---|---|---|
| Home, plain HTTP | United States | 200 | 0 | 101,528 | 100;w=60 |
| Home, rendered | United States | 200 | 128 | 4,440,448 | n/a |
| Game page, plain HTTP (Blox Fruits) | United States | 200 | 213 | 90,823 | 100;w=60 |
| Game page, plain HTTP (same URL) | Germany | 200 | 212 | 114,063 | 100;w=60 |
| games.roblox.com/v1/games?universeIds=994732206 | United States | 200 | n/a | 1,802 | 300;w=60 |
| catalog.roblox.com/v1/search/items/details | United States | 400 | n/a | 81 | 12;w=60, plus a deprecation header |
The rendered fetch is the expensive row: 44 times the bytes of the plain fetch and 19.9 seconds of browser time for a page that a logged-out visitor is not meant to read. In a second rendered pass the same home settled at 609 words after the recommendation grid loaded, and every one of those words was a game title you can get from the endpoint in a fraction of the bytes. Do not render Roblox for data.
A game page over plain HTTP is a different story: 213 words, the title, the description, the creator and the canonical, in 90,823 bytes. That is enough to confirm an experience exists and to read its public description. The live numbers, players, visits, favourites, are not on it; they are in the JSON.
The games endpoint carries the numbers and prints its own limit
The endpoint that the game page itself calls is public, keyless and answered a plain HTTP client through a residential exit in 1.5 seconds:
GET https://games.roblox.com/v1/games?universeIds=994732206
{"data":[{"id":994732206,"rootPlaceId":2753915549,"name":"Blox Fruits",
"creator":{"id":4372130,"name":"Gamer Robot Inc","type":"Group","hasVerifiedBadge":true},
"playing":226518,"visits":64715626937,"maxPlayers":12,
"created":"2019-01-16T03:29:19.433Z","updated":"2026-09-27T04:42:04.424Z",
"genre_l1":"RPG","genre_l2":"Action RPG","favoritedCount":19996280, ...}]}
x-ratelimit-limit: 300, 300;w=60
x-ratelimit-remaining: 299
x-ratelimit-reset: 24
x-terms-message: Terms apply https://rblx.co/TOU.
Three things to build on. First, the rate limit is per window and per IP and it is printed: 100 requests per 60 seconds on www pages, 300 per 60 seconds on the games endpoint, 12 per 60 seconds on the deprecated catalog search. A poller that reads x-ratelimit-remaining and sleeps until x-ratelimit-reset never meets a 429 and never needs a second IP for the first 300 experiences a minute. Second, the games endpoint takes a comma-separated list of universe ids, so one request can carry many experiences; the cost per experience falls well below the 1,802 bytes of a single-id call. Third, the catalog endpoint we tried answered 400 with a deprecation header, This endpoint will be deprecated soon; do not build a catalogue pipeline on it, the documented replacement is in Open Cloud.
The response also settles the identifier question that costs newcomers hours: the URL carries a place id (2753915549), the endpoint wants a universe id (994732206), and the response gives you both, plus canonicalUrlPath, so one lookup maps the two for good.
What the exit country changes
Roblox localises by IP before any cookie exists. The same game URL fetched from a German residential exit redirected to /de/games/2753915549/Blox-Fruits, came back titled Blox Früchte | Auf Roblox spielen with a German description and a German canonical, and weighed 114,063 bytes against 90,823 from the United States. The JSON did not change. So the rule is the same as on Kick: for numbers, the exit country is irrelevant and one US exit is fine; for what a player in a market sees, the localised title, description, the maturity label and the regional restrictions, you need an exit in that market, and the 30 sitemaps in robots.txt (one per language, games and pages) tell you which markets Roblox itself considers separate.
Roblox also prints Terms apply https://rblx.co/TOU. on every response, page or JSON, and it means it. The Community Standards prohibit using bots or other automation that is programmed to run disruptive tasks and using or sharing exploits to help yourself or others gain an unfair advantage. The Terms of Use bind every account holder to those standards. Reading public experience metadata at 300 requests a minute, as the header allows, is not disruptive; account farming, item sniping bots, alt accounts to dodge a ban and the free-robux schemes the search results are full of are, and no proxy makes them anything else. We do not help with them.
Cost math with real prices, 1 GB counted as 1,000,000,000 bytes
Prices from our pricing page: residential Basic $0.80/GB, residential Premium $2.20/GB, datacenter $0.50/GB, and the web scraping API from $0.0002 per page ($0.001 with rendering), billed only on success.
| Approach | Bytes per unit | Units per GB | Cost per 1,000 units, residential Basic |
|---|---|---|---|
| games endpoint, one universe id per call | 1,802 | about 555,000 | $0.0014 |
| Game page, plain HTTP | 90,823 | about 11,000 | $0.073 |
| Home, plain HTTP (0 words) | 101,528 | about 9,850 | $0.081 |
| Home, rendered | 4,440,448 | 225 | $3.55 |
| Web scraping API, one game page, no render | n/a | n/a | $0.20 |
| Web scraping API, one page, rendered | n/a | n/a | $1.00 |
Byte figures are decoded page size and overstate compressed transfer; the ordering holds. Reading the live player count for 1,000 experiences costs about a seventh of a cent over the endpoint and $3.55 by rendering the home, which does not even contain it. The binding constraint on Roblox is never bandwidth; it is the 300-per-minute window per IP, which is where a rotating pool turns 300 experiences a minute into 300 per exit.
Which proxy type, by job
| Job | Proxy type | Why |
|---|---|---|
| Reading public experience metadata at volume | Residential, rotating | Every exit gets its own 300-per-minute window on the games endpoint; nothing we sent from a residential exit was challenged |
| Checking the localised page from a market | Residential, country-targeted | Roblox redirects to /de/ and translates the title from a German exit; only a real exit there shows it |
| Relaying Roblox APIs from inside an experience | Not a per-GB proxy job | HttpService calls go server to server; the community relays in the search results exist because Roblox blocks its own domains from HttpService, not because of IP reputation |
| Trading, sniping, alt accounts, ban evasion | None | Prohibited by the Community Standards; a new IP does not restore a banned account |
Mobile proxies are not justified anywhere on this list. Nothing we measured behaved differently for a carrier IP, and the web surface did not challenge residential traffic at all. For the general choice between rotating and sticky exits, see the rotating proxies page; for how much a gigabyte buys across sites, see how much proxy data you need.
The setting that works on Roblox
- Network: residential, Basic at $0.80/GB, rotating so each exit carries its own 300-per-minute window.
- Fetch mode: engine: tls. The games endpoint returns the full object in 1,802 bytes and a game page returns 213 words; rendering the home costs 4,440,448 bytes for 128 words that a logged-out visitor is not meant to read.
- Country: pin us for data, pin the market for the page. From Germany the same game URL becomes /de/games/..., Blox Früchte | Auf Roblox spielen, 114,063 bytes instead of 90,823; the JSON is identical everywhere.
- When the proxy is not enough: there is no Roblox collector in our catalogue. For typed rows from a game or catalogue page use the web scraping API without rendering ($0.0002 per page) with a CSS or AI extraction schema; for the numbers, call the games endpoint directly through the proxy and honour x-ratelimit-reset.
- Every account gets $2 of free API usage per month, which is 2.5 GB of residential bandwidth or about 1,387,000 games-endpoint calls before anything is billed.