PlaySurge API: free Roblox player count data

Read player counts, growth, rising games, breakout genres and studios as JSON. No sign-up, no key. Read-only.

Start here

Base address: https://playsurge.gg/api/v1

curl "https://playsurge.gg/api/v1/games?limit=3"

Every answer looks like { "data": ..., "meta": ... }. The meta block says where it came from, when we last read the numbers, and how fresh they are. Every game comes with a url back to its PlaySurge page.

Limits, freshness and rules

  • Rate limit: 100 requests per day for each address. Go over and you get status 429, a Retry-After header (seconds until the count resets at midnight UTC) and a JSON error.
  • Caching: answers are cached for about 5 minutes, so repeat calls inside that time may not count against you.
  • Browsers: cross-origin GET requests are allowed, so you can call it from a web page.
  • Freshness: we read player counts about twice a day, not every minute. Do not use this for live second-by-second numbers. Read meta.updated to see the last reading.
  • Earnings: the monthly earnings range is a wide estimate built from Roblox's published platform-wide payout rate. It is not what any game really earns.
  • Credit: if you show our data in public, link back to the PlaySurge page for that game (the url field). No reselling the data.
  • Errors: { "error": { "code": "not_found", "message": "..." } } with status 400, 404, 429 or 500.

GET /games

A list of games.

sort = players (default), 24h, 7d or new. genre = a genre name, such as Social. limit = 1 to 100 (default 25). offset = 0 to 500.

