Skip to content

Public API

10 endpointsRead-only JSONNo key needed
Juice WRLD's catalogue as JSON: songs and every version of them, eras, releases, producers and engineers, and the totals. Free to use from a server or a browser.

Basics

  • Base URL

    https://juicewrld.io/api/v1Every endpoint is under it, and GET /api/v1 lists them. Read-only over HTTPS; answers are JSON in UTF-8.
  • 120 requests a minute

    Per address, every endpoint and every 304 counted together. Each answer says where you stand in RateLimit-Remaining and RateLimit-Reset; past the limit it's a 429 with Retry-After, in seconds.
  • Cached and revalidated

    Answers are fresh for 5 minutes, then may be served stale for an hour while they're fetched again. The ETag changes only when the catalogue does: send it back in If-None-Match and an unchanged answer is a 304 with no body.
  • Open to every site

    Access-Control-Allow-Origin: * on every answer, errors included, so a page anywhere can call it. No key, and no cookies are read or set.

Quick start

Ask for a page of songs, then follow meta.next until it's null.

curl
curl "https://juicewrld.io/api/v1/songs?era=gbgr&status=leaked&limit=5" # Again with the ETag it sent: a 304 and no body while the catalogue is unchangedcurl -i "https://juicewrld.io/api/v1/songs?era=gbgr&status=leaked&limit=5" \  -H 'If-None-Match: <the ETag>'
JavaScript
// Every leaked song of an era, a page at a timelet url = "https://juicewrld.io/api/v1/songs?era=gbgr&status=leaked&limit=200";const songs = [];while (url) {  const res = await fetch(url);  const body = await res.json();  if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);  songs.push(...body.data);  url = body.meta.next;}console.log(songs.length, songs[0].title, songs[0].url);

Responses

  • An answer is { "data": ... }. Lists add meta: total, limit, offset, and next and prev, the full addresses of the pages either side (null at the ends).
  • Keys are camelCase and always there: null or an empty list when something isn't known.
  • A Date is an object: date is ISO 8601 at the precision known (2017-06-13, 2017-06 or 2017; null when only words are), text the tracker's own words for it.
  • Statuses are released, leaked, unsurfaced, session or misc. Unsurfaced songs are known by name but never came out; a session is a studio session, the files behind a version, never a version itself.
  • url is always a page on juicewrld.io. There are no audio, video or download addresses: link a song's page, where it plays.
  • Within v1, fields are only ever added, never renamed or removed.
Date, Duration and Credit, as they appear
// Date{ "date": "2015-09-24", "text": "September 24, 2015" }// Duration{ "seconds": 251, "text": "4:11" }// Credit{  "name": "Spaycjones",  "slug": "spaycjones",  "url": "https://juicewrld.io/people/spaycjones"}

Errors

A refusal has its HTTP status and the same body everywhere, with a code to branch on and a message to read.

404
{  "error": {    "code": "not_found",    "message": "No song with the id \"lucid-dream\"."  }}
400bad_request
A parameter it can't read: an unknown status, era or kind, or a limit out of range. The message names it.
404not_found
No song, era, project or person by that id or slug, or no endpoint at that address.
405method_not_allowed
Anything but GET, HEAD and OPTIONS: the API only reads.
429rate_limited
Over 120 requests in a minute. Retry-After says how many seconds are left.
500internal_error
Something broke on our side. Try again in a minute.

Endpoints

GET/songs

Every public song and version in the tracker's order, or by relevance with q, a page at a time.

Parameters

