API documentation
Three read-only JSON endpoints for search and single-record lookups. For bulk access use the CSV and JSON downloads instead.
Key facts
The API is at https://venues-site.pages.dev/api and needs no key. Every response is JSON, sent with Access-Control-Allow-Origin: * and Cache-Control: public, max-age=86400. The API returns a subset of the fields in venues.json and organizations.json.
- Base URL
https://venues-site.pages.dev/api- Methods
- GET (and HEAD)
- Auth
- None
- CORS
- Access-Control-Allow-Origin: *
- Caching
- 24 hours
GET /api/search?q=<query>
Full-text search over venue names, former names, cities, tenant team names and organization names. Returns at most 20 results, best match first.
| Parameter | Required | Description |
|---|---|---|
q | Yes | Search text. The first 200 characters and first 8 words are used. Punctuation is ignored. The last word matches as a prefix, so "wemb" finds Wembley. |
Each result has kind (venue or organization), slug and name. Venues add city and country when known; organizations add org_type. A query with no searchable characters returns {"results":[]}. A missing or blank q returns 400 missing_query.
curl 'https://venues-site.pages.dev/api/search?q=1'
{
"results": [
{
"kind": "venue",
"slug": "1-november-1954-stadium",
"name": "1 November 1954 Stadium",
"city": "القبة",
"country": "DZ"
},
{
"kind": "organization",
"slug": "1-fc-bocholt",
"name": "1. FC Bocholt",
"org_type": "team"
}
]
}
GET /api/venue/<slug>
One venue with its former names, current owner, operator, tenant and naming-rights organizations, and its teams. Slugs are the ones in page URLs (/venue/<slug>/). An unknown slug returns 404 venue_not_found.
| Field | Description |
|---|---|
slug, name, name_local | Identity and names. |
city, country, lat, lng | Location. country is ISO 3166-1 alpha-2. |
venue_type, capacity, opened_year, status | Type, seats, opening year and status. |
former_names | List of earlier names as plain strings, without dates. |
roles | Current organizations: role (owner, operator, tenant or naming_rights), org_slug, org_name. is_current is always true. |
teams | Teams that play here: team_org_slug, team_org_name. |
updated_at | When the API copy of the row was last synced. |
curl 'https://venues-site.pages.dev/api/venue/1-november-1954-stadium'
{
"slug": "1-november-1954-stadium",
"name": "1 November 1954 Stadium",
"name_local": null,
"city": "القبة",
"country": "DZ",
"venue_type": "stadium",
"capacity": 21240,
"opened_year": 1978,
"status": "active",
"lat": 36.706944,
"lng": 4.056111,
"updated_at": "<timestamp of the last D1 sync>",
"former_names": [],
"roles": [
{
"role": "tenant",
"org_slug": "js-kabylie",
"org_name": "JS Kabylie",
"is_current": true
},
{
"role": "tenant",
"org_slug": "jeunesse-sportive-de-kabylie-women-s-association-football",
"org_name": "Jeunesse sportive de Kabylie (women's association football)",
"is_current": true
}
],
"teams": []
}
GET /api/org/<slug>
One organization with the venues it is currently linked to. An unknown slug returns 404 org_not_found.
| Field | Description |
|---|---|
slug, name, org_type, ticker | Identity, type and stock ticker. |
parent_org_slug, parent_org_name | Parent organization, when known. |
venues | Current links: venue_slug, venue_name, relationship (owner, operator, tenant or naming_rights), is_current (always true). |
home_venues | For teams, the venues they play at: venue_slug, venue_name. |
updated_at | When the API copy of the row was last synced. |
curl 'https://venues-site.pages.dev/api/org/1-fc-bocholt'
{
"slug": "1-fc-bocholt",
"name": "1. FC Bocholt",
"org_type": "team",
"ticker": null,
"parent_org_slug": null,
"parent_org_name": null,
"updated_at": "<timestamp of the last D1 sync>",
"venues": [
{
"venue_slug": "stadion-am-hunting",
"venue_name": "Stadion am Hünting",
"relationship": "tenant",
"is_current": true
}
],
"home_venues": []
}
Errors and limits
Errors are JSON of the form {"error":"venue_not_found","message":"No venue with slug \"x\"."}. Methods other than GET and HEAD return 405 method_not_allowed; unknown paths return 404 not_found. Responses are cached at the edge for 24 hours and the x-edge-cache header shows HIT or MISS. There is no published rate limit; please cache results and use the bulk downloads for large jobs.
What the API does not return
The API is a narrower copy of the dataset. It has no role dates, no source URLs or confidence levels, no naming-rights timeline or deal values, no competitions, and no Wikidata or Wikipedia identifiers. Use venues.json, organizations.json or sponsorships.csv for those.