Search by

omniplay / igdb

GlitchArt

Omniplay's IGDB, under any PHP host: Twitch's games database through Apicalypse queries - search, a game's record by its IGDB, Steam or GOG number with its studios, platforms, cover and screenshots, score and identifiers on the stores; Twitch's application token got and renewed by itself.

1.x-dev 2026-11-10 06:35 UTC

This package is auto-updated.

Last update: 2026-11-10 08:18:48 UTC


README

omnisense/omniplay's IGDB, Twitch's games database, under any PHP host: an application token got from Twitch with the client credentials and renewed a minute before it expires; search and a game's record through Apicalypse queries (POST /v4/games); a game found by its IGDB number or by its Steam or GOG number (/v4/external_games); its studios, platforms, genres, themes, cover and screenshots (images.igdb.com), its score, and its identifiers on Steam, GOG, Epic and itch.io (external game sources 1, 5, 26 and 30).

$igdb = (new IgdbFactory($httpClient))->create(['client_id' => getenv('TWITCH_CLIENT_ID'), 'client_secret' => getenv('TWITCH_CLIENT_SECRET')]);
$portal = $igdb->game(GameRef::steam(620));

Options: client_id and client_secret (required: a Twitch application's), api, token_url, images.

IGDB's terms

IGDB is used under Twitch's developer agreement and IGDB's own terms (api-docs.igdb.com): 4 requests a second, credit to IGDB.com. The documentation refused a re-reading on 2026-10-24 (403): read it before going live.

Verified, and not

  • Verified (the core's harness, PHP 8.4): the token got once, a search by Apicalypse (quotes escaped), a game by its Steam number, unknown; BareTest; PHPStan max. The answers are shaped after IGDB's documentation and written by hand: no Twitch application was used. IGDB moved external games from category to external_game_source: both are read, the lookup asks the latter - not seen live.
  • Not verified live: no credentials.

Responsibility

An independent, unofficial client, affiliated with, endorsed by or sponsored by none of the services it reaches. The MIT licence covers this code only and grants no right to the service or its data: whoever runs it complies with the terms above and obtains what they require. The authors publish it free of charge, make no commercial use of it and accept no liability for its use.

Usage policy

The package declares its usage policy as data, in policy.json (omnisense/contracts' schema). 4 requests a second, per key, as api-docs.igdb.com says (read on 2026-11-10), and at most 8 open requests at once (concurrency: declared and exported, not enforced by the guard, as a PHP process makes one request at a time). Commercial use is under contract: monetized products go through IGDB's partnership, and Twitch's Developer Agreement forbids monetizing its data without permission. Storing and caching are allowed (IGDB's FAQ), redistribution is forbidden, and IGDB.com is credited. Through omniplay's registry, the fifth call within a second is refused before it is made (UsageLimitReachedException). A 429 and its Retry-After hold every call until the wait is over. A site may lower the limit, never raise it.

Licence

MIT.