---
title: Zorse Game Catalog API
description: Use Zorse's versioned game catalog API for descriptions, platforms, genres, icons, and store links. Read request examples and the versioning policy.
canonical: https://zorse.io/api
---

# Zorse Game Catalog API

A public, read-only catalog generated from the same game content as this website. No account, API key, or SDK is required.

## When to use the catalog

Use the catalog to find Zorse games, compare their descriptions and supported platforms, or get their store download links. Follow each game's `url` for more detail, and read [News](https://zorse.io/news) for announcements and release updates.

The API provides published game information only. It cannot look up player progress or perform gameplay, account, or purchase actions. It always returns the complete catalog: query parameters are ignored, so filter the returned games locally.

## Make a request

[`GET /api/v1/games`](https://zorse.io/api/v1/games) returns the game catalog as JSON. [`GET /api/v1`](https://zorse.io/api/v1) returns a JSON index with the version's support status, endpoints, documentation, and OpenAPI schema.

```
curl --fail https://zorse.io/api/v1/games
```

Or use the built-in `fetch` function in Node.js:

```
const response = await fetch('https://zorse.io/api/v1/games');
if (!response.ok) throw new Error(`Catalog request failed: ${response.status}`);
const catalog = await response.json();
console.log(catalog.games.map(game => game.name));
```

Both endpoints support `GET` and `HEAD`. No parameters are needed.

## Versioning and deprecation policy

API contracts are versioned by major version in the URL. Version 1 is supported and has no retirement scheduled. Integrations should use `/api/v1/games`; there is no unversioned or latest alias.

Backward-compatible additions, such as optional fields or new endpoints, may be released within v1. Clients should ignore unknown response fields. Catalog entries, descriptions, platform availability, and store links may change without a new API version.

Removing or renaming fields, changing field types, adding required request parameters, or changing established behavior requires a new major version, such as `/api/v2`. Existing versioned URLs keep their contract and never redirect to a new major version.

Before retiring a supported version, we provide at least 90 days' notice on this page, a migration guide, and a working replacement throughout that notice period. Old and new versions remain available together during migration.

Deprecation is signaled on affected responses with the [`Deprecation` header](https://www.rfc-editor.org/rfc/rfc9745.html) and a `Link` header with `rel="deprecation"` pointing to the migration documentation. Once retirement is scheduled, the [`Sunset` header](https://www.rfc-editor.org/rfc/rfc8594.html) gives the retirement date. Version 1 currently sends neither `Deprecation` nor `Sunset`.

## Find iPhone and Android games

After fetching the catalog above, filter its `games` array by platform. The catalog uses `iOS` for iPhone and iPad, and `Android` for Android phones and tablets. Availability varies by game.

```
const iPhoneGames = catalog.games.filter(game =>
  game.platforms.includes('iOS'));
const androidGames = catalog.games.filter(game =>
  game.platforms.includes('Android'));

console.log({
  iPhone: iPhoneGames.map(game => game.name),
  Android: androidGames.map(game => game.name)
});
```

## Get official store links

Use each game's App Store and Google Play entries to get its download links, including the API campaign parameters. A missing store is returned as `null` in this example.

```
console.log(catalog.games.map(game => ({
  name: game.name,
  appStore: game.stores.find(store => store.name === 'App Store')?.url ?? null,
  googlePlay: game.stores.find(store => store.name === 'Google Play')?.url ?? null
})));
```

## Response fields

The response contains `schemaVersion: 1` and a `games` array in website catalog order. Each game includes:

-   `id`, `name`, and `description`: the game slug, name, and description.
-   `url` and `icon`: absolute URLs for the game page and app icon.
-   `platforms` and `genres`: arrays of supported platforms and game genres.
-   `stores`: download links with a store `name` and `url`. Google Play URLs include `utm_source=zorse_api` and `utm_campaign=game_catalog`. App Store URLs include `pt=121532493`, `ct=zorse_api_game_catalog`, and `mt=8`. These parameters identify API referrals in each store's reports.

Read the [Zorse OpenAPI schema](https://zorse.io/openapi.json) for the complete field types, or use [the site index](https://zorse.io/llms.txt) to find game pages and release news.

The [standard API discovery catalog](https://zorse.io/.well-known/api-catalog) links this endpoint to its documentation and schema using RFC 9727.

## Errors and supported methods

Successful API reads return HTTP 200 with `application/json`. Unknown `/api/...` endpoints return HTTP 404 with `application/problem+json` and `Cache-Control: no-store`. A `HEAD` request returns the same status and headers without a body.

These errors use [RFC 9457 problem details](https://www.rfc-editor.org/rfc/rfc9457.html): `type` identifies the problem, `title` and `detail` explain it, `status` matches the HTTP status, and `instance` is the requested path without its query string. The existing `error` and `links` fields remain available for compatibility and recovery.

```
{
  "type": "about:blank",
  "title": "Not Found",
  "status": 404,
  "detail": "Unknown API endpoint.",
  "instance": "/api/v1/missing",
  "error": {
    "code": "not_found",
    "message": "Unknown API endpoint.",
    "status": 404
  },
  "links": {
    "documentation": "https://zorse.io/api",
    "games": "https://zorse.io/api/v1/games",
    "openapi": "https://zorse.io/openapi.json"
  }
}
```

Unsupported methods, such as `POST`, currently return HTTP 403 with an HTML response from the delivery layer. Storage or delivery errors for known API files can also return HTML.

Check the status and content type before parsing an error response as JSON. A method rejection does not mean an API key or login is required.

For questions or feedback about the catalog, [contact Zorse](https://zorse.io/contact).

Source: [Zorse Game Catalog API](https://zorse.io/api)
