StungEvents API
A free, global events API — concerts, festivals, sports, film, demand data and embeddable widgets. Base URL: https://api.stungevents.com
No auth for readsJSONCORS enabledFree
Quick start
Every read endpoint returns JSON and needs no key. Try it:
curl "https://api.stungevents.com/events?city=London&limit=3"
Embed events on your own site with one line — see Widgets.
Authentication
Public read endpoints (events, search, articles, artists, venues, demand-leaders, plan) require no authentication. The POST /demand-it and POST /signup write endpoints are open but rate-limited per IP. Registered publishers get higher limits and an API key — request one at stungevents.com.
Rate limits
| Tier | Limit |
|---|---|
| Unauthenticated (per IP) | 1,000 requests / day |
| Registered publisher (API key) | 10,000 requests / day |
| Demand It! writes (per IP) | 60 / day, deduped per artist+city / 24h |
Endpoints
/eventsList upcoming events.
Params: city, country, category, from, to, limit (≤100), offset, featured=1
curl "https://api.stungevents.com/events?city=London&category=concerts&limit=3"
{ "ok": true, "count": 3, "events": [ { "title": "...", "slug": "...", "start_utc": "...", "venue_name": "...", "city": "London", "ticket_url": "...", "category": "concerts" } ] }/events/:slugSingle event by slug or id.
curl "https://api.stungevents.com/events/khalid-greek-theatre-..."
{ "ok": true, "event": { ... } }/searchFull-text event search.
Params: q (required)
curl "https://api.stungevents.com/search?q=coldplay"
{ "ok": true, "query": "coldplay", "events": [ ... ] }/venues/:slugVenue details + its upcoming events.
curl "https://api.stungevents.com/venues/rebel-toronto-canada"
{ "ok": true, "venue": { ... }, "events": [ ... ] }/artists/:slugArtist profile.
curl "https://api.stungevents.com/artists/taylor-swift"
{ "ok": true, "artist": { "name": "Taylor Swift", "genres": "...", "spotify_id": "..." } }/articlesPublished news articles.
Params: lang (default en), category, limit (≤50), offset
curl "https://api.stungevents.com/articles?limit=5"
{ "ok": true, "articles": [ { "title": "...", "slug": "...", "summary": "..." } ] }/articles/:slugFull article body + translations.
curl "https://api.stungevents.com/articles/some-story-abcd1234"
{ "ok": true, "article": { ... } }/demand-itDemand It! — register demand for an artist in a city.
Params: JSON body: artist_name (required), city (required), country_code, user_email, notify_me
curl -X POST "https://api.stungevents.com/demand-it" -H "Content-Type: application/json" -d '{"artist_name":"Taylor Swift","city":"Honolulu"}'{ "ok": true, "artist": { "name": "Taylor Swift", "slug": "taylor-swift" }, "total_demands": 12, "city_demands": 5, "your_rank": 2 }/demand-leadersDemand leaderboard (top artists, top cities, fastest growing). Add ?artist=slug for one artist's city breakdown.
curl "https://api.stungevents.com/demand-leaders"
{ "ok": true, "top_artists": [ ... ], "top_cities": [ ... ], "fastest_growing": [ ... ] }/demand-reportPer-artist demand by city (promoter dashboard). ?artist=slug or ?artist_id=. Add &format=html for an embeddable widget.
curl "https://api.stungevents.com/demand-report?artist=taylor-swift"
{ "ok": true, "artist": { ... }, "total_demands": 12, "cities": [ { "city": "Honolulu", "demands": 5 } ] }/planPlan My Night — outfit, dinner, ride, hotel, music for an event. Add &narrative=1 for an AI summary.
Params: event_id (required), narrative=1
curl "https://api.stungevents.com/plan?event_id=SLUG"
{ "ok": true, "event": {...}, "outfit": {...}, "transport": {...}, "hotel": {...}, "dinner": {...}, "music": {...} }/click/:slugAffiliate-tracked ticket redirect (302).
https://api.stungevents.com/click/SLUG
302 → ticket partner (affiliate-wrapped)
/og/:slugDynamic branded OG/social image (SVG) for an event.
https://api.stungevents.com/og/SLUG
image/svg+xml
/metricsPlatform-wide stats (events, articles, users, affiliate).
curl "https://api.stungevents.com/metrics"
{ "ok": true, "events": {...}, "news": {...} }/signupSubscribe to event alerts.
Params: JSON: email (required), city, frequency (daily|weekly)
curl -X POST "https://api.stungevents.com/signup" -H "Content-Type: application/json" -d '{"email":"you@example.com","city":"London"}'{ "ok": true }MCP server (for AI agents)
StungEvents is callable natively by AI assistants via the Model Context Protocol. Listed in the official MCP Registry as com.stungevents/events.
Or add manually to any MCP client:
{ "mcpServers": { "stungevents": { "url": "https://mcp.stungevents.com" } } }
Tools: search_events, get_event, plan_my_night, demand_artist, demand_leaders, list_news. Endpoint: mcp.stungevents.com
Embeddable widgets
Drop StungEvents events onto any site — no signup, free forever. Add &theme=light for light backgrounds.
Events in a city (script):
<script src="https://widgets.stungevents.com/events.js?city=London&limit=5"></script>
Or as an iframe:
<iframe src="https://widgets.stungevents.com/embed/events?city=London"
style="width:100%;height:420px;border:none"></iframe>
| Widget | Embed URL |
|---|---|
| Event list | /embed/events?city=&category=&limit=&theme= |
| City guide | /embed/city/:city |
| Single event + countdown | /embed/event/:slug |
| Artist upcoming shows | /embed/artist/:slug |
| Demand It! button | /embed/demand-it?artist=&city= |
See the live widget gallery →
SDK snippets
JavaScript
const r = await fetch("https://api.stungevents.com/events?city=Berlin&limit=5");
const { events } = await r.json();
events.forEach(e => console.log(e.title, e.start_utc));
Python
import requests
events = requests.get(
"https://api.stungevents.com/events",
params={"city": "Tokyo", "category": "concerts", "limit": 5},
).json()["events"]
for e in events:
print(e["title"], e["start_utc"])
Demand an artist (POST)
requests.post("https://api.stungevents.com/demand-it",
json={"artist_name": "Taylor Swift", "city": "Honolulu"})