BYTETOOLS

DiscGolfAPI

Free disc golf course API with no key: mapped courses by country with coordinates, region codes, operator details and explicit licence metadata. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the DiscGolfAPI?

DiscGolfAPI serves structured disc golf course data with no API key. Filtering by country returns each course with its coordinates, region and locality, website, operator and hole count, wrapped in an envelope declaring the licence and attribution requirement.

Disc golf course information has historically lived in one or two proprietary apps with no export path. This API publishes it as structured data instead — every course carrying latitude and longitude, an ISO country and region code, and a stable slug — which is enough to build a map, a route planner or a course finder without scraping anything.

What stands out is the honesty of the envelope. Before the course list you get `license`, `attribution_required`, `terms_url` and an explicit `no_warranty` statement, plus `generated_at` and a `publish_version` telling you exactly which build of the dataset you received. Free data sources rarely bother; here the licensing terms are unambiguous and machine-readable. Do note the attribution requirement is set to true — using this data in public means crediting DiscGolfAPI. Optional fields such as `holes`, `locality` and `operator_name` are frequently null.

Quick facts

Base URL
https://io.discgolfapi.com/v1
Authentication
No API key and no account. Attribution to DiscGolfAPI is required by the licence when you publish the data.
Rate limit
No published limit. The dataset is republished periodically rather than changing live.
Pricing
Free to use with attribution.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the DiscGolfAPI

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List disc golf courses in a country

GET https://io.discgolfapi.com/v1/courses?country=GB

curl
curl 'https://io.discgolfapi.com/v1/courses?country=GB'
JavaScript (fetch)
const res = await fetch("https://io.discgolfapi.com/v1/courses?country=GB");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://io.discgolfapi.com/v1/courses?country=GB", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "schema_version": "1.0.0",
  "generated_at": "2026-08-10T17:05:44.718245Z",
  "attribution": "Course data supplied by DiscGolfAPI.",
  "attribution_required": true,
  "license": "Free to use with attribution.",
  "license_url": "https://discgolfapi.com/licence/",
  "terms_url": "https://discgolfapi.com/terms/",
  "no_warranty": "Data is provided as-is. Accuracy, completeness and availability are not guaranteed.",
  "meta": {
    "publish_version": "20260810T170544Z",
    "release_scope": "all"
  },
  "count": 37,
  "courses": [
    {
      "id": "crs_ackers_adventure",
      "slug": "ackers-adventure",
      "name": "Ackers Adventure",
      "lat": 52.4579339107501,
      "lon": -1.85255245845531,
      "country_code": "GB",
      "region_code": "ENG",
      "locality": null,
      "website": "https://ackers-adventure.co.uk/",
      "operator_name": null,
      "holes": null,
      "existence_status": "existing",
      "operational_status": "open",
      "access_model": "unknown",
      "condition_status": "unknown",
      "listing_status": "listed",
      "confidence_score": 0.65,
      "verification_strength": "medium",
      "last_verified_at": "2026-04-27T22:40:53.197339Z",
      "updated_at": "2026-04-29T20:35:03.752326Z",
      "primary_layout": {
        "id": "c30f319b-b111-4b94-afd1-77585659f6f2",
        "slug": "main-layout",
        "name": "Main Layout",
        "holes": null,
        "par_total": null,
        "length_meters": null,
        "confidence_score": 0.65,
        "verification_strength": "medium",
        "last_verified_at": "2026-04-27T22:40:53

Parameters

ParameterTypeRequiredDescription
countryqueryOptionalISO 3166-1 alpha-2 country code. GB
regionqueryOptionalRegion or subdivision code within the country. ENG
limit / offsetqueryOptionalPaging controls for large countries. 50

Response fields

coursesarray
The matching courses.
courses[].id / slugstring
Stable identifier and URL-friendly slug — `crs_ackers_adventure` and `ackers-adventure` respectively.
courses[].namestring
Course name.
courses[].lat / lonfloat
Coordinates in WGS84, ready to drop onto a map.
courses[].country_code / region_codestring
ISO country code and subdivision code, for example `GB` and `ENG`.
courses[].localitystring
Town or city. Frequently null.
courses[].website / operator_namestring
Course website and operating organisation, where known. Both are often null.
courses[].holesinteger
Hole count, when recorded. Null is common and does not mean the course has no holes.
countinteger
Number of courses matching the filter.
license / license_url / attribution / attribution_required / terms_urlstring / boolean
Machine-readable licensing block. `attribution_required` is true — credit DiscGolfAPI when you publish.
generated_at / meta.publish_version / schema_versionstring
When this build of the dataset was produced, its version stamp and the schema version, so you can detect changes.

What you can build with the DiscGolfAPI

  • Build a course finder map for a region
  • Plan a disc golf road trip from real coordinates
  • Enrich a scoring app with course metadata
  • Analyse course density by country or region

Common errors and how to fix them

Null holes, locality or website

These fields are optional and frequently unrecorded.

Fix: Render conditionally. Null means unknown, not zero or absent.

Empty course list

The country has no mapped courses, or the code was wrong.

Fix: Use ISO 3166-1 alpha-2 codes — `GB`, not `UK`. Check `count` before iterating.

Attribution missing from your app

The licence sets `attribution_required` to true.

Fix: Credit DiscGolfAPI visibly wherever you display the data. The terms URL is in every response.

Stale data

The dataset is republished periodically, not updated live.

Fix: Read `generated_at` and `meta.publish_version` to see exactly which build you have.

DiscGolfAPI — frequently asked questions

Is DiscGolfAPI free?

Yes, free to use with no key. The licence does require visible attribution to DiscGolfAPI when you publish the data, and every response restates that in machine-readable form.

How do I filter by country?

Pass an ISO 3166-1 alpha-2 code as the `country` parameter — `GB` for the United Kingdom, not `UK`. A `region` parameter narrows further.

Why are so many fields null?

Hole counts, localities, websites and operator names are optional and depend on what contributors have recorded. Treat null as unknown and render those fields conditionally.

How current is the data?

Every response carries `generated_at` and a `publish_version`, so you can see the exact build you received. The dataset is republished periodically rather than edited live.

Tools that pair with this API

DiscGolfAPI is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.