Discover/hooktheory.com API
live

hooktheory.com APIwww.hooktheory.com

Search 65,000+ songs in Hooktheory's TheoryTab database. Retrieve chords, melody notes, keys, tempos, and time signatures by song section.

Endpoints
3
Updated
3mo ago
Try it
Maximum number of results to return (max 200)
Search keyword (song name, artist, etc.)
Offset for pagination
api.parse.bot/scraper/6b249d06-c1b6-4e17-ad83-675d92275ddc/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/6b249d06-c1b6-4e17-ad83-675d92275ddc/search_songs?limit=3&query=let+it+be' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 3 totalclick to expand

Search for songs in the TheoryTab database by keyword. Returns matching songs with basic chord information, key, and section type. Results are paginated via offset and limit.

Input
ParamTypeDescription
limitintegerMaximum number of results to return (max 200)
queryrequiredstringSearch keyword (song name, artist, etc.)
offsetintegerOffset for pagination
Response
{
  "type": "object",
  "fields": {
    "limit": "integer, max results requested",
    "query": "string, the search query echoed back",
    "offset": "integer, current pagination offset",
    "results": "array of objects with id, song, artist, section, key, youtube_id, chords_absolute, chords_relative",
    "total_hits": "integer, total number of matching results"
  },
  "sample": {
    "data": {
      "limit": 3,
      "query": "let it be",
      "offset": 0,
      "results": [
        {
          "id": 703,
          "key": "C major",
          "song": "Let It Be",
          "artist": "The Beatles",
          "section": "Verse",
          "youtube_id": "CGj85pVzRJs",
          "chords_absolute": "qqCqqGqqAmqqFqqDmqqCqqGqqFqqCqqDmqqCqq",
          "chords_relative": "qqIqqVqqwjqqIVqqjjqqIqqVqqIVqqIqqjjqqIqq"
        }
      ],
      "total_hits": 3
    },
    "status": "success"
  }
}

About the hooktheory.com API

The Hooktheory TheoryTab API gives programmatic access to music theory data for over 65,000 songs across 3 endpoints. The search_songs endpoint returns chord and key information for matching tracks, while get_song_sections lists every section (verse, chorus, bridge, etc.) and get_section_notes delivers the full breakdown: chords with root, type, and inversion, melody notes with scale degree and octave, time signatures, and BPM data.

Search and Navigation

The search_songs endpoint accepts a query string (song name, artist name, or any keyword) and returns an array of matching results. Each result includes the song and artist names, a section label, key, and both absolute and relative chord representations. Pagination is controlled via limit (up to 200) and offset, and the total_hits field tells you the full match count for multi-page traversal.

Retrieving Song Sections

Once you have a target song, get_song_sections maps the artist and song URL slugs (e.g. the-beatles, let-it-be) to a list of sections. Each entry in the sections array carries a section_id and a human-readable section_name. The endpoint also returns the canonical TheoryTab URL for the song. These section IDs are the required input for the next step.

Full Music Theory Detail

Passing a section_id to get_section_notes returns the densest data in the API. The chords array contains objects with root, type, inversion, beat, duration, and harmony annotations including applied, adds, omits, alterations, suspensions, and borrowed. The notes array represents the melody line, with each note carrying scale_degree, octave, beat, duration, and an is_rest flag. Key changes are tracked in the keys array (each entry has beat, tonic, and scale), tempo shifts in tempos (with bpm, swingFactor, and swingBeat), and meter changes in meters (with numBeats and beatUnit). A youtube object links to a synced video clip when available.

Coverage and Structure

Data is organized by section rather than by full song, which reflects how TheoryTab's database is structured — different sections of the same song can have different keys, tempos, and meters. The end_beat field on get_section_notes responses marks the total length of the section in beats, useful for sequencing or rendering.

Common use cases
  • Build a chord progression explorer that searches songs by artist and displays relative chords for music students
  • Analyze borrowed chords and modal mixture across a genre by querying chords.borrowed fields on section data
  • Generate MIDI or sheet music from melody notes arrays including scale degree, octave, and duration
  • Study how key signatures change mid-song using the beat-stamped keys array from get_section_notes
  • Create a tempo and time signature database by aggregating tempos.bpm and meters.numBeats across thousands of songs
  • Map YouTube sync windows to specific song sections using youtube.sync_start and sync_end for annotated playback
  • Compare verse versus chorus harmony for a catalog of songs by fetching all sections and diffing their chord arrays
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Hooktheory have an official developer API?+
Hooktheory offers a public REST API documented at https://www.hooktheory.com/api/trends/docs for their Trends product, which covers chord progression statistics. The TheoryTab song-level data (full chord and melody detail by section) is not part of that official API.
What does `get_section_notes` return for chords beyond basic root and type?+
Each chord object includes root, type, inversion, beat, and duration, plus harmony extensions: applied (secondary dominant target), adds, omits, alterations, suspensions, and borrowed (modal mixture). The is_rest flag marks beats with no chord. This level of detail is only available through get_section_notes using a section_id obtained from get_song_sections.
Can I retrieve audio files or sheet music PDFs for a song?+
No audio files or PDFs are returned. The API covers structured theory data: chord arrays, melody note arrays, key and meter objects, tempo values, and YouTube sync metadata. You can fork this API on Parse and revise it to add an endpoint if your use case involves additional media formats.
Is artist or song metadata like genre, release year, or album available?+
Not currently. The API returns song, artist, section, key, and YouTube ID from search results, but does not expose genre, release year, album, or chart data. You can fork the API on Parse and revise it to add an endpoint pulling from a music metadata source to enrich results.
How does section-based pagination work, and are there limits on search results?+
The search_songs endpoint supports offset and limit (maximum 200 per request) for paging through results. The total_hits field in the response gives the full match count so you can calculate how many pages to fetch. Section retrieval via get_song_sections returns all sections for a song in one response with no pagination.
Page content last updated . Spec covers 3 endpoints from www.hooktheory.com.
Related APIs in MusicSee all →
juno.co.uk API
Search and browse Juno Records' catalog to find music across genres, discover new releases and bestsellers, and get detailed product information with autocomplete suggestions. Perfect for exploring vinyl, CDs, and digital music with real-time access to charts and recommendations.
elements.envato.com API
Search and browse millions of creative assets from Envato Elements, including stock photos, videos, music, fonts, and templates across all categories. Get detailed information about specific items, pricing plans, and discover new content through keyword search and category browsing.
stubhub.com API
Search and discover tickets across StubHub's marketplace by looking up events, performers, and categories to find exactly what you want to attend. Browse event details, performer schedules, and curated category collections to compare available tickets and make informed purchasing decisions.
rateyourmusic.com API
Search for albums, artists, and genres to retrieve detailed information including release dates, ratings, and chart rankings from Rate Your Music. Browse music charts and explore genre-specific data to discover trends across the catalog.
allmusic.com API
Search for music, browse artist biographies and discographies, and retrieve detailed album and song information all in one place. Discover new releases and access comprehensive metadata about artists and tracks.
viagogo.com API
Search for events and browse tickets across Viagogo's catalog, discovering performer schedules, ticket listings, and categories all in one place. Get detailed information about available tickets and events to find exactly what you're looking for.
axs.com API
Search for events, performers, and venues across AXS.com to find tickets, pricing, and availability information in your area or by category. Browse featured events, explore venues by city, and access detailed event information all in one place.
bandcamp.com API
Access Bandcamp's music catalog, artist profiles, album details, fan profiles, and live sales feed. Supports discovery with tag and location filters, full-text search across artists, albums, and tracks, and detailed metadata retrieval.