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.
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 'https://io.discgolfapi.com/v1/courses?country=GB'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);import requests
res = requests.get("https://io.discgolfapi.com/v1/courses?country=GB", timeout=20)
res.raise_for_status()
print(res.json()){
"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:53Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
country | query | Optional | ISO 3166-1 alpha-2 country code. GB |
region | query | Optional | Region or subdivision code within the country. ENG |
limit / offset | query | Optional | Paging 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
Distance Calculator
Calculate the straight-line distance and bearing between two points on a map by latitude/longitude using the Haversine formula — km, miles and nautical miles.
Coordinate Converter
Convert GPS coordinates between decimal degrees, degrees-minutes-seconds and decimal minutes instantly. Paste any format like 40°26'46"N and copy the result.
GeoJSON Validator
Validate GeoJSON against RFC 7946 and get the exact JSON path of every problem: unclosed rings, swapped coordinates, missing properties and more.
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.