GDBrowser (Geometry Dash) API
Free Geometry Dash API with no key. GDBrowser proxies RobTop's servers and returns levels, profiles, leaderboards and song data as clean JSON. Tested live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the GDBrowser (Geometry Dash) API?
GDBrowser exposes Geometry Dash's servers as a JSON API with no key required. It returns level details including difficulty, downloads, likes, object count and song credits, plus player profiles, leaderboards, comments and level search, all as ordinary REST endpoints.
Geometry Dash's own servers speak a bespoke, colon-delimited protocol that was never meant for third parties. GDBrowser sits in front of that and hands back JSON, which is the entire value proposition — every community tool, statistics site and Discord bot in the ecosystem is built on this translation layer rather than on RobTop's raw endpoints. It also means availability is inherited: when the game's servers wobble, GDBrowser wobbles with them, and a 500 here often means an outage upstream rather than a fault in the proxy.
Type inconsistency is baked in and worth planning around. `id`, `playerID`, `accountID`, `copiedID` and `customSong` all come back as strings while `downloads`, `likes` and `objects` are numbers — an artefact of the underlying protocol, where everything is text and only some fields get coerced. `songID` is stranger still: for a level using an official soundtrack it reads `"Level 5"`, a human label rather than an identifier, with the real song name and author in `songName` and `songAuthor` beside it.
Quick facts
- Base URL
https://gdbrowser.com/api- Authentication
- No key or account. The response carries `x-ratelimit-limit`, `x-ratelimit-remaining` and `x-ratelimit-reset` headers.
- Rate limit
- Headers reported a limit of 150 per window with a reset timestamp. Since every call proxies to RobTop's servers, staying well inside that is good manners as well as good practice.
- Pricing
- Free, community-run.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the GDBrowser (Geometry Dash) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Look up a Geometry Dash level by id
GET https://gdbrowser.com/api/level/128
curl 'https://gdbrowser.com/api/level/128'const res = await fetch("https://gdbrowser.com/api/level/128");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://gdbrowser.com/api/level/128", timeout=20)
res.raise_for_status()
print(res.json()){
"name": "1st level",
"id": "128",
"description": "(No description provided)",
"author": "real storm",
"playerID": "30144023",
"accountID": "6338004",
"difficulty": "Hard",
"downloads": 4148175,
"likes": 304196,
"disliked": false,
"length": "Medium",
"platformer": false,
"stars": 0,
"orbs": 0,
"diamonds": 0,
"featured": false,
"epic": false,
"epicValue": 0,
"legendary": false,
"mythic": false,
"gameVersion": "2.1",
"editorTime": 0,
"totalEditorTime": 0,
"version": 1,
"copiedID": "128",
"twoPlayer": false,
"officialSong": 5,
"customSong": "0",
"coins": 0,
"verifiedCoins": false,
"starsRequested": 2,
"ldm": false,
"objects": 208,
"large": false,
"cp": 0,
"partialDiff": "hard",
"difficultyFace": "hard",
"songName": "Base After Base",
"songAuthor": "DJVI",
"songSize": "0MB",
"songID": "Level 5"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
level id | path segment | Required | Numeric level id appended to `/api/level/`. 128 |
username | path segment | Optional | Player name for the `/api/profile/{name}` endpoint. RobTop |
query | query | Optional | Search term for `/api/search/{query}`, with filters for difficulty, length and song. bloodbath |
count | query | Optional | Result count on search and leaderboard endpoints. 10 |
Response fields
id / playerID / accountID / copiedIDstring- All returned as strings despite being numeric, an artefact of the underlying game protocol. Compare as strings or coerce consistently.
name / author / descriptionstring- Level title, creator name and description. An empty description arrives as the literal text `(No description provided)`, not an empty string.
difficultystring- Human-readable difficulty such as `Hard`, with `partialDiff` and `difficultyFace` giving the lowercase and icon-name variants.
downloads / likes / objectsinteger- Genuinely numeric, unlike the id fields. `objects` is the level's object count, a rough proxy for complexity.
stars / orbs / diamonds / coinsinteger- Reward values. Zero on unrated levels, which is most of them.
featured / epic / legendary / mythicboolean- Rating tiers, with `epicValue` carrying the numeric grade behind them.
customSongstring- Newgrounds song id as a string, or `"0"` when the level uses an official track.
songIDstring- For official tracks this is a label such as `Level 5`, not an id. Read `songName` and `songAuthor` for display.
gameVersionstring- The editor version the level was built in, useful for spotting very old levels.
What you can build with the GDBrowser (Geometry Dash) API
- Build a Geometry Dash level browser or search page
- Show a player's stats and completed demons on a profile card
- Add a level lookup command to a community Discord bot
- Track leaderboard movement over time
- Credit the correct Newgrounds artist for a level's music
Common errors and how to fix them
A 500 or a timeout
GDBrowser proxies RobTop's servers, which go down periodically.
Fix: Retry with backoff and cache the last good response; a failure here usually reflects an upstream outage rather than a bad request.
-1 or an error string in the body
The game servers rejected the lookup — commonly an unrated or deleted level.
Fix: Treat any non-object body as a miss and check the level exists on the site before assuming your request was malformed.
Comparison failures on ids
You compared a string `id` against a numeric literal.
Fix: Coerce consistently at the boundary. Nearly every id-like field here is a string.
429
Above the 150-per-window allowance.
Fix: Watch `x-ratelimit-remaining` and cache level data — a published level's details rarely change.
GDBrowser (Geometry Dash) API — frequently asked questions
Is there a Geometry Dash API?
Not an official JSON one. RobTop's servers speak a bespoke text protocol, and GDBrowser is the community proxy that translates it into ordinary REST endpoints with no key required — which is what nearly every Geometry Dash tool is built on.
Why are level ids returned as strings?
Because the underlying game protocol is entirely text-based and GDBrowser only coerces some fields to numbers. Ids stay strings while counts such as downloads and likes become numbers, so coerce consistently in your own code.
What does songID: 'Level 5' mean?
The level uses one of the game's official soundtracks rather than a Newgrounds upload, and the field carries a label instead of an id. Use `songName` and `songAuthor` for display, and check whether `customSong` is `"0"` to detect the case.
Why does the API sometimes return 500?
Because it proxies Geometry Dash's own servers. When those are down or throttling, GDBrowser has nothing to return. Retry with backoff and serve cached data — level details are stable enough that stale results are acceptable.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
HTTP Status Code Lookup
Search HTTP status codes from 100 to 599 with name, category and clear description. Filter by number or text — a fast, free, private in-browser reference.
GDBrowser (Geometry Dash) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.