The deepest music intelligence API ever built.

Every song is a universe of data. We measure 190+ dimensions of it — from the exact timestamps of every kick drum hit to the emotional arc across three minutes of sound. All of it free to explore.

14 songs analyzed · 190+ fields each · Growing weekly

Pick a song. See what we know.

Profile
Profile
Profile
Profile
Profile
Profile

Color

This song is #E111E1

L 0.640 · C 0.289 · H 328.3

Rhythm

First 30s — kick, snare, hi-hat

137 kicks · 43 snares · 44 hi-hats

Energy

LRA: 4.82 dB · Aggressiveness: 0.16

Harmony

Chord segments — first 30s

19 unique chords · 21 key changes

Emotion

Valence480
Energy290
Nostalgia780
Melancholy630
Mystery180
Triumph580
Sensuality120
Inspiration680

Dominant: somber optimism

This is a fraction of the 190+ fields available for every song. Each song profile shows everything — and the complete dataset is downloadable as JSON.

See the full profile →

What you can build

Real use cases, not hypotheticals.

Visuals that move with the music

A VJ feeds kick drum timestamps into TouchDesigner. Every kick triggers a floor shake. Every snare fires a strobe. The hi-hat drives particle shimmer. The energy curve controls the overall brightness.

kick_timestamps, snare_timestamps, hihat_timestamps, energy_curve, beat_timestamps

TouchDesigner · Notch · Resolume · Unreal Niagara

A DJ app that knows what mixes

A developer builds a mixing tool. It suggests tracks in compatible keys using Camelot positions, matches BPMs within ±3, and shows which songs are spectrally similar so transitions sound seamless.

bpm, camelot_position, key, mode, similarity scores

Ableton · Serato · Traktor · Custom apps

An AI that understands how music feels

A startup builds a recommendation engine. Instead of “users who liked X also liked Y,” it matches songs by measured emotional profile — high nostalgia + moderate melancholy for a rainy day playlist, high triumph + high energy for workouts.

valence, arousal, nostalgia_index, melancholy_index, triumph_index, aggressiveness_index, energy_mean

TensorFlow · PyTorch · LangChain · Any ML pipeline

Find the perfect song for a scene

A music supervisor needs something that feels like “Teardrop” by Massive Attack for a thriller scene but isn't that track. They search by emotional profile + spectral similarity + energy arc and get ranked alternatives with explanation.

similarity network, emotional dimensions, energy_curve, chord_progression_complexity

Film · TV · Advertising · Games · Sync licensing

How MusicArk compares

In November 2024, Spotify restricted access to their Audio Features and Audio Analysis API endpoints. Developers who built tools around BPM, key, and energy data lost access. Here's where the landscape stands now.

Competitor rows reflect public documentation as of March 2026 — verify before publishing.

Feature Spotify Soundcharts Cyanite MusicArk
StatusRestricted (Nov 2024)ActiveActiveActive
Data depth~13 audio featuresAudio features (BPM, key, energy, etc.)AI-generated categorical tags190+ measured numerical fields
Data typeOpaque 0–1 scoresNumerical scoresCategorical (mood, genre, instruments)Numerical measurements from audio signal
BPM / Tempo + tempo map, beat timestamps, downbeat timestamps
Key / Mode + key changes with timestamps, chord progression with timing
EnergySingle scoreSingle scoreTag-basedPer-segment energy curve (375+ points), LRA, LUFS, true peak
Stem separation Demucs 4-stem (vocals, drums, bass, other)
Beat timestampsPreviously via Audio Analysis Every beat, downbeat, and onset
Chord progression Labels + timestamps per 0.5s segment
Drum classification Kick, snare, hi-hat separated with timestamps
FFT spectrum 256 bands × 300 frames
Emotional profileValence (one score)ValenceMood tags8 dimensions on a 1–1000 scale
SimilaritySimilarity searchMulti-dimensional: spectral, emotional, color, temporal
Vocal analysisActivity map, energy curve, pitch, vibrato
Color identityOKLCH color from 10 audio dimensions
Data philosophyRestrictedGatedGated (custom pricing)All data free on song pages. API for batch access.

Every field listed above is available for free on each song's profile page. The API adds batch access, filtering, and programmatic endpoints.

Sample API response

