---
title: "Subscription games leaving within 30 days (game-pass, ps-plus)"
method: GET
path: "/v1/discover/leaving/{service}"
tags: ["Discover"]
---

# Subscription games leaving within 30 days (game-pass, ps-plus)

`GET /v1/discover/leaving/{service}`

## Request

- Base URL: `https://api.fairly.gg`
- URL: `https://api.fairly.gg/v1/discover/leaving/{service}`
- Auth: one of:
  - API key in header `X-Api-Key`
  - none

Parameters: `sort` (default, hours_per_dollar, discount, popularity, reviews), `page` (from 1), `page_size` (1-100, default 50), `min_review` (0-100; 0 turns the filter off). `data` holds `rows`, `total`, `at_low_count`, `best_value`, `page` and `page_size`. On under lists `default` and `hours_per_dollar` order by hours per dollar while any row has a time-to-beat, and by real price (ascending) when none does.

## Path parameters

- `service` string, required

## Query parameters

- `sort` string
- `page` integer
- `page_size` integer
- `min_review` integer
- `owned` string
- `hide_owned` boolean

## Response `200`

OK

- ApiResponseOfDiscoverPageModel
  - `data` DiscoverPageModel, required
    - `rows` DealModel[], required
      - `game` GameSummary, required
        - `id` integer, required
        - `steam_app_id` integer, nullable, required
        - `igdb_id` integer, nullable, required
        - `title` string, required
        - `slug` string, required
        - `cover_url` string, nullable, required
        - `cover_portrait_url` string, nullable
      - `best_offer` OfferModel, required
        - `offer_id` integer, required
        - `store_code` string, required
        - `store_name` string, required
        - `store_kind` 'authorized' | 'marketplace' | 'console' | 'subscription', required
        - `edition` 'standard' | 'deluxe' | 'gold' | 'goty' | 'ultimate' | 'bundle' | 'unknown', required
        - `platform` 'steam' | 'epic' | 'gog' | 'ubisoft' | 'ea' | 'xbox_pc' | 'ps' | 'switch' | 'xbox', required
        - `region_lock` 'global' | 'eu' | 'tr' | 'ru_cis' | 'row' | 'latam' | 'asia', required
        - `real_price` Money, required
          - `amount` number, required
          - `currency` string, required: USD, EUR, GBP or TRY.
          - `formatted` string, required: Display text, e.g. "€9.99".
        - `list_price` Money, required
          - `amount` number, required
          - `currency` string, required: USD, EUR, GBP or TRY.
          - `formatted` string, required: Display text, e.g. "€9.99".
        - `fee_label` 'verified' | 'may_apply' | 'stale', required
        - `fee_verified_at` string, date-time, nullable, required
        - `discount_pct` integer, nullable, required
        - `low` LowLabel, required
          - `kind` 'unknown' | 'at_low' | 'above_low' | 'since_tracking', required
          - `above_percent` integer
          - `since` string, date, nullable
          - `basis` unknown
        - `converted` boolean, required
        - `fetched_at` string, date-time, required
        - `freshness` 'fresh' | 'stale' | 'hidden', required
        - `url` string, required
        - `measured_in` unknown, required
        - `discount_ends_at` string, date-time, nullable, required
        - `price_region` unknown, required
        - `eligible` boolean, required
      - `time_to_beat_hours` integer, nullable, required
      - `review_percent` integer, nullable, required
      - `other_editions` integer, required
      - `leaving_at` string, date-time, nullable, required
      - `drop` Money, required
        - `amount` number, required
        - `currency` string, required: USD, EUR, GBP or TRY.
        - `formatted` string, required: Display text, e.g. "€9.99".
      - `is_new` boolean, required
      - `hours_per_unit` number, double, nullable, required
      - `leaving_announced` boolean, required
      - `subscription_codes` string[], required
    - `total` integer, required
    - `at_low_count` integer, required
    - `best_value` DealModel, required
      - `game` GameSummary, required
        - `id` integer, required
        - `steam_app_id` integer, nullable, required
        - `igdb_id` integer, nullable, required
        - `title` string, required
        - `slug` string, required
        - `cover_url` string, nullable, required
        - `cover_portrait_url` string, nullable
      - `best_offer` OfferModel, required
        - `offer_id` integer, required
        - `store_code` string, required
        - `store_name` string, required
        - `store_kind` 'authorized' | 'marketplace' | 'console' | 'subscription', required
        - `edition` 'standard' | 'deluxe' | 'gold' | 'goty' | 'ultimate' | 'bundle' | 'unknown', required
        - `platform` 'steam' | 'epic' | 'gog' | 'ubisoft' | 'ea' | 'xbox_pc' | 'ps' | 'switch' | 'xbox', required
        - `region_lock` 'global' | 'eu' | 'tr' | 'ru_cis' | 'row' | 'latam' | 'asia', required
        - `real_price` Money, required
          - `amount` number, required
          - `currency` string, required: USD, EUR, GBP or TRY.
          - `formatted` string, required: Display text, e.g. "€9.99".
        - `list_price` Money, required
          - `amount` number, required
          - `currency` string, required: USD, EUR, GBP or TRY.
          - `formatted` string, required: Display text, e.g. "€9.99".
        - `fee_label` 'verified' | 'may_apply' | 'stale', required
        - `fee_verified_at` string, date-time, nullable, required
        - `discount_pct` integer, nullable, required
        - `low` LowLabel, required
          - `kind` 'unknown' | 'at_low' | 'above_low' | 'since_tracking', required
          - `above_percent` integer
          - `since` string, date, nullable
          - `basis` unknown
        - `converted` boolean, required
        - `fetched_at` string, date-time, required
        - `freshness` 'fresh' | 'stale' | 'hidden', required
        - `url` string, required
        - `measured_in` unknown, required
        - `discount_ends_at` string, date-time, nullable, required
        - `price_region` unknown, required
        - `eligible` boolean, required
      - `time_to_beat_hours` integer, nullable, required
      - `review_percent` integer, nullable, required
      - `other_editions` integer, required
      - `leaving_at` string, date-time, nullable, required
      - `drop` Money, required
        - `amount` number, required
        - `currency` string, required: USD, EUR, GBP or TRY.
        - `formatted` string, required: Display text, e.g. "€9.99".
      - `is_new` boolean, required
      - `hours_per_unit` number, double, nullable, required
      - `leaving_announced` boolean, required
      - `subscription_codes` string[], required
    - `page` integer, required
    - `page_size` integer, required
    - `threshold` Money, required
      - `amount` number, required
      - `currency` string, required: USD, EUR, GBP or TRY.
      - `formatted` string, required: Display text, e.g. "€9.99".
  - `fetched_at` string, date-time, required
  - `data_age_seconds` integer, required
  - `stale` boolean, required
  - `region` unknown
  - `currency` string, nullable
  - `region_fallback` boolean, nullable
  - `attribution` string

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/fairly/apis/fairly-api.md) · [All operations](https://skmtc.dev/fairly/apis/fairly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fairly/apis/fairly-api/revisions/9b21c64dffa2?raw)
