Public developer API
GamersExtra Games API
Search our game database, pull release dates, inspect platforms and genres, and use our optimized cover, screenshot, artwork, and video media with attribution back to GamersExtra.
Endpoints
GET /api/gamesList games with pagination, filters, attribution, and optimized cover media URLs.
GET /api/games/{slug}Fetch one game with summary, release data, stores, platforms, genres, cover media, screenshots, artworks, videos, and attribution.
GET /api/games/metaFetch available platforms, genres, sort options, and attribution text for building filters.
Authentication
X-GamersExtra-Key: YOUR_API_KEY
You can also send Authorization: Bearer YOUR_API_KEY. Keys are created from your profile and are limited to 100 requests per UTC day by default.
List query parameters
| Parameter | Values | Default |
|---|---|---|
search | Game title text, 100 characters max | none |
platform | Exact platform name from `/api/games/meta` | all |
genre | Exact genre name from `/api/games/meta` | all |
status | all, released, upcoming | released |
sort | release_desc, release_asc, name_asc, name_desc | release date |
page | 1 to 1000 | 1 |
limit | 1 to 50 | 20 |
Response shape
{
"data": [{
"name": "Game title",
"slug": "game-title",
"url": "https://gamersextra.com/games/game-title/",
"release_date": "2026-09-05",
"release_timestamp": 1788566400,
"status": "released",
"platforms": ["PC (Microsoft Windows)"],
"genres": ["Adventure"],
"cover": {
"url": "https://gamersextra.com/game_images/example.webp",
"width": 600,
"height": 800,
"srcset": "https://gamersextra.com/game_images/example_image1x.webp 1x, ..."
}
}],
"pagination": {"page": 1, "limit": 20, "total": 100, "pages": 5},
"rate_limit": "See X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers",
"attribution": {"text": "Powered by GamersExtra", "url": "https://gamersextra.com/games/"}
}
Media access
List responses include each game cover when we have one. Detail responses include the cover plus up to 20 screenshots, up to 20 artworks, and up to 12 video links. Media URLs are absolute, optimized for the web, and safe to display as long as the required GamersExtra attribution and item links stay visible.
{
"data": {
"cover": {"url": "https://gamersextra.com/game_images/example.webp", "srcset": "..."},
"screenshots": [{"url": "https://gamersextra.com/screenshot_images/example.webp", "srcset": "..."}],
"artworks": [{"url": "https://gamersextra.com/artwork_images/example.webp", "srcset": "..."}],
"videos": [{"youtube_id": "abc123", "url": "https://www.youtube.com/watch?v=abc123"}]
}
}
Code examples
fetch('https://gamersextra.com/api/games?search=metroid&limit=5', {
headers: {'X-GamersExtra-Key': 'YOUR_API_KEY'}
})
.then(response => response.json())
.then(data => console.log(data.data));
const response = await fetch('https://gamersextra.com/api/games?status=upcoming&limit=10', {
headers: {'X-GamersExtra-Key': process.env.GAMERSEXTRA_API_KEY}
});
const games = await response.json();
console.log(games.data);
$context = stream_context_create(['http' => ['header' => "X-GamersExtra-Key: YOUR_API_KEY\r\n"]]);
$json = file_get_contents('https://gamersextra.com/api/games?platform=PC%20(Microsoft%20Windows)', false, $context);
$games = json_decode($json, true);
print_r($games['data']);
import requests
response = requests.get(
'https://gamersextra.com/api/games',
params={'search': 'zelda', 'limit': 5},
headers={'X-GamersExtra-Key': 'YOUR_API_KEY'}
)
print(response.json()['data'])
require 'net/http'
require 'json'
uri = URI('https://gamersextra.com/api/games?genre=Adventure&limit=5')
request = Net::HTTP::Get.new(uri)
request['X-GamersExtra-Key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }
puts JSON.parse(response.body)['data']
req, err := http.NewRequest("GET", "https://gamersextra.com/api/games?status=released&limit=5", nil)
if err != nil { log.Fatal(err) }
req.Header.Set("X-GamersExtra-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-GamersExtra-Key", "YOUR_API_KEY");
var json = await client.GetStringAsync("https://gamersextra.com/api/games?search=halo&limit=5");
Console.WriteLine(json);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("https://gamersextra.com/api/games?limit=5"))
.header("X-GamersExtra-Key", "YOUR_API_KEY")
.build();
String json = client.send(request, HttpResponse.BodyHandlers.ofString()).body();
curl -H 'X-GamersExtra-Key: YOUR_API_KEY' 'https://gamersextra.com/api/games?status=upcoming&limit=5'