How do empty group finders work

Hello there, recently I see alot empty group finding games. Please tell me how empty group finders work. Im pretty curious

Thank you for your time

1 Like

Could you be more specific? What do you mean: “I see a lot empty group finding games”?

I mean I started to see a lot of empty group finder games so I got curious how these games work

Please give me an example, i’m not understanding what you mean.

I dont think Im unclear. I just ask how these finders work

I’m sorry i can’t help you since I don’t know the subject you’re talking about. :sweat_smile: :pensive:

You can:

  • Pick a random number as a base group Id to start iterating through
  • Use any of the Roblox’s proxies and send a http GET request to it using the link: https://groups.roblox.com/v1/groups/groupId
  • It will return a JSON formatted table like so:
{
	"id": groupId,
	"name": "Group Name",
	"description": "Group Description",
	"owner": ownerData,
	"shout": "Group Shout",
	"memberCount": groupMembercount,
	"isBuildersClubOnly": false,
	"publicEntryAllowed": false
}

Or whatever. So if the group is empty, the data.owner should be null. If it isn’t, that means that the group is owned, and generate a new group Id, I’d suggest adding 1 to the old one, and do the process again.

A roblox proxy I’d recommend: https://rprxy.xyz/

Can you give me a example of how to script that

1 Like

Sure. I did some work and came up with this:

LocalScript inside of StarterPlayerScripts

local getGroupData = game:GetService("ReplicatedStorage").GetGroupData -- RemoteFunction called "GetGroupData" in ReplicatedStorage
local id = math.random(1000, 10000) -- Base GroupID to start with
local attempts = 1 -- Keep track of your attempts

local function getEmptyGroup(recur) -- Function to get an empty group
	if recur then wait(5) end -- If the function is being called inside of itself then don't run it too fast
	print("Attempt #" .. attempts) -- Print which attempt you are in currently
	id += 1 -- Add 1 to the base GroupID
	attempts += 1 -- Add 1 to the count of attempts
	local gData = getGroupData:InvokeServer(id) -- Get the Group Data from the server
	if gData.owner == nil then -- If it doesn't have an owner, then:
		print("Group didn't have an owner!") -- Inform that the group didn't have an owner
		return gData -- Return the table containing the group information
	else -- Otherwise
		print("Group had an owner.") -- Inform that the group had an owner
		getEmptyGroup(true) -- Recall the function to get a new group
	end
end

wait(5) -- Just an initial delay

print(getEmptyGroup()) -- Let's see if this works, lol

Script inside of ServerScriptService

local httpService = game:GetService("HttpService") -- Get the HttpService

game:GetService("ReplicatedStorage").GetGroupData.OnServerInvoke = function(plr, id) -- Listen to the RemoteFunction invoke
	local resp = httpService:GetAsync("https://groups.rprxy.xyz/v1/groups/" .. tostring(id)) -- Get the API response
	local data = httpService:JSONDecode(resp) -- Convert it to Lua-readable format
	return data -- Return the group Data to the client
end

Make sure you make a RemoteFunction called “GetGroupData” inside of ReplicatedStorage
image
Worked for me, however this isn’t the best way. HttpService has its limitations such as the amount of GET/POST requests you use every five minutes is 500 and so.

You can experiment with the code, I won’t recommend you use this as it is.