apyhub
Back
DATA EXTRACTION · DEVELOPER TOOLS

Find & Explore Games API

What it does

GameBrain lets you search for games, fetch full game details, get similar titles, and pull related news in one place. Send a game ID or a search query, and get back structured game metadata that you can use in catalogs, recommendation features, storefronts, or content pages.

Use Search Games to query by text and refine results with filters, sorting, offset, and limit. The response includes matching games plus total counts, sorting details, active filters, and optional filter and sorting options. Get Game Details returns the fields you need for a single title, including name, link, tags, genre, image, x_url, genres, offers, rating, themes, videos, gameplay, playtime, developer, platforms, play_modes, description, screenshots, release_date, micro_trailer, official_stores, short_description, and adult_only.

When you need discovery data, Get Similar Games returns a results list with IDs, names, years, genres, images, ratings, gameplay links, screenshots, micro trailers, adult-only flags, and short descriptions. Get Game Suggestions is a lighter lookup for autocomplete-style matching, and Get Game News returns news items with title, url, source, published date, and optional image for a game ID.

GameBrain is a fit for game search experiences, recommendation widgets, editorial tooling, and product pages that need up-to-date game metadata without scraping multiple sources.

▣ ENDPOINT 01 / 05
GET
Search Games
https://api.eu.apyhub.com/skycraft/gamebrain-api/games

QUICKSTART

GUIDE

Quickstart

Search for games with the required query parameters and return the first page of results.

curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games?query=rpg%20for%20PC&offset=0&limit=10&filters=%5B%5D&sort=computed_rating&sort-order=asc&generate-filter-options=true" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with limit, query, offset, results, sorting, total_results, filter_options, sorting_options, and active_filter_options fields.

  • limit, offset, and total_results are integers.
  • query is the search string you sent.
  • results is an array of game objects.
  • sorting is an object with key and direction.
  • filter_options, sorting_options, and active_filter_options are arrays describing available and active filters/sorting.
{
  "sorting": { "key": null, "direction": null },
  "active_filter_options": [
    { "key": "genre", "connection": "AND", "values": [ { "match": "rpg", "value": "role_playing" } ] },
    { "key": "platform", "connection": "AND", "values": [ { "match": "pc", "value": "pc" } ] }
  ],
  "query": "rpg for pc",
  "total_results": 47198,
  "limit": 3,
  "offset": 0,
  "results": [
    {
      "id": 104935, "year": 2023, "name": "Baldur's Gate 3", "genre": "Tactical Role Playing",
      "image": "https://img.gamebrain.co/games/267/baldurs_gate_3_larian_2023_93.webp",
      "link": "https://gamebrain.co/game/baldurs-gate-3",
      "rating": { "mean": 0.9589789637681159, "count": 708249 },
      "adult_only": true,
      "screenshots": [ "https://img.gamebrain.co/games/195/baldurs_gate_3_larian_2020_112.jpg" ],
      "micro_trailer": "https://cdn.akamai.steamstatic.com/steam/apps/256932354/microtrailer.webm",
      "gameplay": "https://www.youtube-nocookie.com/embed/FXyldfVAF9A",
      "short_description": null
    }
  ],
  "sorting_options": [
    { "name": "Rating", "sort": "DESC", "key": "computed_rating" },
    { "name": "Price", "sort": "ASC", "key": "price" },
    { "name": "Release Date", "sort": "DESC", "key": "release_date" }
  ]
}
TRY ITLIVE · 20 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Searches for games using the provided query, paging, sorting, and filter parameters, then returns a JSON object containing the matching results plus pagination and option metadata.

Query Parameter(s)

AttributeTypeMandatoryDescription
sortStringYesSort key. String up to 300 characters.
limitIntegerYesPage size. Integer (int32). Default: 10.
queryStringYesSearch text. String up to 300 characters.
offsetIntegerYesResult offset for paging. Integer (int32). Default: 0.
filtersStringYesFilter payload encoded as a string. String up to 3000 characters. Default: [].
sort-orderENUMYesSort direction. Allowed values: asc, desc. Default: asc.
generate-filter-optionsBooleanYesWhether to include generated filter options. Default: true.

Response

Returns a JSON object with pagination fields, search results, sorting metadata, and filter metadata. Top-level fields include limit and offset integers, query as a string, results as an array of game objects, sorting as an object, total_results as an integer, filter_options as an array, sorting_options as an array, and active_filter_options as an array.