curl "https://playsurge.gg/api/v1/games?sort=24h&limit=2"
{ "data": [ { "id": 920587237, "slug": "adopt-me", "name": "Adopt Me!", "url": "https://playsurge.gg/game/adopt-me", "genre": "Social", "creator": "Uplift Games", "created": "2017-07-14T00:00:00Z", "players": 182340, "change_24h": 0.042, "change_7d": -0.018, "visits": 40123456789, "favorites": 12345678 } ], "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

GET /games/{id}

One game. The id is the number or the slug from the game page address. Adds a wide monthly earnings range.

curl "https://playsurge.gg/api/v1/games/adopt-me"
{ "data": {
    "id": 920587237, "slug": "adopt-me", "name": "Adopt Me!", "url": "https://playsurge.gg/game/adopt-me",
    "players": 182340, "change_24h": 0.042, "change_7d": -0.018, "visits": 40123456789, "favorites": 12345678,
    "genre": "Social", "creator": "Uplift Games", "created": "2017-07-14T00:00:00Z",
    "estimated_monthly_earnings_usd": { "low": 410000, "mid": 1640000, "high": 3280000,
      "basis": "average players over the last 7 days",
      "note": "A wide estimate from Roblox's published platform-wide payout rate, not this game's real earnings" }
  },
  "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

GET /games/{id}/history

Player counts over time, one point per reading.

range = 1d, 1w (default), 1m or all. ts is a Unix time in seconds.

curl "https://playsurge.gg/api/v1/games/adopt-me/history?range=1w"
{ "data": { "id": 920587237, "slug": "adopt-me", "name": "Adopt Me!", "url": "https://playsurge.gg/game/adopt-me",
    "range": "1w", "points": [ { "ts": 1792850700, "playing": 176210 }, { "ts": 1792893900, "playing": 182340 } ] },
  "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

GET /rising

Games under 5,000 players that are growing fastest compared with 24 hours ago.

limit = 1 to 100 (default 25).

curl "https://playsurge.gg/api/v1/rising?limit=5"
{ "data": [ { "id": 920587237, "slug": "adopt-me", "name": "Adopt Me!", "url": "https://playsurge.gg/game/adopt-me", "genre": "Social", "creator": "Uplift Games", "created": "2017-07-14T00:00:00Z", "players": 182340, "change_24h": 0.042, "visits": 40123456789, "favorites": 12345678 } ], "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

GET /breakout

Which genres and name themes the newest hit games share. Hit games are under 45 days old with 2,000 or more players.

curl "https://playsurge.gg/api/v1/breakout"
{ "data": { "window_days": 45, "min_players": 2000, "new_hit_games": 31, "url": "https://playsurge.gg/breakout",
    "genres": [ { "genre": "Simulator", "new_games": 9, "new_players": 54200, "share_of_new": 0.31, "share_of_all": 0.18, "lift": 1.72 } ],
    "themes": [ { "word": "brainrot", "games": 6, "players": 38100, "stage": "Growing",
      "examples": [ { "name": "Example Game", "players": 12100, "url": "https://playsurge.gg/game/example-game" } ] } ] },
  "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

GET /studios

Studios and creators ranked by total players across their games.

limit = 1 to 100 (default 25).

curl "https://playsurge.gg/api/v1/studios?limit=3"
{ "data": [ { "name": "Uplift Games", "type": "Group", "games": 4, "games_over_1k_players": 2, "players": 190400,
    "url": "https://playsurge.gg/studios?q=Uplift%20Games" } ], "meta": { "source": "playsurge.gg", "updated": "2026-10-27T14:05:00.000Z", "note": "Player counts are read about twice a day" } }

Use with an assistant

Paste this into any chat assistant that can run commands, and ask it a question about the results:

curl "https://playsurge.gg/api/v1/rising?limit=10"

Using Claude? Add https://playsurge.gg/api/mcp as a connector to check a game idea against our tracked data, and browse UI screens from top Roblox games. Details are below. Your PlaySurge plan sets its limits.

Claude connector

A connector for Claude and other AI agents: check a Roblox game idea against our tracked data before building it, see what is rising, and use the PlaySurge UI library. It has no player history or full rankings. Use the API above for those.

Address: https://playsurge.gg/api/mcp

Sign-in: when you add the connector, Claude asks you to sign in to PlaySurge. Your account's plan decides what you get. Without signing in, calls are refused with status 401.

Setup steps and a free skill that tells an agent to check an idea first: start.md.

check_idea

Input: idea (required, one sentence). Returns the closest games, what to change and which games to study, plus the verdict. A free account gets its first 3 checks in full, verdict included; after that the idea check is part of Pro. Uses one analyst check from the same allowance as the ideas page: free account 3 in all, Pro 40 a day.

rising_themes

Inputs: type (optional), limit (default 6, most 20). Themes climbing this week and not yet crowded. Pro.

theme_stage

Input: theme (required, one title word). Games, players and top games. Pro also gets how crowded it is, its week change and how long people stay.

similar_games

Inputs: about (required), type (optional), limit (default 5, most 8; free accounts 3). Tracked games closest to a description.

get_game

Input: id (required, id or slug). Players, week change, visits, favorites, creator and a rough earnings range.

rising_themes, theme_stage, similar_games and get_game share a limit of 300 lookups a day per account.

search_ui

Inputs: query (words to match, such as "egg shop"), category (optional: shop, egg, daily, odds, pass, upgrade, hud or tutorial), limit (default 10, most 25). Returns a text list: id, title, game, how many are playing now, and a short note. Screens made with PlaySurge are marked. If nothing matches it says so and lists the categories.

get_ui

Input: id (required). For a panel made with PlaySurge it returns the picture, its pieces, a picture of every piece and a download link. For a real game screen it returns text only (what it shows and its pieces): these are layout references, with no picture. Unknown ids give "No screen with that id."

Making new panels is on the site, not in the connector: the panel maker. Free account 1 a week, Pro 10 a day.

Try asking

  • "Search PlaySurge for egg shop screens and tell me what the top ones have in common."
  • "Find a restock timer screen in PlaySurge and list the pieces it uses."

Coming later: API keys

Not built yet. The plan is free keys sent as Authorization: Bearer YOUR_KEY with a higher daily limit. Today every request is anonymous and the limit above applies.