ELECTRIC STATE · SCENE INDEX

The API

Festival booking data for electronic music — 700+ editions, 9,000+ artists, 1995 to present. Day-by-day lineups, set times where published, every edition linked to its series.

Plans

Launch pricing — 50% off. The rate you sign up at is your rate for the life of the subscription; when launch pricing ends, it ends for new subscribers, not for you. Your API key is issued the moment checkout completes; cancel anytime from the Stripe receipt email.

STANDARD50% OFF LAUNCH

$199$99.5 / month

or $995 / year (normally $1,990)

  • Full API — recent, current & announced seasons
  • Momentum leaderboards (upcoming scope)
  • 50,000 requests / month

Lock in launch pricingannual →

PRO50% OFF LAUNCH

$499$249.5 / month

or $2,495 / year (normally $4,990)

  • Everything in Standard
  • Complete 1995 → now historical archive
  • All-time leaderboards & booking arcs
  • Exports + the quarterly scene read

Lock in launch pricingannual →

Need a custom cut — a roster, a territory, a genre — or an enterprise volume? hello@electricstate.app

Authentication

Keys are issued per organization — write to hello@electricstate.app. Send yours on every request:

curl -s https://api.electricstate.app/v1/coverage \
  -H "Authorization: Bearer esk_live_YOUR_KEY"

Keys are secrets: server-side only, never in a browser page or a shared notebook. Responses are uncached and metered; monthly limits return 429.

Endpoints

GET /v1/festivalsEditions list — filters: year, country, series, q, upcoming, limit, offset.
GET /v1/festivals/{slug}One edition in full: lineup, set times, and its series siblings.
GET /v1/artists/{name}/bookingsAn artist’s entire booking history; name matching folds case and punctuation.
GET /v1/leaderboards/most-bookedscope=upcoming (default) or scope=all — two different questions, answered separately.
GET /v1/coverageCatalog counts, all-time and upcoming.

Machine-readable spec: openapi.json

For AI assistants

Using ChatGPT? A regular chat cannot call this API — its Python tool has no internet access and its browser cannot send auth headers. Build a custom GPT instead (once, two minutes, needs a paid plan):

  1. ChatGPT → Explore GPTs → + Create → Configure tab. Name it “Scene Index”.
  2. Paste the block below into Instructions.
  3. Actions → Create new action → Import from URL → https://api.electricstate.app/v1/openapi.json
  4. Authentication → API Key → type Bearer → paste your key. Save, visibility “Only me”.
  5. Ask it: “what’s the coverage?” — then ask anything in plain English.

Using an agent with real HTTP tools (Claude Code, Cursor, a scripting agent)? Just paste this block into its instructions and add your key where it says<API_KEY>:

You can query the Electric State Scene Index API — festival booking data for
electronic music: 700+ festival editions, 9,000+ artists, 1995–present.

BASE URL: https://api.electricstate.app/v1
AUTH: send header  Authorization: Bearer <API_KEY>  on every request.
The key is a secret. Never print it back, never put it in a URL.

ENDPOINTS (all GET, all return JSON):
1. /festivals — list editions (one row per festival per year).
   Params: year=2015 | country=US | series=<series-slug> | q=<name search>
   | upcoming=true | limit (max 200) | offset. Returns { meta.total, editions[] }.
2. /festivals/{slug} — one edition in full: lineup[], set_times[], series_editions[].
   Slugs look like crssd-festival-spring-2015.
3. /artists/{name}/bookings — an artist's whole booking history.
   Name matching ignores case and punctuation. Returns summary
   { total_bookings, first_year, last_year, span_years } plus every booking.
4. /leaderboards/most-booked?scope=upcoming|all&limit=50
   scope=upcoming (default) = who is booked on festivals still ahead.
   scope=all = all-time career leaderboard. These answer DIFFERENT questions —
   never merge or swap them.
5. /coverage — { all_time, upcoming } festival and artist counts.

RULES:
- "Edition" means one festival in one year. A festival's history = filter by
  its series slug, found on any edition row as series_slug.
- Booking counts measure frequency, never fees.
- Historical coverage is deeper in recent years; say so if comparing eras.
- On 401/403/429, stop and report the error body; do not retry in a loop.

Try it: GET /coverage, then GET /artists/Simply Jeff/bookings — a booking arc
that starts in 1995.

Treat any chat or config you paste a key into as holding a secret — we can rotate your key any time, just ask.

Terms

Licensed per organization. No resale or redistribution of the dataset; attribution (“Data: Electric State Scene Index”) on published work. Booking counts measure frequency, never fees.

electricstate.app · The scene, actually counted.