Gov APIteatroguaira.pr.gov.br ↗
Access upcoming events from the Centro Cultural Teatro Guaíra in Curitiba, Brazil. Get titles, venues, dates, times, and categories via 2 endpoints.
What is the Gov API?
The Teatro Guaíra API exposes upcoming events from the Centro Cultural Teatro Guaíra events calendar in Curitiba, PR, Brazil across 2 endpoints. The list_events endpoint returns paginated event records — up to 15 per page — including title, category, venue, address, start and end dates, and a slug usable with get_event to retrieve full details for a single event.
curl -X GET 'https://api.parse.bot/scraper/8ae79f72-8364-4017-a93b-110a011274f1/list_events?query=Peter+Pan' \ -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 teatroguaira-pr-gov-br-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: Teatro Guaíra events calendar — bounded, re-runnable."""
from parse_apis.teatroguaira_pr_gov_br_api import (
TeatroGuaira, EventCategory, EventNotFound,
)
client = TeatroGuaira()
# List upcoming events, capped to 5 total items.
for event in client.events.list(limit=5):
print(event.title, "|", event.venue, "|", event.start_date)
# Filter by category and drill into the first result's full detail.
event = client.events.list(category=EventCategory.GERAL, limit=1).first()
if event is not None:
detail = client.events.get(id=event.id)
print(detail.title, detail.venue, detail.address)
print(f" {detail.start_date} {detail.start_time} – {detail.end_date} {detail.end_time}")
# Point lookup with typed error handling.
try:
solo = client.events.get(id="nonexistent-slug")
print(solo.title)
except EventNotFound:
print("Event not found — slug may have changed.")
print("exercised: events.list / events.get / Event.refresh (via get)")
Returns one page of upcoming events from the events calendar, ordered by start date ascending as the site lists them. Each page holds up to 15 events; for every event on the page the event's own page is also read to fill venue, address and category, so one call costs up to 16 round trips. Optional keyword, event-type and period-of-day filters are applied by the site itself. Pagination is caller-controlled through `page` (1-based); `has_more` reports whether the site offers a further page. A filter combination the site has no events for returns an empty `events` array with `count` 0. Dates are YYYY-MM-DD and times HH:MM (24h, local Brazil time as published). `venue` is read from the 'Local:' line of the event description and is null when the description has none; `address` is the site's structured address (street, neighbourhood, city, state, postal code when present, country). Any event page that could not be read is listed in `detail_failures` and its event still appears with list-page data only.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number; each page holds up to 15 events. |
| query | string | Free-text keyword filter applied by the site to event titles/descriptions. Omitted = no keyword filter. |
| period | string | Period-of-day filter from the site's 'Período' dropdown. Omitted = any period. |
| category | string | Event type filter from the site's 'Tipo de evento' dropdown. Omitted = all types. |
{
"type": "object",
"fields": {
"page": "integer page number returned",
"count": "integer number of events on this page",
"events": "array of event records: id (slug usable with get_event), title, category, venue (nullable), address (nullable), start_date, end_date (YYYY-MM-DD), start_time, end_time (HH:MM), url",
"has_more": "boolean, true when the site offers a following page",
"detail_failures": "array of {url, reason} for event pages that could not be read on this call"
},
"sample": {
"data": {
"page": 1,
"count": 1,
"events": [
{
"id": "Peter-Pan",
"url": "https://www.teatroguaira.pr.gov.br/Evento/Peter-Pan",
"title": "Peter Pan",
"venue": "Auditório Salvador de Ferrante (Guairinha)",
"address": "Rua XV de Novembro, 971, Centro, Curitiba, PR, Brasil",
"category": "Geral",
"end_date": "2026-09-26",
"end_time": "16:55",
"start_date": "2026-09-26",
"start_time": "16:00"
}
],
"has_more": false,
"detail_failures": []
},
"status": "success"
}
}About the Gov API
What the API covers
The API reflects the public events calendar at teatroguaira.pr.gov.br, one of the major performing arts venues in southern Brazil. Both endpoints return structured fields including title, category, venue, address, start_date, start_time, end_date, and end_time. Dates are formatted YYYY-MM-DD and times as HH:MM. The venue field is sourced from the event description's 'Local:' line and may be null when the venue is not listed.
list_events — paginated calendar
list_events accepts four optional filters: page (1-based integer for pagination), query (free-text keyword matched against event titles and descriptions), period (maps to the site's 'Período' dropdown), and category (maps to the 'Tipo de evento' dropdown). The response includes events (array of event records), count (events on the current page), has_more (boolean indicating whether a next page exists), and detail_failures (an array of {url, reason} objects for any event detail pages that could not be fully resolved during the call).
get_event — single event detail
get_event takes a required event_id — the slug emitted as id in each record from list_events — and returns the full detail record for that event: id, url, title, category, venue, address, start_date, start_time, end_date, and end_time. Fields that the source does not provide for a given event are returned as null rather than omitted. Passing an unknown or expired slug returns an error.
The Gov API is a managed, monitored endpoint for teatroguaira.pr.gov.br — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when teatroguaira.pr.gov.br 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 teatroguaira.pr.gov.br 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?+
- Aggregate upcoming concerts and theatre performances in Curitiba into a local events app using
list_eventswith thecategoryfilter. - Build a weekly digest of Centro Cultural Teatro Guaíra events by iterating pages with
list_eventsand filtering byperiod. - Display venue and address details for a specific performance on a travel itinerary site using
get_event. - Monitor newly announced events by polling
list_eventspage 1 and comparing returnedidslugs against a stored set. - Populate a structured event database with
start_date,end_date,start_time, andend_timefields for scheduling tools. - Filter events by keyword with the
queryparameter to surface only dance, opera, or children's shows relevant to a niche audience.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Teatro Guaíra have an official public developer API?+
What does the `detail_failures` field in `list_events` mean?+
detail_failures is an array of objects, each containing url and reason, for event detail pages that could not be read during the current call. Events with failures may still appear in the events array but will have null values for fields sourced from the detail page, such as venue and address. Retrying get_event with the affected slug on a subsequent call can fill those gaps.Can I retrieve historical or past events from the calendar?+
list_events and get_event reflect upcoming events as the site presents them, ordered by start date ascending. Past events that no longer appear in the calendar are not accessible. You can fork this API on Parse and revise it to target an archived or past-events view if one becomes available on the source site.Does the API return ticket prices or booking links?+
title, category, venue, address, date and time fields, and the event url. Ticket pricing and direct purchase links are not part of the response. You can fork this API on Parse and revise it to extract ticketing data if that information is present on individual event pages.What values are valid for the `category` and `period` filter parameters in `list_events`?+
category and period map directly to dropdown options as presented on the Teatro Guaíra events calendar page. Valid values depend on what the site currently offers in the 'Tipo de evento' and 'Período' dropdowns. Omitting either parameter returns results across all categories or periods respectively.