# 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/workflows/setlist-fm
- Handle: `@setlist-fm`
- Category: [Entertainment](https://fous.com/workflows/category/entertainment)
- Source website: https://setlist.fm
- Last verified: Sep 29, 2026
- Fous is not affiliated with setlist.fm.

## Methods

### Get concert setlist

Operation `get_concert_setlist`, version 1. 1 credit per call.

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 call.

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 |  | Tour used, or null if filtered by year. |
| `year` | integer or null |  | Year used, or null if filtered by tour. |
| `songs` | array |  | Songs in descending order by number of performances. |
| `songs[].song_link` | string |  | Page showing statistics for this song. |
| `songs[].song_title` | string |  |  |
| `songs[].times_played` | integer |  |  |
| `songs[].original_artist` | string or null |  | Original artist for a cover, otherwise null. |
| `songs[].share_of_concerts_percent` | number |  | Times played divided by setlists counted, capped at 100%. |
| `artist` | string |  | Artist name on setlist.fm. |
| `statistics_link` | string |  | Tour or year statistics page. |
| `concerts_counted` | integer |  | Setlists listed by setlist.fm for this tour or year. |

### List recent setlists

Operation `list_recent_setlists`, version 1. 1 credit per call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@setlist-fm","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with setlist.fm?

No. Fous is not affiliated with setlist.fm. This workflow reads the public setlist.fm website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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 workflows](https://fous.com/workflows/category/entertainment)
