SteamVault
Documentation menu

API reference · Games

Search games

GEThttp://localhost:8000/games

The heart of the API: search, filter and sort the whole catalog in one request.

With no parameters, you get every game (16 per page), with just its id and name. From there, add any filters below to narrow it down and use fieldset to choose what data comes back for each game.

Examples

  • Everything by Rockstar: GET /games?developer=Rockstar
  • Same, with release date and price: GET /games?developer=Rockstar&fieldset=release_date,final_price_us
  • Action/adventure games between US$5 and US$20, best rated first: GET /games?genres=accion,aventura&min_price_us=5&max_price_us=20&sort=score:desc
  • Open world games without VR, in random order: GET /games?tags=Mundo abierto&exclude_tags=VR&sort=shuffle
Request
curl "http://localhost:8000/games" \
  -H "Authorization: Bearer YOUR_TOKEN"
Try itLive API
fieldset
GET http://localhost:8000/games?fieldset=developer%2Crelease_date%2Cfinal_price_us%2Cscore%2Cminified_tags&per_page=5

Runs against the real API with a shared demo key. Results are fixed at 5 per page and identical requests are served from a cache for an hour.

Parameters

Results7
  • pageintegerDefault: 1

    Which page of results to return.

  • per_pageintegerDefault: 161–100

    How many games per page.

  • fieldsetstring

    Extra fields to include for each game, comma-separated. id and name always come back.

    Basics: developer, publisher, genres, categories, tags, minified_tags (tags as a simple list of names — usually what you want), short_description, isF2P, min_age, content_restrictions, origin_country

    Release: release_date, releaseDateOrig (as shown on Steam, e.g. "18 MAY 2015"), coming_soon

    Early access: is_early_access, has_left_early_access, is_possibly_abandoned, ea_release_date_from, ea_release_date_to, ea_release_date_orig

    Media: header_image, background, screenshots, videoId, steamImages

    Price: price (all price data), final_price_ar, final_price_us, initial_price, us_initial_price, discount_percent, currency, regional_status

    Reviews: historical_reviews, last_month, release_window (each window's full data), or single values like score, total_reviews, total_positive, total_negative, last_month_score, last_month_reviews, release_window_score, release_window_reviews

    Popularity & region lock: wishlist_rank, wishlist_rank_max, wishlist_rank_current, is_limited, limitedStatus

  • tags_limitinteger1–100

    Only return each game's top N tags (when you request tags or minified_tags). tags_limit=5 is plenty for showing tags in a UI.

  • sortstring

    Order of the results, as field:asc or field:desc. Sortable fields include name, release_date, final_price_ar, final_price_us, initial_price_ar, initial_price_us, discount_ar, discount_us, score, total_reviews, last_month_score, last_month_reviews, release_window_score and release_window_reviews.

    Use shuffle for random order.

  • sort_wishliststring

    Sort by position in Steam's most-wishlisted ranking, best first. max uses the best position the game ever reached, current its latest one. Games that never entered the ranking are left out.

    One of: max, current

  • fieldsstring

    Advanced: raw stored field names to return, comma-separated (e.g. prices.ar.finalPrice). Replaces fieldset if you send both. You'll rarely need it.

Games3
  • idsstring

    Only return these games (Steam app IDs, comma-separated).

  • include_appidsstring

    Always include these games in the results, even if they don't match your other filters. Handy for keeping a user's favorites pinned in a filtered list.

  • exclude_appidsstring

    Never return these games. Handy for hiding games a user already owns.

Basics8
  • namestring

    Search by name. Every word must appear as a whole word in the title, in any order and ignoring case: witcher 3 finds "The Witcher 3: Wild Hunt", but witch doesn't.

  • developerstring

    Games made by this developer. Same whole-word matching as name.

  • publisherstring

    Games released by this publisher. Same whole-word matching as name.

  • genresstring

    Games in any of these genres, comma-separated. Case and accents don't matter. Available genres: accion, aventura, casual, carreras, deportes, estrategia, indie, rol, simuladores, multijugador masivo, free to play, acceso anticipado, plus a few non-game ones like utilidades or educacion.

  • isF2Pboolean

    true for free-to-play games only, false to leave them out.

  • min_ageinteger

    Games whose minimum required age is at least this.

  • content_restrictionsstring

    Games with any of these mature content descriptors, comma-separated:

    • desnudos_contenido_sexual — some nudity or sexual content
    • violencia_frecuente_gore — frequent violence or gore
    • contenido_sexual_adultos — adult-only sexual content
    • desnudos_frecuentes — frequent nudity or sexual content
    • contenido_adulto_general — general mature content
  • origin_countrystring

    Country the developer is from (country code, e.g. ar, us, jp).

Release2
  • release_datestring

    Games released in a year (2020) or a range of years (2020-2023). For exact moments, pass two millisecond timestamps: 1577836800000-1704067199000.

  • coming_soonboolean

    true for games that haven't been released yet.

Early access5
  • is_early_accessboolean

    true for games that are or were in early access.

  • has_left_early_accessboolean

    true for games that already got their full release after early access.

  • is_possibly_abandonedboolean

    true for early access games flagged as possibly abandoned. Good to warn players before they buy.

  • ea_release_date_fromstring

    Games that entered early access on or after this date (YYYY-MM-DD or a millisecond timestamp).

  • ea_release_date_tostring

    Games that entered early access on or before this date. Can't be earlier than ea_release_date_from.

Media4
  • screenshotsboolean

    true for games that have screenshots.

  • min_screenshotsinteger

    Games with at least this many screenshots.

  • videoIdboolean

    true for games that have a trailer.

  • steamImagesboolean

    true for games that have Steam store artwork.

Price19
  • min_price_usnumber

    Current US store price (in US$, discount applied) of at least this.

  • max_price_usnumber

    Current US store price of at most this.

  • min_price_arnumber

    Current Argentine store price (discount applied) of at least this.

  • max_price_arnumber

    Current Argentine store price of at most this.

  • min_initial_price_usnumber

    US price before discounts of at least this.

  • max_initial_price_usnumber

    US price before discounts of at most this.

  • min_initial_price_arnumber

    Argentine price before discounts of at least this.

  • max_initial_price_arnumber

    Argentine price before discounts of at most this.

  • min_discount_usinteger0–100

    Games currently discounted at least this % in the US store.

  • max_discount_usinteger0–100

    Games currently discounted at most this % in the US store.

  • min_discount_arinteger0–100

    Games currently discounted at least this % in the Argentine store.

  • max_discount_arinteger0–100

    Games currently discounted at most this % in the Argentine store.

  • final_price_usnumber

    Games whose current US price is exactly this.

    Also accepted as us_price.

  • final_price_arnumber

    Games whose current Argentine price is exactly this.

  • us_initial_pricenumber

    Games whose US price before discounts is exactly this.

  • initial_pricenumber

    Games whose Argentine price before discounts is exactly this.

  • discountnumber0–100

    Games discounted exactly this % in the Argentine store. discount_percent does the same.

    Also accepted as discount_percent.

  • currencystring

    Games whose Argentine store price is in this currency (ISO code).

  • regional_statusstring

    How the game's Argentine price compares to other regions: increible (amazing), muy bueno (very good), bueno (good), elevado (high) or no tiene (no regional pricing).

    One of: no tiene, bueno, elevado, muy bueno, increible

Tags & categories6
  • tagsstring

    Games that have all of these tags. Add :N or :N-M to a tag to require it to rank high on the game (Rol:1-3 = in its top 3 tags). See Tags, categories and genres.

  • some_tagsstring

    Games that have at least one of these tags. Supports the same :N/:N-M ranking as tags.

    Wrap groups in parentheses to match any whole group: some_tags=(Rol:1-3,Buena trama),(Accion:1-2) means "(an RPG with a good story) or (an action game)".

  • exclude_tagsstring

    Games that have none of these tags. Supports :N/:N-M ranking.

  • categoriesstring

    Games that have all of these Steam categories.

  • some_categoriesstring

    Games that have at least one of these categories.

  • exclude_categoriesstring

    Games that have none of these categories.

Reviews36
  • min_scoreinteger0–100

    Games with at least this % of positive reviews (all time). Combine it with min_total_reviews so a handful of reviews doesn't count as a great score.

    Also accepted as historical_min_score.

  • max_scoreinteger0–100

    Games with at most this % of positive reviews (all time).

    Also accepted as historical_max_score.

  • scoreinteger0–100

    Games with exactly this % of positive reviews (all time). Scores have decimals, so this rarely matches — use min_score / max_score instead.

    Also accepted as review_score, historical_score.

  • min_total_reviewsinteger

    Games with at least this number of reviews (all time).

    Also accepted as min_reviews, historical_min_reviews.

  • max_total_reviewsinteger

    Games with at most this number of reviews (all time).

    Also accepted as max_reviews, historical_max_reviews.

  • total_reviewsinteger

    Games with exactly this number of reviews (all time).

    Also accepted as historical_reviews.

  • min_total_positiveinteger

    Games with at least this number of positive reviews (all time).

    Also accepted as historical_min_positive_reviews.

  • max_total_positiveinteger

    Games with at most this number of positive reviews (all time).

    Also accepted as historical_max_positive_reviews.

  • total_positiveinteger

    Games with exactly this number of positive reviews (all time).

    Also accepted as historical_positive_reviews.

  • min_total_negativeinteger

    Games with at least this number of negative reviews (all time).

    Also accepted as historical_min_negative_reviews.

  • max_total_negativeinteger

    Games with at most this number of negative reviews (all time).

    Also accepted as historical_max_negative_reviews.

  • total_negativeinteger

    Games with exactly this number of negative reviews (all time).

    Also accepted as historical_negative_reviews.

  • last_month_min_scoreinteger0–100

    Games with at least this % of positive reviews in the last month.

  • last_month_max_scoreinteger0–100

    Games with at most this % of positive reviews in the last month.

  • last_month_scoreinteger0–100

    Games with exactly this % of positive reviews in the last month. Scores have decimals, so this rarely matches.

  • last_month_min_reviewsinteger

    Games with at least this number of reviews in the last month. A good signal of what people are playing right now.

  • last_month_max_reviewsinteger

    Games with at most this number of reviews in the last month.

  • last_month_reviewsinteger

    Games with exactly this number of reviews in the last month.

  • last_month_min_positive_reviewsinteger

    Games with at least this number of positive reviews in the last month.

  • last_month_max_positive_reviewsinteger

    Games with at most this number of positive reviews in the last month.

  • last_month_positive_reviewsinteger

    Games with exactly this number of positive reviews in the last month.

  • last_month_min_negative_reviewsinteger

    Games with at least this number of negative reviews in the last month.

  • last_month_max_negative_reviewsinteger

    Games with at most this number of negative reviews in the last month.

  • last_month_negative_reviewsinteger

    Games with exactly this number of negative reviews in the last month.

  • release_window_min_scoreinteger0–100

    Games with at least this % of positive reviews from around the game's launch.

  • release_window_max_scoreinteger0–100

    Games with at most this % of positive reviews from around the game's launch.

  • release_window_scoreinteger0–100

    Games with exactly this % of positive reviews from around the game's launch. Scores have decimals, so this rarely matches.

  • release_window_min_reviewsinteger

    Games with at least this number of reviews from around the game's launch.

  • release_window_max_reviewsinteger

    Games with at most this number of reviews from around the game's launch.

  • release_window_reviewsinteger

    Games with exactly this number of reviews from around the game's launch.

  • release_window_min_positive_reviewsinteger

    Games with at least this number of positive reviews from around the game's launch.

  • release_window_max_positive_reviewsinteger

    Games with at most this number of positive reviews from around the game's launch.

  • release_window_positive_reviewsinteger

    Games with exactly this number of positive reviews from around the game's launch.

  • release_window_min_negative_reviewsinteger

    Games with at least this number of negative reviews from around the game's launch.

  • release_window_max_negative_reviewsinteger

    Games with at most this number of negative reviews from around the game's launch.

  • release_window_negative_reviewsinteger

    Games with exactly this number of negative reviews from around the game's launch.

Region lock6
  • is_limitedboolean

    true for games that are (or were) region-locked.

  • release_status_when_liftedstring

    Whether the region lock was lifted before or after the game's release.

    One of: before-release, after-release

  • timestamp_when_lifted_mininteger

    Lock lifted on or after this moment (millisecond timestamp).

  • timestamp_when_lifted_maxinteger

    Lock lifted on or before this moment (millisecond timestamp).

  • price_when_lifted_minnumber

    Price when the lock was lifted of at least this.

  • price_when_lifted_maxnumber

    Price when the lock was lifted of at most this.

Responses

200A page of games

Body

  • dataobject[]
    • idinteger

      Steam app ID

    • namestring
    • developersstring[]
    • publishersstring[]
    • releaseDateinteger

      Release date as a millisecond timestamp

    • shortDescriptionstring
    • mainImageUrlstring

      Header image from the Steam store

    • genresobject[]
      • idstring
      • descriptionstring
    • minified_tagsstring[]

      The game's tags, most representative first

    • pricesobject

      Prices per store (ar, us)

    • historicalReviewsobject

      Review stats for one time window

      • scorenumber

        Percentage of positive reviews (0–100)

      • reviewsQuantityinteger
      • positiveReviewsinteger
      • negativeReviewsinteger
    • early_accessobject
  • current_pageinteger
  • per_pageinteger
  • totalinteger

    Total games matching your filters

  • last_pageinteger
  • frominteger | null

    Position of the first game on this page (null if there are no results)

  • tointeger | null
  • first_page_urlstring
  • last_page_urlstring
  • next_page_urlstring | null

    Link to the next page, or null on the last page

  • prev_page_urlstring | null
  • pathstring
  • linksobject[]

    Ready-made links for rendering page buttons

    • urlstring | null
    • labelstring
    • activeboolean
Example
{
  "data": [
    {
      "id": 292030,
      "name": "The Witcher 3: Wild Hunt",
      "developers": [
        "CD PROJEKT RED"
      ],
      "publishers": [
        "CD PROJEKT RED"
      ],
      "releaseDate": 1431918000000,
      "shortDescription": "Eres Geralt de Rivia, cazador de monstruos...",
      "mainImageUrl": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/292030/header.jpg",
      "genres": [
        {
          "id": "3",
          "description": "Rol"
        }
      ],
      "minified_tags": [
        "Mundo abierto",
        "Rol",
        "Buena trama",
        "Atmosféricos",
        "Fantasía"
      ],
      "prices": {
        "ar": {
          "finalPrice": 29.99,
          "currentDiscount": 0
        },
        "us": {
          "finalPrice": 39.99
        }
      },
      "historicalReviews": {
        "score": 96.8,
        "reviewsQuantity": 807345,
        "positiveReviews": 0,
        "negativeReviews": 0
      },
      "early_access": {
        "has_ea_data": false
      }
    }
  ],
  "current_page": 1,
  "per_page": 16,
  "total": 752,
  "last_page": 47,
  "from": 1,
  "to": 16,
  "first_page_url": "http://localhost:8000/api/games?page=1",
  "last_page_url": "http://localhost:8000/api/games?page=47",
  "next_page_url": "http://localhost:8000/api/games?page=2",
  "prev_page_url": null,
  "path": "http://localhost:8000/api/games",
  "links": [
    {
      "url": "string",
      "label": "string",
      "active": false
    }
  ]
}
400A filter value doesn't make sense

Body

  • errorstring

    Short name of the error

  • messagestring

    What went wrong, in more detail

Example
{
  "error": "Bad Request",
  "message": "Invalid sort field. Allowed fields are: name, developer, publisher, release_date, ..."
}
401Your token is missing or invalid

Body

  • errorstring

    Short name of the error

  • messagestring

    What went wrong, in more detail

Example
{
  "error": "Unauthorized"
}
422An unknown parameter or an invalid value

Body

  • errorstring
  • messagestring
  • errorsobject

    The problems found, by parameter name

Example
{
  "error": "Validation Error",
  "message": "Some parameters are invalid",
  "errors": {
    "develper": [
      "The parameter 'develper' does not exist. Did you mean 'developer'?"
    ]
  }
}
429You've used all the requests in your plan for this billing cycle

Headers

  • Retry-AfterSeconds until your quota resets

Body

  • errorstring
  • limitinteger
Example
{
  "error": "Request limit reached for your plan in the current billing cycle",
  "limit": 10000
}