254,380,247 TRACKS. KEY, BPM, POPULARITY, SPEECHINESS, INSTRUMENTALNESS, TIME SIGNATURE. FREE API ACCESS.
GET YOUR API 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
| PARAM | TYPE | DESCRIPTION |
| q | STRING | FULL TEXT SEARCH (ARTIST OR TITLE) |
| key | STRING | KEY NAME, COMMA-SEPARATED. E.G. "C MAJOR" OR "Ab MINOR,C MAJOR" |
| bpmMin | NUMBER | MINIMUM BPM |
| bpmMax | NUMBER | MAXIMUM BPM |
| popMin | INT | MINIMUM POPULARITY (0-100) |
| popMax | INT | MAXIMUM POPULARITY (0-100) |
| speechMax | FLOAT | MAXIMUM SPEECHINESS (0.0-1.0) |
| instMin | FLOAT | MINIMUM INSTRUMENTALNESS (0.0-1.0) |
| instMax | FLOAT | MAXIMUM INSTRUMENTALNESS (0.0-1.0) |
| timeSig | INT | TIME SIGNATURE (3, 4, 5, ETC.) |
| alpha | STRING | FILTER BY FIRST LETTER. "A"-"Z", "0-9", OR "SYM" |
| alphaField | STRING | WHICH FIELD TO FILTER: "artist" (DEFAULT) OR "title" |
| sort | STRING | SORT BY: artist, title, bpm, key, popularity, speechiness, instrumentalness, time_signature |
| dir | STRING | asc OR desc |
| page | INT | PAGE NUMBER (0-BASED) |
| limit | INT | RESULTS PER PAGE (MAX 200) |
GET /api/pitch-match
FIND TRACKS THAT CAN BE PITCH-SHIFTED TO MATCH A TARGET KEY AND BPM.
| PARAM | TYPE | DESCRIPTION |
| key | STRING | TARGET KEY. REQUIRED. |
| bpmMin | NUMBER | TARGET BPM MIN. REQUIRED (OR bpmMax). |
| bpmMax | NUMBER | TARGET BPM MAX. |
| range | INT | SEMITONE RANGE 1-10 (DEFAULT 3) |
| limit | INT | RESULTS PER SHIFT (MAX 50, DEFAULT 10) |
| q | STRING | FILTER BY TEXT |
| popMin | INT | MINIMUM POPULARITY |
| speechMax | FLOAT | MAXIMUM SPEECHINESS |
| instMin | FLOAT | MINIMUM INSTRUMENTALNESS |
| timeSig | INT | TIME 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.