Open Opus
App · Music & Podcasts · 8 actions
Look up classical music from a workflow. Open Opus is a free, hand-curated catalogue of around 220 composers and the works they wrote. Find a composer by name and get their dates, period and portrait; list what they wrote, narrowed to chamber, keyboard, orchestral, stage or vocal music and to the pieces worth hearing; search composers and pieces together when you do not yet know which you have; turn a nickname, a shorthand or a French title into the real entry for a piece; draw suggestions at random for a daily pick or a newsletter; and look up whether a performer conducts, sings or plays an instrument. Composers are picked from a list or typed by name, so nobody has to know that Beethoven is number 145. Every action reads: nothing here changes anything. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Find a composer | Look up one composer by name and get their dates, the period they belong to, a portrait, the kinds of music they wrote, and whether they are among the best known. |
| Find a piece by name | Turn the name someone calls a piece by into the real entry for it. |
| Get a piece | Get everything the catalogue holds on one piece from its id: the full title, the subtitle, the kind of music, the catalogue number it is known by, whether it is popular or essential, and its composer's dates and portrait. |
| List a composer's works | List what one composer wrote, narrowed to a kind of music, to the popular or essential pieces, or to a word in the title. |
| List composers | List composers from the whole catalogue, around 220 of them, narrowed by period, by the letter their name starts with, or to the best known or the essential ones. |
| Look up performers | Say what each performer on a list does: the instrument they play, whether they conduct or sing, or that they are an orchestra rather than a person. |
| Search for a composer or a piece | Search the whole catalogue at once with whatever someone typed, and get the composers and the pieces that match back separately. |
| Suggest pieces to listen to | Draw pieces at random from the catalogue, narrowed to a period, a kind of music, particular composers, or the best known corner of it. |
Find a composer
Look up one composer by name and get their dates, the period they belong to, a portrait, the kinds of music they wrote, and whether they are among the best known. Use it to turn a name from a form, an email or a spreadsheet into a real composer before the next step asks for their works. A surname is enough, capitals and accents do not matter, and a misspelling comes back with the names it nearly matched rather than with nothing.
Inputs
- Composer
composertextRequired - Which composer. Pick one from the list, or type a name: a surname ('Beethoven'), a full name ('Ludwig van Beethoven') or a name arriving from an earlier step all work, capitals and accents do not matter, and 'dvorak' finds Dvorak. When a word fits more than one person the closest match is used and the result names who it was, so 'bach' is Johann Sebastian rather than one of his sons.
Outputs
alternativeslist- Other composers the name nearly fitted, or the closest names in the catalogue when nothing matched at all
birth_datetext- The full date of birth, only where Open Opus publishes a real day and month; empty for the great majority, which are recorded as a year alone
birth_yearnumber- The year they were born
death_datetext- The full date of death, on the same terms as the date of birth
death_yearnumber- The year they died, and 0 when they are still living
foundtrue/false- False when the catalogue has nobody by that name
full_nametext- Their full name
genreslist- The genres they have works in, which is what 'List a composer's works' can filter on
idnumber- Open Opus's id for this composer, which every other action takes
is_essentialtrue/false- True when they are on its list of essential composers
is_livingtrue/false- True when they are still alive
is_populartrue/false- True when they are on Open Opus's list of best known composers
lifespantext- Their years, written out, such as 1770 to 1827
matched_ontext- How the name was recognised: id, name, full name, or part of the name
nametext- The name they are listed under
periodtext- The period Open Opus files them under
portrait_urltext- A portrait of them, hosted by Open Opus
searched_fortext- The name that was looked up
Example output
{
"alternatives": [],
"birth_date": "",
"birth_year": 1770,
"death_date": "",
"death_year": 1827,
"found": true,
"full_name": "Ludwig van Beethoven",
"genres": [
"Chamber",
"Keyboard",
"Orchestral",
"Stage",
"Vocal"
],
"id": 145,
"is_essential": true,
"is_living": false,
"is_popular": true,
"lifespan": "1770 to 1827",
"matched_on": "name",
"name": "Beethoven",
"period": "Early Romantic",
"portrait_url": "https://assets.openopus.org/portraits/55910756-1568084860.jpg",
"searched_for": "Beethoven"
}Find a piece by name
Turn the name someone calls a piece by into the real entry for it. It handles the three ways a title is usually written and the catalogue is not: a nickname ('the Moonlight Sonata'), a shorthand ('Symphony no 9'), and the title in another language ('Le sacre du printemps' is filed as The Rite of Spring). Use it to tidy a playlist, a concert listing or a spreadsheet of titles into pieces you can look up.
Inputs
- Composer
composertextRequired - Which composer. Pick one from the list, or type a name: a surname ('Beethoven'), a full name ('Ludwig van Beethoven') or a name arriving from an earlier step all work, capitals and accents do not matter, and 'dvorak' finds Dvorak. When a word fits more than one person the closest match is used and the result names who it was, so 'bach' is Johann Sebastian rather than one of his sons.
- Title
titletextRequired - What the piece is called. A nickname, a shorthand or the title in another language all work; it does not have to be the catalogue title.
Outputs
alternativeslist- Other pieces by the same composer the title also fitted
composer_full_nametext- The composer's full name, so the result says who was read
composer_idnumber- The composer's id
composer_nametext- The name the composer is listed under
composer_periodtext- The period the composer is filed under
foundtrue/false- False when that composer has nothing by that name
genretext- Chamber, Keyboard, Orchestral, Stage or Vocal
idnumber- Open Opus's id for the piece
is_essentialtrue/false- True when Open Opus counts it essential listening
is_populartrue/false- True when Open Opus counts this among the composer's popular works
matched_bytext- How it was found: catalogue when Open Opus's own matcher placed it, title when it was matched against the composer's work list here
search_termslist- Other names the piece goes by; often empty
searched_fortext- The title that was looked up
subtitletext- A subtitle where there is one; often empty
titletext- The full catalogue title
Example output
{
"alternatives": [],
"composer_full_name": "Ludwig van Beethoven",
"composer_id": 145,
"composer_name": "Beethoven",
"composer_period": "Early Romantic",
"found": true,
"genre": "Keyboard",
"id": 16375,
"is_essential": false,
"is_popular": true,
"matched_by": "title",
"search_terms": [],
"searched_for": "Moonlight Sonata",
"subtitle": "",
"title": "Piano Sonata no. 14 in C sharp minor, op. 27 no. 2, \"Moonlight\""
}Get a piece
Get everything the catalogue holds on one piece from its id: the full title, the subtitle, the kind of music, the catalogue number it is known by, whether it is popular or essential, and its composer's dates and portrait. The id comes from any of the other actions, so this is the step after a search or a list when the whole record is wanted.
Inputs
- Piece
work_idnumberRequired - The id of the piece, which every other action returns beside its title. Use 'Search for a composer or a piece' or 'Find a piece by name' when you have a title rather than an id.At least 1.
Outputs
cataloguetext- The catalogue the piece is numbered in, such as op, BWV or K; empty where the title carries no number
catalogue_numbertext- Its number within that catalogue, such as 17
composer_full_nametext- The composer's full name
composer_idnumber- The composer's id
composer_lifespantext- The composer's years, written out
composer_nametext- The name the composer is listed under
composer_periodtext- The period the composer is filed under
composer_portrait_urltext- A portrait of the composer, hosted by Open Opus
foundtrue/false- False when the catalogue has no piece with that id
genretext- Chamber, Keyboard, Orchestral, Stage or Vocal
idnumber- Open Opus's id for this piece
is_essentialtrue/false- True when Open Opus counts it essential listening
is_populartrue/false- True when Open Opus counts this among the composer's popular works
search_termslist- Other names the piece goes by; often empty
subtitletext- A subtitle where there is one; often empty
titletext- The full catalogue title
Example output
{
"catalogue": "op",
"catalogue_number": "17",
"composer_full_name": "Robert Schumann",
"composer_id": 129,
"composer_lifespan": "1810 to 1856",
"composer_name": "Schumann",
"composer_period": "Romantic",
"composer_portrait_url": "https://assets.openopus.org/portraits/25233320-1568084946.jpg",
"found": true,
"genre": "Keyboard",
"id": 15076,
"is_essential": true,
"is_popular": true,
"search_terms": [
"op 17"
],
"subtitle": "",
"title": "Fantasy in C major, op. 17"
}List a composer's works
List what one composer wrote, narrowed to a kind of music, to the popular or essential pieces, or to a word in the title. This is the action behind 'give me five Mozart piano pieces' or 'every Bach cantata'. The genre list beside the field holds only the genres that composer really has works in, and every piece comes back with the id the other actions take.
Inputs
- Composer
composertextRequired - Which composer. Pick one from the list, or type a name: a surname ('Beethoven'), a full name ('Ludwig van Beethoven') or a name arriving from an earlier step all work, capitals and accents do not matter, and 'dvorak' finds Dvorak. When a word fits more than one person the closest match is used and the result names who it was, so 'bach' is Johann Sebastian rather than one of his sons.
- Kind of music
genretext - Only works of one kind. The list holds the kinds this composer actually wrote in, so it changes when you change the composer. Leave it empty for all of them.
- Which works
which_workstext - Open Opus marks a handful of each composer's works popular and a slightly wider set essential. Narrow to one of them for the pieces worth putting in front of someone, or leave it on everything for the full catalogue.One of:
any(Everything),popular(Only the popular ones),essential(Only the essential ones). Default:any. - Title contains
title_containstext - Only works whose title contains this text. Case and accents are ignored and the words need not be next to each other, so 'cello sonata' finds all five of Beethoven's. Leave it empty for every title.
- How many to return
limitnumber - How many works to return, in title order so the same step always returns the same ones. Defaults to 25. The result says how many matched altogether, which is worth reading: Bach alone has over 900 works in the catalogue.From 1 to 500. Default:
25.
Outputs
composer_full_nametext- The composer's full name, so the result says who was read
composer_idnumber- The composer's id
composer_lifespantext- The composer's years, written out
composer_nametext- The name the composer is listed under
composer_periodtext- The period the composer is filed under
composer_portrait_urltext- A portrait of the composer, hosted by Open Opus
countnumber- How many are in this result
genretext- The genre that was asked for, empty when all of them were
genres_availablelist- Every genre this composer has works in, which says why an empty result is empty
matched_countnumber- How many matched before the limit trimmed the list
title_containstext- The text the titles were narrowed to, empty when they were not
total_countnumber- How many works the composer has in the genre that was asked for, before the other filters
which_workstext- Whether everything, the popular or the essential works were asked for
workslist- The works that matched, in title order
Example output
{
"composer_full_name": "Ludwig van Beethoven",
"composer_id": 145,
"composer_lifespan": "1770 to 1827",
"composer_name": "Beethoven",
"composer_period": "Early Romantic",
"composer_portrait_url": "https://assets.openopus.org/portraits/55910756-1568084860.jpg",
"count": 3,
"genre": "Orchestral",
"genres_available": [
"Chamber",
"Keyboard",
"Orchestral",
"Stage",
"Vocal"
],
"matched_count": 5,
"title_contains": "",
"total_count": 44,
"which_works": "popular",
"works": [
{
"composer_full_name": "Ludwig van Beethoven",
"composer_id": 145,
"composer_name": "Beethoven",
"composer_period": "Early Romantic",
"genre": "Orchestral",
"id": 16218,
"is_essential": true,
"is_popular": true,
"search_terms": [],
"subtitle": "",
"title": "Piano Concerto no. 5 in E flat major, op. 73, \"Emperor\""
},
{
"composer_full_name": "Ludwig van Beethoven",
"composer_id": 145,
"composer_name": "Beethoven",
"composer_period": "Early Romantic",
"genre": "Orchestral",
"id": 16406,
"is_essential": true,
"is_popular": true,
"search_terms": [],
"subtitle": "",
"title": "Symphony no. 5 in C minor, op. 67"
},
{
"composer_full_name": "Ludwig van Beethoven",
"composer_id": 145,
"composer_name": "Beethoven",
"composer_period": "Early Romantic",
"genre": "Orchestral",
"id": 16121,
"is_essential": false,
"is_popular": true,
"search_terms": [],
"subtitle": "",
"title": "Symphony no. 6 in F major, op. 68, \"Pastoral\""
}
]
}List composers
List composers from the whole catalogue, around 220 of them, narrowed by period, by the letter their name starts with, or to the best known or the essential ones. The three narrow together, so 'the famous Romantics' or 'everyone Baroque under B' is one step rather than three. Use it to build a programme, a quiz, a newsletter series or a picker of your own.
Inputs
- Period
periodtext - Only composers from one period of music history. Leave it empty for every period. These are Open Opus's own judgements rather than a standard, and two of them surprise people: Beethoven and Schubert are filed as Early Romantic rather than Classical, and Debussy and Rachmaninoff as Late Romantic rather than 20th Century.One of:
Medieval,Renaissance,Baroque,Classical,Early Romantic,Romantic,Late Romantic,20th Century,Post-War,21st Century. - Surname starts with
starts_withtext - Only composers whose listed name starts with this letter. Leave it empty for the whole alphabet.One of:
a,b,c,d,e,f,g,h,i,j, and 16 more. - Which composers
which_composerstext - Open Opus keeps two hand-picked lists: a couple of dozen composers almost everyone has heard of, and a wider set it counts as essential. Narrow to one of them for a shortlist worth showing someone, or leave it on everyone for the whole catalogue.One of:
any(Everyone),popular(Only the best known),essential(Only the essential ones). Default:any. - How many to return
limitnumber - How many composers to return, in alphabetical order by surname. Defaults to 50, and the result says how many matched altogether.From 1 to 250. Default:
50.
Outputs
composerslist- The composers that matched, in alphabetical order by surname
countnumber- How many are in this result
matched_countnumber- How many matched before the limit trimmed the list
periodtext- The period that was asked for, empty when all of them were
periods_presentlist- The periods these composers come from
starts_withtext- The letter that was asked for, empty when all of them were
total_countnumber- How many the catalogue held before any filter was applied
which_composerstext- Whether everyone, the best known or the essential ones were asked for
Example output
{
"composers": [
{
"birth_date": "",
"birth_year": 1671,
"death_date": "",
"death_year": 1751,
"full_name": "Tomaso Albinoni",
"id": 27,
"is_living": false,
"lifespan": "1671 to 1751",
"name": "Albinoni",
"period": "Baroque",
"portrait_url": "https://assets.openopus.org/portraits/20001817-1568084856.jpg"
},
{
"birth_date": "",
"birth_year": 1685,
"death_date": "",
"death_year": 1750,
"full_name": "Johann Sebastian Bach",
"id": 87,
"is_living": false,
"lifespan": "1685 to 1750",
"name": "Bach",
"period": "Baroque",
"portrait_url": "https://assets.openopus.org/portraits/12091447-1568084857.jpg"
},
{
"birth_date": "",
"birth_year": 1644,
"death_date": "",
"death_year": 1704,
"full_name": "Heinrich Franz von Biber",
"id": 47,
"is_living": false,
"lifespan": "1644 to 1704",
"name": "Biber",
"period": "Baroque",
"portrait_url": "https://assets.openopus.org/portraits/87867069-1568084863.jpg"
}
],
"count": 3,
"matched_count": 22,
"period": "Baroque",
"periods_present": [
"Baroque"
],
"starts_with": "",
"total_count": 22,
"which_composers": "any"
}Look up performers
Say what each performer on a list does: the instrument they play, whether they conduct or sing, or that they are an orchestra rather than a person. Hand it the credits from a recording or a concert listing and get back a row per name, with the ones the catalogue does not know flagged rather than quietly dropped.
Inputs
- Names
nameslistRequired - The performers to look up, one per line. A list from an earlier step works as it is. Capitals do not matter.
Outputs
countnumber- How many names were looked up
known_countnumber- How many of them the catalogue recognised
performerslist- One row per name, in the order they were given
roleslist- The distinct roles among the names it recognised
unknown_countnumber- How many it did not
unknown_nameslist- The names it did not recognise, so a caller can say so
Example output
{
"count": 3,
"known_count": 3,
"performers": [
{
"known": true,
"name": "Herbert von Karajan",
"role": "Conductor"
},
{
"known": true,
"name": "Martha Argerich",
"role": "Piano"
},
{
"known": true,
"name": "Berliner Philharmoniker",
"role": "Orchestra"
}
],
"roles": [
"Conductor",
"Orchestra",
"Piano"
],
"unknown_count": 0,
"unknown_names": []
}Search for a composer or a piece
Search the whole catalogue at once with whatever someone typed, and get the composers and the pieces that match back separately. This is the action for a search box, a chat message or a subject line, where you do not yet know whether the words name a person or a piece: 'four seasons' comes back with Vivaldi and with three different works called that.
Inputs
- Search
searchtextRequired - What to look for, in a composer's name or a piece's title. Three letters or more. Part of a word is enough.
- How many to return
limitnumber - How many composers and how many pieces to return, at most, in alphabetical order. Defaults to 20, and the result says when there were more.From 1 to 100. Default:
20.
Outputs
composer_countnumber- How many composers are in this result
composerslist- The composers whose name matched, in alphabetical order
foundtrue/false- False when nothing in the catalogue matched
matched_work_countnumber- How many pieces matched before the limit trimmed the list
more_availabletrue/false- True when there were further matches the limit left out
searched_fortext- The text that was searched
work_countnumber- How many pieces are in this result
workslist- The pieces whose title matched, in title order
Example output
{
"composer_count": 2,
"composers": [
{
"birth_date": "",
"birth_year": 1937,
"death_date": "",
"death_year": 0,
"full_name": "Philip Glass",
"id": 95,
"is_living": true,
"lifespan": "born 1937",
"name": "Glass",
"period": "Post-War",
"portrait_url": "https://assets.openopus.org/portraits/41848722-1568084901.jpg"
},
{
"birth_date": "",
"birth_year": 1678,
"death_date": "",
"death_year": 1741,
"full_name": "Antonio Vivaldi",
"id": 98,
"is_living": false,
"lifespan": "1678 to 1741",
"name": "Vivaldi",
"period": "Baroque",
"portrait_url": "https://assets.openopus.org/portraits/64540242-1568084959.jpg"
}
],
"found": true,
"matched_work_count": 2,
"more_available": false,
"searched_for": "four seasons",
"work_count": 2,
"works": [
{
"composer_full_name": "Antonio Vivaldi",
"composer_id": 98,
"composer_name": "Vivaldi",
"composer_period": "Baroque",
"genre": "Orchestral",
"id": 28102,
"is_essential": true,
"is_popular": true,
"search_terms": [
"four seasons",
"quattro stagioni"
],
"subtitle": "Four violin concertos, op. 8",
"title": "The Four Seasons"
},
{
"composer_full_name": "Philip Glass",
"composer_id": 95,
"composer_name": "Glass",
"composer_period": "Post-War",
"genre": "Orchestral",
"id": 10828,
"is_essential": false,
"is_popular": false,
"search_terms": [],
"subtitle": "",
"title": "Violin Concerto no. 2, \"The American Four Seasons\""
}
]
}Suggest pieces to listen to
Draw pieces at random from the catalogue, narrowed to a period, a kind of music, particular composers, or the best known corner of it. Every run returns something different, which is what a daily listening pick, a weekly newsletter, a radio-style rotation or a quiz needs. Ask for one piece or up to forty.
Inputs
- Composers
composerslist - Only these composers. Pick as many as you like, or leave it empty to draw from every composer.
- Period
periodtext - Only composers from one period of music history. Leave it empty for every period. These are Open Opus's own judgements rather than a standard, and two of them surprise people: Beethoven and Schubert are filed as Early Romantic rather than Classical, and Debussy and Rachmaninoff as Late Romantic rather than 20th Century.One of:
Medieval,Renaissance,Baroque,Classical,Early Romantic,Romantic,Late Romantic,20th Century,Post-War,21st Century. - Kind of music
genretext - Only one kind of music. Leave it empty for all of them.One of:
Chamber,Keyboard,Orchestral,Stage(Stage (opera and ballet)),Vocal. - How well known
how_well_knowntext - How far into the catalogue to go. Everything reaches the cantata nobody has heard, which is the point for a discovery workflow and wrong for a newsletter; the popular and essential lists are Open Opus's own, and the last option keeps the composer famous while leaving the piece free to be an unfamiliar one.One of:
any(Anything in the catalogue),popular_works(Popular pieces),essential_works(Essential pieces),famous_composers(Anything by a famous composer). Default:any. - How many to suggest
how_manynumber - How many pieces to return. Defaults to 10, and 40 is the most the catalogue draws at a time.From 1 to 40. Default:
10.
Outputs
composer_countnumber- How many composers it was narrowed to
composerslist- The composers it was narrowed to, empty when it was not
countnumber- How many are in this result
foundtrue/false- False when nothing in the catalogue fits the filters
genretext- The genre that was asked for, empty when all of them were
how_well_knowntext- Which corner of the catalogue was drawn from
offered_countnumber- How many the catalogue drew before the limit trimmed them, which is at most 40
periodtext- The period that was asked for, empty when all of them were
workslist- The suggestions, in the order the catalogue drew them
Example output
{
"composer_count": 0,
"composers": [],
"count": 3,
"found": true,
"genre": "Orchestral",
"how_well_known": "essential_works",
"offered_count": 40,
"period": "Romantic",
"works": [
{
"composer_full_name": "Johannes Brahms",
"composer_id": 80,
"composer_name": "Brahms",
"composer_period": "Romantic",
"genre": "Orchestral",
"id": 7706,
"is_essential": true,
"is_popular": true,
"search_terms": [
"op 98 no. 4"
],
"subtitle": "",
"title": "Symphony no. 4 in E minor, op. 98"
},
{
"composer_full_name": "Anton\u00edn Dvo\u0159\u00e1k",
"composer_id": 189,
"composer_name": "Dvo\u0159\u00e1k",
"composer_period": "Romantic",
"genre": "Orchestral",
"id": 22354,
"is_essential": true,
"is_popular": true,
"search_terms": [
"op 88 no. 8"
],
"subtitle": "",
"title": "Symphony no. 8 in G major, B.163, op. 88"
},
{
"composer_full_name": "Robert Schumann",
"composer_id": 129,
"composer_name": "Schumann",
"composer_period": "Romantic",
"genre": "Orchestral",
"id": 15144,
"is_essential": true,
"is_popular": true,
"search_terms": [
"op 54"
],
"subtitle": "",
"title": "Piano Concerto in A minor, op. 54"
}
]
}