Catalog
Games, from the same catalog the site reads.
The only scope that touches nobody's data, and the one that works on a key holding nothing else. Only the filters on your own games, at the end of this page, also need library.read.
/api/ v1/ games/ {slug}/ activityVisible game activity and session totals. Accepts activity filters. sessions and minutes count closed sessions; days counts the calendar days with a session in them, each day once, even with two sessions on it or sessions that overlap. A live session still open is in none of the three.
/api/ v1/ games/ ratingsCommunity averages by game. Answers rating (the average, to show), rating_count and weighted_rating (the average pulled towards the site mean by how many voted, to rank by). ids: 1 to 200 comma-separated ids. Public.
/api/ v1/ games/ statsWhat uloggd's community does with each game: distinct people with it in their library, playing, finished, wishlisted, favorited, reviewing, on journeys and logging sessions, plus uloggd popularity and trending. Recomputed every few minutes from this site's activity; no IGDB number takes part. ids: 1 to 200 comma-separated ids. Public.
/api/ v1/ gamesSearch the catalog, with the same filters as the site's own search. Public: answers without a key or a session. Each game carries type, IGDB's game type (0 main game, 1 DLC, 2 expansion, 3 bundle, 4 standalone expansion, 8 remake, 9 remaster, 10 expanded edition, 11 port; the same ids the types filter takes), or null when the catalog does not say. The filters on your own games (played, library, unplayed, wishlist, hideIgnored) are the exception: they read the asking account's library, so they need a session or a key that also holds library.read, and the answer comes with Cache-Control: private, no-store.
Query
| Field | Type | Notes |
|---|---|---|
q | string | Free text, up to 80 characters. |
platforms | string | Comma-separated IGDB platform ids, up to 24. |
release | string | released or upcoming. Defaults to both. |
period | string | last-30-days, last-90-days, this-year or next-3-months, counted from today (UTC). |
yearFrom | integer | First release year, 1950 to 2100. |
yearTo | integer | Last release year, 1950 to 2100. |
demo | string | 1 for games with a demo playable on spawnd now. |
steam | string | 1 for games IGDB links to a Steam page. |
genres | string | Comma-separated IGDB genre ids, up to 24. |
genresMode | string | With genres: all requires every one; defaults to any. |
themes | string | Comma-separated IGDB theme ids, up to 24. |
themesMode | string | With themes: all requires every one; defaults to any. |
modes | string | Comma-separated IGDB game mode ids, up to 24. |
perspectives | string | Comma-separated IGDB player perspective ids, up to 24. |
types | string | Comma-separated IGDB game types (0 main game, 8 remake, 9 remaster...), up to 24. Browsing without a query defaults to 0, 8 and 9. |
language | string | Up to 8 comma-separated languages (pt, pt-BR, en-US) in the interface, audio or subtitles. pt finds pt-BR and pt-PT. Only where IGDB says. |
interface | string | Up to 8 comma-separated languages (pt, pt-BR, en-US) in the interface. pt finds pt-BR and pt-PT. Only where IGDB says. |
audio | string | Up to 8 comma-separated languages (pt, pt-BR, en-US) in the audio. pt finds pt-BR and pt-PT. Only where IGDB says. |
subtitles | string | Up to 8 comma-separated languages (pt, pt-BR, en-US) in the subtitles. pt finds pt-BR and pt-PT. Only where IGDB says. |
age | string | Board and rating: esrb, pegi, cero, usk, grac, class_ind, acb, a hyphen and the step (class_ind-12, pegi-16, esrb-t). Games rated by that board up to that step; only where IGDB says. |
publishers | string | Comma-separated IGDB company ids, up to 24. |
role | string | With publishers: publisher or developer. Defaults to either. |
engines | string | Comma-separated engine names, up to 24. |
franchises | string | Comma-separated IGDB franchise ids, up to 24. |
series | string | Comma-separated IGDB series (collection) ids, up to 24. |
rated | string | 1 for games rated on uloggd only. |
reviewed | string | 1 for games with at least one review on uloggd. |
anticipated | string | 1 for unreleased games somebody is waiting for. |
rating | integer | Minimum uloggd score, 0 to 100. |
votes | integer | Minimum number of uloggd ratings. |
libraries | integer | Minimum number of people with the game in their uloggd library, 1 to 1000000. |
status | string | early_access, beta or alpha, comma-separated: any of them, as IGDB says. |
hideCancelled | string | 1 to leave out games IGDB lists as cancelled or rumored. |
hoursMin | integer | IGDB's estimated main-story hours, at least (1 to 500). Only where IGDB says. |
hoursMax | integer | IGDB's estimated main-story hours, at most (1 to 500). Only where IGDB says. |
obscure | string | 1 to include lesser-known games when browsing without a query. |
played | string | 1 for games you played only. Only with a session, or a key holding library.read: with neither the answer is 401 unauthorized, and a key without library.read gets 403 insufficient_scope. |
library | string | 1 for games in your library only. Only with a session, or a key holding library.read: with neither the answer is 401 unauthorized, and a key without library.read gets 403 insufficient_scope. |
unplayed | string | 1 for leaving out the games you played. Only with a session, or a key holding library.read: with neither the answer is 401 unauthorized, and a key without library.read gets 403 insufficient_scope. |
wishlist | string | 1 for games on your wishlist only. Only with a session, or a key holding library.read: with neither the answer is 401 unauthorized, and a key without library.read gets 403 insufficient_scope. |
hideIgnored | string | 1 for leaving out the games you ignored. Only with a session, or a key holding library.read: with neither the answer is 401 unauthorized, and a key without library.read gets 403 insufficient_scope. |
sort | string | popular, trending, rating, votes, newest, oldest, hype, name. trending follows uloggd's community trend, and votes how many uloggd ratings a game has. Defaults to popular. |
page | integer | 1 to 100. Defaults to 1. |
Example response
{
"data": [
{
"id": 14593,
"slug": "hollow-knight",
"name": "Hollow Knight",
"release_year": 2017,
"type": 0,
"rating": 92,
"genres": ["Platform", "Adventure"],
"spawnd_available": false
}
],
"page": { "number": 1, "size": 24, "total_items": 812,
"total_pages": 34, "has_more": true }
}/api/ v1/ games/ {slug}One game by its slug, in the same shape as the search (type included).
Filters on your own games
The search (GET /api/v1/games) can also filter by the asking account's
games, with 1 on each:
played: only the games you played, the library's "Played" shelf (statusCOMPLETED);library: only the games in your library, in any state;unplayed: the catalog without theplayedones;wishlist: only the games on your wishlist;hideIgnored: the catalog without the games you ignored.
They read the asking account's library, which is what library.read
guards, so they need a session or a key holding library.read as well as
catalog.read. With neither a key nor a session the answer is
401 unauthorized, not an empty list, which would look like a result. A key
without library.read gets 403 insufficient_scope with
scope: "library.read".
An answer that used one of these filters comes with
Cache-Control: private, no-store: it is about one account, and nothing on
the way should keep it. Every other search stays public as before.