About Matinee
The cheap seats exist. The interface doesn't.
Broadway just closed a record season — $1.91 billion in grosses, an average paid admission around $131, celebrity plays running $300–900 a seat. In the same season, 30 of 32 shows ran an official program that gets you in for under $50: digital lotteries, box-office rush, standing room.
The catch is the interface. Those programs live on four or five separate platforms, open and close at odd hours, and the community's best tool is a volunteer-run static page whose own disclaimer says it can't guarantee freshness. Even TodayTix's official advice is to "note what time Rush opens, set an alert" — yourself. This app is that alert, plus the map, plus the board.
Why the data is curated by hand
There is no API for any of this. We checked properly — the research is in the repo (RESEARCH.md). Every rush and lottery program here (62 of them) and every Broadway house (41) was entered by hand from the platforms' own pages and the standard editorial roundups — the same way the incumbents actually maintain their data.
That's a feature, not a fallback: the dataset is small, slow-moving, and legible. Every row carries a lastVerified date, and anything older than about two weeks renders as unverified in the UI rather than pretending to be fresh.
Who actually sells Broadway tickets
No single seller covers Broadway. Ticketing follows theater ownership: the Shubert houses sell through Telecharge, the Nederlander and Disney houses through Broadway Direct, the ATG houses through ATG Tickets, and the nonprofits through their own box offices. That split is the most quietly confusing fact in Broadway ticket-buying, and it's why the District map colors every house by who sells it.
What we deliberately didn't build
Judgment is most visible in the rejections, so here they are:
No scraping. Ticketmaster's terms prohibit automated retrieval outright, and courts have entertained the copyright theory behind that. SeatGeek sits behind bot protection. A product built on scraping these is a product built on sand.
No lottery-entry automation. Every known bot drives a real browser or a phone emulator with someone's personal login, and every one we studied rotted within weeks. We link you to the entry page at the right moment instead; you enter yourself.
No resale APIs. StubHub's and TodayTix's APIs are partner-only, and SeatGeek's terms forbid showing other sellers' listings beside its data. Purchases here always deep-link out to the official seller — we are the index, never the checkout.
No marketplace, in the end. This app began as a study of a peer-to-peer ticket marketplace, and for a while it carried a working replica. We retired it: a demo marketplace can only ever be theater about theater — fake listings, fake sales — while everything else here runs on real, verifiable data. The app the reference marketplace still deserves credit for is named below.
Open data
The datasets are the spine of this product, so they're published — stamped, structured, and free to build on:
GET /api/programs.jsonGET /api/theaters.jsonAll times America/New_York. Verify with the linked platform before you plan a night around a row.
Sources & credits
Wikidata.Each house carries cross-reference IDs (Wikidata → IBDB and Playbill) seeded from Wikidata's CC0 data — then audited by hand, because the seed has real errors: Wikidata lists the Gershwin at 15,408 seats. It has about 1,933. That one number is the whole argument for hand-curation.
TDF.The live TKTS board comes from TDF's public TKTS Live page, and always renders with TDF's own "updated" stamp — never our fetch time. When their board is stale, ours says so.
Colophon
Built with Next.js, React, Tailwind, and Motion. The design language is reverse-engineered from screenshots of the Theatr iOS app and documented in DESIGN.md; the phased build lives in PLAN.md. This is a personal portfolio experiment — it is not affiliated with Theatr, the ticketing platforms, or any theater owner, and poster art belongs to its productions.