CAPA APIcapa.com ↗
Access CAPA Columbus performing arts events via API. Get titles, dates, venues, ticket links, and images for theater shows, concerts, and live performances.
What is the CAPA API?
The CAPA API exposes upcoming productions from the Columbus Association for the Performing Arts through a single get_events endpoint that returns up to 10 fields per event, including title, venue name, event date text, ticket purchase links, and a main image URL. Results are paginated and ordered by most recent, making it straightforward to build event calendars or performance discovery tools tied to CAPA's Columbus-area lineup.
curl -X GET 'https://api.parse.bot/scraper/e8d3f4b2-b231-4cce-b128-06bb1285d292/get_events?page=1&per_page=5' \ -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 capa-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.
"""Walkthrough: CAPA Events API — browse performing arts events in Columbus."""
from parse_apis.capa_events_api import Capa, EventPageNotFound
client = Capa()
# List upcoming events with a small cap to keep the demo fast.
for event in client.events.list(limit=5):
print(event.title, "|", event.venue, "|", event.event_date_text)
# Drill into the first event for full detail.
first = client.events.list(limit=1).first()
if first:
print(first.title, first.detail_url)
print("Ticket links:", first.ticket_links)
print("Published:", first.date_published)
# Typed error handling for an out-of-range page.
try:
far_page = client.events.list(limit=3)
for ev in far_page:
print(ev.title)
except EventPageNotFound as exc:
print(f"Page not found: {exc.page}")
print("exercised: events.list / event field access / EventPageNotFound catch")
Fetch paginated CAPA events/productions. Returns event details including title, detail URL, rendered HTML content, publication and modification dates, event date text extracted from content, venue name, ticket purchase links, and main image URL. Results are ordered by most recently published first. Paginated via page number; total count and total pages are included in the response.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. Must be a positive integer. |
| per_page | integer | Number of events per page. Must be an integer between 1 and 100. |
{
"type": "object",
"fields": {
"page": "integer - current page number",
"total": "integer - total number of events available",
"events": "array of Event objects with id, title, detail_url, content_rendered, date_published, date_modified, event_date_text, venue, ticket_links, image_url",
"per_page": "integer - number of events per page",
"total_pages": "integer - total number of pages"
}
}About the CAPA API
What the API Returns
The get_events endpoint returns a paginated list of CAPA productions. Each event object includes a title, a detail_url for the full production page, rendered HTML content, publication_date and modification_date timestamps, an event_date text string extracted from the event content, a venue_name, an array of ticket_links for purchasing, and a main_image_url. The top-level response also carries total (count of all available events), total_pages, page, and per_page for navigation.
Pagination and Filtering
Two optional query parameters control pagination: page (a positive integer) and per_page (an integer between 1 and 100). There is no server-side filter for date range, venue, or event category — all filtering against specific attributes must be done client-side after retrieving results. Results are ordered by most recent by default.
Coverage and Scope
The API covers publicly listed CAPA productions in Columbus, Ohio. Data reflects what CAPA publishes on their site for upcoming and current productions, including performing arts categories such as theater, concerts, and live performances. Historical or archived events that are no longer publicly listed are not guaranteed to be accessible. The event_date field is extracted from event content as text, so downstream parsing may be needed to convert it into a structured date format.
The CAPA API is a managed, monitored endpoint for capa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when capa.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 capa.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?+
- Build a Columbus performing arts calendar that displays event titles, venues, and dates from CAPA's current lineup.
- Aggregate ticket purchase links across CAPA productions to surface them in a unified ticketing dashboard.
- Display promotional imagery for CAPA shows using the
main_image_urlfield in a visual event guide. - Monitor CAPA's event schedule for additions or changes by comparing
modification_datevalues across polling intervals. - Power a venue-specific event feed by filtering returned events by
venue_nameon the client side. - Notify subscribers about newly published CAPA productions by tracking
publication_dateagainst a previously stored snapshot.
| 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 CAPA have an official public developer API?+
What does the `get_events` endpoint actually return for each event?+
Can I filter events by date range or event category through the API?+
get_events endpoint does not support server-side filtering by date range, venue, or category. The only parameters are page and per_page for pagination. Any attribute-based filtering needs to happen client-side after fetching results. You can fork this API on Parse and revise it to add server-side filtering if your use case requires it.Is the event date returned as a structured timestamp or plain text?+
event_date field is returned as a text string extracted from the event content rather than a normalized ISO timestamp. You may need to parse it further depending on how your application consumes dates.