Qorble Public API
A free, read-only JSON API for the Qorble catalog of Wordle-like games. No sign-up and no key needed.
- Base URL:
https://qorble.com/api/v1 - Methods:
GETonly. Responses are UTF-8 JSON. CORS is open (Access-Control-Allow-Origin: *), so browsers can call the API directly. - Only approved, publicly listed games are returned: the same games and public details (title, links, description, languages, tags, rating, public submitter credit) you see on the site. No user accounts or private data are exposed.
- Timestamps are ISO 8601 in UTC. Game ids are assigned in approval order, so a higher id means a game was approved more recently.
GET/api/v1/games
Paginated list of games, with the same filters as the Games page. Filters accepting several values take repeated params (group[]=a&group[]=b) or a comma list (group=a,b); values in one filter are OR'd, different filters are AND'd.
| Parameter | Description |
|---|---|
q | Search title, description and URL. |
language | Language codes (ISO 639-1 / 639-3), e.g. es, de,fr. |
group | Group slugs (game families, e.g. wordle). |
topic | Topic tag slugs. |
platform | Platform tag slugs. |
difficulty | easy, medium, hard (community ratings). |
min_rating | Minimum overall rating (0–5). |
after_id | Only games with an id greater than this. |
since | Only games approved after this ISO 8601 time. |
sort | default (catalog order, or relevance when searching), title, newest, oldest, top. |
page, per_page | Page number (from 1) and page size (default 24, max 100). |
curl "https://qorble.com/api/v1/games?language=es&sort=newest&per_page=2"
{
"data": [ { "id": 812, "slug": "palabra-del-dia", "title": "Palabra del Día", ... } ],
"meta": { "page": 1, "per_page": 2, "total": 57, "last_page": 29, "sort": "newest" },
"links": { "next": "https://qorble.com/api/v1/games?language=es&sort=newest&per_page=2&page=2", "prev": null }
}
GET/api/v1/games/{id|slug}
One game by numeric id or by its slug (the last part of its page URL, https://qorble.com/games/slug). Returns {"data": {game}}, or 404.
curl "https://qorble.com/api/v1/games/wordle"
GET/api/v1/games/new
Newly approved games, oldest first, for bots and feeds that announce new games. Poll it with a cursor:
| Parameter | Description |
|---|---|
since (required) | A game id (games with a higher id), an ISO 8601 time (games approved after it), or now (no games, just the current cursor, to start fresh without the backlog). |
limit | Maximum games returned (default 50, max 100). |
Pass the returned cursor as since on the next call. When more is true, call again right away.
curl "https://qorble.com/api/v1/games/new?since=810"
{
"cursor": 812,
"games": [ { "id": 811, ... }, { "id": 812, ... } ],
"more": false
}
Game object
{
"id": 812,
"slug": "palabra-del-dia",
"title": "Palabra del Día",
"url": "https://qorble.com/games/palabra-del-dia",
"play_url": "https://example.com/palabra/",
"domain": "example.com",
"description": "Guess the Spanish word of the day in six tries.",
"languages": ["es"],
"groups": ["wordle"],
"topics": ["words"],
"platforms": ["web"],
"tags": ["Web", "Wordle", "Words"],
"rating": 4.2,
"link_status": "active",
"credit": "jane_doe",
"credit_url": null,
"approved_at": "2026-10-22T18:04:11Z",
"reddit": { "id": "1abcde", "subreddit": "wordleverse", "permalink": "https://www.reddit.com/r/wordleverse/comments/1abcde/" }
}
url is the game's page on Qorble; play_url is the game itself. link_status is active or down (our link checker could not reach it recently). credit is the public submitter credit shown on the site, reddit the Reddit post the game was found in (both may be null). rating is null until rated.
Rate limits & optional token
Anonymous requests are limited to 60 requests per minute per IP address. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining; over the limit you get HTTP 429 with a Retry-After header (seconds).
Apps that need more can ask for a token (hello@qorble.com) and send it as a Bearer token for a limit of 1000 requests per minute. The token is optional: it only raises the limit, every endpoint and all data work the same without it. An unknown token is ignored (you get the anonymous limit).
curl -H "Authorization: Bearer YOUR_TOKEN" "https://qorble.com/api/v1/games/new?since=now"
Please cache responses where you can (responses may be cached for up to a minute) and poll /games/new no more than once a minute.
Errors
Errors are JSON: 404 unknown game, 422 invalid parameter (e.g. a bad since) with an error message; 429 rate limit exceeded and unknown paths with a message.
{ "error": "since must be a game id, an ISO 8601 time, or \"now\"" }
The API is provided as is and may change; breaking changes will get a new version prefix (/api/v2). Questions or ideas: r/wordleverse or Discord.