For people who build things
Everything a signed-out visitor can see on ImprovTeam, you can read from code: cities, groups, events, festivals and listings. You do not need a key or an account.
What it is for
For example, a theatre listing what is on in its city, a festival site showing every team playing in town, a local blog with a "this week" box, or a student project. Anything that helps people find improv is a good use of it.
What is never in it
People, emails, member counts, notes, members-only or staff-only events, private groups, listings nobody has reviewed, meeting links, tokens. The API only republishes what is already on a public page, using the same code as the pages. If a group takes something off its page, it goes from the API within five minutes.
Endpoints
Every endpoint is a GET under /api/v1 and answers in JSON. Lists take limit (1 to 100, default 25) and cursor; the next cursor comes back in next.
GET https://improvteam.com/api/v1/cities
Cities that have groups on ImprovTeam.GET https://improvteam.com/api/v1/cities/{country}/{city}
One city, with sections: shows, dropins, jams, classes, workshops, festivals, auditions, groups. Each section is capped at limit; page through a group for more.GET https://improvteam.com/api/v1/groups/{slug}
One public group: name, kind, description, address of its page, share image, city.GET https://improvteam.com/api/v1/groups/{slug}/events?from=&to=&type=
A group's upcoming public events. Filters: from and to (dates like 2026-12-01), and type (show, dropin, jam, workshop, class, practice).GET https://improvteam.com/api/v1/festivals/{country}
Festivals in a country, with dates and whether submissions are open.GET https://improvteam.com/api/v1/listings/{country}/{city}
Researched listings in a city (theatres, schools, companies, spaces) that a person has reviewed and nobody has claimed.GET https://improvteam.com/api/v1/venues/{country}/{city}?kind=&minCapacity=
Show venues that hire out, in a country or one city: the same list as the venues pages. Filters: kind (venue, or both for places that hire rehearsal rooms too) and minCapacity (the venue or one of its rooms holds at least that many).GET https://improvteam.com/api/v1/venues/{id}
One venue listing by its id.GET https://improvteam.com/api/v1/spaces/{country}/{city}?kind=&minCapacity=
Rehearsal spaces in a country or one city: the same list as the rehearsal space pages. Filters: kind (rehearsal, or both) and minCapacity (a room holds at least that many).GET https://improvteam.com/api/v1/spaces/{id}
One rehearsal space listing by its id.GET https://improvteam.com/api/v1/freelancers/{country}/{city}?role=&what=&gear=&travels=1
Freelancers (musical directors, photographers, videographers, lighting, sound, technicians, designers) in a country or city, with each role's keys, languages, travel and rate. Public profiles only; `role` picks one, `what` and `gear` narrow it.
An example
Ask for the next two shows of a group:
curl "https://improvteam.com/api/v1/groups/spare-balloons/events?limit=2&type=show" You get back:
{
"data": [
{
"id": "evt_8f3k2",
"name": "Spare Balloons: The Big Show",
"type": "show",
"startDate": "2026-12-04T19:30:00.000Z",
"endDate": "2026-12-04T21:30:00.000Z",
"timezone": "Europe/London",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"location": { "name": "The Glad Cafe", "addressLines": ["1006a Pollokshaws Rd", "Glasgow"], "city": "Glasgow", "country": "GB", "accessibility": { "stepFree": true, "accessibleToilet": true, "hearingLoop": false, "seating": true, "relaxedPerformances": false, "note": "Step-free from the side door" } },
"url": "https://spare-balloons.improvteam.com/big-show",
"offers": { "price": "8.00", "priceCurrency": "GBP", "priceLine": "£8.00", "url": null },
"organizer": { "name": "Spare Balloons", "url": "https://spare-balloons.improvteam.com" },
"image": "https://improvteam.com/og/event/evt_8f3k2.png",
"beginnersWelcome": false
}
],
"next": "WyIyMDI2LTEyLTA0VDE5OjMwOjAwLjAwMFoiLCJldnRfOGYzazIiXQ",
"version": 1,
"attribution": "Listed on ImprovTeam, https://improvteam.com"
} Every answer has the same envelope: data, next (a cursor, or null), version, and attribution. Errors look like this:
{ "error": { "code": "not_found", "message": "Nothing public here." } } The event
Events use schema.org words. id and name are what they say. type is one of show, dropin, jam, workshop, class or practice. startDate and endDate are UTC; timezone is where it happens. location is null for an online event. offers appears only when the event has public ticket prices, or when its tickets are sold on another site: then price, priceCurrency and priceLine are null, platform names the site, and offers.url is that site's ticket page. url is the event's page on the group's own address, and image is its share card. Cancelled events are not listed.
Venue and space listings
A listing has id, name, kind (rehearsal, venue or both), url (its page, the canonical address for its kind), api (its address here), city, address (lines, postalCode, country), geo, capacity, description, hireNote, accessibility (a note, or null), rooms (name, capacity, and price, priceCurrency, priceUnit and priceLine when the room has a price) and source (where the details were published, and when they were last checked). contact is the venue's own published booking link, business email, phone and WhatsApp number, or null; it is only what the venue publishes about itself, always with its source, and we remove it on request. confirmedByVenueOn is set when the venue's own person sent corrections. claimedBy names the theatre group on ImprovTeam that took the listing over, when its page is public. A listing that is waiting for review or has been taken down is not in the API. The city answer links to both lists.
Limits
Answers are cached for five minutes, so a request for the same thing costs us nothing. Requests that miss the cache are limited to 20 a minute from one address; go over and you get a 429 with a Retry-After. Please cache on your side too. CORS is open (Access-Control-Allow-Origin: *) for GET and OPTIONS, so you can call it from a browser.
What we ask
- Link back. Say "Listed on ImprovTeam" with a link to improvteam.com wherever you show the data. The attribution field of every answer has the words.
- Honour cancellations. If an event disappears from the API, take it down from yours. Do not keep stale copies.
- No reselling. Do not charge people for access to this data, and do not repackage it as a paid product.
- No scraping around it. There is nothing about people in here, and please do not try to put it back together from elsewhere.
- We may change or stop this. If we do, it will be in the changelog below.
The widget
You do not need to write code: you paste one line into your site. Open your group's Share menu, or the Publish step of your website, and choose the colours, the layout and how many events. The code looks like this:
<iframe id="improvteam-embed" src="https://improvteam.com/embed/your-group" title="Upcoming events" width="100%" height="420" style="border:0;max-width:480px" loading="lazy"></iframe> For a whole city, use /embed/city/{country}/{city}, for example /embed/city/gb/glasgow. Options go on the end: theme (auto, light, dark), layout (list, compact), count (1 to 10), group (0 or 1) and resize (1).
The optional second snippet makes the box as tall as the list. The widget sends your page nothing but its height, and the snippet ignores messages from anywhere other than ImprovTeam.
Calendar feeds
Groups can publish a calendar feed (iCalendar) of their public events from their settings. Subscribe to it in any calendar app. That is the way to get events into a calendar; the API is for building things.
Every city has one too, at /s/{country}/{city}.ics (for example /s/gb/glasgow.ics): its public drop-ins, jams and shows for the next 60 days. Add ?beginners=1 or ?access=step-free for the same filters as the city page.
Changelog
- 3 November 2026: version 1. Cities, groups, events, festivals and listings. The embeddable widget. schema.org markup on public pages.
- 3 November 2026, added fields: every event has beginnersWelcome (true when the organiser marked it for people new to improv), and its location has accessibility (stepFree, accessibleToilet, hearingLoop, seating, relaxedPerformances, note), or null when the venue says nothing. A venue or theatre group has accessibility too, and a course in a city has beginnersWelcome. Nothing was removed or renamed.
- 3 November 2026, added fields: accessibility also carries bsl, captioned and assistanceDogs (what that one date offers, together with the venue), and relaxedPerformances is true when either the venue or the date says so. A festival has submissionsClose (the deadline while its call is open), submissionFee (minor units, 0 for free, the currency and whether a waiver is offered) and formats (troupe, duo, solo, workshop), all as the festival states them. Nothing was removed or renamed.
- 4 November 2026, added endpoints: venues and spaces, each a list for a country or a city and one listing by id, with kind and minCapacity filters. Venues are listings now, not groups, so a city's groups no longer include venues; the city answer has links to the two new lists. Nothing was removed or renamed.
If something is missing or broken, tell us on the contact page. Contact