Playbill APIplaybill.com ↗
Access Broadway show listings, theater details, performance schedules, and ticket pricing data from Playbill via a simple JSON API.
What is the Playbill API?
The Playbill API covers currently running Broadway productions across 3 endpoints, returning show titles, theater names and addresses, performance schedules, and ticket pricing (average and top prices). The search_plays endpoint lets you filter shows by title keyword, while get_play_details returns full production details including description and schedule. A dedicated get_grosses endpoint surfaces ticket price data for all currently running Broadway shows in a single call.
curl -X GET 'https://api.parse.bot/scraper/07c5695d-8db6-4dbd-9a53-caaba516f8a6/search_plays?query=Hamilton&category=broadway' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace playbill-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.playbill_api import Playbill, PlaySummary, Play, BoxOffice, TicketPricing
playbill = Playbill()
# Search for Broadway shows matching a query
for show in playbill.plays.search(query="Hamilton"):
print(show.title, show.slug, show.average_ticket_price, show.top_ticket_price)
# Get full details for this show
detail = show.details()
print(detail.title, detail.description, detail.schedule)
print(detail.theater.name, detail.theater.address)
print(detail.average_ticket_price, detail.top_ticket_price)
# Get a play directly by slug
play = playbill.plays.get(slug="hamilton-broadway-richard-rodgers-theatre-2015")
print(play.title, play.theater.name, play.theater.address, play.schedule)
# Get box office grosses for all shows
box_office = playbill.boxoffices.get()
for show_name, pricing in box_office.grosses.items():
print(show_name, pricing.average_ticket_price, pricing.top_ticket_price)
Search for currently running Broadway shows with an optional title filter. Returns a list of shows with titles, slugs, URLs, and current ticket pricing (average and top ticket prices). Single-page response containing all matching results.
| Param | Type | Description |
|---|---|---|
| query | string | Search keyword to filter by play title (case-insensitive substring match) |
| category | string | Show category. Only 'broadway' is currently supported. |
{
"type": "object",
"fields": {
"plays": "array of show objects with title, slug, url, average_ticket_price, and top_ticket_price",
"total": "integer count of returned plays"
},
"sample": {
"data": {
"plays": [
{
"url": "https://playbill.com/production/hamilton-broadway-richard-rodgers-theatre-2015",
"slug": "hamilton-broadway-richard-rodgers-theatre-2015",
"title": "Hamilton",
"top_ticket_price": "$349.00",
"average_ticket_price": "$197.30"
}
],
"total": 1
},
"status": "success"
}
}About the Playbill API
What the API Covers
This API exposes data from Playbill for currently running Broadway productions. The search_plays endpoint accepts an optional query parameter (case-insensitive title substring match) and an optional category parameter (currently only broadway is supported). It returns an array of show objects — each with a title, slug, url, average_ticket_price, and top_ticket_price — plus a total count of results.
Production Details
Passing a production slug from search_plays results to get_play_details returns the full record for that show. The response includes the production url, a title string (which incorporates the theater name and year), a theater object with name and address fields, a schedule string describing current performance times, a description paragraph, and both top_ticket_price and average_ticket_price as dollar-amount strings (or null if unavailable).
Broadway Grosses
The get_grosses endpoint requires no inputs and returns a grosses object whose keys are lowercased show names. Each value is an object with average_ticket_price and top_ticket_price. This is useful for building a quick price comparison across all currently running Broadway shows without making individual detail calls.
Data Scope and Freshness
All three endpoints reflect currently running Broadway productions — past or closed shows are not included. The search_plays and get_grosses endpoints are the right starting points for inventory discovery, while get_play_details is suited for per-production lookups using the slugs returned from search.
The Playbill API is a managed, monitored endpoint for playbill.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when playbill.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official playbill.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display current Broadway show listings with average and top ticket prices on a theater deal-finder app.
- Build a price comparison table across all running Broadway productions using the
get_grossesendpoint. - Power a Broadway show search interface filtered by partial title match via the
queryparameter. - Populate production pages with theater name, address, and performance schedule from
get_play_details. - Track ticket price trends for specific shows by polling
get_grossesat regular intervals. - Generate itinerary recommendations by combining show schedules and theater addresses with mapping tools.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Playbill offer an official developer API?+
What does `get_play_details` return that `search_plays` does not?+
search_plays returns a lightweight record — title, slug, URL, and ticket prices — suitable for listing views. get_play_details adds the full description, a theater object with both name and address, and the schedule string for current performance times. You need the production slug from a prior search_plays call to use this endpoint.Does the API cover off-Broadway or touring productions?+
category parameter only supports broadway, so the API covers Broadway productions exclusively. You can fork this API on Parse and revise it to add an endpoint targeting off-Broadway or touring show data.Are historical or closed shows available through any endpoint?+
How are show names keyed in the `get_grosses` response?+
grosses object uses lowercased show names as keys, each mapping to an object with average_ticket_price and top_ticket_price. If you need to match grosses data back to a specific production, normalize your show titles to lowercase before comparing against these keys.