Feeds & API
Everything Has Things knows about Grand Rapids is available as an open feed, covering the next 60 days. No key, no sign-up, CORS enabled. If you build something with these, we would rather you did than not.
City feeds
- /feeds/events.ics · subscribe in any calendar app
- /feeds/events.json · structured JSON, same shape as the API
- /feeds/events.rss · RSS 2.0
- /feeds/events.csv · one row per showtime, for spreadsheets
Every city site publishes the same four feeds, so montreal.hasthings.com/feeds/events.csv is Montréal's. City pages announce them with <link rel="alternate">, so feed readers and calendar apps can find them from the page address.
API
- /api/events · tonight by default; paginated; carries the forecast
- /api/venues · every active venue
/api/events/<slug>· one event with every showtime/api/venues/<slug>· one venue/api/venues/<slug>/events· upcoming at one venue
Parameters for /api/events
- night
YYYY-MM-DD— one night. Nights run to 5 AM, so a 1 AM show belongs to the evening before.- date
YYYY-MM-DD— one calendar date, midnight to midnight, America/Detroit.- from, to
- ISO 8601 instants. Use one time selector at a time.
- category
musicfilmcomedydj-partytheatrearttalkother. One name or a comma-separated set (category=music,comedy);otherstands for every kind without a filter of its own.- venue, neighbourhood
- Venue slug; neighbourhood display name.
- tag
- Tag slug — a genre, a series, or a provider such as
rickshaw-theatre. Items carry their tags. - size, minImportance, bands
notable(importance 20 and up: club and theatre nights) orbig(40 and up: arenas, festivals, sold-out shows); or a number 0–100. Importance is computed from the room's size, how many independent sources list the event, and whether it sold out — never from taste.- status
scheduledsold-outpostponedcancelled- sort, dir
timetitlevenueneighbourhoodcategoryagestatusimportance;ascordesc.- limit, offset
- Default 100, maximum 500. The envelope carries
totalandnextOffset.
The API is scoped by hostname. There is no ?city= parameter, because grand-rapids.hasthings.com already says which city you mean. Unknown or malformed parameters return a 400 with a reason.
Limits and caching
Responses are cached at the edge: feeds for 15 minutes, API answers for 5 minutes, and both may be served stale for a while after that. Polling more often than that gets you the same bytes. There is no rate limit today beyond that cache; if a client makes the site slow for people, that client gets blocked, so identify yourself with a User-Agent that says who you are.
Licence and attribution
The listing metadata in these feeds — titles, times, venues, categories, tags and links — is published under CC BY 4.0. Use it, reshape it, republish it; credit it as “Data: Has Things (hasthings.com)” and, where you can, keep the link to the venue or seller each row carries. Every JSON envelope repeats this in a license block and every item names its sources.
The forecast is not ours and travels under its own terms. /api/events, /api/events/<slug> and /feeds/events.json all carry a weather block beside the events — the whole city's nights on the list endpoints, and just the nights one event runs on when you ask for that event — with a source naming Open-Meteo and its CC BY 4.0 terms. Join it to events on nightDate; the outdoors field is what says whether the weather bears on one, and it sits on each occurrence rather than on the event, because a run can be in one room on Friday and another on Saturday. Keep the attribution “Weather data by Open-Meteo.com” with anything you publish from it.
What the bulk feeds deliberately leave out: descriptions, posters and images. Those belong to the venues and ticketing platforms that wrote them, and their terms do not allow us to hand them on in bulk. The single-event API endpoint mirrors the event page, description included, for display only. Has Things is a directory of pointers, not a copy of anyone's catalogue; if you need the full listing, follow the link.
Venue calendars
- 1800 East Beltline Avenue Southeast · 1 upcoming
- 443 Bridge Street Northwest · 1 upcoming
- 701 5th Street Northwest · 1 upcoming
- 819 Ottawa Avenue Northwest · 1 upcoming
- AGAVE SPORTS LOUGE · 1 upcoming
- Acrisure Amphitheater · 7 upcoming
- ArtRat Gallery · 3 upcoming
- Big Room - MI · 2 upcoming
- Celebration Cinema · 1 upcoming
- Chateau Grand Rapids · 1 upcoming
- Cheer's Good Time Saloon · 1 upcoming
- Cheers Restaurant · 1 upcoming
- Chicago Beef Joint · 1 upcoming
- DeVos Performance Hall · 27 upcoming
- DeVos Place · 5 upcoming
- Dr. Grins Comedy Club at The B.O.B. · 2 upcoming
- First Park Congregational Church · 1 upcoming
- Fountain Street Church · 1 upcoming
- Four Star Theatre · 2 upcoming
- Fulton Street Pub & Grill · 1 upcoming
- GLC Live at 20 Monroe · 26 upcoming
- GR Creator Studio · 1 upcoming
- Grand Rapids Civic Center · 1 upcoming
- Grand Rapids, MI · 1 upcoming
- Küsterer Brauhaus · 2 upcoming
- LE PETITE CHATEAUX · 1 upcoming
- Midtown GR · 1 upcoming
- O'Toole's Public House · 2 upcoming
- Peter Martin Wege Theatre · 2 upcoming
- Pietro's Italian Restaurant · 1 upcoming
- Rapid River Stillhouse · 2 upcoming
- Riverside Park · 1 upcoming
- Roots Brew Shop · 1 upcoming
- Royce Auditorium at St. Cecilia Music Center · 2 upcoming
- Stella's Lounge · 1 upcoming
- The 1530 Events · 2 upcoming
- The Bistro at Courtyard by Marriott Downtown · 1 upcoming
- The Church of Jesus Christ of Latter-day Saints · 3 upcoming
- The Elevated Market and Glasshouse · 1 upcoming
- The Grand Celebration Center · 1 upcoming
- The Intersection · 47 upcoming
- The Pyramid Scheme · 66 upcoming
- The Tin Can · 1 upcoming
- The Wealthy Theatre · 4 upcoming
- Tip Top Deluxe Bar & Grill · 26 upcoming
- Tommy Brann's Steakhouse & Grille · 1 upcoming
- Two James Spirits · 3 upcoming
- Van Andel Arena · 33 upcoming
- Vander Mill Grand Rapids · 2 upcoming
- Venue3Two · 1 upcoming
- Vytautas Aid Society · 1 upcoming