CBAt Brazil Road Race Calendar Scraper
CBAt Brazil Road Race Calendar Scraper
Scrapes the official Confederação Brasileira de Atletismo (CBAt) sanctioned road-race calendar for Brazil. Returns every CBAt-permitted street-running event with race name, date, distances offered, host city and state, permit level (Bronze, Ouro, Prata), and permit number.
Brazil is LATAM's #1 running market (28M+ registered runners) and CBAt is the sole federation that sanctions road races claiming a chancela federal. This actor is the authoritative machine-readable source for the approximately 1 500 sanctioned events published per calendar year.
What does it do?
The actor fetches two calendar pages from cbat.org.br:
- Bronze calendar (~120 events) — community and regional races with a CBAt Bronze permit
- Ouro e Prata calendar (~30 events) — premium events including half-marathons and marathons with Gold or Silver permits
Event data is embedded as HTML tables inside Next.js RSC (React Server Components) script payloads; the actor decodes and parses these tables to produce clean, structured output.
Output schema
| Field | Type | Description |
|---|---|---|
event_id |
string | Permit number (e.g. "033/2026"), or generated slug when unavailable |
event_name |
string | Official race name as listed on the CBAt calendar |
event_date_day |
string | Day(s) of the month the race is held |
event_month |
string | Month in Portuguese (e.g. "Janeiro", "Maio") |
event_year |
integer | Calendar year (e.g. 2026) |
event_type |
string | Always "corrida-de-rua" |
permit_level |
string | "Bronze" or "Ouro e Prata" |
permit_number |
string | CBAt permit number (e.g. "033/2026") |
host_city |
string | Host city name |
host_state |
string | Two-letter Brazilian state abbreviation (e.g. "SP", "RJ") |
host_location |
string | Raw location string as scraped |
distances |
string | Comma-separated list of race distances (e.g. "5km, 10km, 21km") |
contact_info |
string | Organiser contact — email and/or phone number |
federation_sanctioned |
boolean | Always true — every record is CBAt-sanctioned |
source_url |
string | URL of the calendar page the record was scraped from |
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
maxItems |
integer | 0 |
Maximum records to collect. 0 = no limit (returns all ~150 events). |
permit_levels |
array | ["bronze", "ouro_prata"] |
Which permit-tier calendars to scrape. Valid values: "bronze", "ouro_prata". |
Sample output
{
"event_id": "033/2026",
"event_name": "Corrida da Integração Nacional",
"event_date_day": null,
"event_month": "Janeiro",
"event_year": 2026,
"event_type": "corrida-de-rua",
"permit_level": "Bronze",
"permit_number": "033/2026",
"host_city": "Própria",
"host_state": "SE",
"host_location": "Própria/SE",
"distances": "5km, 10km",
"contact_info": "Email: rfeitosaantonio750@gmail.com Celular: (79) 9997-17166",
"federation_sanctioned": true,
"source_url": "https://cbat.org.br/corridas-de-rua/calendario/227/permit-cbat-bronze"
}
Notes
- The full calendar is updated by CBAt throughout the year as new permits are approved. Re-run to get the latest data.
- The actor only covers the road-race calendar. Track-and-field events and athlete roster data from the
sge.cbat.org.brsystem are not in scope. - No proxy or authentication is required — all calendar pages are publicly accessible via direct HTTP.