EVERY SONG

FREE API ACCESS, KEY & BPM

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
alphaSTRINGFILTER BY FIRST LETTER. "A"-"Z", "0-9", OR "SYM"
alphaFieldSTRINGWHICH FIELD TO FILTER: "artist" (DEFAULT) OR "title"
sortSTRINGSORT BY: artist, title, bpm, key
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
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",
    }
  ],
  "page": 0,
  "limit": 100,
  "hasMore": true
}

RATE LIMITS

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