Hole-by-hole tee box and green GPS coordinates for golf courses, extracted from OpenStreetMap. 12,719 courses indexed.
curl "https://golfclubxy.willconia.com/courses?q=Pine+Valley"
Or open /courses?q=Pine Valley&limit=3 in a browser. Full interactive documentation lives at /docs.
| Path | Returns |
|---|---|
GET /courses |
Search by name. Supports limit and offset. |
GET /courses/{id} |
Full hole list: par, handicap, yardage, tee and green coordinates. |
GET /courses/{id}/geojson |
The same holes as a GeoJSON FeatureCollection. |
GET /courses/{id}/gpx |
GPX 1.1 waypoints, for GPS watches and handhelds. |
GET /courses/{id}/kml |
KML placemarks, for Google Earth and mapping tools. |
GET /health |
Service and database status. |
Every endpoint is read-only and needs no API key. Tee colour can be selected
with ?tee=white; the course's own default is used otherwise.
Coverage is only as good as the underlying OpenStreetMap mapping, and that
varies a lot between courses. Rather than interpolating over the gaps, every
course carries a tier, a confidence value, and a warnings array
describing exactly what could not be determined.
Tee box and green coordinates are bounding-box centers of the mapped polygon,
matching Overpass out center semantics. That is a usable
reference point for yardage, not a surveyed pin position.
Requests are rate limited per IP address. Exceeding the limit returns
429 with a Retry-After header — back off and
retry rather than retrying immediately. Cross-origin browser requests are
permitted from any origin.
Coordinate data is derived from OpenStreetMap and is licensed under the Open Database License (ODbL) 1.0. If you use it, you must credit © OpenStreetMap contributors.
Displaying the data on screen produces a Produced Work, which carries the attribution requirement. Redistributing the coordinates themselves is likely to count as a Derivative Database, which additionally carries ODbL share-alike obligations. The GPX and KML exports embed this notice inside the file so it travels with the data.