ParameterTypeMandatoryDescription
limitIntegerNoPage size used in the response.
queryStringNoSearch text used in the response.
offsetIntegerNoResult offset used in the response.
resultsObject ArrayNoMatching games. Each item includes id, link, name, year, genre, image, rating.mean, rating.count, gameplay, adult_only, screenshots, micro_trailer, and short_description. screenshots is an array of URI strings with up to 100 items.
sortingObjectNoSorting metadata. Includes key and direction, both nullable strings.
total_resultsIntegerNoTotal number of matching results.
filter_optionsObject ArrayNoAvailable filter options. Each item includes key, name, and values; each value item includes key, name, and count. Both arrays are limited to 100 items.
sorting_optionsObject ArrayNoAvailable sorting options. Each item includes key, name, and sort. Limited to 100 items.
active_filter_optionsObject ArrayNoActive filter options. Each item includes key, values, and connection; each value item includes match and value. Both arrays are limited to 100 items.

Query parameters

Name
Type
Description
sortREQUIRED
string
limitREQUIRED
integer
DEFAULT 10
queryREQUIRED
string
offsetREQUIRED
integer
DEFAULT 0
filtersREQUIRED
string
DEFAULT []
sort-orderREQUIRED
string
DEFAULT asc
generate-filter-optionsREQUIRED
boolean
DEFAULT true
▣ ENDPOINT 02 / 05
GET
Get Game Suggestions
https://api.eu.apyhub.com/skycraft/gamebrain-api/games/suggestions

QUICKSTART

GUIDE

Quickstart

Search for games by query and limit the number of matches returned.

curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/suggestions?query=gt&limit=10" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a results array. Each item in results is an object that may include id, link, name, year, genre, image, rating (with mean and count), and adult_only.

{
  "results": [
    {
      "id": 123,
      "link": "https://example.com/game/123",
      "name": "Example Game",
      "year": 2024,
      "genre": "Action",
      "image": "https://example.com/image.jpg",
      "rating": { "mean": 4.5, "count": 120 },
      "adult_only": false
    }
  ]
}
TRY ITLIVE · 20 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns game suggestions matching a query string, limited by the requested number of results. The response contains a JSON object with a results array of game objects.

Query Parameter(s)

AttributeTypeMandatoryDescription
limitIntegerYesMaximum number of suggestions to return. Default: 10.
queryStringYesSearch text used to find matching game suggestions. Max length: 300.

Response

Returns a JSON object with a results array field. Each item in results is an object containing id (integer), link (string), name (string), year (number), genre (string), image (string URI), rating (object with mean and count number fields), and adult_only (boolean). The results array can contain up to 100 items.

AttributeTypeMandatoryDescription
resultsObject ArrayNoArray of game suggestion objects. Each item may include:
id — Integer
link — String
name — String
year — Number
genre — String
image — String URI
rating — Object with mean and count number fields
adult_only — Boolean
Maximum items: 100.

Query parameters

Name
Type
Description
limitREQUIRED
integer
DEFAULT 10
queryREQUIRED
string
▣ ENDPOINT 03 / 05
GET
Get Game Details
https://api.eu.apyhub.com/skycraft/gamebrain-api/games/details/:id

QUICKSTART

GUIDE

Quickstart

Fetch a game by its numeric id path parameter.

curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/details/:id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with fields such as id (integer), link (URI), name (string), and short_description (string), along with other optional game metadata when available.

{
  "id": 104935,
  "name": "Baldur's Gate 3",
  "image": "https://img.gamebrain.co/games/267/baldurs_gate_3_larian_2023_93.webp",
  "image_aspect_ratio": 1.0,
  "gameplay": "https://www.youtube-nocookie.com/embed/FXyldfVAF9A",
  "link": "https://gamebrain.co/game/baldurs-gate-3",
  "x_url": "https://twitter.com/baldursgate3",
  "rating": { "mean": 0.9589789637681159, "count": 708249, "mean_players": 0.967813, "count_players": 708180, "mean_critics": 0.9501449275362318, "count_critics": 69 },
  "description": "An ancient evil has returned to Baldur's Gate, intent on devouring it from the inside out. The fate of Faerun lies in your hands. Alone, you may resist. But together, you can overcome.",
  "short_description": "An ancient evil has returned to Baldur's Gate, intent on devouring it from the inside out. The fate of Faerun lies in your hands. Alone, you may resist. But together, you can overcome.",
  "release_date": "2023-12-08",
  "developer": "Larian Studios",
  "platforms": [ { "value": "gog_com", "name": "Gog Com" }, { "value": "pc", "name": "PC" } ],
  "genres": [ { "value": "role_playing", "name": "Role Playing" } ],
  "genre": "Tactical Role Playing",
  "adult_only": true,
  "screenshots": [ "https://img.gamebrain.co/games/195/baldurs_gate_3_larian_2020_112.jpg" ],
  "videos": [ "https://www.youtube-nocookie.com/embed/t0uYhTLPGLQ" ],
  "twitch_videos": [ { "id": "AbnegatePlayfulPelicanVoHiYo-5roWs9yGqWTZsxot", "url": "https://www.twitch.tv/cohhcarnage/clip/AbnegatePlayfulPelicanVoHiYo-5roWs9yGqWTZsxot", "creator_name": "TheCombatantWombat", "view_count": 229815 } ],
  "offers": [ { "price": { "value": 59.99, "currency": "USD", "initial": 59.99, "discount_percent": 0.0 }, "store_name": "steam", "platform": "PC", "url": "https://store.steampowered.com/app/1086940" } ],
  "micro_trailer": "https://cdn.akamai.steamstatic.com/steam/apps/256932354/microtrailer.webm"
}
TRY ITLIVE · 20 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Retrieves the details for a single game identified by its numeric id. The response returns a JSON object containing the game’s core metadata and related collections such as tags, offers, ratings, media links, and release information.

