Beatport Scraper
Pricing
from $3.00 / 1,000 results
Beatport Scraper
Scrape Beatport - the world's largest DJ & electronic music store. Search tracks, browse genres, DJ charts, labels and artists, and get full track metadata: BPM, key, duration, price, artwork, audio previews and release dates.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
22 days ago
Last modified
Categories
Share
Scrape Beatport — the world's largest DJ & electronic music store. Search tracks, browse genres and DJ charts, or pull labels, artists, releases and single URLs, and get full track metadata: title, artists & remixers, label, genre, release date, BPM, musical key, duration, price, artwork and 30–60 second audio previews. Fast HTTP access to Beatport's public catalog API; no login required.
What this actor does
- Seven modes:
search,browseByGenre,topCharts,browseByLabel,browseByArtist,browseReleases,byUrl - Full track metadata: BPM, key (with Camelot number), duration, price, catalog number, ISRC, release dates
- All 46 Beatport genres browsable — from Tech House and Techno to Trance, Drum & Bass and Dubstep
- DJ charts with rank, chart type (
latest/trending/popular) and optional per-chart tracks - Releases: newest releases per genre/label with five sort orders and optional per-release tracks
- Audio previews & artwork: direct MP3 preview URLs and CDN artwork URLs on every track
- Filters: BPM range, musical key, keyword, release date, genre
- Empty fields are omitted
Output per track
id,title,mixName,artists[],primaryArtist,remixers[]label,releaseId,releaseName,genre(id/name/slug),subGenrebpm,key(name, Camelot number/letter)duration(e.g.6:42),durationMs,trackNumberprice(value, currency, display),catalogNumber,isrcreleaseDate,newReleaseDate,encodedDatepreviewUrl— MP3 sample,sampleStartMs,sampleEndMsartworkUrl,availableWorldwide,isExplicit,preOrder,isAvailableForStreamingaudioFormat,desc,saleType,currentStatus,labelTrackIdentifierisDjEdit,isHype,isClassic,isUgcRemix,exclusive,wasEverExclusivefreeDownloads,freeDownloadStartDate,freeDownloadEndDate,preOrderDateapiUrl— canonical catalog API resourcechartRank/chartName(when fetched inside a chart)sourceUrl,recordType: "track",scrapedAt
Output per chart
id,name,slug,description,person,artistgenres[],trackCount,price,publishDate,addDate,changeDaterank(position in the listing),chartTypeimageUrl,apiUrl,sourceUrl,recordType: "chart",scrapedAt
Output per release
id,name,slug,artists[],primaryArtist,remixers[],labelcatalogNumber,upc,trackCount,bpmRangepublishDate,newReleaseDate,encodedDate,updated,descprice,imageUrl,isExplicit,isDjEdit,isHype,isUgcRemix,exclusive,preOrderapiUrl,sourceUrl,recordType: "release",scrapedAt
Output per artist / label
id,name,bio,website,djAssociation(artists)imageUrl,latestActivePublishDate,created,updatedhasExclusiveContract,hypeActive,isAvailableForPreOrder,isAvailableForBundleSubscription,isIncludedInRightsflow(labels)sourceUrl,recordType,scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / browseByGenre / topCharts / browseByLabel / browseByArtist / browseReleases / byUrl |
searchQuery | string | tech house | Free-text query (mode=search) |
searchType | string | tracks | tracks / artists / labels / charts (mode=search) |
genre | string | tech-house | One of 46 Beatport genres (mode=browseByGenre, also narrows topCharts / browseReleases) |
chartType | string | latest | latest / trending / popular (mode=topCharts) |
releaseSort | string | newest | newest / oldest / name / trackCount / recentlyEncoded (mode=browseReleases) |
labelId | int | – | Label ID from the label page URL (mode=browseByLabel / browseReleases) |
artistId | int | – | Artist ID from the artist page URL (mode=browseByArtist) |
startUrls | array | – | Track/chart/artist/label/release/genre URLs (mode=byUrl) |
minBpm / maxBpm | int | – | Tempo range filter (40–200) |
key | string | – | Musical key filter (all 24 keys) |
containsKeyword | string | – | Keep only titles containing this text |
releasedAfter | string | – | YYYY-MM-DD; keep tracks released on/after this date |
includeChartTracks | boolean | false | Also emit the tracks inside each chart (mode=topCharts) |
includeReleaseTracks | boolean | false | Also emit every track inside each release (mode=browseReleases / byUrl) |
proxyConfiguration | proxy | off | Optional — route API + token requests via Apify proxy when your IP range gets 401s (AUTO datacenter is free) |
maxItems | int | 50 | Hard cap (1–1000) |
Example: search Tech House tracks with filters
{"mode": "search","searchQuery": "tech house","minBpm": 120,"maxBpm": 130,"key": "A Minor","containsKeyword": "remix","releasedAfter": "2024-01-01"}
Example: browse a genre
{"mode": "browseByGenre","genre": "trance-main-floor","maxItems": 100}
Example: top DJ charts with tracks
{"mode": "topCharts","chartType": "trending","includeChartTracks": true,"maxItems": 10}
Example: fetch by URL
{"mode": "byUrl","startUrls": ["https://www.beatport.com/track/the-kid-original-mix/3731110","https://www.beatport.com/chart/amy-dabbs-slightly-involved-chart/811900"]}
Example: newest releases in a genre with tracks
{"mode": "browseReleases","genre": "tech-house","releaseSort": "newest","includeReleaseTracks": true,"maxItems": 20}
Data Source
Beatport's public catalog API (api.beatport.com/v4/catalog) powers the beatport.com website. It returns real store data — search results, genre listings, DJ charts, label and artist catalogues — including audio preview samples and artwork hosted on Beatport's CDN (geo-media.beatport.com, geo-samples.beatport.com). Anonymous access tokens are minted from the storefront's own visitor session (the __NEXT_DATA__ payload on the homepage) and rotated automatically when they expire; if the API answers 401, the actor invalidates the token, mints a fresh one and retries once before reporting an environment-level block (see the FAQ). This actor is a third-party tool and is not affiliated with, endorsed by, or sponsored by Beatport.
Use cases
- DJs & producers — research tracks by BPM and key for harmonic mixing
- Record pools — track new releases by genre or label weekly
- Chart monitoring — watch DJ charts and their movement over time
- Music analytics — price, BPM, key and release-date data for catalog research
- Archiving — snapshot track metadata with previews and artwork
Limitations
- Track search is capped by Beatport's API — track search caps at 10 results per page (any
per_pagevalue returns 10) and pages become unstable after the first one or two; the actor requests the real 10-page cap, dedupes by track id and stops once the API repeats itself. A search run therefore emits every unique track Beatport offers for the query (typically ~10–20) with no duplicates. Genre, label, artist and release endpoints are unaffected and honor full pages. 401on some IP ranges — the catalog API can reject an entire network; the actor re-mints its anonymous token and retries once, then finishes cleanly with a status message. Re-running from another network (or with Apify proxy) usually resolves it.- Fields are omitted when Beatport omits them — e.g. BPM or ISRC on certain tracks; only the data Beatport actually provides is output.
- API is rate-limited — the actor pages politely and retries on throttling (429).
- No audio downloads — only metadata and the short 30–60 second preview URLs that Beatport publishes on every track page.
FAQ
Is a Beatport account required? No. All data is read from the public catalog API used by the beatport.com website, with the same anonymous visitor access the storefront uses.
What are the limits? The catalog API is rate-limited. The actor pages politely, retries on throttling (429), and re-acquires its anonymous access token automatically when it expires.
Why do some fields disappear on some records? Beatport's catalog API omits fields (e.g. BPM or ISRC) on certain tracks. Empty fields are dropped from the record rather than emitted as nulls — only the data Beatport actually provides is output.
Why does track search return at most ~20 records even with a high maxItems? Beatport's search API caps track results at 10 per page (any per_page value returns 10) and its pages are unstable — after the first one or two pages it recycles the same result sets. The actor requests the real 10-page cap, dedupes by track id across pages, and stops once the API repeats itself, so a search run emits every unique track Beatport offers for the query (verified: tech house → 20 unique; café del mar → 10 unique) with no duplicates. Genre, label, artist and release endpoints are unaffected — they honor full pages (verified: 1000/1000 unique on a genre stress run).
How fresh is the data? Live: every run queries Beatport directly. Search, charts and genre listings reflect the storefront at scrape time.
Does this actor download the music? No. It only extracts metadata and the short audio preview URLs (30–60 second samples) that Beatport itself publishes on every track page.
How do I find an artist or label ID? Open the artist/label page on beatport.com — the ID is the trailing number in the URL, e.g. beatport.com/artist/amy-dabbs/406088 → 406088.
Why do I sometimes get 0 records with a 401 status? Beatport's catalog API can return HTTP 401 for an entire network (e.g. some datacenter IP ranges). The actor mints an anonymous token from the beatport.com homepage and, on any 401, invalidates the token, re-mints a fresh one and retries the request once (re-mint is rate-limited with backoff to avoid hammering the visitor-session service). If the 401 persists after the re-mint retry, the network block is environment-level (the whole IP range is rejected) rather than a token problem — the run finishes cleanly with a status message instead of crashing. Re-running from a different network (or with Apify datacenter/residential proxy via the actor's proxy setting) usually resolves it; the same code path succeeds from non-blocked networks.