Skip to main content

Search golf clubs

GET/v1/clubs

Use near for a human-readable place search, or lat and lon for exact coordinates. Place searches default to a 50 km radius. The town filter matches the club address exactly. Tags: clubs

Authentication

Send the API key as a Bearer token in the Authorization header.

Parameters

ParameterInTypeRequiredDescriptionConstraints
namequerystringNoClub-name filter onlymin length: 2; max length: 200
latquerynumberNomin: -90; max: 90
lonquerynumberNomin: -180; max: 180
radius_kmquerynumberNoGeographic search radius. Defaults to 50 km when near is used.min: 1; max: 200
nearquerystringNoPlace name resolved to a geographic search centremin length: 2; max length: 200
countryquerystringNoOptional ISO 3166-1 alpha-2 country code used with nearpattern: ^[A-Za-z]2$
publicquerybooleanNo
independent_playersquerybooleanNoFilter by access for players without club membership
dogsquerybooleanNo
minimum_holesqueryintegerNomin: 1; max: 72
maximum_green_feequerynumberNoExclude clubs whose known maximum green fee exceeds this amountmin: 0; max: 10000
townquerystringNoExact town filtermin length: 1; max length: 100
postal_codequerystringNoExact postal code or prefixmin length: 1; max length: 100
searchquerystringNoSearch across name, town, and postal codemin length: 2; max length: 100
limitqueryintegerNodefault: 20; min: 1; max: 100
cursorquerystringNomin length: 8; max length: 500

Example request

curl --request GET \
--url 'https://api.eae.golf/v1/clubs?name=name&lat=lat&lon=lon&radius_km=radius_km' \
--header 'Authorization: Bearer YOUR_API_KEY'

Responses

200 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
dataarray<object>Yes
data[].idstringNoformat: uuid
data[].slugstringNo
data[].namestringNo
data[].locationobjectNo
data[].location.town`stringnull`No
data[].location.postalCode`stringnull`No
data[].location.continent`stringnull`No
data[].location.worldRegion`stringnull`No
data[].location.country`stringnull`No
data[].location.locationSlug`stringnull`No
data[].location.latitude`numbernull`No
data[].location.longitude`numbernull`No
data[].location.distanceMeters`numbernull`No
data[].accessobjectNo
data[].access.publicAccess`booleannull`No
data[].access.independentPlayersAllowed`booleannull`No
data[].access.dogsAllowed`booleannull`No
data[].coursesobjectNo
data[].courses.countintegerNo
data[].greenFeesobjectNo
data[].greenFees.minimum`numbernull`No
data[].greenFees.maximum`numbernull`No
paginationobjectYes
pagination.hasMorebooleanYes
pagination.nextCursor`stringnull`Yes
metaobjectYes
meta.apiVersionstringNoallowed: v1
meta.planstringNoallowed: fairway, tour
meta.accessStatusstringNoallowed: trial, active, suspended
meta.dataAccessstringNoallowed: core, extended
meta.trialEndsAt`stringnull`No
meta.catalogue`objectobject`No
meta.noticeobjectNo
meta.notice.codestringYesallowed: trial_sample_no_match
meta.notice.messagestringYes
meta.searchobjectNo
meta.search.modestringNoallowed: place, coordinates
meta.search.input`stringnull`No
meta.search.resolvedName`stringnull`No
meta.search.countryCode`stringnull`No
meta.search.latitudenumberNo
meta.search.longitudenumberNo
meta.search.radiusKm`numbernull`No

Example

{
"data": [
{
"id": "00000000-0000-4000-8000-000000000000",
"slug": "golf-gut-glinde",
"name": "Golf Gut Glinde",
"location": {
"town": "string",
"postalCode": "string",
"continent": "Europe",
"worldRegion": "string",
"country": "England",
"locationSlug": "europe/england",
"latitude": 0,
"longitude": 0,
"distanceMeters": 0
},
"access": {
"publicAccess": true,
"independentPlayersAllowed": true,
"dogsAllowed": true
},
"courses": {
"count": 0
},
"greenFees": {
"minimum": 0,
"maximum": 0
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "string"
},
"meta": {
"apiVersion": "v1",
"plan": "fairway",
"accessStatus": "trial",
"dataAccess": "core",
"trialEndsAt": "2026-08-20T12:00:00Z",
"catalogue": {
"mode": "full"
},
"notice": {
"code": "trial_sample_no_match",
"message": "string"
},
"search": {
"mode": "place",
"input": "string",
"resolvedName": "string",
"countryCode": "string",
"latitude": 0,
"longitude": 0,
"radiusKm": 0
}
}
}

400 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
statusCodeintegerYes
errorstringYes
codestringNo
messagestringYes
requestIdstringYes

Example

{
"statusCode": 0,
"error": "string",
"code": "trial_expired",
"message": "string",
"requestId": "req-7f3a2c"
}

401 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
statusCodeintegerYes
errorstringYes
codestringNo
messagestringYes
requestIdstringYes

Example

{
"statusCode": 0,
"error": "string",
"code": "trial_expired",
"message": "string",
"requestId": "req-7f3a2c"
}

429 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
statusCodeintegerYes
errorstringYes
codestringNo
messagestringYes
requestIdstringYes

Example

{
"statusCode": 0,
"error": "string",
"code": "trial_expired",
"message": "string",
"requestId": "req-7f3a2c"
}

502 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
statusCodeintegerYes
errorstringYes
codestringNo
messagestringYes
requestIdstringYes

Example

{
"statusCode": 0,
"error": "string",
"code": "trial_expired",
"message": "string",
"requestId": "req-7f3a2c"
}

503 · Default Response

application/json

FieldTypeRequiredDescriptionConstraints
statusCodeintegerYes
errorstringYes
codestringNo
messagestringYes
requestIdstringYes

Example

{
"statusCode": 0,
"error": "string",
"code": "trial_expired",
"message": "string",
"requestId": "req-7f3a2c"
}