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.
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 'https://api.openopus.org/composer/list/rec.json'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);import requests
res = requests.get("https://api.openopus.org/composer/list/rec.json", timeout=20)
res.raise_for_status()
print(res.json()){
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
composer/list/rec.json | path | Optional | Curated recommended composers. composer/list/rec.json |
composer/list/pop.json | path | Optional | Popular composers. composer/list/pop.json |
composer/list/search/<name>.json | path | Optional | Search composers by name. search/mozart.json |
work/list/composer/<id>/genre/all.json | path | Optional | A 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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
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.