Use DiscGolfAPI
DiscGolfAPI provides structured disc golf course data for websites, apps, maps, directories, and tools.
No API key is needed for public endpoints.
GET Get courses in a country
Fetch a paginated list of courses in Great Britain.
Sample request
fetch("https://io.discgolfapi.com/v1/courses?country=GB&limit=5&offset=0")
.then(response => response.json())
.then(data => console.log(data));
Sample response
{
"count": 5,
"total": 29,
"offset": 0,
"courses": [
{
"id": "example-course-id",
"name": "Example Disc Golf Course",
"country_code": "GB",
"region_code": "ENG"
}
]
}
Use limit and offset for maps, directories, and country pages that load in pages.
GET Get a single course
Fetch one course by its public ID.
Sample request
fetch("https://io.discgolfapi.com/v1/courses/example-course-id")
.then(response => response.json())
.then(data => console.log(data));
Sample response
{
"data": {
"id": "example-course-id",
"name": "Example Disc Golf Course",
"country_code": "GB",
"holes": 18,
"confidence_score": 0.86,
"verification_strength": "medium"
}
}
Use this for course pages and detailed views.
GET List countries
Fetch countries currently represented in the API.
Sample request
fetch("https://io.discgolfapi.com/v1/countries")
.then(response => response.json())
.then(data => console.log(data));
Sample response
{
"data": [
{
"country_code": "GB",
"name": "United Kingdom",
"course_count": 120
}
]
}
Use this to build filters and navigation.
GET List regions
Fetch regions currently represented in the API.
Sample request
fetch("https://io.discgolfapi.com/v1/regions")
.then(response => response.json())
.then(data => console.log(data));
Sample response
{
"data": [
{
"region_code": "ENG",
"country_code": "GB",
"name": "England",
"course_count": 95
}
]
}
Use this for regional pages, filters, and maps.
POST Report an issue
Submit a correction or flag a course data issue.
Sample request
fetch("https://io.discgolfapi.com/v1/report", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
course_id: "example-course-id",
message: "The course has recently changed from 9 holes to 18 holes."
})
})
.then(response => response.json())
.then(data => console.log(data));
Sample response
{
"status": "received",
"message": "Thank you. Your report has been logged for review."
}
Use this when you spot missing, outdated, or incorrect course data.
Attribution
If you use DiscGolfAPI data, include this attribution near the data:
Where possible, link it to discgolfapi.com
Attribution should be visible to users, placed near the data, and not hidden in metadata only.
Data usage
- No API key required
- Public endpoints are free to use with attribution
- Data is provided as-is
- Accuracy, completeness, and availability are not guaranteed
Stay in the loop
Want updates and new endpoints?
Get notified when data changes, new fields are added, or endpoints are released. No spam.
Using DiscGolfAPI in production?
Tell us where you are using it. This helps us improve coverage, stability, and documentation.
✓ Thanks. We have received the URL and will take a look.
Share a URL, app name, or just say hi.
