BYTETOOLS

Open Opus API

Free classical music API with no key: composers, their complete works, periods and genres, curated for classical music applications. Tested curl example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the Open Opus API?

Open Opus is a free, key-free API providing classical music metadata — composers with their periods and portraits, and their complete catalogued works organised by genre.

Classical music is poorly served by mainstream music APIs, which model everything as artist-album-track and handle composers, works and performances badly. Open Opus is built specifically around the composer-and-work model classical music actually needs.

Its curated 'popular' and 'essential' composer lists are genuinely useful for building an approachable classical interface — the full catalogue runs to thousands of composers, most of whom a general audience will not recognise.

Quick facts

Base URL
https://api.openopus.org
Authentication
No API key required.
Rate limit
No published hard limit; fair use expected.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Open Opus API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. List recommended composers

GET https://api.openopus.org/composer/list/rec.json

curl
curl 'https://api.openopus.org/composer/list/rec.json'
JavaScript (fetch)
const res = await fetch("https://api.openopus.org/composer/list/rec.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.openopus.org/composer/list/rec.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "status": {
    "version": "1.20.6",
    "success": "true",
    "source": "db",
    "rows": 77,
    "processingtime": 0.0008020401000976562,
    "api": "Open Opus-dyn"
  },
  "request": {
    "type": "rec",
    "item": "1"
  },
  "composers": [
    {
      "id": "149",
      "name": "Adams",
      "complete_name": "John Adams",
      "birth": "1947-01-01",
      "death": null,
      "epoch": "21st Century",
      "portrait": "https://assets.openopus.org/portraits/74462091-1568084854.jpg"
    },
    {
      "id": "87",
      "name": "Bach",
      "complete_name": "Johann Sebastian Bach",
      "birth": "1685-01-01",
      "death": "1750-01-01",
      "epoch": "Baroque",
      "portrait": "https://assets.openopus.org/portraits/12091447-1568084857.jpg"
    },
    {
      "id": "125",
      "name": "Bartók",
      "complete_name": "Béla Bartók",
      "birth": "1881-01-01",
      "death": "1945-01-01",
      "epoch": "20th Century",
      "portrait": "https://assets.openopus.org/portraits/70269699-1568084859.jpg"
    },
    {
      "id": "145",
      "name": "Beethoven",
      "complete_name": "Ludwig van Beethoven",
      "birth": "1770-01-01",
      "death": "1827-01-01",
      "epoch": "Early Romantic",
      "portrait": "https://assets.openopus.org/portraits/55910756-1568084860.jpg"
    },
    {
      "id": "210",
      "name": "Berg",
      "complete_name": "Alban Berg",
      "birth": "1885-01-01",
      "death": "1935-01-01",
      "epoch": "20th Century",
      "portrait": "https://assets.openopus.org/portraits/48656640-1568084861.jpg"
    },
    {
      "id": "175"

Parameters

ParameterTypeRequiredDescription
composer/list/rec.jsonpathOptionalCurated recommended composers. composer/list/rec.json
composer/list/pop.jsonpathOptionalPopular composers. composer/list/pop.json
composer/list/search/<name>.jsonpathOptionalSearch composers by name. search/mozart.json
work/list/composer/<id>/genre/all.jsonpathOptionalA composer's complete works. composer/196/genre/all.json

Response fields

status.successstring
'true' as a string — check before reading data.
status.rowsinteger
Number of results.
composersarray
Composer records.
composers[].id / namestring
Composer identifier and name.
composers[].complete_namestring
Full name including given names.
composers[].epochstring
Baroque, Classical, Romantic, Early, Modern.
composers[].birth / deathstring
Life dates.
composers[].portraitstring
Portrait image URL.

What you can build with the Open Opus API

  • Build a classical music browser organised by composer and work
  • Create music education resources on composers and periods
  • Power a classical radio or playlist application
  • Filter works by genre or historical period

Common errors and how to fix them

status.success is the string 'true'

It is not a boolean.

Fix: Compare against the string, not a boolean value.

Composer not found

Coverage focuses on catalogued classical composers.

Fix: Contemporary and non-Western composers are sparsely covered.

Works require a composer id

Work lookups are composer-scoped.

Fix: Search for the composer first to get their id, then request their works.

Open Opus API — frequently asked questions

Is Open Opus free?

Yes, completely free and open source with no API key.

Why not use a general music API for classical?

Mainstream APIs model music as artist-album-track, which handles composers, works and multiple performances badly. Open Opus is built around the composer-and-work structure classical music needs.

What are the recommended and popular lists?

Curated subsets of the full catalogue. The complete list runs to thousands of composers, so these give an approachable starting set for a general audience.

Does it include recordings?

No, it covers composers and works as metadata. Audio recordings and performances are not part of the dataset.

Tools that pair with this API

Open Opus is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.