Beta

DiscGolfAPI

The trusted source of structured disc golf course data for developers. Stop scraping. Use a stable, verified API.

Build a course finder in minutes Filter by country, show name, location, and open status — no scraping required.
Stop maintaining your own scraped dataset Multi-source verification with confidence scores and timestamps baked in.
Know when course data is actually accurate Every record includes last_verified_at and confidence_score — you decide when it is fresh enough.

Base URL

https://io.discgolfapi.com

All endpoints are read-only. No authentication required.

Endpoints

Quick start

Request

curl -s "https://io.discgolfapi.com/v1/courses?country=GB" | jq .

Response

{
  "schema_version": "1.0",
  "generated_at": "2026-04-06T22:13:06Z",
  "count": 1,
  "meta": { "publish_version": "20260406T221306Z" },
  "attribution": "DiscGolfAPI contributors and sources",
  "attribution_required": true,
  "license": "CC BY 4.0",
  "license_url": "https://creativecommons.org/licenses/by/4.0/",
  "terms_url": "https://discgolfapi.com/terms",
  "no_warranty": "Data is provided as-is without warranty of accuracy.",
  "courses": [
    {
      "id": "crs_example_park",
      "slug": "example-disc-golf-park",
      "name": "Example Disc Golf Park",
      "lat": 51.5074,
      "lon": -0.1278,
      "country_code": "GB",
      "region_code": "ENG",
      "locality": "London",
      "website": "https://example.com/disc-golf",
      "operator_name": null,
      "holes": 18,
      "existence_status": "existing",
      "operational_status": "open",
      "access_model": "public_free",
      "condition_status": "good",
      "listing_status": "listed",
      "confidence_score": 0.82,
      "verification_strength": "strong",
      "last_verified_at": "2026-04-06T12:00:00Z",
      "updated_at": "2026-04-06T22:13:06Z",
      "primary_layout": {
        "id": "abc123",
        "slug": "main-layout",
        "name": "Main Layout",
        "holes": 18,
        "par_total": 54,
        "length_meters": 1640,
        "confidence_score": 0.82,
        "verification_strength": "strong",
        "last_verified_at": "2026-04-06T12:00:00Z"
      },
      "attributes": null
    }
  ]
}

Key fields

Field Type Description
id string Stable public identifier — never changes once assigned
confidence_score number 0–1 Multi-source confidence that the record is accurate. 0.6+ is publishable, 0.8+ is strong.
last_verified_at ISO timestamp When the course was last checked against a primary source
operational_status enum open, seasonal, limited, closed_temporarily, closed_permanently, unknown
listing_status enum listed = fully verified. listed_with_warning = some fields uncertain.
access_model enum public_free, public_paid, members_only, private_permission_required, unknown
existence_status enum existing = course is known to exist. unverified = not yet confirmed.
condition_status enum Physical condition of the course: good, fair, poor, unknown
verification_strength enum How well-evidenced the record is: strong, moderate, weak
slug string URL-safe identifier derived from the course name. Stable but may update if the name changes substantially.
operator_name string | null Named operator or managing organisation, if known
primary_layout object | null The main layout for this course (holes, par, length, verification metadata). Null if no layout data has been collected.
attributes object | null Supplementary course attributes (facilities, terrain, access notes). Null until the attributes pipeline is built.
updated_at ISO timestamp When any field on this record was last modified