Guitar Pro APIguitarpro.com ↗
Search and retrieve guitar tabs, artist profiles, song metadata, and subscription pricing from Guitar Pro's mySongBook catalog via a simple REST API.
What is the Guitar Pro API?
The Guitar Pro API provides 6 endpoints for querying the mySongBook tab catalog, returning fields like title, artist, genres, composer, lyricist, sheet music preview images, and audio preview URLs. Use search_tabs for keyword lookups, get_tab_detail for full song metadata, and get_artist_detail for artist biographies and their complete tab catalogs — all in structured JSON.
curl -X GET 'https://api.parse.bot/scraper/56e331ae-1b41-4d1f-bf15-52057ab1aaf3/search_tabs?query=Metallica' \ -H 'X-API-Key: $PARSE_API_KEY'
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 guitarpro-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: Guitar Pro & mySongBook SDK — search tabs, explore artists, check pricing."""
from parse_apis.guitar_pro_mysongbook_api import GuitarPro, Genre, ResourceNotFound
client = GuitarPro()
# Search for tabs by artist name — limit caps total items fetched.
for tab in client.tabsummaries.search(query="AC/DC", limit=5):
print(tab.title, tab.artist, tab.type)
# Drill into the first result's full detail (sheet music, genres, other arrangements).
tab_summary = client.tabsummaries.search(query="Metallica", limit=1).first()
if tab_summary:
detail = tab_summary.details()
print(detail.title, detail.album, detail.genres)
for arr in detail.other_arrangements[:3]:
print(arr.title, arr.url)
# Fetch a tab directly by its id_slug.
try:
tab = client.tabs.get(id_slug="444-highway-to-hell")
print(tab.title, tab.artist, tab.arrangement_type)
except ResourceNotFound as exc:
print(f"Tab not found: {exc}")
# Browse the featured artist roster filtered by genre.
for artist in client.artistsummaries.list(genre=Genre.ROCK, limit=3):
print(artist.name, artist.info)
# Get full artist profile with their tab catalog.
metallica = client.artists.get(id_slug="242-metallica")
print(metallica.name, len(metallica.tabs))
# Check mySongBook subscription pricing.
for plan in client.plans.list(limit=5):
print(plan.name, plan.price, plan.monthly_price)
print("exercised: tabsummaries.search / tab_summary.details / tabs.get / artistsummaries.list / artists.get / plans.list")Full-text search across the mySongBook catalog by artist name or song title. Returns matching tabs as lightweight summaries with audio preview URLs. Single-page response — no server-side pagination; all matches returned in one call.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword — artist name or song title. |
{
"type": "object",
"fields": {
"tabs": "array of tab summary objects with id, id_slug, title, url, artist, type, and audio_ogg",
"query": "string — the search query echoed back"
},
"sample": {
"data": {
"tabs": [
{
"id": "426",
"url": "https://www.guitar-pro.com/tabs/t/426-enter-sandman",
"type": "Full Score",
"title": "Enter Sandman",
"artist": "Metallica",
"id_slug": "426-enter-sandman",
"audio_ogg": "https://msb-assets.guitar-pro.eu/prelistenings/426/Metallica-1991-Metallica-01-Enter_Sandman.ogg"
}
],
"query": "Metallica"
},
"status": "success"
}
}About the Guitar Pro API
What the API covers
The API exposes the mySongBook catalog through six endpoints. search_tabs accepts a query string — artist name or song title — and returns all matching tab summaries in a single response with fields including id, id_slug, title, artist, type, and audio_ogg preview URL. get_latest_tabs pages through the full catalog alphabetically; each page holds roughly 100 tab summaries and accepts a 1-based page integer.
Tab and artist detail
get_tab_detail takes an id_slug (e.g. 444-highway-to-hell) and returns the deepest metadata the catalog holds: album, genres array, composer, lyricist, previews (sheet music image URLs), arrangement_type, and an artist_url linking to the artist page. get_artist_detail accepts artist slugs from either the tab catalog (e.g. 242-metallica) or the featured roster (e.g. 51517-raoul-tchoi) and returns the artist's name, description biography when available, and their full array of tab summaries. get_artist_list retrieves the featured artist roster with id_slug, name, url, and info fields, and accepts an optional genre filter keyword.
Pricing and catalog breadth
get_mysongbook_pricing returns current subscription plan objects with name, price, monthly_price, flag, and url — useful for surfacing plan options in an app without hardcoding values that change over time. The catalog spans a wide range of genres and arrangement types (Full Score, Guitar & Vocals, and others) accessible from the arrangement_type field in tab detail responses.
The Guitar Pro API is a managed, monitored endpoint for guitarpro.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when guitarpro.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 guitarpro.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a tab discovery app that surfaces audio previews using the
audio_oggfield from search results - Populate an artist profile page with biography text and a complete tab listing from
get_artist_detail - Index the full mySongBook catalog by iterating
get_latest_tabspage by page for offline search or analytics - Display sheet music thumbnail previews alongside tab metadata using the
previewsimage array fromget_tab_detail - Filter tabs by genre after fetching genre arrays from
get_tab_detailto build genre-specific playlists - Surface current mySongBook subscription pricing dynamically in a guitar learning app via
get_mysongbook_pricing - Cross-reference composer and lyricist credits from
get_tab_detailto analyze arrangement attribution across the catalog
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does Guitar Pro have an official developer API?+
What does get_tab_detail return beyond what search results include?+
get_tab_detail returns fields not present in search or listing summaries: album, genres, composer, lyricist, arrangement_type, and previews (an array of sheet music preview image URLs). It also includes artist_url, which you can pass as an id_slug to get_artist_detail.Does search_tabs support pagination?+
search_tabs is a single-page response — all matches are returned in one call. There is no page parameter for search. If you need to page through the entire catalog regardless of keyword, use get_latest_tabs with the page parameter instead.Can I retrieve the actual tab file or notation data, not just previews?+
previews array and audio preview URLs via audio_ogg, but does not expose downloadable .gp5/.gpx tab files or full notation data. You can fork this API on Parse and revise it to add an endpoint targeting tab file download links if they become accessible.Does the genre filter on get_artist_list reliably narrow the roster?+
genre parameter is accepted as input but may not produce distinct results for all genre values — the returned artist list can be identical across different genre inputs depending on how the source catalog is structured. For reliable genre filtering, use the genres array returned by get_tab_detail on individual tabs instead.