Championship.courses
Developers

API & widgets

Build on the database of championship golf venues. Free with a Championship.courses account.

Get an API key

Every API request and widget needs a key tied to a verified account. Keys are free, limited to 60 requests per minute each, and can be revoked at any time.

Authentication

Send your key as a bearer token (or in an X-API-Key header). The API is read-only and returns JSON.

curl -H "Authorization: Bearer cc_your_key_here" \
  https://championship.courses/api/v1/courses?q=pebble

Calling from a browser? Lock the key to your domains on the keys page. Requests carrying a different Origin are refused. Never put an unrestricted key in public page source; use a domain-locked one.

Endpoints

Base URL: https://championship.courses/api/v1

EndpointReturnsQuery parameters
GET /courses Paginated courses. q, country, state, league (slug), open_to_public (0|1), page, per_page (1-50)
GET /courses/{slug} One course with hosting history, winners, winning scores and its tough-meter rating. —
GET /championships Paginated championships. q, league (slug), major (0|1), page, per_page (1-50)
GET /championships/{slug} One championship with every edition: year, course, winner, winning score. —
GET /leagues All tours with championship counts. —
GET /stats/hosting Courses ranked by editions hosted. league (slug), limit (1-100)
GET /social/leaderboard Golfers, brands, tournaments, tours and courses ranked by combined social followers. type (person|sponsor|championship|league|course), platform (youtube|instagram|tiktok|x|...), limit (1-100)
GET /on-this-day Golf history for a calendar day (today by default). month (1-12) and day (1-31), together

Inputs are validated: unknown values, out-of-range numbers and over-long strings return 422 with a message per field. Search terms match literally (wildcards are escaped). Lists are paginated with data, links and meta.

Example: a course

{
  "data": {
    "slug": "augusta-national-golf-club",
    "title": "Augusta National Golf Club",
    "location": { "city": "Augusta", "state": "Georgia", "country": "United States" },
    "coordinates": { "latitude": 33.503, "longitude": -82.022 },
    "yardage": 7545,
    "opened_year": 1933,
    "architect": "Alister MacKenzie, Bobby Jones",
    "difficulty": { "score": 68, "rating": 6.8, "label": "Demanding", "basis": "scoring and length" },
    "history": [
      { "year": 2025, "championship": { "slug": "masters-tournament", "title": "Masters Tournament" },
        "winner": "Rory McIlroy", "winning_to_par": -11 }
    ]
  }
}

Illustrative values; fields can be null when we have no data.

Errors & limits

  • 401 missing, invalid or revoked key.
  • 403 key is domain-locked and the request came from another site.
  • 404 unknown slug.
  • 422 invalid query parameters.
  • 429 more than 60 requests a minute on one key; see the Retry-After header.

Embeddable widgets

Drop a widget into any page with an iframe. Widgets use the same keys (passed as ?key=), so create a domain-locked key for each site. Keep the "Powered by" link in place.

On this day in golf

<iframe src="https://championship.courses/widgets/on-this-day?key=cc_your_key_here"
        width="100%" height="420" style="border:0" loading="lazy"
        title="On this day in golf"></iframe>

Optional month and day pin it to a calendar day.

Course card

<iframe src="https://championship.courses/widgets/course/augusta-national-golf-club?key=cc_your_key_here"
        width="100%" height="360" style="border:0" loading="lazy"
        title="Augusta National Golf Club"></iframe>

About the data

  • Tough meter scores a course 0-10 from how the field scored there (average winning score to par, needing two or more recorded scores) blended 65/35 with yardage. With only one signal it uses that alone; with neither it is null.
  • Wikipedia and Wikimedia content (history entries, course summaries, photos) is reused under its own licence, such as CC BY-SA 4.0. If you republish it, credit the source and keep the licence. Wikidata facts are CC0.
  • Do not resell the data as a competing database. Please cache responses sensibly.

Public pages

  • Course map: every placed venue; filter by tour or public access; circle size is editions hosted.
  • Hosting frequency: the busiest host courses plus a course-by-tour matrix.
  • On this day in golf: pick any calendar day.
  • Each course page shows the tough meter and a winning-score trend line once scores are recorded.