Spotify APIopen.spotify.com ↗
Fetch Spotify catalog data via API: search tracks, artists, albums, playlists; get play counts, follower stats, top cities, bios, and album track listings.
What is the Spotify API?
The Spotify (open.spotify.com) API exposes 5 endpoints covering the full public catalog: search across tracks, artists, albums, and playlists, then drill into any entity with get_artist, get_album, get_track, or get_playlist. A single get_artist call returns follower counts, monthly listener numbers, world rank, top listening cities, biography, and the artist's top tracks with play counts — data not available from Spotify's official Web API.
curl -X GET 'https://api.parse.bot/scraper/a931d9c5-ff68-4fb2-8de0-36c3dea2f480/search?type=tracks&query=radiohead' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches the Spotify catalog for one entity type and returns one page of results. The result grain is one item per matched entity; the item shape depends on type (tracks carry artists/album/duration, artists carry images/verified, albums carry album_type/year/artists, playlists carry owner/description). Pagination is offset-based: offset (default 0) and limit (default 20, clamped to 50) are passed upstream; total_count is the site's reported match count, next_offset is the site's continuation (null when exhausted) and has_more mirrors it. A query with no matches returns an empty items array. One upstream request per call plus a one-time session bootstrap.
| Param | Type | Description |
|---|---|---|
| type | string | Entity type to search. Determines the shape of each item. |
| limit | integer | Page size; values above 50 are clamped to 50. |
| queryrequired | string | Free-text search term, e.g. an artist, song, album or playlist name. |
| offset | integer | Zero-based index of the first result to return; use next_offset from a previous page to continue. |
{
"type": "object",
"fields": {
"type": "echo of the entity type searched",
"items": "array of result objects; for tracks: track_id, name, artists[{artist_id,name}], album{album_id,name,cover_art[]}, duration_ms, explicit, playable; for artists: artist_id, name, verified, images[]; for albums: album_id, name, album_type, year, artists[], cover_art[], playable; for playlists: playlist_id, name, description, owner{username,name}, images[]",
"limit": "page size applied (after clamping)",
"query": "echo of the search term",
"offset": "offset applied to this page",
"has_more": "boolean, true when next_offset is non-null",
"next_offset": "integer offset of the next page, or null when there is no further page",
"total_count": "integer total matches reported by the site for this type"
},
"sample": {
"data": {
"type": "tracks",
"items": [
{
"name": "Creep",
"album": {
"name": "Pablo Honey",
"album_id": "3gBVdu4a1MMJVMy6vwPEb8",
"cover_art": [
{
"url": "https://i.scdn.co/image/ab67616d00001e02ec548c00d3ac2f10be73366d",
"width": 300,
"height": 300
}
]
},
"artists": [
{
"name": "Radiohead",
"artist_id": "4Z8W4fKeB5YxbusRsdQVPb"
}
],
"explicit": true,
"playable": true,
"track_id": "70LcF31zb1H0PyJoS1Sx1r",
"duration_ms": 238640
}
],
"limit": 5,
"query": "radiohead",
"offset": 0,
"has_more": true,
"next_offset": 5,
"total_count": 7
},
"status": "success"
}
}About the Spotify API
Search and Pagination
The search endpoint accepts a free-text query and an entity type — one of tracks, artists, albums, or playlists — and returns one page of matching items. Page size is controlled by limit (capped at 50) and offset. Each response includes total_count, has_more, and next_offset so you can walk through arbitrarily large result sets. Item shapes vary by type: track results include artists, album (with cover_art), and duration_ms; artist results include images and a verified flag.
Artist Detail
get_artist returns the complete profile for a single artist identified by their 22-character artist_id. The response includes followers, biography (which may contain Spotify URI anchors), verified, top_cities (each entry has city, region, country, and listeners), top_tracks with per-track play_count, and paginated albums and singles arrays. The world rank field reflects the artist's global popularity standing as shown on the site.
Album and Track Detail
get_album accepts an album_id and returns album metadata — label, copyrights, release_date, disc_count, cover_art — plus a paginated tracks array where each entry carries track_number, disc_number, duration_ms, play_count, explicit, and playable. get_track resolves a single track to its full detail including media_type (AUDIO or VIDEO), play_count, track_number, and a nested album object with its own copyrights and track_total.
Playlist Detail
get_playlist takes a playlist_id and returns the playlist name, description, owner (with username and display name), followers, images, and a paginated tracks array. Each track entry includes added_at (ISO timestamp), full artists, a compact album summary with cover_art, and play_count. Non-track entries such as podcast episodes are omitted from the tracks array.
The Spotify API is a managed, monitored endpoint for open.spotify.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when open.spotify.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 open.spotify.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 app that surfaces artist top tracks and play counts for a given search query.
- Track an artist's follower growth and monthly listener figures over time using get_artist.
- Analyze which cities drive the most streams for a given artist via the top_cities field.
- Reconstruct a public playlist's full track list including added_at timestamps and per-track play counts.
- Audit album metadata — label, copyrights, release precision, and disc count — for a catalog of album IDs.
- Classify tracks by media_type (AUDIO vs VIDEO) or explicit flag across an album or playlist.
- Paginate through a large artist discography using the albums and singles arrays from get_artist combined with get_album.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.