FlyAway Golf Developer Portal

The FlyAway golf course database is readable without an account: no API key, no OAuth, no signup. Every operation listed here answers an anonymous GET request and returns JSON. The complete machine-readable description is published as an OpenAPI 3.1 document.

Quickstart

Three calls cover most of what an integration needs: resolve a course, read its full profile, or find the courses nearest a coordinate.

# Full profile of one course curl -s "https://api.flyawaygolf.com/v2/golfs/profile/golf-national" # The 10 courses nearest a coordinate, with distances in metres curl -s "https://api.flyawaygolf.com/v2/search/map/golfs?lat=48.75&long=2.07&max_distance=50000&limit=10" # The same course as prose, for a language model curl -s "https://flyawaygolf.com/golfs/golf-national/llm.md" # Base URL https://api.flyawaygolf.com/v2

Endpoints

Generated from the OpenAPI document, so this table and the specification cannot drift apart. Every operation is a GET, and every successful response is wrapped in a top-level data key.

OperationEndpointDescription
Courses
listGolfCoursesGET /golfsList golf courses
getGolfCourseProfileGET /golfs/profile/{slug}Get the full profile of a golf course
getGolfCourseSummaryGET /seo/golfs/{identifier}Get a compact summary of a golf course
resolveGolfCourseIdGET /golfs/resolve/{golf_id}Resolve a course id to its slug
searchGolfCoursesByLocationGET /search/map/golfsFind golf courses around a coordinate
Directory
listContinentsGET /public/golfs/continentsList continents with course counts
listCountriesGET /public/golfs/countriesList countries with course counts
getDirectoryEntryGET /public/golfs/{slug}Get a continent or a country by slug
listCountryRegionsGET /public/golfs/{country}/regionsList the regions of a country
listRegionGolfCoursesGET /public/golfs/{country}/{region}List the golf courses of a region
listCityGolfCoursesGET /public/golfs/{country}/{region}/{city}List the golf courses of a city
Rankings
listBestGolfCoursesWorldwideGET /public/best/worldList the highest-rated courses worldwide
listBestGolfCoursesByAreaGET /public/best/{slug}List the highest-rated courses of a continent or country
listBestGolfCoursesByRegionGET /public/best/{country}/{region}List the highest-rated courses of a region
Metadata
getCountryMetadataGET /seo/country/{slug}Get breadcrumbs and counts for a country
getContinentMetadataGET /seo/continent/{slug}Get breadcrumbs and counts for a continent
getRegionMetadataGET /seo/region/{country}/{region}Get breadcrumbs and counts for a region
Enumeration
listSitemapContinentsGET /seo/sitemap/continentsEnumerate every continent slug
listSitemapCountriesGET /seo/sitemap/countriesEnumerate every country slug
listSitemapRegionsGET /seo/sitemap/regionsEnumerate every region slug
listSitemapCitiesGET /seo/sitemap/citiesEnumerate every city slug
Agent files
getGolfCourseMarkdownGET /golfs/{slug}/llm.mdGet a golf course as markdown
getLlmsTxtGET /llms.txtGet the llms.txt index
getOpenApiDocumentGET /openapi.jsonGet this document

Files for AI agents

Four machine-readable files describe the site to an agent. Read llms.txt first: it states what the dataset contains, when FlyAway is the right source, and the URL patterns for everything else.

  • /llms.txtWhat FlyAway is, what the dataset contains, when to use it, and the URL patterns for everything else. Start here.
  • /llms-full.txtThe same, at length: the product surface, the data model and the caveats in full.
  • /openapi.jsonThe public API as an OpenAPI 3.1 document. Also served as YAML at /openapi.yaml.
  • /golfs/{slug}/llm.mdAny course as markdown, e.g. https://flyawaygolf.com/golfs/golf-national/llm.md.
  • /sitemaps/indexThe sitemap index: every indexable URL, paginated, including all 35,165 course pages.

Authentication

The public read endpoints take no credentials — send the request and read the response. Endpoints that touch a member's own data (rounds, statistics, messages, the AI assistant) require a session token issued by the FlyAway apps; they are not part of the public surface and are deliberately absent from the OpenAPI document, because an agent cannot call them.

Rate limits

Stay under 5 requests per second from a single IP, and cache what you read: course data does not change from one week to the next. FlyAway follows the RFC 9331 convention on any response that carries a quota — RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset, plus Retry-After on a 429. A response carrying none of those headers was not counted against a per-caller quota. On a 429, back off for the number of seconds given by Retry-After and retry once.

Errors

Failures return a JSON body with an error object carrying a human-readable message and a stable numeric code. A 400 means the identifier or a query parameter was rejected; a 404 means nothing matches it.

Using the API for function calling

The OpenAPI document is written to be loaded directly as a function-calling manifest: every operation carries a unique operationId, a description written for a model rather than for a search engine, typed parameters with ranges and patterns, and a response schema. Convert it with your framework's OpenAPI-to-tools helper and no hand-written wrapper is needed.

Client libraries

There is no official CLI or MCP server yet. Until there is, the OpenAPI document is the supported integration path, and the markdown course pages are the supported way to read a single course as prose.

Support

Technical questions the documentation does not answer are welcome by email. Please include the exact URL you called and the response you received.

[email protected]