Path Parameter(s)

AttributeTypeMandatoryDescription
idIntegerYesGame identifier as an int32.

Response

Returns a JSON object with game detail fields such as id, link, name, and several optional collections and nested objects. The success response is the game record itself, not a wrapper object.

ParameterTypeMandatoryDescription
idIntegerNoGame identifier.
linkStringNoGame page URL. Format: URI.
nameStringNoGame name.
tagsString ArrayNoList of tag strings. Up to 100 items.
genreStringNoGame genre.
imageStringNoImage URL. Format: URI.
x_urlStringNoURL in URI format.
genresObject ArrayNoList of genre objects. Up to 100 items. Each item includes name and value.
genres[].nameStringNoGenre name.
genres[].valueStringNoGenre value.
offersObject ArrayNoList of offer objects. Up to 100 items. Each item includes url, price, title, platform, and store_name.
offers[].urlStringNoOffer URL. Format: URI.
offers[].priceObjectNoOffer price details, including nested fields value, initial, currency, and discount_percent.
offers[].price.valueNumberNoCurrent price value.
offers[].price.initialNumberNoInitial price value.
offers[].price.currencyStringNoCurrency code or symbol.
offers[].price.discount_percentNumberNoDiscount percentage.
offers[].titleStringNoOffer title.
offers[].platformStringNoPlatform name.
offers[].store_nameStringNoStore name.
ratingObjectNoRating summary, including mean, count, mean_critics, mean_players, count_critics, and count_players.
rating.meanNumberNoAverage rating. Nullable.
rating.countIntegerNoTotal rating count.
rating.mean_criticsNumberNoAverage critic rating. Nullable.
rating.mean_playersNumberNoAverage player rating. Nullable.
rating.count_criticsIntegerNoCritic rating count.
rating.count_playersIntegerNoPlayer rating count.
themesObject ArrayNoList of theme objects. Up to 100 items. Each item includes name and value.
themes[].nameStringNoTheme name.
themes[].valueStringNoTheme value.
videosString ArrayNoList of video URLs. Format: URI. Up to 100 items.
gameplayStringNoGameplay URL. Format: URI.
playtimeObjectNoPlaytime summary, including max, min, mean, median, mentions, and percentiles.
playtime.maxIntegerNoMaximum playtime.
playtime.minIntegerNoMinimum playtime.
playtime.meanNumberNoMean playtime.
playtime.medianIntegerNoMedian playtime.
playtime.mentionsIntegerNoNumber of playtime mentions.
playtime.percentilesString ArrayNoPercentile values as integers. Up to 100 items.
developerStringNoDeveloper name.
platformsObject ArrayNoList of platform objects. Up to 100 items. Each item includes name and value.
platforms[].nameStringNoPlatform name.
platforms[].valueStringNoPlatform value.
adult_onlyBooleanNoIndicates whether the game is adult-only.
play_modesObject ArrayNoList of play mode objects. Up to 100 items. Each item includes name and value.
play_modes[].nameStringNoPlay mode name.
play_modes[].valueStringNoPlay mode value.
descriptionStringNoGame description.
screenshotsString ArrayNoList of screenshot URLs. Format: URI. Up to 100 items.
release_dateStringNoRelease date in date format.
micro_trailerStringNoMicro-trailer URL. Format: URI.
official_storesObject ArrayNoList of official store objects. Up to 100 items. Each item includes url and source.
official_stores[].urlStringNoStore URL. Format: URI.
official_stores[].sourceStringNoStore source.
short_descriptionStringNoShort game description.
image_aspect_ratioNumberNoCover image aspect ratio (width/height).
twitch_videosObject ArrayNoTwitch clips referencing the game. Each item includes id, url, embed_url, thumbnail_url, title, creator_name, view_count, duration, language, created_at, fetched_at, type.

Path parameters

Name
Type
Description
idREQUIRED
integer
▣ ENDPOINT 04 / 05
GET
Get Similar Games
https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/similar

QUICKSTART

GUIDE

Quickstart

Fetch game records for a specific id, with limit sent as a query parameter.

curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/similar?limit=10" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a results array. Each item in results is an object that may include fields like id, link, name, year, genre, image, rating, gameplay, adult_only, screenshots, micro_trailer, and short_description.

{
  "results": [
    {
      "id": 378311,
      "year": 2017,
      "name": "Divinity: Original Sin 2",
      "genre": "Tactical Role Playing",
      "image": "https://img.gamebrain.co/games/668/divinity_original_sin_2_larian_2017_7.webp",
      "link": "https://gamebrain.co/game/divinity-original-sin-2",
      "rating": { "mean": 0.9363501136069805, "count": 89618 },
      "adult_only": true,
      "screenshots": [ "https://img.gamebrain.co/games/718/divinity_original_sin_ii_larian_2018_5.jpg" ],
      "micro_trailer": "https://video.akamai.steamstatic.com/store_trailers/435150/121883/ccbcafb42a53360716b3c81a97ef8398bb580cc0/1750530604/dash_h264.mpd",
      "gameplay": "https://video.akamai.steamstatic.com/store_trailers/435150/121883/ccbcafb42a53360716b3c81a97ef8398bb580cc0/1750530604/dash_h264.mpd",
      "short_description": null
    }
  ]
}
TRY ITLIVE · 20 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns a list of games similar to the game identified by the path id. The number of results returned is controlled by the limit query parameter.

Path Parameter(s)

AttributeTypeMandatoryDescription
idIntegerYesThe game identifier, formatted as an int32.

Query Parameter(s)

AttributeTypeMandatoryDescription
limitIntegerYesMaximum number of similar games to return. Default: 10. Formatted as an int32.

Response

Returns a JSON object with a results array field. Each item in results is an object describing a similar game, including fields such as id, link, name, year, genre, image, rating, gameplay, adult_only, screenshots, micro_trailer, and short_description.

AttributeTypeMandatoryDescription
resultsObject ArrayNoArray of similar game objects. Each object may include id, link, name, year, genre, image, rating, gameplay, adult_only, screenshots, micro_trailer, and short_description. results contains at most 100 items.

Path parameters

Name
Type
Description
idREQUIRED
integer

Query parameters

Name
Type
Description
limitREQUIRED
integer
DEFAULT 10
▣ ENDPOINT 05 / 05
GET
Get Game News
https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/news

QUICKSTART

GUIDE

Quickstart

Fetch the news list for a given game ID, using the required id path parameter and pagination query params.

curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/news" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a news array. Each item in news is an object with title, url, source, and published fields; image may also be present.

{
  "news": [
    {
      "title": "Baldur's Gate 3 dev worries for Fallout: New Vegas studio Obsidian as Bethesda takes over management",
      "url": "https://www.gamesradar.com/games/fallout/baldurs-gate-3-publishing-lead-worries-for-fallout-new-vegas-dev-obsidian-as-bethesda-takes-over-management-of-the-studio-says-he-cant-imagine-that-feels-great",
      "source": "gamesradar.com",
      "image": "https://cdn.mos.cms.futurecdn.net/Dff8hpPZC9qpm7ZSGunL7N-1920-80.jpg",
      "published": "2026-09-23"
    },
    {
      "title": "GTA 6 won't beat the GOTY record set by Baldur's Gate 3 and Clair Obscur: Expedition 33",
      "url": "https://www.gamesradar.com/games/grand-theft-auto/gta-6-will-not-be-eligible-to-complete-baldurs-gate-3-and-clair-obscur-expedition-33s-big-5-goty-sweep-in-the-2026-7-season",
      "source": "gamesradar.com",
      "image": "https://cdn.mos.cms.futurecdn.net/oFV96Lzam6D6cjSoxVEn9h-1920-80.jpg",
      "published": "2026-09-22"
    }
  ]
}
TRY ITLIVE · 20 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Retrieves news items for a specific game, identified by its numeric id, with pagination controlled by offset and limit. The response returns a JSON object containing a news array of news objects.

Path Parameter(s)

AttributeTypeMandatoryDescription
idIntegerYesGame identifier, int32.

Query Parameter(s)

AttributeTypeMandatoryDescription
limitIntegerYesMaximum number of news items to return, int32. Default: 10.
offsetIntegerYesNumber of news items to skip before starting the result set, int32. Default: 0.

Response

Returns a JSON object with a required news array field. Each item in news is an object with required title, url, source, and published fields, and an optional image field.

ParameterTypeMandatoryDescription
newsObject ArrayYesArray of news items. Each item contains: title (String), url (String, URI), source (String), published (String, date), and optional image (String, URI).

Path parameters

Name
Type
Description
idREQUIRED
integer

Query parameters

Name
Type
Description
limitREQUIRED
integer
DEFAULT 10
offsetREQUIRED
integer
DEFAULT 0
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.