How to Use DiscGolfAPI Course Data in Your App, Site or Club
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 excerpt
{
"count": 5,
"total": 30,
"offset": 0,
"courses": [
{
"id": "crs_ackers_adventure",
"name": "Ackers Adventure",
"country_code": "GB",
"region_code": "ENG"
}
]
}
Use limit and offset for maps, directories, and country pages that load in pages. Hole counts are currently sparse, so handle holes: null as “unknown”.
GET Get a single course
Fetch one course by its public ID.
Sample request
fetch("https://io.discgolfapi.com/v1/courses/crs_a6_discgolfpark")
.then(response => response.json())
.then(data => console.log(data));
Sample response excerpt
{
"count": 1,
"courses": [
{
"id": "crs_a6_discgolfpark",
"name": "A6 Discgolfpark",
"country_code": "SE",
"holes": 18,
"confidence_score": 0.75,
"verification_strength": "strong"
}
]
}
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 excerpt
{
"countries": [
{
"country_code": "GB",
"country_name": "United Kingdom",
"course_count": 30,
"updated_at": "2026-04-30T20:30:58.267177Z"
}
]
}
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 excerpt
{
"regions": [
{
"country_code": "GB",
"region_code": "ENG",
"region_name": "England",
"course_count": 28,
"updated_at": "2026-04-30T20:30:58.267177Z"
}
]
}
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: "crs_a6_discgolfpark",
type: "wrong_data",
message: "The course has recently changed from 9 holes to 18 holes."
})
})
.then(response => response.json())
.then(data => console.log(data));
Sample response excerpt
{
"ok": true,
"id": "d1762815-c4f1-48e5-a89b-69c3a6932fbe"
}
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
- Hole counts, access, and condition fields should be treated as optional
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.
