setlist.fm API: Get concert setlist
Get one artist's concert details and songs from setlist.fm by date or city. With only a city, returns the most recent matching concert there. Start times are local clock times because the pages do not supply a timezone.
Unofficial. Not affiliated with or endorsed by setlist.fm.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City optional
city City where the concert took place, for example London.
London
- Date optional
date Concert date (YYYY-MM-DD), for example 2024-06-21.
Not set
Date.
- Artist, required
artist Artist or band name, for example Taylor Swift.
Taylor Swift
Input as JSON
{ "city": "London", "artist": "Taylor Swift"}Output
{ "city": "London", "date": "2024-08-20", "songs": [ { "note": "shortened", "title": "Miss Americana & the Heartbreak Prince", "encore": false, "position": 1, "original_artist": null }, { "note": "extended outro", "title": "Cruel Summer", "encore": false, "position": 2, "original_artist": null }, { "note": "spoken intro", "title": "The Man", "encore": false, "position": 3, "original_artist": null } ], "venue": "Wembley Stadium", "artist": "Taylor Swift", "country": "England", "tour_name": "The Eras Tour", "setlist_id": "23aa40cf", "setlist_link": "https://www.setlist.fm/setlist/taylor-swift/2024/wembley-stadium-london-england-23aa40cf.html" , "show_start_time": "18:55"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"setlist.fm/get_concert_setlist","input":{"city":"London","artist":"Taylor Swift"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "setlist.fm/get_concert_setlist" , "input": { "city": "London", "artist": "Taylor Swift" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "setlist.fm/get_concert_setlist" , "input": { "city": "London", "artist": "Taylor Swift" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run setlist.fm/get_concert_setlist# with {"city":"London","artist":"Taylor Swift"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "artist" ], "properties": { "city": { "type": "string", "description": "City where the concert took place, for example London." }, "date": { "type": "string", "format": "date", "description": "Concert date (YYYY-MM-DD), for example 2024-06-21." }, "artist": { "type": "string", "description": "Artist or band name, for example Taylor Swift." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "artist", "date", "venue", "city", "country", "tour_name", "show_start_time", "setlist_link", "setlist_id", "songs" ], "properties": { "city": { "type": "string" }, "date": { "type": "string", "format": "date" }, "songs": { "type": "array", "items": { "type": "object", "required": [ "position", "title", "encore", "original_artist", "note" ], "properties": { "note": { "type": [ "string", "null" ], "description": "Note shown beside this song, if given." }, "title": { "type": "string", "description": "Song title." }, "encore": { "type": "boolean", "description": "Whether this song appears in the encore." }, "position": { "type": "integer", "description": "Song order in the listed setlist." }, "original_artist": { "type": [ "string", "null" ], "description": "Original artist for a cover, if given." } }, "additionalProperties": false } }, "venue": { "type": "string" }, "artist": { "type": "string" }, "country": { "type": "string" }, "tour_name": { "type": [ "string", "null" ] }, "setlist_id": { "type": "string", "x-fous-developer": true }, "setlist_link": { "type": "string" }, "show_start_time": { "type": [ "string", "null" ], "description": "Local start time in 24-hour HH:MM format, where listed; timezone unavailable." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
setlist.fm/get_concert_setlist- Returns
- artist, date, venue, city, country, tour, start time, setlist link, songs with encore, cover and note
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method setlist.fm/get_concert_setlist with the inputs above.
Ask your agent
- What songs did Radiohead play at their show in Mexico City on 2025-11-04?
- Pull up the setlist.fm setlist for Taylor Swift's London concert on 2024-06-21, including encore songs and any covers.
- I'm going to see Pearl Jam — what was the song list at their most recent show in Chicago?
- Find the setlist from Billie Eilish's concert on 2024-09-29 at Quebec City, with venue, tour name and start time.
- Check setlist.fm for the latest Metallica concert in Gothenburg and tell me which songs they did in the encore.
See more
All setlist.fm methodsFinds the songs an artist played most on a named tour or in a year on setlist.fm, with concert counts and cover credits. Without a filter it uses the most recent tour with published song statistics.
setlist.fm/get_tour_song_statsGets an artist's upcoming concerts and tour dates on Songkick, optionally filtered by country, with ticket links and start times when listed.
songkick.com/get_artist_tour_datesFinds upcoming concerts in a city between two dates on Songkick. Each concert includes its artists, venue, festival name and ticket link.
songkick.com/search_concertsLooks up a Last.fm artist by name and returns listening statistics, profile, top tracks and albums, similar artists, and upcoming events.
last.fm/get_artistFinds upcoming Ticketmaster-listed concerts, sports, theater and other events by keyword, optionally by city, country, category and date range, with dates, venues, prices when shown and links. Partner-only listings without a Ticketmaster link are excluded; very large searches cover only the first 800 listings.
ticketmaster.com/search_eventsLooks up an artist or band on MusicBrainz by name, optionally narrowed by country, and returns reference details, recorded members, aliases, genres and official links.
musicbrainz.org/get_artistFinds public Eventbrite events in a city or online, with optional keywords, date range, category and free-only filtering, ordered by start time.
eventbrite.com/search_eventsFinds artists similar to a named artist on Last.fm, ordered by similarity. Similarity percentages are null because public pages do not show them.
last.fm/list_similar_artists