# 1001Tracklists — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access complete DJ set tracklists, chart rankings, and event metadata from 1001tracklists.com. Retrieve individual track details — including artist, title, remix information, record labels, and linked streaming URLs — for any tracklist page, and browse the latest sets or currently charting tracks across weekly, trending, and most-heard categories.

**Category:** Music | **Website:** [1001tracklists.com/](https://1001tracklists.com/) | **Docs:** [parse.bot/marketplace/ec03e43b-6798-40ce-86c9-02832adedc4c/1001tracklists-com-api](https://parse.bot/marketplace/ec03e43b-6798-40ce-86c9-02832adedc4c/1001tracklists-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### find_by_media_url

Find the tracklist page that references a specific SoundCloud or YouTube media URL. Searches 1001tracklists.com for tracklists embedding the given media URL and returns full tracklist data (same shape as get_tracklist) when found. Returns {"found": false} when no tracklist references the media URL.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | A SoundCloud or YouTube URL where a DJ set was uploaded (e.g. 'https://www.youtube.com/watch?v=vtJ100Znqw0' or 'https://soundcloud.com/hardwell/hardwell-on-air-532'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/find_by_media_url \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### get_artist

Look up a DJ/artist on 1001tracklists.com by name or artist page URL. Returns artist info (name, country, track count, tracklist count), their recent tracklists with URLs, and their most-played tracks sorted by play count descending.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Artist/DJ name (e.g. 'hardwell') or a 1001tracklists.com artist/DJ page URL (e.g. https://www.1001tracklists.com/dj/hardwell/index.html). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/get_artist \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"<string>"}'
```

### get_track

Look up metadata for a track on 1001tracklists.com given its track page URL. Returns artist, title, label, genre, release date, mix/remix info, and the total number of tracklist appearances (plays). Track URLs are returned by list_charts and appear in get_tracklist results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | A 1001tracklists.com track page URL (e.g. https://www.1001tracklists.com/track/h5bumxsf/green-velvet-meduza-genesi-essentia-la-la-land/index.html). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/get_track \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### get_tracklist

Get detailed tracklist from a 1001tracklists URL. Returns event metadata (name, date, lineup) and individual track details including artist, title, label, mix information, cue times, and streaming links. Requires a full tracklist page URL.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | The full URL of a tracklist page on 1001tracklists.com (e.g. https://www.1001tracklists.com/tracklist/2hsp3419/hardwell-hardwell-on-air-532-2026-06-05.html) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/get_tracklist \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### get_tracklists_batch

Fetch full tracklist data for multiple 1001tracklists.com tracklist page URLs in a single API call. Returns the same per-tracklist shape as get_tracklist (event metadata with name, date, lineup; tracks array with artist, title, label, mix, links, cue_seconds, order). Each URL produces one entry in the tracklists array; failed fetches include an error message with null event/tracks. Cost scales linearly with the number of URLs provided.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `urls` | array | Yes | JSON array of 1001tracklists.com tracklist page URLs to fetch (e.g. ["https://www.1001tracklists.com/tracklist/2uyncu91/ra5tik-weekly-selections-043-2026-08-06.html"]). URLs are obtained from list_latest, list_homepage_sets, search_tracklists, or list_genre_sets results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/get_tracklists_batch \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":"<array>"}'
```

### list_charts

List tracks from 1001tracklists.com chart pages. Returns ranked tracks (songs) currently charting with name and URL. Supports weekly, trending, and mostheard chart types.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `type` | string | No | Chart type to retrieve. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_charts \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"<string>"}'
```

### list_genre_sets

List DJ sets belonging to a specific genre on 1001tracklists.com. Returns tracklist summaries (title, DJ name, date, event/show name, genre tags, duration, URL) filtered by the provided genre slug. Results are sorted by relevance to the genre and paginated at 30 items per upstream page. Genre slugs use hyphenated lowercase format matching the site's URL structure.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `genre` | string | Yes | Genre slug in hyphenated lowercase format (e.g. 'progressive-house', 'techno', 'tech-house', 'afro-house', 'deep-house', 'house', 'trance'). |
| `page` | integer | No | Page number for pagination (1-indexed). Each page contains up to 30 items. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_genre_sets \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"genre":"<string>","page":"<integer>"}'
```

### list_homepage_sets

Scrape the main latest/recent tracklists feed directly from the 1001tracklists.com homepage, preserving the exact order shown on the site. Collects the complete homepage result set (typically 200+ items loaded via infinite scroll) before applying any filtering. Filters (date_from, date_to, genre) are applied post-collection. In the default mode (include_tracks=false), only the listing pages are fetched with no individual tracklist detail requests, making it suitable for low-cost daily polling. When include_tracks is true, each item also includes full event metadata and ordered track listing; this requires one additional request per item, so latency scales with the filtered result count.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date_from` | string | No | Filter results to sets on or after this date (ISO format YYYY-MM-DD). Applied after full collection. |
| `date_to` | string | No | Filter results to sets on or before this date (ISO format YYYY-MM-DD). Applied after full collection. |
| `genre` | string | No | Hyphenated lowercase genre slug to filter by (e.g. 'techno', 'progressive-house', 'trance'). Matches against genre tags associated with each set. Applied after full collection. |
| `include_tracks` | boolean | No | When true, each item includes full event metadata (name, date, lineup) and ordered tracks (artist, title, label, mix, streaming links). Requires one additional request per item. |
| `limit` | integer | No | Maximum number of items to return after filtering. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_homepage_sets \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_from":"<string>","date_to":"<string>","genre":"<string>","include_tracks":"<boolean>","limit":"<integer>"}'
```

### list_homepage_sets_light

Fetch a lightweight summary of all DJ sets listed on the 1001tracklists.com homepage by paginating through listing pages via AJAX. Returns title, URL, date, and genre tags for each set in homepage order (newest first). No detail pages are fetched, making this a low-cost endpoint that only accesses listing/homepage pages. Pagination continues until all sets within the requested date range are collected (i.e. the next available sets are older than date_from). Filters (date_from, date_to, genre) are applied post-collection. Results are deduplicated by tracklist URL. By default, genre filtering uses case-insensitive substring matching (e.g. genre='house' matches 'Tech House', 'Deep House', 'House'). Set genre_exact=true for exact case-insensitive tag matching (e.g. genre='house' with genre_exact=true matches 'House' but not 'Tech House').

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date_from` | string | No | Filter results to sets on or after this date (ISO format YYYY-MM-DD). Collection continues until sets older than this date are reached. |
| `date_to` | string | No | Filter results to sets on or before this date (ISO format YYYY-MM-DD). Applied after collection. |
| `genre` | string | No | Genre tag to filter by (e.g. 'House', 'Techno', 'Trance'). By default uses case-insensitive substring matching: 'house' matches sets tagged 'House', 'Tech House', 'Deep House', etc. Use genre_exact=true to require an exact tag match. |
| `genre_exact` | boolean | No | When true, genre filtering requires an exact case-insensitive match against individual tags (e.g. 'House' matches only sets tagged 'House', not 'Tech House'). When false (default), substring matching is used. |
| `limit` | integer | No | Maximum number of items to return after filtering. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_homepage_sets_light \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_from":"<string>","date_to":"<string>","genre":"<string>","genre_exact":"<boolean>","limit":"<integer>"}'
```

### list_latest

List latest tracklists from 1001tracklists.com with optional full track details. Returns tracklist summaries (title, URL, date, duration) sorted by date descending. When include_tracks is true, each item also includes event metadata and full ordered track listing with artist, title, label, mix, and streaming links. Results are paginated at 30 items per upstream page; date_from/date_to filter results within each page. Each tracklist with include_tracks=true requires an additional request, so latency scales with the number of items returned.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date_from` | string | No | Filter results to tracklists on or after this date (ISO format YYYY-MM-DD). |
| `date_to` | string | No | Filter results to tracklists on or before this date (ISO format YYYY-MM-DD). |
| `include_tracks` | boolean | No | When true, each item includes full event metadata (name, date, lineup) and ordered tracks (artist, title, label, mix, streaming links). |
| `limit` | integer | No | Maximum number of items to return per call (1-30). |
| `page` | integer | No | Page number for pagination (1-indexed). Each page contains up to 30 items from the upstream source. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_latest \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_from":"<string>","date_to":"<string>","include_tracks":"<boolean>","limit":"<integer>","page":"<integer>"}'
```

### list_mixes

List DJ mixes from 1001tracklists.com with mix-level metadata sorted by mix_date descending (most recent event/set date first). Results are paginated by searching yearly archives (34 pages per year, starting from the current year and going backwards). Each page returns up to 30 mixes. Covers 5+ years of historical mixes. For each mix with embedded media players, streaming URLs (YouTube/SoundCloud/Mixcloud) are extracted from the detail page. When the upstream rate-limits detail page access, playerlinks may be empty for some items while mix metadata remains complete.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (1-indexed). Pages 1-34 cover the current year, 35-68 cover the previous year, etc. Each page returns up to 30 mixes. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_mixes \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"page":"<integer>"}'
```

### list_recent_sets

List all DJ sets from 1001tracklists.com within a date window, internally paginating through listing pages until the date boundary is crossed (proving complete coverage). Returns set summaries with set_id, URL, date, title, DJ name, and genre tags. Pagination continues until a set older than date_from is encountered, confirming all sets in the window are captured. Deduplicates by tracklist URL. The entire multi-page crawl completes within a single API call. Optional genre filter uses case-insensitive substring matching against genre tags.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date_from` | string | Yes | Collect sets on or after this date (ISO format YYYY-MM-DD). |
| `date_to` | string | Yes | Collect sets on or before this date (ISO format YYYY-MM-DD). |
| `genre` | string | No | Genre tag to filter by (e.g. 'Trance', 'House', 'Techno'). Case-insensitive substring match against each set's genre tags. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/list_recent_sets \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_from":"<string>","date_to":"<string>","genre":"<string>"}'
```

### search_tracklists

Search for DJ-set tracklist pages on 1001tracklists.com by title text. Returns up to 10 matching tracklist results with metadata. When uploader is provided, the search query combines uploader and title to prefer results by that DJ/artist. Only tracklist pages are returned (artist pages, chart pages, and track pages are excluded).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `title` | string | Yes | Search text to match against tracklist titles (e.g. 'hardwell on air', 'a state of trance'). |
| `uploader` | string | No | DJ or artist name to prefer in search results. Combined with title for the search query. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-1001tracklists-com-api-ec03e43b/search_tracklists \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"<string>","uploader":"<string>"}'
```
