Amazon APImusic.amazon.com ↗
Access the Amazon Music catalog via API. Search tracks, artists, and albums, retrieve artist follower counts, full tracklists, and label release data.
What is the Amazon API?
The Amazon Music API covers 4 endpoints that expose catalog data from music.amazon.com, including artist profiles, album tracklists, and full-text search. The search endpoint returns a mixed result set of tracks, artists, and albums — each with an ASIN, name, image URL, and direct Amazon Music URL — making it straightforward to look up catalog items and feed downstream get_artist or get_album calls.
curl -X POST 'https://api.parse.bot/scraper/e3f95252-c81c-4824-827e-df63c2358b4c/search' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"type": "tracks",
"limit": "5",
"query": "Taylor Swift",
"offset": "0"
}'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 music-amazon-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.
"""Walkthrough: Amazon Music SDK — bounded, re-runnable; every call capped."""
from parse_apis.music_amazon_com_api import AmazonMusic, SearchType, InputRequired
client = AmazonMusic()
# Search across the catalog — typed field access, limit caps total items.
for result in client.search_results.search(query="Taylor Swift", limit=3):
print(result.name, result.type, result.url)
# Filter by type to get only tracks.
track = client.search_results.search(query="Drake", type=SearchType.TRACKS, limit=1).first()
if track:
print(track.name, track.artists, track.image_url)
# Fetch full artist details by ID from a search result.
artist_hit = client.search_results.search(query="Adele", type=SearchType.ARTISTS, limit=1).first()
if artist_hit:
try:
artist = client.artists.get(artist_id=artist_hit.id)
print(artist.name, artist.followers)
for t in artist.top_tracks[:3]:
print(" ", t.name, t.image_url)
except InputRequired as e:
print("input error:", e)
# Fetch album details.
album_hit = client.search_results.search(query="Midnights", type=SearchType.ALBUMS, limit=1).first()
if album_hit:
album = client.albums.get(album_id=album_hit.id)
print(album.name, album.artists, album.release_date)
for trk in album.tracklist[:3]:
print(" ", trk.track_number, trk.name)
# Browse upcoming releases by label.
for release in client.upcoming_releases.list(label_or_distributor="Republic Records", limit=3):
print(release.name, release.artists, release.type)
print("exercised: search_results.search, artists.get, albums.get, upcoming_releases.list")
Full-text search across the Amazon Music catalog. Returns a mixed list of tracks, artists, and albums matching the query. Each result includes an id, name, type, image, and URL.
| Param | Type | Description |
|---|---|---|
| type | string | Filter results by type. Omitted returns all types. |
| limit | integer | Maximum number of results to return (1-50). |
| queryrequired | string | Search query string. |
| offset | integer | Number of results to skip for pagination. |
{
"type": "object",
"fields": {
"limit": "integer limit used",
"query": "the query string used",
"total": "integer count of results returned",
"offset": "integer offset used",
"results": "array of search result objects with id, name, artists, type, image_url, url",
"type_filter": "the type filter applied or null"
},
"sample": {
"data": {
"limit": 5,
"query": "Taylor Swift",
"total": 2,
"offset": 0,
"results": [
{
"id": "B00157GJ20",
"url": "https://music.amazon.com/artists/B00157GJ20/taylor-swift",
"name": "Taylor Swift",
"type": "artist",
"artists": "Taylor Swift",
"image_url": "https://m.media-amazon.com/images/I/81F710q5Q3L._AA256._SX472_SY472_BL0_QL100_.jpg",
"album_name": null,
"duration_ms": null
},
{
"id": "B0H3LZ4FDR",
"url": "https://music.amazon.com/albums/B0H3M1J74G?trackAsin=B0H3LZ4FDR",
"name": "I Knew It, I Knew You (From \"Toy Story 5\")",
"type": "track",
"artists": "Taylor Swift",
"image_url": "https://m.media-amazon.com/images/I/71Oit2SzckL._AA256._SX472_SY472_BL0_QL100_.jpg",
"album_name": null,
"duration_ms": null
}
],
"type_filter": null
},
"status": "success"
}
}About the Amazon API
Search and Catalog Lookup
The search endpoint accepts a required query string plus optional type, limit (1–50), and offset parameters. Results include a results array of objects with id, name, artists, type, image_url, and url, along with top-level total, limit, offset, and type_filter fields for pagination. Filtering by type narrows results to tracks, albums, or artists only. The ASINs returned here feed directly into the get_artist and get_album endpoints.
Artist and Album Detail
get_artist takes an artist_id (Amazon Music ASIN) and returns a profile with name, followers (e.g. '8M+ Followers'), image_url, top_tracks, albums, singles, and related_artists. Each discography item includes its own id, name, type, year, and image_url. get_album takes an album_id and returns full album metadata — release_date, total_tracks, artists, type, and a tracklist array where each entry has id, name, and track_number.
Label and Distributor Releases
The get_upcoming_releases endpoint queries the catalog by label_or_distributor name (e.g. 'Republic Records'). It returns a paginated releases array of album and single objects, each with id, name, artists, type, image_url, and url. The label_or_distributor value used is echoed back in the response alongside total, limit, and offset for pagination control.
The Amazon API is a managed, monitored endpoint for music.amazon.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when music.amazon.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 music.amazon.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 discovery tool that surfaces related artists using the
related_artistsfield fromget_artist. - Track a label's catalog footprint by querying
get_upcoming_releaseswith a distributor or label name. - Populate album detail pages with cover art, release dates, and full tracklists from
get_album. - Create artist stat dashboards showing follower counts and discography depth from
get_artist. - Power a cross-platform music search by combining
searchresults with ASIN-based detail lookups. - Monitor new releases for a set of artists by periodically calling
get_artistand diffing thealbumsandsinglesarrays. - Aggregate top tracks per artist to identify catalog highlights using the
top_tracksfield.
| 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 Amazon Music have an official developer API?+
What does the `search` endpoint return, and how can results be filtered?+
results array of mixed objects — tracks, artists, and albums — each with id, name, artists, type, image_url, and url. Pass a type parameter to restrict results to one content type. Use limit and offset for pagination up to 50 results per call.Does `get_artist` return streaming counts, chart positions, or play counts?+
followers, top_tracks, albums, singles, and related_artists, but does not include streaming counts, chart rankings, or play history. You can fork this API on Parse and revise it to add an endpoint targeting that data if it becomes available on the artist page.Does `get_album` return audio previews, lyrics, or ISRC codes?+
get_album response covers tracklist, release_date, total_tracks, artists, type, and image_url. Audio previews, lyrics, and ISRC codes are not included. You can fork it on Parse and revise to add those fields if the source exposes them.