Songkick API: Search concerts in a city
Finds upcoming concerts in a city between two dates on Songkick. Each concert includes its artists, venue, festival name and ticket link.
Unofficial. Not affiliated with or endorsed by Songkick.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- City, required
city City to search, such as Chicago or London, UK.
London, UK
- Page optional
page Page of results, for example 2. Defaults to 1.
1 (default)
Whole number 1 or more.
- End Date optional
end_date Last concert date, for example 2026-10-31. Defaults to 30 days after start_date.
Not set
- Start Date optional
start_date First concert date, for example 2026-10-01. Defaults to today.
Not set
- Max Results optional
max_results Concerts per page, for example 20. Defaults to 50.
2
Whole number from 1 to 200. Default
50.
Input as JSON
{ "city": "London, UK", "max_results": 2}Output
{ "concerts": [ { "date": "2026-10-23", "venue": "Alexandra Palace", "artists": [ "Fat Freddy's Drop" ], "event_id": "42847845", "event_link": "https://www.songkick.com/concerts/42847845-fat-freddys-drop-at-alexandra-palace" , "ticket_link": "https://www.songkick.com/tickets/33564650" , "festival_name": null }, { "date": "2026-10-23", "venue": "Eventim Apollo", "artists": [ "Lake Street Dive", "Mamas Gun" ], "event_id": "42894172", "event_link": "https://www.songkick.com/concerts/42894172-lake-street-dive-at-eventim-apollo" , "ticket_link": "https://www.songkick.com/tickets/33903772" , "festival_name": null } ], "metro_area": "London, UK", "metro_area_id": "24426"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"songkick.com/search_concerts","input":{"city":"London, UK","max_results":2}}' # 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": "songkick.com/search_concerts" , "input": { "city": "London, UK", "max_results": 2 }})# 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": "songkick.com/search_concerts" , "input": { "city": "London, UK", "max_results": 2 } }), 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 songkick.com/search_concerts# with {"city":"London, UK","max_results":2}"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": [ "city" ], "properties": { "city": { "type": "string", "minLength": 1, "description": "City to search, such as Chicago or London, UK." }, "page": { "type": "integer", "default": 1, "minimum": 1, "description": "Page of results, for example 2. Defaults to 1." }, "end_date": { "type": "string", "description": "Last concert date, for example 2026-10-31. Defaults to 30 days after start_date." }, "start_date": { "type": "string", "description": "First concert date, for example 2026-10-01. Defaults to today." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Concerts per page, for example 20. Defaults to 50." } }}Output schema
{ "type": "object", "required": [ "metro_area", "metro_area_id", "concerts" ], "properties": { "concerts": { "type": "array", "items": { "type": "object", "properties": { "date": { "type": "string" }, "venue": { "type": [ "string", "null" ] }, "artists": { "type": "array", "items": { "type": "string" } }, "event_id": { "type": "string" }, "event_link": { "type": "string" }, "ticket_link": { "type": [ "string", "null" ] }, "festival_name": { "type": [ "string", "null" ] } } } }, "metro_area": { "type": "string" }, "metro_area_id": { "type": "string" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
songkick.com/search_concerts- Returns
- metro area, concerts with date, artists, festival, venue, ticket link, event link
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 songkick.com/search_concerts with the inputs above.
Ask your agent
- Show me upcoming concerts in Nashville between March 3 and March 20, 2026, with artists, venues and ticket links
- What live music is happening in Austin next month? I want dates, lineups and where to buy tickets
- Find gigs in Manchester, UK for the second half of October 2026 including any festival names
- Songkick listings for Denver concerts from June 1 to June 15, 2026, page 2 with 20 results per page
- Are there any shows in Toronto this weekend? List the bands, venues and event links
See more
All Songkick methodsGets 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 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_eventsGet 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.
setlist.fm/get_concert_setlistFinds 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 upcoming public Meetup events by topic and city, sorted by start time. Only events that mention the topic are included; external costs and undisclosed venues may not be shown.
meetup.com/search_eventsFinds tours and experiences in a city on Viator, with optional keywords, date, currency and sorting. Prices are starting prices.
viator.com/search_toursFinds GetYourGuide tours, tickets and activities in a city, optionally matching words, available on a day, sorted by popularity, price or rating, with prices, ratings and booking features.
getyourguide.com/search_activitiesFinds Klook activities, tickets, tours and passes in a city, with ratings, booking counts, prices and booking policies. Keyword matches are ranked by Klook and may include related activities.
klook.com/search_activities