← ostdb
publicno authv1.0.0

Soundtrack data, simply.

A read-only JSON API for official video game soundtrack releases and streaming links. No account or token required.

01

Quick start

Send a GET request from any HTTP client. Add pretty=1 to indent JSON while exploring.

json / shell
curl "https://ostdb.net/api/v1/soundtracks?q=forza&limit=10"
02

Endpoints

GET/api/v1

API index

Machine-readable overview of the API and every available endpoint.

try ↗
GET/api/v1/health

Health

Check API and database availability.

try ↗
GET/api/v1/games

List soundtrack groups

Browse game identifiers with at least one approved soundtrack release.

q, series, page, limit

try ↗
GET/api/v1/games/{slug}

Soundtracks by game slug

Get approved soundtrack albums for a game. No unrelated game metadata is returned.

try ↗
GET/api/v1/games/igdb/{igdb_id}

Soundtracks by IGDB ID

Get approved soundtrack albums using a numeric IGDB identifier.

try ↗
GET/api/v1/soundtracks

List soundtracks

Browse soundtrack albums and filter them by game, platform, or text.

q, game_id, platform, page, limit

try ↗
GET/api/v1/soundtracks/{id}

Soundtrack by ID

Get a single approved soundtrack album.

GET/api/v1/series

List series

Browse franchises and collections represented in OSTDB.

q, page, limit

try ↗
GET/api/v1/series/{slug}

Series detail

Get a series and its games.

try ↗
GET/api/v1/updates

Recent updates

Read the public soundtrack change history.

page, limit

try ↗
GET/api/v1/stats

Catalog statistics

Get game, soundtrack, series, and streaming-platform totals.

try ↗
GET/api/v1/openapi.json

OpenAPI schema

OpenAPI 3.1 definition for generators, clients, and API tools.

try ↗
03

Response

json / shell
{
  "data": [
    {
      "album_name": "Forza Horizon 6 Soundtrack",
      "artists": ["Various Artists"],
      "spotify_url": "https://open.spotify.com/album/...",
      "apple_music_url": "https://music.apple.com/album/...",
      "album_link_url": "https://album.link/..."
    }
  ]
}
04

Rate limit

100 requests per client IP every 60 seconds.

Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Exceeded limits return HTTP 429.