qoptional
Words to search for, read the way the site's search reads them: every word must match, and titles rank first.
statusoptional
Any of released, leaked, unsurfaced, session or misc, comma-separated.
eraoptional
Era codes or slugs in any case (gbgr, GBGR), comma-separated.
projectoptional
A project's slug: its tracks.
personoptional
A person's slug: the songs they're credited on.
familyoptional
A song's family: every version of it.
hasAudiooptional
true for songs that play on juicewrld.io, false for the rest.
hasLyricsoptional
true or false.
limitoptional
How many to a page. 1 to 200. Default 50.
offsetoptional
How many to skip. meta.next and meta.prev hold the neighbouring pages' addresses, so you rarely set it yourself. Default 0.
Request
curl "https://juicewrld.io/api/v1/songs?era=gbgr&status=leaked&limit=2"
Response
{  "data": [    {      "id": "27-club-gbgr",      "title": "27 Club (v1)",      "url": "https://juicewrld.io/song/27-club-gbgr",      "status": "leaked",      "era": "GBGR",      "project": null,      "family": "27-club",      "versionLabel": "v1",      "dates": {        "recorded": null,        "previewed": null,        "released": null,        "surfaced": { "date": "2020-10-05", "text": "October 5, 2020" }      },      "duration": { "seconds": 128, "text": "2:08" },      "cover": "https://juicewrld.io/art/b5b7f6fed17d6f63db6dfc7041687add786c56e6.jpg",      "hasAudio": true,      "hasLyrics": true    },    {      "id": "734-gbgr-unreleased",      "title": "734 (v1)",      "url": "https://juicewrld.io/song/734-gbgr-unreleased",      "status": "leaked",      "era": "GBGR",      "project": null,      "family": "734",      "versionLabel": "v1",      "dates": {        "recorded": { "date": "2018-05-21", "text": "May 21-22, 2018" },        "previewed": null,        "released": null,        "surfaced": { "date": "2020-12-29", "text": "December 29, 2020" }      },      "duration": { "seconds": 195, "text": "3:15" },      "cover": "https://juicewrld.io/art/143f50eae3ff24f824e3b215381b98035b34e9f0.jpg",      "hasAudio": true,      "hasLyrics": true    }  ],  "meta": {    "total": 386,    "limit": 2,    "offset": 0,    "next": "https://juicewrld.io/api/v1/songs?era=gbgr&status=leaked&limit=2&offset=2",    "prev": null  }}
Song fields in lists
idstring
The song's id. Its page is /song/{id}.
titlestring
As the tracker writes it, features and version tags included.
urlstring
Its page on juicewrld.io, where it plays.
statusstring
released, leaked, unsurfaced, session or misc.
erastring | null
The era's code, for /eras/{code}.
projectstring | null
The album, EP or single it's on, for /projects/{slug}.
familystring
Shared by every version of one song: /songs?family= lists them.
versionLabelstring | null
Which version it is ("v2", "Goodbye & Good Riddance · track 3"), null for a song with one.
datesobject
recorded, previewed, released (released and misc songs) and surfaced (leaks and studio sessions), each a Date or null.
durationDuration | null
Its length.
coverstring | null
Its cover art on juicewrld.io.
hasAudioboolean
It plays on juicewrld.io.
hasLyricsboolean
Its page shows lyrics.

GET/songs/{id}

One song with everything its page states: other titles, credits linked to people, dates, BPM and key, notes, and every version of it with the studio sessions behind them.

Parameters