Real values from the database when the catalog is connected — same field names as /songs/{slug}/data.json. Long arrays are truncated for display.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
{
  "song": {
    "title": "HUMBLE",
    "artist": "Kendrick Lamar",
    "duration_seconds": 177
  },
  "temporal": {
    "bpm": 152,
    "beat_timestamps": [
      0.0928798185941043,
      0.464399092970522,
      0.812698412698413,
      1.23065759637188,
      1.67183673469388,
      2.11301587301587,
      2.53097505668934,
      2.90249433106576,
      3.27401360544218,
      3.69197278911565,
      4.10993197278912,
      4.48145124716553
    ],
    "groove_stability": 0.593229733760239,
    "rhythmic_density": 0.85055737704918
  },
  "harmonic": {
    "key": "Db",
    "mode": "major",
    "chord_labels": [
      "A#",
      "C#",
      "D#",
      "D#",
      "D#",
      "D#m",
      "D#",
      "D#",
      "D#m",
      "D#",
      "D#",
      "Cm",
      "D#m",
      "D#",
      "A#m",
      "Cm"
    ],
    "chord_progression_complexity": 0.00577276305431645,
    "key_change_timestamps": [
      3.994,
      35.944,
      51.92,
      63.901,
      71.889,
      83.87,
      87.864,
      95.852
    ]
  },
  "energy": {
    "loudness_range_lra": 3.26,
    "true_peak_dbtp": -1,
    "aggressiveness_index": 0.341608736573608,
    "energy_mean": 0.964203012359474,
    "energy_curve": [
      0.371345407822553,
      0.800939055050121,
      0.288967356962316,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      0.862059284658993,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1
    ]
  },
  "stems": {
    "kick_timestamps": [
      7.63733333333333,
      9.03466666666667,
      9.42933333333333,
      9.83466666666667,
      10.432,
      10.8373333333333,
      11.0293333333333,
      12.2346666666667,
      12.6293333333333,
      13.0346666666667,
      13.2266666666667,
      13.632
    ],
    "snare_timestamps": [
      1.6,
      3.2,
      4.81066666666667,
      35.6266666666667,
      75.0293333333333
    ],
    "hihat_timestamps": [
      8.032,
      8.42666666666667,
      8.832,
      9.33333333333333,
      9.632,
      10.0266666666667,
      10.24,
      10.6346666666667,
      11.2213333333333,
      11.6266666666667,
      12.032,
      12.4373333333333
    ]
  },
  "color": {
    "hex": "#3A8CDD",
    "oklch_lightness": 0.6279,
    "oklch_chroma": 0.1467,
    "oklch_hue": 251.36
  },
  "metadata": {
    "field_count": 390,
    "analysis_version": "2.0"
  }
}

This is a subset. The full response includes time-series arrays with thousands of data points. See the complete data inventory or full profile →

190+ dimensions of every song

Organized into 12 categories. Scalars, time-series, embeddings, and more.

Live from this song

A Change Is Gonna Come Sam Cooke

First 30s — kick, snare, hi-hat

137 kicks · 43 snares · 44 hi-hats

18 fields in Stems

  • kick_timestamps

    Every kick drum hit (seconds).

  • snare_timestamps

    Snare / backbeat hits.

  • hihat_timestamps

    Hi-hat / cymbal hits.

  • drums_energy_curve

    Drum stem loudness trace.

  • vocals_energy_curve

    Vocal stem energy trace.

  • bass_energy_curve

    Bass stem energy trace.

Three ways to get the data

Browse

Visit any song profile. Every field is visible on the page. No sign-up, no API key.

All songs →

Download

Every song has a complete JSON file with all 190+ fields. Direct download, no authentication.

/songs/humble-kendrick-lamar/data.json

API

Programmatic access. Filter, search, batch retrieve. Built for applications that need more than one song at a time.

Join the waitlist →

For developers

curl -s "https://www.musicark.dev/songs/humble-kendrick-lamar/data.json" | head -c 400
import json, urllib.request

url = f"https://www.musicark.dev/songs/humble-kendrick-lamar/data.json"
with urllib.request.urlopen(url) as r:
    song = json.load(r)
print(song["temporal"]["bpm"], len(song["stems"]["kick_timestamps"]))
const res = await fetch(
  `https://www.musicark.dev/songs/humble-kendrick-lamar/data.json`
);
const song = await res.json();
console.log(song.temporal.bpm, song.stems.kick_timestamps.length);

Available now (no API key)

GET /songs/{slug}/data.json — complete song JSON

Launching with the API

  • GET /v1/songs — list catalog
  • GET /v1/songs/:slug — full profile
  • GET /v1/songs/:slug/fft — FFT spectrum
  • GET /v1/songs/:slug/beats — beat & onset times
  • GET /v1/songs/:slug/chords — chords + times
  • GET /v1/songs/:slug/stems — stem & drum analysis
  • GET /v1/songs/:slug/similar — similar songs
  • GET /v1/search — filter by attributes

Pricing

All song data is free to browse on the site. The API adds programmatic access, filtering, and batch endpoints.

Launching 2026

Developer

TBD / month

  • Authenticated API key
  • Filtering, search, batch retrieval
  • Rate limits (e.g. 1,000 req/mo)
Join the waitlist →
Launching 2026

Professional

Custom

  • Unlimited access & priority
  • High-bandwidth endpoints (FFT, stems)
  • SLA & onboarding
Get in touch →

MusicArk believes music intelligence should be open. Every data point is free on profiles and as downloadable JSON. The API adds batch access, search, and automation.

Start now

  1. 1
  2. 2
    Download the complete dataset for any song

    JSON file — every field, every array. Free.

  3. 3
    Join the API waitlist

    For programmatic access across the catalog.

Questions? api@musicark.dev

Full API documentation →