AllMusic APIallmusic.com ↗
Access AllMusic data via API: search artists, albums, and songs; get track listings, biographies, discographies, credits, and new releases in structured JSON.
What is the AllMusic API?
The AllMusic API provides 5 endpoints for retrieving music metadata from AllMusic, covering artist biographies, album track listings with credits, song details, and curated new releases. The get_album_details endpoint returns up to a full track list with per-track duration and URL, editorial ratings on a 0–5 scale, genres, styles, and contributor credits. Discographies, composer attributions, and real-time new release listings are also accessible without any per-session setup.
curl -X GET 'https://api.parse.bot/scraper/d7a9ab92-2f81-4e05-9fcf-ab472eae476c/search_music?query=Radiohead&search_type=all' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace allmusic-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""AllMusic SDK — search artists, explore albums, and browse new releases."""
from parse_apis.AllMusic_Scraper_API import AllMusic, SearchType, ResourceNotFound
client = AllMusic()
# Search for artists by name, limit total results fetched.
for result in client.search_results.search(query="Radiohead", search_type=SearchType.ARTISTS, limit=5):
print(result.title, result.url, result.genres)
# Get full album details including tracks and credits.
album = client.albums.get(album_id="ok-computer-mw0000024289")
print(album.title, album.artist, album.allmusic_rating_score)
for track in album.tracks[:3]:
print(track.name, track.duration)
# Get artist details with discography.
artist = client.artists.get(artist_id="radiohead-mn0000326249")
print(artist.name, artist.active_dates, artist.genres)
for entry in artist.discography[:3]:
print(entry.title, entry.year, entry.label)
# Typed error handling for a missing resource.
try:
client.songs.get(song_id="nonexistent-mt9999999999")
except ResourceNotFound as exc:
print(f"Song not found: {exc}")
# Browse current featured new releases with ratings.
for release in client.releases.list(limit=3):
print(release.title, release.artist, release.rating, release.label)
print("exercised: search_results.search / albums.get / artists.get / songs.get / releases.list")
Search for artists, albums, songs, or other music items on AllMusic. Returns a single page of results matching the query. When search_type is specified, results are filtered to that category only.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query string |
| search_type | string | Type of search to perform. |
{
"type": "object",
"fields": {
"query": "string, the original search query",
"results": "array of search result objects, each containing title, url, type, and optionally artist, artist_url, year, genres"
},
"sample": {
"data": {
"query": "Radiohead",
"results": [
{
"url": "https://www.allmusic.com/artist/radiohead-mn0000326249",
"type": "artist",
"title": "Radiohead",
"artist": "Radiohead",
"genres": [
"Pop/Rock",
"Electronic"
],
"artist_url": "https://www.allmusic.com/artist/radiohead-mn0000326249"
}
]
},
"status": "success"
}
}About the AllMusic API
Search and Discovery
The search_music endpoint accepts a query string and an optional search_type parameter (all, artists, albums, or songs) to filter results to a specific category. Each result object includes a title, url, type, and where applicable, artist, artist_url, year, and genres. When search_type is omitted, results may span multiple content types in a single response.
Album and Artist Detail
get_album_details takes an AllMusic album slug (e.g. the-best-of-radiohead-mw0000786632) and returns title, artist, release_date, duration, genres, styles, an allmusic_rating_score (0–5 or null if unrated), a full tracks array with per-track name, duration, and url, and a credits array listing each contributor's name, url, and role. get_artist_details similarly accepts an artist slug and returns biography, active_dates, genres, styles, and a discography array where each entry may include year, label, and rating.
Song Details and New Releases
get_song_details resolves a song slug to its title, artist, a composers array (each with name and url), and an appears_on array listing albums the track is credited on. get_new_releases requires no inputs and returns all currently featured releases on AllMusic's new releases page as a flat array, with each entry carrying title, url, and optionally artist, artist_url, and label. There is no pagination on this endpoint.
IDs and Slugs
All detail endpoints (get_album_details, get_artist_details, get_song_details) use AllMusic slugs as their primary identifier — the human-readable URL segment that includes both a name and an ID suffix (e.g. radiohead-mn0000326249). These slugs can be extracted from url fields returned by search_music or get_artist_details discography entries.
The AllMusic API is a managed, monitored endpoint for allmusic.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when allmusic.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official allmusic.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a music library app that displays editorial ratings, genre tags, and full track listings from
get_album_details. - Populate artist profile pages with biography text, active date ranges, and discography lists via
get_artist_details. - Identify all albums a specific song appears on using the
appears_onfield fromget_song_details. - Track weekly featured new releases for a music news or recommendation feed using
get_new_releases. - Resolve composer credits for songs to support rights research or metadata enrichment workflows.
- Filter album searches by genre and style fields to build genre-specific browsing experiences.
- Cross-reference contributor credits from
get_album_detailsto map session musicians across multiple releases.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does AllMusic offer an official developer API?+
What does the `allmusic_rating_score` field represent, and is it always present?+
null for albums that have not received an editorial review, so callers should handle the null case explicitly.Does `get_new_releases` support pagination or date filtering?+
Are user reviews or community ratings available through this API?+
allmusic_rating_score but does not expose user-submitted ratings, review counts, or community mood/theme tags. You can fork this API on Parse and revise it to add an endpoint that retrieves user review data.