Beatport Enrich
The beatport-enrich plugin queries Beatport for each track in your library and writes authoritative DJ metadata back into the track record. Beatport is the gold standard for electronic music metadata — BPM values are curated per-release, keys are verified by hand, and genre taxonomies are consistent.
Plugin version: 0.1.7 | Stage: Enrich | Requires browser: Yes
What It Does
For each track, the plugin:
- Opens a headless Chromium browser and logs into beatport.com using your credentials (once per run; the session is reused for all tracks).
- Searches for the track using the query
artist title— e.g.deadmau5 strobe. - Navigates to the matching track page and reads the metadata cells.
- Writes the results back to the track record and stores a Beatport link in the track’s links map.
The browser session persists across the entire enrichment run, so you only authenticate once regardless of how many tracks are processed.
Configuration
Install the plugin from Settings → Plugins, then click the gear icon to open its settings.
| Setting | Type | Description |
|---|---|---|
| username | string | Your Beatport account email or username |
| password | password | Your Beatport account password (stored encrypted) |
A free Beatport account is sufficient. You do not need a Beatport Pro or DJ subscription.
Fields Enriched
After a successful run, the following fields are written back to the track and become visible in the track table:
| Field | Description | Example value |
|---|---|---|
| BPM | Beats per minute as published on Beatport | 128 |
| Key | Musical key in Beatport’s notation | A min |
| Genre | Primary genre from Beatport’s taxonomy | Techno (Peak Time / Driving) |
| Label | Record label that released the track | Mau5trap |
| Year | Release year, parsed from the Beatport release date | 2009 |
In addition, a Beatport link is saved to the track’s links map, which the acquire plugin uses to navigate directly to the track page for downloading.
Enrichment Statuses
| Status | Meaning |
|---|---|
| done | Track found, all available fields written |
| not_found | No matching track found on Beatport; track is skipped |
| no_data | Track page found but metadata cells were empty |
| error | A network error or login failure occurred |
When a track has status not_found, no data is written and the track’s existing fields are unchanged. This is common for tracks that are not in Beatport’s catalog (e.g. free downloads, promo-only releases, non-electronic genres).
How Search Works
The plugin searches Beatport using the combined artist title string. It then uses execute_with_permutations to try variant forms of the artist name — for example, a track credited to Artist & Artist 2 will also be tried as Artist, Artist 2 — which improves match rates on collaborative releases.
Kombiner picks the first result from the Beatport search page that the plugin identifies as a match. If the first result is a different track with a similar name, the enrichment data will be wrong. You can always inspect the stored Beatport link to verify it points to the correct track.
Tips
- Free accounts work fine. You don’t need to have purchased anything on Beatport to use the enrich plugin.
Troubleshooting
Login fails on every run Verify your username and password in plugin settings. Beatport occasionally changes its login flow — check for a plugin update if credentials are correct but login still fails.
Track is marked not_found but it definitely exists on Beatport
Try searching manually on Beatport with the same artist and title. The track may be listed under a slightly different artist name. You can edit the artist field in Kombiner to match Beatport’s spelling, then re-run enrichment for that track.
Key or BPM looks wrong If you suspect the plugin matched the wrong track, click the Beatport link stored in the track’s links map to verify. If it points to the wrong page, the track is a false positive from the search step — this is more likely for common words in track titles.
CAPTCHA appears
If Beatport presents a CAPTCHA challenge, the plugin calls browser_prompt() to show you the browser so you can solve it manually. Once solved, the plugin continues automatically.