LSDB APIlsdb.nl ↗
Access the Liveset Database via API. Search hardstyle and hardcore DJ livesets, retrieve full tracklists, and list the latest additions from lsdb.nl.
What is the LSDB API?
The LSDB.nl API provides 3 endpoints for querying the Liveset Database, a community-maintained archive of hardstyle and hardcore DJ livesets. The get_tracklist endpoint returns a full ordered tracklist with per-track artist, title, and remix fields alongside set-level metadata like event name, date, genre, duration, and stage info. Use search to find sets by artist, event, or track name, and latest to stream the 20 most recently added entries.
curl -X GET 'https://api.parse.bot/scraper/ff2baeb2-dee4-47bc-afa5-7aae22ba3c0c/get_tracklist' \ -H 'X-API-Key: $PARSE_API_KEY'
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 lsdb-nl-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: lsdb_nl_api SDK — bounded, re-runnable; every call capped."""
from parse_apis.lsdb_nl_api import Lsdb, SetNotFound
client = Lsdb()
# Search for livesets by artist
for liveset in client.livesets.search(query="headhunterz", limit=3):
print(liveset.title, liveset.date)
# Get full tracklist for the first result
hit = client.livesets.search(query="headhunterz", limit=1).first()
if hit:
try:
full = client.livesets.get(url=hit.url)
print(full.title, full.genre, full.duration)
for track in full.tracklist[:3]:
print(f" {track.number}. {track.artist} - {track.title}", track.remix)
except SetNotFound as e:
print("set gone:", e.url)
# List latest additions
for entry in client.livesets.latest(limit=3):
print(entry.artist, entry.event, entry.genre)
print("exercised: livesets.search / livesets.get / livesets.latest")
Retrieve full set details and ordered tracklist from a set page. Returns the set title, artist(s), event name, date, genre, duration, stage/area info (Meer info), and each numbered track entry parsed into artist, title, and remix/mix name. Unknown or ID tracks are preserved as explicit placeholders. One network round-trip per call.
| Param | Type | Description |
|---|---|---|
| urlrequired | string | Full lsdb.nl set page URL (e.g. https://lsdb.nl/set/252828/b-front-frontliner-pres-b-frontliner-decibel-outdoor-2024-17-08-24). |
{
"type": "object",
"fields": {
"url": "canonical set page URL",
"date": "ISO date string (YYYY-MM-DD)",
"tags": "array of tag strings",
"event": "event name",
"genre": "genre label (e.g. Hardstyle, Hardcore)",
"title": "set title (Artist @ Event)",
"artists": "array of artist names",
"duration": "set length as HH:MM:SS",
"meer_info": "additional info text (stage/area)",
"tracklist": "ordered array of track entries"
},
"sample": {
"data": {
"url": "https://lsdb.nl/set/221938/headhunterz-defqon1-at-home-28-06-20",
"date": "2020-06-28",
"tags": [],
"event": "Defqon.1 at Home",
"genre": "Hardstyle",
"title": "Headhunterz @ Defqon.1 at Home",
"artists": [
"Headhunterz"
],
"duration": "00:59:25",
"meer_info": "Headhunterz @ Defqon.1 at Home #Defqon1 #Qdance",
"tracklist": [
{
"remix": "Headhunterz Remix",
"title": "Children Of Drums",
"artist": "Wildstylez",
"number": 1,
"is_unknown": false
},
{
"remix": "",
"title": "Home",
"artist": "Headhunterz",
"number": 2,
"is_unknown": false
}
]
},
"status": "success"
}
}About the LSDB API
Endpoints and What They Return
The get_tracklist endpoint accepts a full lsdb.nl set page URL and returns structured set metadata plus an ordered tracklist array. Set-level fields include title, artists (array), event, date (ISO 8601), genre, duration (HH:MM:SS), meer_info for stage or area text, tags, and the canonical url. Each entry in the tracklist array is parsed into artist, title, and remix/mix name. Tracks with unknown or ID status are preserved as-is rather than dropped.
Search and Discovery
The search endpoint takes a query string and an optional page integer. Results are sorted by date descending and auto-iterated across pages. Each item in the returned livesets array carries a set URL, title, and date. The total_pages field lets you paginate the full result set programmatically. The latest endpoint requires no inputs and returns up to 20 entries from the site's RSS feed, each including URL, title, artists, event, genre, and publication date — useful for monitoring new uploads without issuing a search.
Data Coverage
The database focuses on hardstyle and hardcore genres. Genre labels such as "Hardstyle" and "Hardcore" are returned as-is from the source. Set dates, event names, and artist credits reflect what contributors have entered into lsdb.nl. Tracklist completeness varies by set — some entries include fully attributed tracks while others contain placeholder or unknown track entries, which the API preserves rather than filters out.
The LSDB API is a managed, monitored endpoint for lsdb.nl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lsdb.nl 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 lsdb.nl 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 personal liveset archive indexed by artist, event, and date using
get_tracklistoutput - Track newly uploaded hardstyle and hardcore sets in near-real-time with the
latestendpoint - Identify which tracks appear most frequently across sets by aggregating
tracklistentries - Search for all recorded livesets from a specific event using the
searchquery parameter - Populate a music discovery app with set metadata including
duration,genre, andmeer_infostage data - Cross-reference an artist's set history by querying their name and paginating
total_pagesresults
| 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 lsdb.nl have an official developer API?+
What does the `get_tracklist` endpoint return for tracks that are unlisted or unknown?+
tracklist array as-is. The endpoint does not drop or blank them, so your application receives the full ordered list even when some entries lack a resolved artist or title.How many results does the `latest` endpoint return, and how fresh is the data?+
Does the API support filtering search results by genre or date range?+
search endpoint accepts a free-text query and an optional page number; there are no dedicated genre or date-range filter parameters. Results are returned sorted by date descending. You can fork this API on Parse and revise it to add genre or date filter parameters if your use case requires that level of control.Does the API return audio files, stream URLs, or download links for livesets?+
title, artists, event, date, duration, genre, and structured track entries. You can fork this API on Parse and revise it to add an endpoint that surfaces any audio or external link fields present on individual set pages.