Search clubs
Searches the Private Clubs directory by type, place, name and waitlist status, with paging. Rows come sorted by name. A page past the last one answers 200 with an empty clubs array and the real total. Fees follow the caller’s access (see Club.fee_views). Errors use RFC 9457 application/problem+json, and each problem’s type URI is a page that explains the code. Responses carry the advisory RateLimit and RateLimit-Policy headers (120 requests per 60 seconds) and an X-Request-Id.
curl --request GET \
--url https://www.theprivateclubs.com/api/v1/clubsimport requests
url = "https://www.theprivateclubs.com/api/v1/clubs"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://www.theprivateclubs.com/api/v1/clubs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.theprivateclubs.com/api/v1/clubs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.theprivateclubs.com/api/v1/clubs"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.theprivateclubs.com/api/v1/clubs")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.theprivateclubs.com/api/v1/clubs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"clubs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"city": "<string>",
"state": "<string>",
"country": "<string>",
"type": "<string>",
"status": "<string>",
"verified": true,
"hero_image_url": "<string>",
"initiation_fee": 123,
"annual_dues": 123,
"monthly_dues": 123,
"fee_tier": "verified",
"waitlist_status": "open",
"holes": 123,
"par": 123,
"yardage": 123,
"course_architect": "<string>",
"founded_year": 123,
"opened_year": 123,
"currency": "USD",
"amenities": [
"<string>"
],
"description": "<string>",
"google_rating": 123,
"google_review_count": 123,
"fee_views": {
"initiation": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"annual": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"monthly": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"firstYear": {
"kind": "none",
"label": "<string>",
"estimate": true
}
}
}
],
"total": 123,
"fee_access": "locked"
}Query Parameters
A club type, in lower case (a hyphen reads as an underscore). Some types also match the types grouped under them: golf matches country_club; city matches social, arts, cigar and dining; athletic matches tennis and wellness; outdoor matches hunting, fishing, shooting and adventure; dining matches wine, and wine reads as dining. Any other value matches that exact stored type.
"golf"
A state, province or region, by full name or two-letter code: FL and Florida match the same clubs. With no country, the search stays in the United States and Canada; for a region elsewhere, such as Scotland, send country as well.
"Florida"
A country, by name or ISO code: GB and United Kingdom match the same clubs. Omit it, or send all, to search every country.
"GB"
Part of the club name, matched in any case.
"yacht"
Waitlist statuses, comma separated, such as open,waitlist. by_invitation also matches clubs stored as invite_only.
open, waitlist, by_invitation, invite_only, closed, unknown The page to return, from 1. A value that is not a whole number from 1, such as 0, answers 400 invalid_page. A page past the last one, however large, answers 200 with an empty clubs array and the real total.
x >= 1Clubs per page, from 1. A value above 200 is clamped to 200. A value that is not a whole number from 1, such as 0, answers 400 invalid_limit.
1 <= x <= 200Response
A page of clubs
The clubs on this page.
Show child attributes
Show child attributes
Clubs that match the filters, across all pages.
The caller's fee visibility: locked without a site session, band for a free account, exact for a paying member.
locked, band, exact curl --request GET \
--url https://www.theprivateclubs.com/api/v1/clubsimport requests
url = "https://www.theprivateclubs.com/api/v1/clubs"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://www.theprivateclubs.com/api/v1/clubs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://www.theprivateclubs.com/api/v1/clubs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.theprivateclubs.com/api/v1/clubs"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://www.theprivateclubs.com/api/v1/clubs")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.theprivateclubs.com/api/v1/clubs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"clubs": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"city": "<string>",
"state": "<string>",
"country": "<string>",
"type": "<string>",
"status": "<string>",
"verified": true,
"hero_image_url": "<string>",
"initiation_fee": 123,
"annual_dues": 123,
"monthly_dues": 123,
"fee_tier": "verified",
"waitlist_status": "open",
"holes": 123,
"par": 123,
"yardage": 123,
"course_architect": "<string>",
"founded_year": 123,
"opened_year": 123,
"currency": "USD",
"amenities": [
"<string>"
],
"description": "<string>",
"google_rating": 123,
"google_review_count": 123,
"fee_views": {
"initiation": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"annual": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"monthly": {
"kind": "none",
"label": "<string>",
"estimate": true
},
"firstYear": {
"kind": "none",
"label": "<string>",
"estimate": true
}
}
}
],
"total": 123,
"fee_access": "locked"
}