Games & Comics — entry 025 of 75

FreeToGame

Verified Aug 2026

FreeToGame's keyless JSON API lists free-to-play PC and browser titles with filters for platform, genre (MMORPG, shooter, battle royale, and more), and sort order, plus a single-game lookup that adds a full description and minimum system requirements. Live testing returned 400+ current titles, including 2026 releases, with no authentication or documented rate limit.

FreeToGame's keyless JSON API lists free-to-play PC and browser titles as bare top-level arrays — no envelope, no data wrapper. A live GET this run against /game?id=1 returned a genuine 1,871 B single-game object at HTTP 200, content-type: application/json.

free-to-playgame-catalogmmorpgno-auth
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/freetogame/"><img src="https://greatapis.com/badge/freetogame.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. No API key, signup, or credit card required — the live GET above returned real game data with no auth header of any kind attached. access-control-allow-origin: * was present on every response tested this run, so direct browser fetches work too.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Look up a single game by id

GEThttps://www.freetogame.com/api/game?id=1

200 application/json

{
  "id": 1,
  "title": "Dauntless",
  "thumbnail": "https://www.freetogame.com/g/1/thumbnail.jpg",
  "status": "Offline",
  "short_description": "A free-to-play, co-op action RPG with gameplay similar to Monster Hunter.",
  "game_url": "https://www.freetogame.com/open/dauntless",
  "genre": "MMORPG",
  "platform": "Windows",
  "publisher": "Phoenix Labs",
  "developer": "Phoenix Labs, Iron Galaxy",
  "release_date": "2019-05-21",
  "freetogame_profile_url": "https://www.freetogame.com/dauntless",
  "minimum_system_requirements": {
    "os": "Windows 7 DX11 Support",
    "processor": "CPU: i5 SandyBridge",
    "memory": "4GB",
    "graphics": "GPU: nVidia 660Ti (DX11) or equivalent",
    "storage": "15GB of storage space"
  },
  "screenshots": [
    { "id": 5, "image": "https://www.freetogame.com/g/1/dauntless-1.jpg" },
    { "id": 6, "image": "https://www.freetogame.com/g/1/dauntless-2.jpg" }
  ]
}

status is confirmed live — id 1 (Dauntless) reads "status": "Offline" even though the entry is still listed and fully queryable; the list endpoint (/games) doesn't return a status field at all, only the single-game lookup does. minimum_system_requirements and screenshots are likewise only present on the single-game shape, not the list.

Try it

Developer reference

Base URLhttps://www.freetogame.com/api
Rate limit

"Please avoid doing more than 10 requests per second" — per www.freetogame.com/api-doc.

Key endpoints
  • GET/games
  • GET/games?platform={platform}
  • GET/game?id={id}
  • GET/filter?tag={tag}

Gotchas & limits

  • The HTTP status and the in-body status disagree, and disagree in opposite directions on two different error paths. A live GET this run against /games?platform=nosuch returned real HTTP 404 with an 87 B body {"status":0,"status_message":"No platform found, please check the correct parameters."} — the body's status is 0, not 404. /game?id=999999 → the same real 404, 58 B, {"status":0,"status_message":"No game found with that id"}. Neither error body's status field can be used in place of the HTTP status.
  • An unrecognized route returns HTTP 200, not 404. A live GET this run against /nosuchroute returned real HTTP 200 with 50,057 B of text/html;charset=UTF-8 — the WordPress site's own page, not a JSON error. Code that checks only response.ok before calling response.json() will get a parse error on what looks like a successful response.
  • List and single-game responses are bare top-level arrays/objects with no envelope — /games returns [{...}, {...}] directly (161,808 B confirmed live this run for ?platform=pc&sort-by=popularity), not {"data": [...]} or {"games": [...]}. There is nothing to unwrap.
  • sort-by is hyphenated in the query string (?sort-by=popularity), not camelCase or underscored — a client that guesses sortBy or sort_by silently gets the default sort order back instead of an error.