# setlist.fm API

> setlist.fm returns concert setlists and tour song statistics, available as a workflow and API.

setlist.fm (Setlist FM) lists an artist’s recent concerts, songs, dates, venues, and tours; provide an artist and optional result limit. Get concert setlist returns one artist’s concert details and songs; provide an artist and optionally a date or city. Get tour song stats returns an artist’s most-played songs for a tour or year; provide an artist and optionally a tour or year.

- Page: https://fous.com/tools/setlist-fm
- Handle: `@setlist-fm`
- Category: [Entertainment](https://fous.com/tools/category/entertainment)
- Source website: https://setlist.fm
- Last verified: Sep 29, 2026

## Methods

### Get concert setlist

Operation `get_concert_setlist`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

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.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | no | `"London"` | City where the concert took place, for example London. |
| `date` | string | no | `"2024-06-20"` | Concert date (YYYY-MM-DD), for example 2024-06-21. |
| `artist` | string | yes | `"Taylor Swift"` | Artist or band name, for example Taylor Swift. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "artist"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City where the concert took place, for example London.",
      "examples": [
        "London",
        "New York"
      ]
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Concert date (YYYY-MM-DD), for example 2024-06-21.",
      "examples": [
        "2024-06-20",
        "2024-06-21",
        "2026-09-29"
      ]
    },
    "artist": {
      "type": "string",
      "description": "Artist or band name, for example Taylor Swift.",
      "examples": [
        "Taylor Swift",
        "Foo Fighters",
        "Jamie Cullum"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "London",
      "artist": "Taylor Swift"
    },
    {
      "city": "London",
      "date": "2024-06-20",
      "artist": "Foo Fighters"
    },
    {
      "date": "2024-06-21",
      "artist": "Taylor Swift"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `city` | string | `"London"` |  |
| `date` | string | `"2024-08-20"` |  |
| `songs` | array |  |  |
| `songs[].note` | string or null | `"shortened"` | Note shown beside this song, if given. |
| `songs[].title` | string | `"Miss Americana & the Heartbreak Prince"` | Song title. |
| `songs[].encore` | boolean | `false` | Whether this song appears in the encore. |
| `songs[].position` | integer | `1` | Song order in the listed setlist. |
| `songs[].original_artist` | string or null |  | Original artist for a cover, if given. |
| `venue` | string | `"Wembley Stadium"` |  |
| `artist` | string | `"Taylor Swift"` |  |
| `country` | string | `"England"` |  |
| `tour_name` | string or null | `"The Eras Tour"` |  |
| `setlist_id` | string | `"23aa40cf"` |  |
| `setlist_link` | string | `"https://www.setlist.fm/setlist/taylor-swift/2024/wembley-stadium-london-england-23aa40cf.html"` |  |
| `show_start_time` | string or null | `"18:55"` | Local start time in 24-hour HH:MM format, where listed; timezone unavailable. |

**Example input**

```json
{
  "city": "London",
  "artist": "Taylor Swift"
}
```

**Example output**

```json
{
  "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"
}
```

### Get tour song stats

Operation `get_tour_song_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find songs an artist played most on a named tour or in a year, with concert counts and cover credits. Without a filter, uses the most recent tour with published song statistics; counts reflect the public setlists and can include setlists without songs.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `tour` | string | no | `"M72 World Tour"` | Tour name, for example M72 World Tour. Leave blank to use the most recent tour with song statistics. |
| `year` | integer | no | `2025` | Concert year instead of a tour, for example 2025. |
| `artist` | string | yes | `"Metallica"` | Artist or band name, for example Metallica. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "artist"
  ],
  "properties": {
    "tour": {
      "type": "string",
      "description": "Tour name, for example M72 World Tour. Leave blank to use the most recent tour with song statistics.",
      "examples": [
        "M72 World Tour"
      ]
    },
    "year": {
      "type": "integer",
      "description": "Concert year instead of a tour, for example 2025.",
      "examples": [
        2025
      ]
    },
    "artist": {
      "type": "string",
      "description": "Artist or band name, for example Metallica.",
      "examples": [
        "Metallica",
        "Taylor Swift"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "tour": "M72 World Tour",
      "artist": "Metallica"
    },
    {
      "year": 2025,
      "artist": "Metallica"
    },
    {
      "artist": "Metallica"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tour` | string or null | `"M72 World Tour"` | Tour used, or null if filtered by year. |
| `year` | integer or null | `2025` | Year used, or null if filtered by tour. |
| `songs` | array |  | Songs in descending order by number of performances. |
| `songs[].song_link` | string | `"https://www.setlist.fm/stats/songs/metallica-3bd680c8.html?songid=3b97fc90"` | Page showing statistics for this song. |
| `songs[].song_title` | string | `"Kirk and Rob Doodle"` |  |
| `songs[].times_played` | integer | `89` |  |
| `songs[].original_artist` | string or null |  | Original artist for a cover, otherwise null. |
| `songs[].share_of_concerts_percent` | number | `89.9` | Times played divided by setlists counted, capped at 100%. |
| `artist` | string | `"Metallica"` | Artist name on setlist.fm. |
| `statistics_link` | string | `"https://www.setlist.fm/stats/metallica-3bd680c8.html?tour=3dff98b"` | Tour or year statistics page. |
| `concerts_counted` | integer | `99` | Setlists listed by setlist.fm for this tour or year. |

**Example input**

```json
{
  "tour": "M72 World Tour",
  "artist": "Metallica"
}
```

**Example output**

```json
{
  "tour": "M72 World Tour",
  "year": null,
  "songs": [
    {
      "song_link": "https://www.setlist.fm/stats/songs/metallica-3bd680c8.html?songid=3b97fc90",
      "song_title": "Kirk and Rob Doodle",
      "times_played": 89,
      "original_artist": null,
      "share_of_concerts_percent": 89.9
    },
    {
      "song_link": "https://www.setlist.fm/stats/songs/metallica-3bd680c8.html?songid=5bd6fb14",
      "song_title": "Creeping Death",
      "times_played": 64,
      "original_artist": null,
      "share_of_concerts_percent": 64.6
    },
    {
      "song_link": "https://www.setlist.fm/stats/songs/metallica-3bd680c8.html?songid=bd6dd5a",
      "song_title": "Enter Sandman",
      "times_played": 64,
      "original_artist": null,
      "share_of_concerts_percent": 64.6
    }
  ],
  "artist": "Metallica",
  "statistics_link": "https://www.setlist.fm/stats/metallica-3bd680c8.html?tour=3dff98b",
  "concerts_counted": 99
}
```

### List recent setlists

Operation `list_recent_setlists`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get an artist’s newest past concerts with performed songs, venues, dates, tours, covers, notes, and encores from public setlist.fm pages. Shows without performed songs are skipped; songs played from tape are excluded.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `artist` | string | yes | `"Radiohead"` | Artist or band name, for example Coldplay. |
| `max_results` | integer | no | `2` | Maximum number of concerts to return, for example 5. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "artist"
  ],
  "properties": {
    "artist": {
      "type": "string",
      "description": "Artist or band name, for example Coldplay.",
      "examples": [
        "Radiohead",
        "Coldplay",
        "Muse"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 5,
      "maximum": 20,
      "minimum": 1,
      "description": "Maximum number of concerts to return, for example 5.",
      "x-fous-developer": true,
      "examples": [
        2,
        5,
        1
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "artist": "Radiohead",
      "max_results": 2
    },
    {
      "artist": "Coldplay",
      "max_results": 5
    },
    {
      "artist": "Muse",
      "max_results": 1
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `concerts` | array |  | Recent concerts, newest first. |
| `concerts[].city` | string | `"Copenhagen"` | City name. |
| `concerts[].date` | string | `"2025-12-16"` | Concert date. |
| `concerts[].link` | string | `"https://www.setlist.fm/setlist/radiohead/2025/royal-arena-copenhagen-denmark-34cc517.html"` | Setlist.fm concert page. |
| `concerts[].songs` | array |  | Songs performed, in order. |
| `concerts[].venue` | string | `"Royal Arena"` | Venue name. |
| `concerts[].country` | string | `"Denmark"` | Country name. |
| `concerts[].tour_name` | string or null | `"European Tour 2025"` | Tour name, if shown. |
| `concerts[].setlist_id` | string | `"34cc517"` | Setlist.fm setlist ID. |

**Example input**

```json
{
  "artist": "Radiohead",
  "max_results": 2
}
```

**Example output**

```json
{
  "concerts": [
    {
      "city": "Copenhagen",
      "date": "2025-12-16",
      "link": "https://www.setlist.fm/setlist/radiohead/2025/royal-arena-copenhagen-denmark-34cc517.html",
      "songs": [
        {
          "note": null,
          "title": "2 + 2 = 5",
          "encore": false,
          "position": 1,
          "original_artist": null
        },
        {
          "note": null,
          "title": "Airbag",
          "encore": false,
          "position": 2,
          "original_artist": null
        },
        {
          "note": null,
          "title": "The Bends",
          "encore": false,
          "position": 3,
          "original_artist": null
        }
      ],
      "venue": "Royal Arena",
      "country": "Denmark",
      "tour_name": "European Tour 2025",
      "setlist_id": "34cc517"
    },
    {
      "city": "Copenhagen",
      "date": "2025-12-15",
      "link": "https://www.setlist.fm/setlist/radiohead/2025/royal-arena-copenhagen-denmark-1b4cc51c.html",
      "songs": [
        {
          "note": null,
          "title": "Planet Telex",
          "encore": false,
          "position": 1,
          "original_artist": null
        },
        {
          "note": null,
          "title": "2 + 2 = 5",
          "encore": false,
          "position": 2,
          "original_artist": null
        },
        {
          "note": null,
          "title": "Sit Down. Stand Up.",
          "encore": false,
          "position": 3,
          "original_artist": null
        }
      ],
      "venue": "Royal Arena",
      "country": "Denmark",
      "tour_name": "European Tour 2025",
      "setlist_id": "1b4cc51c"
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@setlist-fm",
  "visibility": "public",
  "operation": "get_concert_setlist",
  "version": 1,
  "input": {
    "city": "London",
    "artist": "Taylor Swift"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@setlist-fm\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_concert_setlist\",\n  \"version\": 1,\n  \"input\": {\n    \"city\": \"London\",\n    \"artist\": \"Taylor Swift\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@setlist-fm",
  "visibility": "public",
  "operation": "get_concert_setlist",
  "version": 1,
  "input": {
    "city": "London",
    "artist": "Taylor Swift"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/setlist-fm`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_concert_setlist`: Get concert setlist. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_tour_song_stats`: Get tour song stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_recent_setlists`: List recent setlists. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-setlist-fm https://api.fous.com/mcp/tools/setlist-fm --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Track an artist’s recent concert setlists.
- Review songs played at a concert in a specific city or on a date.
- Compare an artist’s most-played songs across tours or years.
- Identify cover songs and their original artists.
- Plan music coverage around an artist’s recent performances.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this setlist.fm tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a setlist.fm account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from setlist.fm when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What songs did an artist play at a concert?

Get concert setlist returns the songs and concert details for an artist, using a date or city when supplied.

### What songs has an artist played most on tour?

Get tour song stats returns songs ordered by performance count for a named tour or year.

### Where did an artist perform recently?

List recent setlists returns recent concerts, newest first, with cities, dates, venues, and songs.

## Related

- [Bandsintown API](https://fous.com/tools/bandsintown.md): Bandsintown provides artist tour dates and concert listings with venues, lineups and ticket or event links; results reflect listed upcoming shows and may include nearby venues.
- [Songkick API](https://fous.com/tools/songkick.md): Songkick finds live concerts, festivals, and artist tour dates, including upcoming artist shows and city concerts within selected dates, with ticket links when available.
- [Last.fm API](https://fous.com/tools/last-fm.md): Last.fm provides listening statistics, artist profiles, discovery, up to 50 tracks or albums, similar artists without percentages, and upcoming events that may be absent.
- [Genius API](https://fous.com/tools/genius.md): Genius provides lyrics, annotations, credits, and music knowledge, plus song stories, relationships, page details, and artist song lists by popularity or release date; dates and views may be unavailable.
- [Ticketmaster API](https://fous.com/tools/ticketmaster.md): Ticketmaster finds upcoming live events and shows available ticket options with prices, excluding partner-only listings and offers requiring a code or sign-in.
- [Spotify API](https://fous.com/tools/spotify.md): Spotify returns public artist profiles, album credits and ordered tracks, song details and play counts, up to 500 playlist songs, keyword results, and country-based podcast charts; dates and regional options vary.
- [SoundCloud API](https://fous.com/tools/soundcloud.md): SoundCloud lets people listen to and share music, find public tracks with play stats, and browse artists’ tracks, with popular lists limited to 30.
- [MusicBrainz API](https://fous.com/tools/musicbrainz.md): MusicBrainz provides community-maintained recording and release information, matching songs to identifiers and release dates and providing artist details and links when available; some release information may be incomplete.
- [All Entertainment tools](https://fous.com/tools/category/entertainment)
