Vesus APIvesus.org ↗
Discover upcoming chess tournaments and access detailed information about events including venues, prize pools, organizers, and competition formats like time controls and round structures. Plan your chess competition calendar by browsing tournament listings and reviewing specific event details from vesus.org.
curl -X GET 'https://api.parse.bot/scraper/b399456b-6da2-4fff-aa0f-5120a16986b8/list_events?limit=5&rated=false&timing=FUTURE&country_code=ITA&attendance_mode=INPERSON&tournament_type=INDIVIDUAL&time_control_type=BLITZ' \ -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 vesus-org-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: Vesus Chess Tournaments API — browse events, drill into details."""
from parse_apis.vesus_org_api import Vesus, Timing, TimeControlType, ResourceNotFound
client = Vesus()
# List upcoming blitz chess events in Italy (auto-paginated, capped at 5 total)
for event in client.events.search(timing=Timing.FUTURE, country_code="ITA", limit=5):
print(event.name, "|", event.location, "|", event.confirmed_registrations, "registered")
# Take one event and drill into its tournament details
event = client.events.search(timing=Timing.FUTURE, limit=1).first()
if event:
tournament_summary = event.tournaments[0]
detail = tournament_summary.details()
print(detail.event_name, "—", detail.rounds, "rounds,", detail.time_control[0].white_minutes, "min")
# Get full event details (venue, prize money, organiser)
if event:
tournament = client.tournaments.get(short_key=event.tournaments[0].short_key)
try:
event_detail = client.event_details.get(short_key=tournament.event_short_key)
print(event_detail.name, "|", event_detail.venue, "|", event_detail.organiser)
except ResourceNotFound as exc:
print(f"Event not found: {exc}")
print("exercised: events.search / tournament_summary.details / tournaments.get / event_details.get")
Search and list chess events/tournaments with optional filters. Returns paginated results ordered by start date. Each event includes its tournaments with registration counts, time control types, and status. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| name | string | Filter events by name (partial match). |
| after | string | Cursor for pagination. Use end_cursor from previous response to get next page. |
| limit | integer | Number of events per page (max results to return). |
| rated | string | Filter by rated status. Pass 'true' for rated tournaments only, 'false' for unrated only. Omit for all. |
| timing | string | Event timing filter. |
| location | string | Filter events by location/city name. |
| country_code | string | ISO 3-letter country code to filter events by country (e.g. ITA, DEU, GBR). Omit for all countries. |
| attendance_mode | string | Attendance mode filter. Accepted values: INPERSON, ONLINE. Omit for all. |
| tournament_type | string | Tournament type filter. Accepted values: INDIVIDUAL, TEAM. Omit for all. |
| time_control_type | string | Comma-separated list of time control types to filter by. Accepted values: BLITZ, RAPID, CLASSICAL, STANDARD. Omit for all. |
{
"type": "object",
"fields": {
"events": "array of event objects with tournaments",
"end_cursor": "string, pagination cursor for next page",
"has_next_page": "boolean"
},
"sample": {
"data": {
"events": [
{
"id": "ZXZlbnQ6Mzc5NTA1ZmQtMjI1OC00NmQ4LWExYjAtZDY5N2YyOWExMTg2",
"end": "2026-07-02T21:00:00.000Z",
"name": "3 a tappa - Circuito serale THUNDER THURSDAY",
"start": "2026-07-02T19:00:00.000Z",
"location": "Canegrate",
"tournaments": [
{
"end": "2026-07-02T21:00:00.000Z",
"name": null,
"type": "INDIVIDUAL",
"rated": false,
"start": "2026-07-02T19:00:00.000Z",
"rounds": 5,
"short_key": "cnw-opsw",
"attendance_mode": "INPERSON",
"time_control_type": "BLITZ",
"registration_status": "OPEN",
"confirmed_registrations": 8
}
],
"country_code": "ITA",
"registrations_limit": 30,
"confirmed_registrations": 8
}
],
"end_cursor": "RXZlbnRFZGdlOnsib2Zmc2V0IjoyMH0=",
"has_next_page": true
},
"status": "success"
}
}About the Vesus API
The Vesus API on Parse exposes 3 endpoints for the publicly available data on vesus.org. Calls return JSON over HTTPS and are billed per successful response.
Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.