GET
/api/v1/
API metadata, rate limits, and endpoint discovery.
curl "http://games.justmrkoalaai.nl/api/v1/"
A free, read-only JSON API for game listings, search, categories, and full game details. No API key. CORS enabled for browser apps.
Base URL: http://games.justmrkoalaai.nl/api/v1
curl "http://games.justmrkoalaai.nl/api/v1/games?page=1"
fetch("http://games.justmrkoalaai.nl/api/v1/games/search?q=elden")
.then((res) => res.json())
.then((body) => console.log(body.data.games));
Successful responses use a consistent envelope:
{
"ok": true,
"data": { ... },
"meta": {
"version": "1.0",
"cached": true,
"page": 1
}
}
Errors return ok: false with an error object:
{
"ok": false,
"error": {
"code": "MISSING_QUERY",
"message": "Query parameter q is required."
}
}
/api/v1/
API metadata, rate limits, and endpoint discovery.
curl "http://games.justmrkoalaai.nl/api/v1/"
/api/v1/games
Latest games, paginated.
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number, starting at 1. Default: 1. |
curl "http://games.justmrkoalaai.nl/api/v1/games?page=2"
/api/v1/games/search
Search games by title.
| Parameter | Type | Description |
|---|---|---|
q |
string | Search query, minimum 2 characters. Required. |
curl "http://games.justmrkoalaai.nl/api/v1/games/search?q=witchspire"
/api/v1/games/{slug}
Full game details including description, specs, Steam data, and download links.
curl "http://games.justmrkoalaai.nl/api/v1/games/witchspire-free-download"
/api/v1/categories
List all available categories.
curl "http://games.justmrkoalaai.nl/api/v1/categories"
/api/v1/categories/{slug}/games
Games within a category, paginated.
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number, starting at 1. Default: 1. |
curl "http://games.justmrkoalaai.nl/api/v1/categories/action/games?page=2"
Returned in listing, search, and category responses under data.games:
{
"title": "Witchspire",
"slug": "witchspire-free-download",
"url": "https://steamrip.com/witchspire-free-download/",
"image": "https://...",
"banner": "https://...",
"portrait": "https://...",
"category": "Adventure",
"build": "Build 23809611"
}
Returned under data.game. Includes all summary fields plus:
description — game overview textmetadata — genre, developer, platform, size, versionrequirements — OS, processor, memory, graphics, storagefeatures — about sections with heading and textdownloads — mirror links with host and URLsteam — Steam metadata when available (genres, screenshots, Metacritic score)Limits use two tiers so normal apps can burst when loading a page, while sustained scraping stays in check.
| Tier | Limit | Purpose |
|---|---|---|
| Burst | 45 requests / 10 seconds | Short spikes, such as loading a grid with parallel detail fetches. |
| Sustained | 300 requests / 60 seconds | Overall usage per IP across a minute of browsing. |
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.X-RateLimit-Burst-Limit, X-RateLimit-Burst-Remaining.meta.cached field indicates a cache hit.Access-Control-Allow-Origin: * for cross-origin use.| Code | HTTP | Meaning |
|---|---|---|
MISSING_QUERY |
400 | Search called without q parameter. |
INVALID_QUERY |
400 | Search query too short. |
INVALID_PAGE |
400 | Page number less than 1. |
RATE_LIMITED |
429 | Burst or sustained limit exceeded. Check response headers for which tier reset first. |
UPSTREAM_ERROR |
502 | Could not fetch data from the source site. |