DEVELOPERS

LIGHT
BACK TO SEARCH
254,380,247 TRACKS. KEY, BPM, POPULARITY, SPEECHINESS, INSTRUMENTALNESS, TIME SIGNATURE. FREE API ACCESS.

GET YOUR API KEY

GET KEY
API KEY
API SECRET
RATE LIMIT

AUTHENTICATION

PASS YOUR KEY AS AN X-API-KEY HEADER OR api_key QUERY PARAMETER.
curl -H "X-Api-Key: YOUR_KEY" https://everysong.site/api/search?q=radiohead
curl "https://everysong.site/api/search?q=radiohead&api_key=YOUR_KEY"

ENDPOINTS

GET /api/search
PARAMTYPEDESCRIPTION
qSTRINGFULL TEXT SEARCH (ARTIST OR TITLE)
keySTRINGKEY NAME, COMMA-SEPARATED. E.G. "C MAJOR" OR "Ab MINOR,C MAJOR"
bpmMinNUMBERMINIMUM BPM
bpmMaxNUMBERMAXIMUM BPM
popMinINTMINIMUM POPULARITY (0-100)
popMaxINTMAXIMUM POPULARITY (0-100)
speechMaxFLOATMAXIMUM SPEECHINESS (0.0-1.0)
instMinFLOATMINIMUM INSTRUMENTALNESS (0.0-1.0)
instMaxFLOATMAXIMUM INSTRUMENTALNESS (0.0-1.0)
timeSigINTTIME SIGNATURE (3, 4, 5, ETC.)
alphaSTRINGFILTER BY FIRST LETTER. "A"-"Z", "0-9", OR "SYM"
alphaFieldSTRINGWHICH FIELD TO FILTER: "artist" (DEFAULT) OR "title"
sortSTRINGSORT BY: artist, title, bpm, key, popularity, speechiness, instrumentalness, time_signature
dirSTRINGasc OR desc
pageINTPAGE NUMBER (0-BASED)
limitINTRESULTS PER PAGE (MAX 200)
GET /api/pitch-match
FIND TRACKS THAT CAN BE PITCH-SHIFTED TO MATCH A TARGET KEY AND BPM.
PARAMTYPEDESCRIPTION
keySTRINGTARGET KEY. REQUIRED.
bpmMinNUMBERTARGET BPM MIN. REQUIRED (OR bpmMax).
bpmMaxNUMBERTARGET BPM MAX.
rangeINTSEMITONE RANGE 1-10 (DEFAULT 3)
limitINTRESULTS PER SHIFT (MAX 50, DEFAULT 10)
qSTRINGFILTER BY TEXT
popMinINTMINIMUM POPULARITY
speechMaxFLOATMAXIMUM SPEECHINESS
instMinFLOATMINIMUM INSTRUMENTALNESS
timeSigINTTIME SIGNATURE
GET /api/key-info?api_key=YOUR_KEY
CHECK YOUR KEY STATUS AND USAGE.

RESPONSE FORMAT

{
  "total": 1234,
  "tracks": [
    {
      "id": 1,
      "artist": "RADIOHEAD",
      "title": "EVERYTHING IN ITS RIGHT PLACE",
      "bpm": 127.543,
      "key": "Db Minor",
      "popularity": 68,
      "speechiness": 0.041,
      "instrumentalness": 0.312,
      "time_signature": 4
    }
  ],
  "page": 0,
  "limit": 100,
  "hasMore": true
}

RATE LIMITS

1,000 REQUESTS PER DAY. RESETS AT MIDNIGHT UTC.