idrequired
The song's id, as in its page's address (/song/lucid-dreams-gbgr).
Request
curl "https://juicewrld.io/api/v1/songs/lucid-dreams-gbgr"
Response
{  "data": {    "id": "lucid-dreams-gbgr",    "title": "Lucid Dreams",    "url": "https://juicewrld.io/song/lucid-dreams-gbgr",    "status": "released",    "era": "GBGR",    "project": "goodbye-and-good-riddance",    "family": "lucid-dreams",    "versionLabel": "Goodbye & Good Riddance · track 3",    "dates": {      "recorded": { "date": "2017-06-13", "text": "June 13, 2017" },      "previewed": null,      "released": { "date": "2018-05-23", "text": "May 23, 2018" },      "surfaced": null    },    "duration": { "seconds": 239, "text": "3:59" },    "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",    "hasAudio": true,    "hasLyrics": true,    "altTitles": ["lucid dreams (forget me)", "Lucid Dreams (Pt. 1)"],    "statusLabel": "Released",    "artists": "Juice WRLD",    "eraName": "Goodbye & Good Riddance",    "projectName": "Goodbye & Good Riddance",    "type": "Album & Single Track",    "quality": null,    "bpm": 84,    "key": "F# Minor",    "credits": {      "producers": [        {          "name": "Dominic Miller",          "slug": "dominic-miller",          "url": "https://juicewrld.io/people/dominic-miller"        },        {          "name": "Nick Mira",          "slug": "nick-mira",          "url": "https://juicewrld.io/people/nick-mira"        }      ],      "engineers": [        {          "name": "Colin Leonard",          "slug": "colin-leonard",          "url": "https://juicewrld.io/people/colin-leonard"        },        {          "name": "Rich Keller",          "slug": "rich-keller",          "url": "https://juicewrld.io/people/rich-keller"        },        // 1 more      ]    },    "location": "Enviyon Entertainment Recording Studio, Country Club Hills, Chicago, IL.",    "notes": [      "Song was originally called 'Remember Me'.",      "Originally released on SoundCloud & YouTube as track #2 on 'JuiceWRLD 9 9 9', later released on Streaming Platforms as a single under the title 'Lucid Dreams (Forget Me)', it was reissued for the second time on Streaming Platforms as a single under the title 'Lucid Dreams' as the second lead single for 'Goodbye & Good Riddance', then it was reissued as track #3 when the album released. A Remix of this track exists containing a different vocal arrangement and a verse from Lil Uzi Vert. Samples Sting's 'Shape Of My Heart'."    ],    "obtained": false,    "remaster": false,    "role": "release",    "roleLabel": "Release",    "main": true,    "versions": {      "url": "https://juicewrld.io/versions/lucid-dreams",      "title": "Lucid Dreams",      "count": 10,      "entries": [        {          "id": "lucid-dreams-gbgr",          "title": "Lucid Dreams",          "label": "Goodbye & Good Riddance · track 3",          "role": "release",          "roleLabel": "Release",          "status": "released",          "main": true,          "url": "https://juicewrld.io/song/lucid-dreams-gbgr"        },        {          "id": "lucid-dreams-jw999",          "title": "lucid dreams (forget me)",          "label": "JuiceWRLD 9 9 9 · track 2",          "role": "appearance",          "roleLabel": "Also released on",          "status": "released",          "main": false,          "url": "https://juicewrld.io/song/lucid-dreams-jw999"        },        // 8 more      ],      "sessions": [        {          "id": "lucid-dreams-jw999-sessions",          "title": "lucid dreams (forget me)",          "label": "Stems for the JuiceWRLD 9 9 9 release",          "role": "session-stems",          "roleLabel": "Multi-track stems",          "status": "session",          "main": false,          "url": "https://juicewrld.io/song/lucid-dreams-jw999-sessions",          "holds": ["lucid-dreams-jw999"]        },        {          "id": "lucid-dreams-jw999-sessions-2",          "title": "lucid dreams (forget me)",          "label": "Trackouts for the JuiceWRLD 9 9 9 release",          "role": "session-trackouts",          "roleLabel": "Trackouts",          "status": "session",          "main": false,          "url": "https://juicewrld.io/song/lucid-dreams-jw999-sessions-2",          "holds": ["lucid-dreams-jw999"]        }      ],      "alsoIn": []    }  }}
Song fields added here
altTitlesstring[]
Other names it has gone by.
statusLabelstring
The status in the site's words ("Released").
artistsstring
Juice WRLD and any features, as credited.
eraName, projectNamestring | null
The era's and the project's names.
typestring | null
The tracker's description of it ("Album & Single Track").
qualitystring | null
Of the best file that surfaced: lossless, cdq, hq, lq or session.
bpm, keynumber | null, string | null
Tempo and key ("F# Minor").
creditsobject
producers and engineers, each a list of Credits.
locationstring | null
Where it was recorded.
notesstring[]
The tracker's notes on it.
obtainedboolean
An unsurfaced song a leaker or seller is known to hold.
remasterboolean
What plays on the site is a fan remaster standing in for it, not its own recording.
role, roleLabelstring
What this entry is in its family (release, appearance, demo, a kind of session) and the site's word for it.
mainboolean
The family's main entry: the album track, else the latest leak.
versionsobject
url (the page of every version, null for a song with one), title, count, entries (every version, this one included), sessions (studio sessions: files behind a version, never versions, with holds, the versions each is for) and alsoIn (other families a session edit is a version of).

GET/eras

The eras in order, each with its dates, cover, counts and releases.

Request
curl "https://juicewrld.io/api/v1/eras"
Response
{  "data": [    {      "code": "JUTE",      "slug": "jute",      "name": "JUICED UP THE EP",      "shortName": "JUTE",      "url": "https://juicewrld.io/eras/jute",      "start": { "date": "2014", "text": "2014" },      "end": { "date": "2016-01-31", "text": "Jan 31, 2016" },      "description": null,      "cover": "https://juicewrld.io/art/0909d7c223ecba4e75269fef296cda04fec68cb5.jpg",      "counts": {        "songs": 49,        "versions": 49,        "studioSessions": 6,        "byStatus": {          "released": 15,          "leaked": 27,          "unsurfaced": 7,          "misc": 0        }      },      "projects": ["juiced-up-the-ep"]    },    {      "code": "AFF",      "slug": "aff",      "name": "affliction",      "shortName": "AFF",      "url": "https://juicewrld.io/eras/aff",      "start": { "date": "2016-01-31", "text": "Jan 31, 2016" },      "end": { "date": "2017-02-17", "text": "Feb 17, 2017" },      "description": null,      "cover": "https://juicewrld.io/art/9f647c1c59ed6fdcb1ba366a481d274af686e7eb.jpg",      "counts": {        "songs": 51,        "versions": 52,        "studioSessions": 0,        "byStatus": {          "released": 17,          "leaked": 24,          "unsurfaced": 6,          "misc": 5        }      },      "projects": ["the-twilight-zone", "affliction"]    },    // 9 more  ]}
Era fields
code, slugstring
"GBGR" and "gbgr": /eras/{code} takes either.
name, shortNamestring
"Goodbye & Good Riddance", "GB&GR".
urlstring
Its page on juicewrld.io.
start, endDate
When it began and ended.
descriptionstring | null
The site's words on it.
coverstring | null
Its cover art.
countsobject
songs (every version of one song counted once), versions, studioSessions and byStatus.
projectsstring[]
Its albums, EPs and singles by release date, as slugs. /eras/{code} adds them written out as releases.

GET/eras/{code}

One era, with its releases written out.

Parameters

coderequired
The era's code or slug, in any case (GBGR, gbgr, jw999).
Request
curl "https://juicewrld.io/api/v1/eras/gbgr"
Response
{  "data": {    "code": "GBGR",    "slug": "gbgr",    "name": "Goodbye & Good Riddance",    "shortName": "GB&GR",    "url": "https://juicewrld.io/eras/gbgr",    "start": { "date": "2017-12-22", "text": "Dec 22, 2017" },    "end": { "date": "2018-05-23", "text": "May 23, 2018" },    "description": null,    "cover": "https://juicewrld.io/art/b5b7f6fed17d6f63db6dfc7041687add786c56e6.jpg",    "counts": {      "songs": 345,      "versions": 444,      "studioSessions": 262,      "byStatus": {        "released": 26,        "leaked": 386,        "unsurfaced": 32,        "misc": 0      }    },    "projects": [      "goodbye-and-good-riddance",      "goodbye-and-good-riddance-first-reissue",      "goodbye-and-good-riddance-second-reissue",      "goodbye-and-good-riddance-anniversary-edition",      "goodbye-and-good-riddance-5-year-anniversary-edition"    ],    "releases": [      {        "slug": "goodbye-and-good-riddance",        "name": "Goodbye & Good Riddance",        "kind": "album",        "era": "GBGR",        "url": "https://juicewrld.io/albums/goodbye-and-good-riddance",        "released": { "date": "2018-05-23", "text": "May 23, 2018" },        "description": null,        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "trackCount": 15,        "editionOf": null,        "editions": [          "goodbye-and-good-riddance-first-reissue",          "goodbye-and-good-riddance-second-reissue",          "goodbye-and-good-riddance-anniversary-edition",          "goodbye-and-good-riddance-5-year-anniversary-edition"        ]      },      {        "slug": "goodbye-and-good-riddance-first-reissue",        "name": "Goodbye & Good Riddance (First Reissue)",        "kind": "single",        "era": "GBGR",        "url": "https://juicewrld.io/albums/goodbye-and-good-riddance-first-reissue",        "released": { "date": "2018-07-10", "text": "Jul 10, 2018" },        "description": null,        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "trackCount": 1,        "editionOf": "goodbye-and-good-riddance",        "editions": []      },      // 3 more    ]  }}

GET/projects

Every album, EP, single and collection in release order, all in one answer: there are a few dozen.

Parameters

kindoptional
Any of album, ep, single, collection or misc, comma-separated.
eraoptional
Era codes or slugs, comma-separated.
Request
curl "https://juicewrld.io/api/v1/projects?kind=album"
Response
{  "data": [    {      "slug": "goodbye-and-good-riddance",      "name": "Goodbye & Good Riddance",      "kind": "album",      "era": "GBGR",      "url": "https://juicewrld.io/albums/goodbye-and-good-riddance",      "released": { "date": "2018-05-23", "text": "May 23, 2018" },      "description": null,      "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",      "trackCount": 15,      "editionOf": null,      "editions": [        "goodbye-and-good-riddance-first-reissue",        "goodbye-and-good-riddance-second-reissue",        "goodbye-and-good-riddance-anniversary-edition",        "goodbye-and-good-riddance-5-year-anniversary-edition"      ]    },    {      "slug": "up-next-session-juice-wrld",      "name": "Up Next Session: Juice WRLD",      "kind": "album",      "era": "WOD",      "url": "https://juicewrld.io/albums/up-next-session-juice-wrld",      "released": { "date": "2018-07-03", "text": "Jul 3, 2018" },      "description": null,      "cover": "https://juicewrld.io/art/eb73c6a204686b694090f388bb15d6e47726257a.jpg",      "trackCount": 3,      "editionOf": null,      "editions": []    },    // 7 more  ],  "meta": { "total": 9 }}
Project fields
slugstring
For /projects/{slug}. Its page is /albums/{slug}.
namestring
The release's name.
kindstring
album, ep, single, collection or misc.
erastring | null
The era's code.
urlstring
Its page on juicewrld.io.
releasedDate | null
When it came out.
descriptionstring | null
The site's words on it.
coverstring | null
Its cover art.
trackCountnumber
Its tracks. /projects/{slug} lists them as tracks, in order.
editionOf, editionsstring | null, string[]
The release this is an edition of, and this release's own editions.

GET/projects/{slug}

One release and its tracks, in order.

Parameters

slugrequired
As in the album page's address (/albums/goodbye-and-good-riddance).
Request
curl "https://juicewrld.io/api/v1/projects/goodbye-and-good-riddance"
Response
{  "data": {    "slug": "goodbye-and-good-riddance",    "name": "Goodbye & Good Riddance",    "kind": "album",    "era": "GBGR",    "url": "https://juicewrld.io/albums/goodbye-and-good-riddance",    "released": { "date": "2018-05-23", "text": "May 23, 2018" },    "description": null,    "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",    "trackCount": 15,    "editionOf": null,    "editions": [      "goodbye-and-good-riddance-first-reissue",      "goodbye-and-good-riddance-second-reissue",      "goodbye-and-good-riddance-anniversary-edition",      "goodbye-and-good-riddance-5-year-anniversary-edition"    ],    "tracks": [      {        "id": "intro-gbgr",        "title": "Intro (feat. ToiNoStory)",        "url": "https://juicewrld.io/song/intro-gbgr",        "status": "released",        "era": "GBGR",        "project": "goodbye-and-good-riddance",        "family": "intro",        "versionLabel": "Goodbye & Good Riddance · track 1",        "dates": {          "recorded": null,          "previewed": null,          "released": { "date": "2018-05-23", "text": "May 23, 2018" },          "surfaced": null        },        "duration": { "seconds": 75, "text": "1:15" },        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "hasAudio": true,        "hasLyrics": true      },      {        "id": "all-girls-are-the-same-gbgr",        "title": "All Girls Are The Same",        "url": "https://juicewrld.io/song/all-girls-are-the-same-gbgr",        "status": "released",        "era": "GBGR",        "project": "goodbye-and-good-riddance",        "family": "all-girls-are-the-same",        "versionLabel": "Goodbye & Good Riddance · track 2",        "dates": {          "recorded": { "date": "2017-12-14", "text": "December 14, 2017" },          "previewed": null,          "released": { "date": "2018-05-23", "text": "May 23, 2018" },          "surfaced": null        },        "duration": { "seconds": 165, "text": "2:45" },        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "hasAudio": true,        "hasLyrics": true      },      // 13 more    ]  }}

GET/people

Everyone credited as a producer or engineer, most songs first.

Parameters

qoptional
Part of a name. Spaces and punctuation don't matter (cnote finds C-Note).
limitoptional
How many to a page. 1 to 500. Default 100.
offsetoptional
How many to skip. meta.next and meta.prev hold the neighbouring pages' addresses, so you rarely set it yourself. Default 0.
Request
curl "https://juicewrld.io/api/v1/people?limit=2"
Response
{  "data": [    {      "slug": "max-lord",      "name": "Max Lord",      "url": "https://juicewrld.io/people/max-lord",      "songs": 504,      "versions": 1033,      "produced": 26,      "engineered": 504,      "released": 112,      "firstEra": "GBGR",      "lastEra": "POST"    },    {      "slug": "nick-mira",      "name": "Nick Mira",      "url": "https://juicewrld.io/people/nick-mira",      "songs": 232,      "versions": 415,      "produced": 232,      "engineered": 0,      "released": 57,      "firstEra": "AFF",      "lastEra": "POST"    }  ],  "meta": {    "total": 679,    "limit": 2,    "offset": 0,    "next": "https://juicewrld.io/api/v1/people?limit=2&offset=2",    "prev": null  }}
Person fields
slugstring
For /people/{slug}. Their page is /people/{slug}.
namestring
As credited.
urlstring
Their page on juicewrld.io.
songsnumber
Songs credited on, every version of one song counted once.
versionsnumber
Versions credited on, studio sessions not counted.
produced, engineered, releasednumber
Songs produced, engineered, and released.
firstEra, lastErastring | null
The first and last era they're credited in.

GET/people/{slug}

One person and every entry they're credited on, each with their roles on it (producer, engineer).

Parameters

slugrequired
As in their page's address (/people/max-lord). An old spelling of a name answers as the person it moved to.
Request
curl "https://juicewrld.io/api/v1/people/max-lord"
Response
{  "data": {    "slug": "max-lord",    "name": "Max Lord",    "url": "https://juicewrld.io/people/max-lord",    "songs": 504,    "versions": 1033,    "produced": 26,    "engineered": 504,    "released": 112,    "firstEra": "GBGR",    "lastEra": "POST",    "credits": [      {        "id": "end-of-the-road-gbgr",        "title": "End Of The Road",        "url": "https://juicewrld.io/song/end-of-the-road-gbgr",        "status": "released",        "era": "GBGR",        "project": "goodbye-and-good-riddance",        "family": "end-of-the-road",        "versionLabel": "Goodbye & Good Riddance · track 14",        "dates": {          "recorded": { "date": "2018-01-19", "text": "January 19, 2018" },          "previewed": null,          "released": { "date": "2018-05-23", "text": "May 23, 2018" },          "surfaced": null        },        "duration": { "seconds": 163, "text": "2:43" },        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "hasAudio": true,        "hasLyrics": true,        "roles": ["engineer"]      },      {        "id": "i-ll-be-fine-gbgr",        "title": "I'll Be Fine",        "url": "https://juicewrld.io/song/i-ll-be-fine-gbgr",        "status": "released",        "era": "GBGR",        "project": "goodbye-and-good-riddance",        "family": "ill-be-fine",        "versionLabel": "Goodbye & Good Riddance · track 15",        "dates": {          "recorded": { "date": "2018-01-19", "text": "January 19, 2018" },          "previewed": null,          "released": { "date": "2018-05-23", "text": "May 23, 2018" },          "surfaced": null        },        "duration": { "seconds": 244, "text": "4:04" },        "cover": "https://juicewrld.io/art/3d1c717a58b16b605fdd29464b9a0b376dfb2680.jpg",        "hasAudio": true,        "hasLyrics": true,        "roles": ["engineer"]      },      // 1,149 more    ]  }}

GET/stats

The catalogue's totals, as /stats shows them: songs, versions and studio sessions by status, releases, people, and plays on the site, recounted every 10 minutes.

Request
curl "https://juicewrld.io/api/v1/stats"

Terms

  • Cache what you fetch. The catalogue changes a few times a day: revalidate with the ETag instead of fetching again in full, and don't poll faster than the answers' max-age.
  • Credit juicewrld.io with a link wherever you show the data.
  • Send listeners to a song's page (its url) to play it. The API has no audio.
  • Stay under the limit. It's per address, and an address that keeps going past it may be limited further.
  • The API is free and comes as it is. juicewrld.io is an unofficial fan archive, not affiliated with Grade A Productions, Interscope Records or the Juice WRLD estate; dates and credits are its best knowledge, and corrections go through each song's page.