Beatport APIbeatport.com ↗
Access Beatport track metadata, BPM, musical key, charts, artist profiles, and release data via 12 structured endpoints. No account required.
What is the Beatport API?
The Beatport API covers 12 endpoints for querying electronic music tracks, releases, artists, labels, genres, and charts. The get_top100 endpoint returns the full 100-position genre chart in a single request — including BPM, Camelot key notation, mix name, label, and per-track pricing — while get_track adds sample preview URLs and complete remixer credits to any individual track lookup.
curl -X GET 'https://api.parse.bot/scraper/2231dc97-b277-482d-9311-07a167c10460/search_tracks?page=1&query=techno' \ -H 'X-API-Key: $PARSE_API_KEY'
Full-text search over Beatport's track catalog. Matches against track name, artist, and label. Returns paginated results with track metadata including BPM, genre, artists, label, and pricing. Each result is a summary; use get_track for full details including sample URL and musical key.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword to match against tracks. |
{
"type": "object",
"fields": {
"data": "array of track summary objects with track_id, track_name, bpm, artists, genre, label, price, downloads, and plays"
},
"sample": {
"data": {
"data": [
{
"bpm": 128,
"genre": [
{
"genre_id": 6,
"genre_name": "Techno (Peak Time / Driving)"
}
],
"label": {
"label_id": 10819,
"label_name": "Rebeat"
},
"plays": 834,
"price": {
"code": "USD",
"value": 1.49,
"display": "$1.49"
},
"artists": [
{
"artist_id": 121438,
"artist_name": "Techno"
}
],
"mix_name": "Original Mix",
"track_id": 1216245,
"downloads": 67,
"track_name": "Techno"
}
]
},
"status": "success"
}
}About the Beatport API
Search and Track Lookup
Three search endpoints — search_tracks, search_releases, and search_artists — accept a query string and an optional page integer for pagination. Track search results include track_id, bpm, genre, label, price, downloads, and plays. These are summary objects; full metadata (including key.camelot_number, key.camelot_letter, sample_url, and remixer credits) is available by passing the track_id to get_track. The slug parameter on all detail endpoints is optional and has no effect on the response.
Charts
get_top10 and get_top100 both accept a genre_id (obtainable from list_genres) and return chart rows with true chart position, bpm, key, artists, remixers, label, release, and price. get_top100 supports two optional filters: max_position caps chart depth (e.g. pass 10 to get only the top 10), and label performs a case-insensitive substring match against the label name. matched_count tells you how many rows survived the filters, while count always reflects the full unfiltered chart size. get_main_top100 works identically but targets the site-wide cross-genre chart rather than a specific genre.
Artist and Label Profiles
get_artist returns a full profile including bio, image.uri, image.dynamic_uri, slug, and website. get_artist_tracks auto-paginates through an artist's complete catalog, returning a tracks array with mix_name, remixers, label, genre, bpm, key, release_date, and a direct track_url per row, plus a total_tracks count. Note that for artists with large catalogs this endpoint can take several seconds. get_label returns the label's bio, name, slug, and image fields.
Genre Reference
list_genres takes no parameters and returns all available genre objects with id, name, and slug. These IDs and slugs are the inputs consumed by get_top10, get_top100, and get_artist_tracks for URL construction. The endpoint is the canonical lookup table for the rest of the genre-aware endpoints.
The Beatport API is a managed, monitored endpoint for beatport.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when beatport.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 beatport.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 DJ prep tool that pulls Camelot key and BPM from
get_trackfor harmonic mixing. - Track weekly chart movement by polling
get_top100per genre and storingpositionover time. - Catalog an artist's complete discography with labels, release dates, and remixer credits via
get_artist_tracks. - Filter the main Beatport Top 100 by a specific record label using
get_main_top100with thelabelparameter. - Power a music discovery feed by combining
search_tracksresults withget_releasetrack listings and pricing. - Aggregate genre popularity signals by comparing
downloadsandplaysacrosssearch_tracksresult pages. - Identify label rosters by cross-referencing
get_labelprofile data withsearch_releasesresults filtered by label name.
| 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.
Does Beatport have an official public developer API?+
What does `get_top100` return that `get_top10` does not?+
get_top100 returns up to 100 chart rows (versus 10) and includes two optional filters: max_position to cap chart depth and label for case-insensitive label matching. Both return the same per-track fields — bpm, key, artists, remixers, label, release, and price — but get_top100 also exposes matched_count alongside count to distinguish filtered results from the full chart size.Does the API return audio preview files or just preview URLs?+
sample_url string in get_track and get_top10/get_top100 chart row objects. The URL points to the preview audio hosted by Beatport; the API does not fetch or proxy the audio file itself.