<!-- Copyright (c) 2026 Todd Levy. Licensed under MIT. SPDX-License-Identifier: MIT -->
Live Music Data APIs
Reference documentation for live music data APIs and how they connect via external IDs. Covers artist metadata, concert events, setlists, and images across multiple providers.
When to Use
- "How do I get concert data for an artist?"
- "Which API should I use for setlists?"
- "How do I resolve artist IDs across platforms?"
- Building applications that need artist metadata, concert events, or setlists
- Resolving artist identities across multiple platforms
- Integrating live music data APIs
Outcomes
- Analysis: API selection based on data requirements
- Reference: Endpoint documentation, auth patterns, rate limits
- Decision: ID resolution strategy (MBID hub vs name search)
API Quick Reference
Tier 1: Core APIs (High Value, Easy Access)
| API | Auth | Rate Limit | Primary Use | Reference |
|---|
| MusicBrainz | User-Agent | 1 req/sec | ID hub, external IDs, releases | musicbrainz.md |
| Setlist.fm | API key | Undocumented | Setlists, song data | setlistfm.md |
| Wikidata | None | Reasonable | Cross-references, SPARQL | wikidata.md |
| Discogs | User-Agent | 60/min auth | Discography, releases | discogs.md |
| nugs.net | None | ~2/sec | Live recordings catalog | nugs.md |
Tier 2: Events and Concerts
| API | Auth | Rate Limit | Primary Use | Reference |
|---|
| JamBase | API key | 3,600/hour | Most comprehensive events | jambase.md |
| Songkick | API key | Undocumented | Gigography (KEYS SUSPENDED) | songkick.md |
| Bandsintown | App ID | Undocumented | Artist events, tour dates | bandsintown.md |
| Ticketmaster | API key | 5,000/day | Events, venues, tickets | ticketmaster.md |
Tier 3: Supplementary Data
| API | Auth | Rate Limit | Primary Use | Reference |
|---|
| Last.fm | API key | Soft limit | Similar artists, tags | lastfm.md |
| Fanart.tv | API key | Undocumented | High-res artwork (needs MBID) | fanarttv.md |
| TheAudioDB | API key | 2/sec free | Metadata, images | theaudiodb.md |
| Genius | OAuth 2.0 | Undocumented | Song annotations (no lyrics) | genius.md |
Tier 4: Avoid / Difficult Access
| API | Issue |
|---|
| AllMusic | No public API - scraping only |
| IMDB | AWS Data Exchange subscription required |
| Spotify | Requires app review for production |
Web Scraping Fallback
When APIs are unavailable (Tier 4) or rate-limited, use web scraping as a fallback. Workflow escalation: search → scrape → crawl.
bash
# Scrape a single artist page to markdown
firecrawl scrape "https://www.allmusic.com/artist/mn0000004789" --only-main-content -o .firecrawl/artist.md
# Wait for JS rendering (SPA sites)
firecrawl scrape "<url>" --wait-for 3000 -o .firecrawl/page.md
# Extract structured data with a query
firecrawl scrape "https://example.com/artist" --query "What are the upcoming tour dates?"
Best practices for music data scraping:
- Respect and rate limit aggressively (1-2 req/sec)
- Cache scraped content for 7+ days
- Prefer APIs when available - scraping breaks when sites change
- Use to skip navigation/ads
See
firecrawl/cli skills for comprehensive scraping patterns.
ID Mapping Architecture
MusicBrainz serves as the central ID hub. Most services either accept MBID directly or can be resolved via MusicBrainz url-rels.
mermaid
flowchart LR
subgraph hub [ID Hub]
MB[MusicBrainz<br/>MBID]
end
subgraph direct [Accept MBID]
Setlist[Setlist.fm]
Fanart[Fanart.tv]
Lastfm[Last.fm]
end
subgraph multi [Multi-ID Lookup]
JamBase[JamBase<br/>12 ID sources]
end
subgraph linked [Via url-rels]
Discogs[Discogs]
Wikidata[Wikidata]
Spotify[Spotify]
end
subgraph name [Name Search Only]
Bandsintown[Bandsintown]
TM[Ticketmaster]
Genius[Genius]
end
MB -->|MBID| direct
MB -->|MBID or external ID| multi
MB -->|url-rels lookup| linked
MB -.->|artist name| name
Services That Accept MBID Directly
| Service | Endpoint Pattern |
|---|
| Setlist.fm | |
| Fanart.tv | |
| Last.fm | ?method=artist.getInfo&mbid={mbid}
|
| JamBase | /artists/id/musicbrainz:{mbid}
|
| TheAudioDB | (Premium only) |
Services Requiring url-rels Lookup
Get external IDs from MusicBrainz first:
GET /ws/2/artist/{mbid}?inc=url-rels&fmt=json
Returns IDs for: spotify, discogs, wikidata, allmusic, lastfm, imdb, bandcamp, soundcloud, youtube
JamBase Multi-ID Support
JamBase accepts 12 different ID sources:
/artists/id/{source}:{id}
Sources: jambase, musicbrainz, spotify, ticketmaster, seatgeek,
eventbrite, axs, dice, etix, seated, viagogo, eventim-de
Environment Variables
bash
# Tier 1
MUSICBRAINZ_USER_AGENT="AppName/1.0 (contact@example.com)"
SETLISTFM_API_KEY=""
DISCOGS_TOKEN=""
# Tier 2
JAMBASE_API_KEY=""
SONGKICK_API_KEY=""
BANDSINTOWN_APP_ID=""
TICKETMASTER_API_KEY=""
# Tier 3
LASTFM_API_KEY=""
FANARTTV_API_KEY=""
THEAUDIODB_API_KEY=""
GENIUS_ACCESS_TOKEN=""
API Selection Guide
| Need | Recommended API |
|---|
| Artist identity resolution | MusicBrainz (as hub) |
| Live events/concerts | JamBase (most comprehensive) |
| Historical setlists | Setlist.fm |
| Artist images | Fanart.tv (if have MBID) or TheAudioDB |
| Similar artists | Last.fm |
| Discography | Discogs |
| Song metadata | Genius |
| Live recordings | nugs.net |
ID Resolution Strategy
Starting with Artist Name
- Search MusicBrainz for MBID
- Use MBID to get external IDs via url-rels
- Use external IDs with other services
Starting with Existing ID (Spotify, etc.)
- Use JamBase
/artists/id/{source}:{id}
for direct lookup
- Or lookup in Wikidata via property (P1902 for Spotify)
- Resolve to MBID for other services
Rate Limit Summary
| API | Strategy |
|---|
| MusicBrainz | between requests |
| Discogs | Monitor X-Discogs-Ratelimit-Remaining
header |
| JamBase | 3,600/hour = ~1/sec sustained |
| Ticketmaster | 5,000/day = throttle during batch |
| TheAudioDB | between requests |
OAuth 2.0 Patterns
See OAuth 2.0 Patterns for the full Spotify Authorization Code + PKCE flow, the token refresh pattern, and recommended scopes per provider.
Pagination Patterns
See Pagination Patterns for cursor-based vs offset-based async iterators and the per-API pagination parameter table.
Error Handling Matrix
See
Error Handling for the full retry strategy table by HTTP code, the
implementation, and API-specific error code interpretations.
Caching Recommendations
| Data Type | TTL |
|---|
| Artist metadata | 7 days |
| Event listings | 1-4 hours |
| Setlists | 7-30 days |
| Images/artwork | 30+ days |
| External IDs | 30+ days |
Local Data Architecture
See Local Data Architecture for replica decision criteria, the external-ID-mapping schema (entities, entity_source_ids, sync_state), incremental sync patterns with overlap windows, ID resolution flow, the enrichment pipeline, and deletion/merge handling.
Detailed Reference Files
Each API has comprehensive documentation in the
folder:
- musicbrainz.md - ID hub, url-rels, search, rate limiting
- setlistfm.md - Setlist search, MBID integration, response schemas
- jambase.md - Multi-ID lookup, geo search, event filters
- discogs.md - Discography, releases, rate headers
- wikidata.md - SPARQL queries, property codes
- nugs.md - Undocumented API, catalog methods
- bandsintown.md - Artist events, date filters
- ticketmaster.md - Events, attractions, venues
- songkick.md - Gigography, calendar (keys suspended)
- lastfm.md - Similar artists, tags, scrobbles
- fanarttv.md - High-res images via MBID
- theaudiodb.md - Metadata, images, free vs premium
- genius.md - Annotations, OAuth, no lyrics via API
Skill Maintenance
Keeping References Current
Each reference file includes a "Keeping Current" section with:
- Authoritative docs - Official documentation links
- Version detection - How to check for API changes
- Test endpoint - Quick verification command
- Last verified - When this reference was last validated
Monitoring for Changes
| Check | Frequency | Method |
|---|
| Test endpoints | Weekly | Automated health checks |
| Documentation links | Monthly | Link validation |
| Version numbers | Monthly | Check API responses |
| Changelog reviews | Monthly | Visit official changelogs |
Update Triggers
Re-verify a reference when:
- API returns unexpected errors
- New features announced in changelog
- Response structure differs from documented
- Rate limits or auth requirements change
Contribution
To update this skill:
- Verify changes against official docs
- Test endpoints with real API calls
- Update "Last Verified" date
- Note breaking changes prominently
References
Quilted Skills
First-Party API Documentation
- MusicBrainz API — ID hub, url-rels, JSON responses
- MusicBrainz JSON Web Service — JSON format details
- Setlist.fm API — Setlist search and retrieval
- JamBase API — Events, venues, multi-ID lookup
- Ticketmaster Discovery API — Events, attractions
- Spotify Web API — OAuth 2.0, artist data
- Spotify Authorization Guide — PKCE flow
- Discogs API — Discography, releases
- Last.fm API — Similar artists, tags
- Wikidata Query Service — SPARQL cross-references
Community Resources