Discover/Ultimate Guitar API
live

Ultimate Guitar APIultimate-guitar.com

Search Ultimate Guitar tabs by song or artist and fetch chord charts with inline chord names. 2 endpoints covering tab metadata, ratings, tuning, and capo.

Endpoint health
verified 2h ago
get_chord_chart
search_songs
2/2 passing latest checkself-healing
Endpoints
2
Updated
2h ago

What is the Ultimate Guitar API?

The Ultimate Guitar API gives developers programmatic access to the world's largest tab repository through 2 endpoints. Use search_songs to query tabs by title, artist, or both and receive paginated results with rating, version, and type metadata. Use get_chord_chart to retrieve a specific tab's full chord chart, returned as lyrics with inline chord names in square brackets alongside tuning, capo, tonality, and vote count.

This call costs1 credit / call— charged only on success
Try it
1-based result page number.
Free-text search: song title, artist name, or both, in any order.
Restrict results to one tab type. Omitted = all types.
api.parse.bot/scraper/12ac6f45-949a-4b24-ba4b-c6da49dbd41a/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/12ac6f45-949a-4b24-ba4b-c6da49dbd41a/search_songs?query=wonderwall+oasis&tab_type=chords' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ultimate-guitar-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: search Ultimate Guitar for chord charts and fetch full tab details."""
from parse_apis.ultimate_guitar_com_api import UltimateGuitar, TabType, TabNotFound

client = UltimateGuitar()

# Search for chord tabs matching a query, capped at 5 results.
for tab in client.tabs.search(query="wonderwall oasis", tab_type=TabType.CHORDS, limit=5):
    print(tab.song_name, "-", tab.artist_name, f"(v{tab.version}, rating {tab.rating})")

# Drill into the first result to get the full chord chart.
hit = client.tabs.search(query="hey joe hendrix", limit=1).first()
if hit is not None:
    # Fetch complete tab details using the URL from the search result.
    try:
        detail = client.tabs.get(tab_url=hit.url)
    except TabNotFound:
        print("Tab no longer available:", hit.url)
    else:
        print(detail.song_name, "by", detail.artist_name)
        print("Chords used:", ", ".join(detail.chords_used or []))
        print("Difficulty:", detail.difficulty)
        if detail.capo is not None:
            print("Capo fret:", detail.capo)
        # Show the first few lines of the chord chart.
        for line in (detail.chord_chart or "").split("\n")[:6]:
            print(line)

print("exercised: tabs.search / tabs.get")
All endpoints · 2 totalmissing one? ·

Searches Ultimate Guitar tabs by free text (song title, artist name, or both, e.g. 'wonderwall oasis'). Returns one page of matching user-submitted tabs (Chords, Tab, Ukulele Chords, Bass Tab, etc.), ordered by the site's relevance. Promotional/official 'Pro' entries without a public page are omitted. The page size is fixed by the site (up to about 50 rows); use `page` to walk pages while `has_more` is true; `page` defaults to 1. `total_results` is the site's reported match count across all pages. Each row's `url` is the tab page address to pass to get_chord_chart. `tonality` and `difficulty` are null when the site does not list them. A query with no matches returns an empty `results` array with `total_results` 0.

Input
ParamTypeDescription
pageinteger1-based result page number.
queryrequiredstringFree-text search: song title, artist name, or both, in any order.
tab_typestringRestrict results to one tab type. Omitted = all types.
Response
{
  "type": "object",
  "fields": {
    "page": "current page number (integer)",
    "query": "the search text as echoed by the site",
    "results": "array of tab summaries: tab_id (string), song_name, artist_name, type (e.g. Chords, Tab, Ukulele Chords), version (integer), rating (0-5 float), votes (integer), tonality (key or null), difficulty (or null), url (tab page, input for get_chord_chart)",
    "has_more": "true when a later page exists",
    "tab_type": "the tab_type filter applied, or null when none",
    "total_pages": "number of result pages the site reports for this query (integer)",
    "total_results": "site-reported total number of matching tabs across all pages (integer)"
  },
  "sample": {
    "data": {
      "page": 1,
      "query": "wonderwall oasis",
      "results": [
        {
          "url": "https://tabs.ultimate-guitar.com/tab/oasis/wonderwall-chords-6125",
          "type": "Chords",
          "votes": 2497,
          "rating": 4.59615,
          "tab_id": "6125",
          "version": 1,
          "tonality": "F#m",
          "song_name": "Wonderwall",
          "difficulty": "intermediate",
          "artist_name": "Oasis"
        },
        {
          "url": "https://tabs.ultimate-guitar.com/tab/oasis/wonderwall-chords-1064463",
          "type": "Chords",
          "votes": 403,
          "rating": 4.86554,
          "tab_id": "1064463",
          "version": 1,
          "tonality": null,
          "song_name": "Wonderwall",
          "difficulty": null,
          "artist_name": "Oasis"
        }
      ],
      "has_more": false,
      "tab_type": "chords",
      "total_pages": 1,
      "total_results": 24
    },
    "status": "success"
  }
}

About the Ultimate Guitar API

Searching for Tabs

