How can I get all data about a place with the Roblox API?

How can I get all the data about a place with the Roblox API? I’m not asking for :GetProductInfo(). I’m talking about Roblox API URLs. I just found out that I just spent the past 5 hours screwing around with a URL that wasn’t what I needed, so I’m asking here.

You could use this to get/send roblox api requests:
https://rprxy.xyz
and probably use this endpoint:
https://games.roblox.com/docs/

I looked through that endpoint and couldn’t find anything. Do you know of any other methods to do this?

https://games.roblox.com/docs/ is the only api endpoint to get information specifically about games.

What exactly are you looking for? You can get players, favorites, likes, dislikes, descriptions, creator info, and ids from this api.

I’m looking to get information about places. This API endpoint only gives information about a game’s starter place.

What info exactly do you want?

Concurrent player count and total visits.

1 Like

I definitely saw @Rdite using HTTPService to look through likes. Maybe he could give some insight? I almost never use HTTPService for anything.

Though, you did say you want place info, not game info.

One way you could achieve this, (except for the visits thing) is to use MessagingService in a way that it asks every server to give the amount of players inside each one. And then having the topic be unique, like having the place I’d on it. Then, after some time, when you think all servers have answered, calculate all entries;

MessagingService does suck sometimes though.
And it would be quite expensive.

1 Like

I’m already using Messaging Service in my game to list all the servers. I guess adding another value wouldn’t be too bad of a solution. I still wish I could have total visits, though. Roblox really needs to support this via their web API. Guess I’ll use Messaging Service if web scraping doesn’t work out for me.

1 Like

You can get that information using the Games Api:

-- API Link: https://games.roblox.com/docs#!/Games/get_v1_games
-- Note that this requires the UniverseId NOT the placeId. I'll show you how to get that easily too!
-- Also note that you don't need to get the UniverseId if you already have/know it. So you can skip that part once you get it, etc (unless you're trying to get random game infos/don't want to manually store each universeId)

-- Variables --
local HS = game:GetService("HttpService");
local PlaceID = 185655149; -- Your place id

-- Get Universe ID --
local Key = "https://api.rprxy.xyz/universes/get-universe-containing-place?placeid="..PlaceID;
local Response = HS:JSONDecode(HS:GetAsync(Key)); -- Should prob keep these seperate and/or wrap in a pcall

local UniverseID = Response.UniverseId; -- Now you got the universeId!!
print(UniverseID); -- Printing so you can see in output!

-- Get game info using Universe ID --
local Key = "https://games.rprxy.xyz/v1/games?universeIds="..UniverseID;
local Response = HS:JSONDecode(HS:GetAsync(Key)); -- Should prob keep these seperate and/or wrap in a pcall

-- Loop --
for Index, GameData in ipairs(Response.data) do -- All information about the game stored in the "data" table.
	print(Index, GameData);
end;

-- And we're done! Its that easy!

Hope this helps and goodluck!

3 Likes

It’s a bug.

A while back I found this bug out, where it returns data for only the root starter place and not the game as a whole. You can support the bug report here if you’d like:

You could use webscrapping instead

Another solution could be to make a web scrapper which looks for the content <li class="game-stat"><p class="text-label text-overflow font-caption-header">Playing</p><p class="text-lead font-caption-body wait-for-i18n-format-render"> and scrapes the player and visit count, though that will run into issues if Roblox updates their site.

Sample Parsing Code That Took Way To Long To Work
//Finds searchStart in string, then returns everything after it until searchEnd
function find(string, searchStart, searchEnd) {
    let part = string.substring(string.indexOf(searchStart) + searchStart.length)
    let found = part.substring(0, part.indexOf(searchEnd))
    return found
}

let source = document.body.innerHTML

//For Playing
let playing = find(source, '<li class="game-stat"><p class="text-label text-overflow font-caption-header">Playing</p><p class="text-lead font-caption-body wait-for-i18n-format-render">', '</p>')

let favorites = find(source, '<li class="game-stat"><p class="text-label text-overflow font-caption-header">Favorites</p><p class="text-lead font-caption-body wait-for-i18n-format-render"><span class="game-favorite-count">', '</span></p>')

let visits = find(source, '<li class="game-stat"><p class="text-label text-overflow font-caption-header">Visits</p><p id="game-visit-count" class="text-lead font-caption-body wait-for-i18n-format-render" title="', '">')

console.log("Playing: " + playing)
console.log("Favorites: " + favorites)
console.log("Visits: " + visits)

Obviously, depending on language, the code will be different. However, the above example will work with javascript, which you can test in a console and get the following output for a game:

3 Likes