Use Our Data

Use DiscGolfAPI

DiscGolfAPI provides structured disc golf course data for websites, apps, maps, directories, and tools.
No API key is needed for public endpoints.

Quick start: Copy an example below and run it in your browser console or project.

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:

“Course data supplied by DiscGolfAPI.”

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.

Got it — we’ll be in touch.

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.

Part of the disc golf data ecosystem

Part of the disc golf data ecosystem