The search_songs endpoint accepts a free-text query parameter (song title, artist name, or a combination like 'wonderwall oasis') and returns an array of tab summaries. Each result includes tab_id, song_name, artist_name, type (Chords, Tab, Ukulele Chords, Bass Tab, etc.), version, rating, and a url suitable for passing directly to get_chord_chart. You can narrow results using the optional tab_type filter and paginate with the page parameter. The response also surfaces total_results and total_pages so you can build pagination controls or estimate corpus size for a given query.

Fetching a Chord Chart

Passing a tab URL from search_songs results to get_chord_chart returns the full chart for that tab. The chord_chart field renders the chart as lyric lines with chord names inserted inline in square brackets at the position where they fall — for example, 'Today is g[A]onna be the day'. The response also includes raw_chart containing the original site markup with [ch]..[/ch] chord tags and [tab]..[/tab] blocks, which is useful if you need to reformat or parse the structure yourself. Additional fields cover tuning (e.g. 'E A D G B E'), capo fret, tonality (song key), rating, votes, and version.

Data Coverage and Limitations

Results come from user-submitted tabs and are ordered by the site's own relevance ranking. Paid 'Pro' tab entries that lack a publicly visible chart are excluded from search_songs results. The rating field is a 0–5 float based on user votes, and version distinguishes multiple community submissions for the same song. Tabs without tuning or capo data return null for those fields.

Reliability & maintenanceVerified

The Ultimate Guitar API is a managed, monitored endpoint for ultimate-guitar.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ultimate-guitar.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ultimate-guitar.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a chord lookup tool that queries tabs by song and artist name and displays inline chord positions
  • Generate a transposition aid using the tuning and capo fields returned by get_chord_chart
  • Aggregate tab quality data by collecting rating and votes across versions of the same song
  • Filter search results to a specific instrument using the tab_type parameter (e.g. Ukulele Chords)
  • Create a songbook app that stores raw_chart markup and reformats it per user preference
  • Identify the most popular community tab for a song by comparing version numbers and rating values across search_songs results
  • Build a key/tonality browser that groups songs by the tonality field returned from fetched charts
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Ultimate Guitar have an official developer API?+
Ultimate Guitar does not publish a public developer API or documented endpoints for third-party use. This Parse API provides structured access to tab search and chord chart data from the site.
What does `search_songs` return, and how do I filter by tab type?+
Each result in the results array includes tab_id, song_name, artist_name, type, version, rating, and url. Pass the optional tab_type parameter (e.g. 'Chords' or 'Bass Tab') to restrict results to one format. Omitting it returns all tab types. The response includes total_results and total_pages for pagination, and has_more as a boolean shortcut.
What is the difference between `chord_chart` and `raw_chart` in `get_chord_chart`?+
chord_chart is a processed, human-readable format where chord names are inserted inline into lyric lines at the correct character positions (e.g. '[G]Today is gonna be the day'). raw_chart preserves the original site markup including [ch]..[/ch] and [tab]..[/tab] tags, which is useful if you need to parse chord positions yourself or apply custom rendering logic.
Are artist pages, discographies, or user profiles available through the API?+
Not currently. The API covers tab search via search_songs and individual tab chord charts via get_chord_chart. Artist pages, full discography listings, and user profile data are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting those resources.
Does the API return guitar pro or PDF files attached to tabs?+
No file attachments are returned. The API covers text-based chord charts and tab metadata including chord_chart, raw_chart, tuning, capo, tonality, rating, and votes. If you need to surface downloadable file availability as a metadata flag, you can fork the API on Parse and revise it to add that field.
Page content last updated . Spec covers 2 endpoints from ultimate-guitar.com.
Related APIs in MusicSee all →
guitarpro.com API
Search and retrieve guitar tabs, artist profiles, and detailed song metadata from Guitar Pro and mySongBook to find music you want to play. Get pricing information and browse the latest tabs to discover new songs across your favorite artists.
songsterr.com API
Search and retrieve guitar tab notation, song metadata, and artist information from Songsterr. Access song popularity rankings, revision history, and complete tab data to power music education platforms, tab libraries, and music reference applications.
hooktheory.com API
Search through 65,000+ songs to discover their music theory details like chords, melody notes, keys, tempos, and meters. Break down any song into its individual sections and examine the exact notes used in each part.
guitarcenter.com API
Search Guitar Center's electric guitar catalog to instantly access product listings with pricing, customer reviews, and detailed specifications across different variants. Compare guitars and find the perfect instrument with complete product information all in one place.
lyrics.com API
Search and retrieve song lyrics, artist biographies, and album information across multiple genres and artists. Browse music content by artist, letter, or genre, and discover new or random songs to explore.
billboard.com API
Get access to Billboard's music charts, latest news, and interviews to stay updated on chart rankings, industry stories, and artist content. Search and retrieve specific articles or page content to find the music news and information you need.
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.
spotify.com API
Search millions of songs and artists in Spotify's catalog, then dive deep into any artist's complete discography, top tracks, fan statistics, and similar artists they're connected to. Perfect for discovering new music, researching artist backgrounds, or building personalized music recommendations.