Brookline Golf APIbrooklinegolf.com ↗
Retrieve open 18-hole public tee times at Brookline Golf Course (Robert T. Lynch Municipal, MA) for any date. Filter by group size, get spot counts and start sides.
What is the Brookline Golf API?
The Brookline Golf Course API exposes 1 endpoint — list_tee_times — that returns every open public tee time for a given calendar day at Robert T. Lynch Municipal Golf Course in Brookline, MA. Each result includes the start time, available spots, allowed group sizes, starting side (Front or Back), and the booking class. Results come back in a single response with no pagination.
curl -X GET 'https://api.parse.bot/scraper/20a44091-54f4-4b99-aaf8-ac26ada64d96/list_tee_times?date=2026-09-16' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace brooklinegolf-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Brookline Golf tee-time availability — bounded, re-runnable."""
from parse_apis.brooklinegolf_com_api import BrooklineGolf, InputFormatInvalid
client = BrooklineGolf()
# Fetch the full schedule wrapper for tomorrow (default date = today).
schedule = client.schedules.get(date="2026-09-16")
print(f"{schedule.booking_class} on {schedule.date}: {schedule.total_tee_times} slots")
# Iterate individual tee times, capped at 5 items.
for slot in client.tee_times.list(date="2026-09-16", limit=5):
print(
f" {slot.start_time} spots={slot.available_spots} "
f"green=${slot.green_fee} cart=${slot.cart_fee} "
f"side={slot.starting_side}"
)
# Filter to groups of 4 and grab the first available slot.
foursome = client.tee_times.list(date="2026-09-16", players=4, limit=1).first()
if foursome is not None:
print(f"First 4-player slot: {foursome.start_time}, sizes {foursome.allowed_group_sizes}")
# Demonstrate the typed error on a malformed date.
try:
client.schedules.get(date="16/09/2026")
except InputFormatInvalid as e:
print(f"Bad date rejected: {e.message}")
print("exercised: schedules.get / tee_times.list / InputFormatInvalid")
Returns every 18-hole tee time still open for online booking under the course's 'Public Tee Times' (non-resident) rate for one calendar day, in a single round trip with no pagination. Each row is one bookable start slot with its open spot count, the allowed group sizes, and the per-player 18-hole green and cart fees in USD. The list is ordered by start time as the course publishes it. Only the public booking class is covered; resident, senior, junior, permit-holder and league classes are not returned. When the date is omitted, the current day in the course's local (US Eastern) time zone is used. Non-residents can typically book at most 7 days ahead, so dates further out, days that are sold out, and past times return an empty tee_times list with total_tee_times 0, which is a valid result. A date not in YYYY-MM-DD form is rejected before any request is made.
| Param | Type | Description |
|---|---|---|
| date | string | Calendar day to list, ISO date YYYY-MM-DD in the course's local time zone. Omitted = today (US Eastern). |
| players | integer | Group size 1-4; only slots with at least that many open spots are returned. 0 or omitted = any group size (no filter). Other values are rejected. |
{
"type": "object",
"fields": {
"date": "ISO date that was listed",
"holes": "always 18",
"tee_times": "array of open slots; each has tee_time (local 'YYYY-MM-DD HH:MM'), starting_side (Front/Back), holes, available_spots (open spots for an 18-hole booking), allowed_group_sizes (integers), green_fee and cart_fee (per player USD, 18 holes), green_fee_tax, rate_type (walking/riding/both), pay_online, require_credit_card, has_special, course_name",
"booking_class": "site rate class the results belong to (always 'Public Tee Times')",
"players_filter": "the group-size filter applied (0 = none)",
"total_tee_times": "number of rows in tee_times"
},
"sample": {
"data": {
"date": "2026-09-16",
"holes": 18,
"tee_times": [
{
"holes": 18,
"cart_fee": 22.5,
"tee_time": "2026-09-16 09:00",
"green_fee": 45,
"rate_type": "both",
"pay_online": "required",
"course_name": "Brookline Golf Course",
"has_special": false,
"green_fee_tax": 0,
"starting_side": "Front",
"available_spots": 4,
"allowed_group_sizes": [
1,
2,
3,
4
],
"require_credit_card": true
}
],
"booking_class": "Public Tee Times",
"players_filter": 4,
"total_tee_times": 1
},
"status": "success"
}
}About the Brookline Golf API
What the API Returns
The list_tee_times endpoint returns all bookable 18-hole slots under the course's Public Tee Times (non-resident) rate for one calendar day. The response includes a tee_times array where each entry carries tee_time (local timestamp in YYYY-MM-DD HH:MM format), starting_side (Front or Back), holes (always 18), and available_spots (the number of open spots remaining in that slot). Top-level fields include date, booking_class (always 'Public Tee Times'), players_filter, and total_tee_times.
Filtering Results
Two optional input parameters control what comes back. The date parameter accepts an ISO date string (YYYY-MM-DD) in US Eastern time; omitting it returns tee times for today. The players parameter (integer 1–4) filters out any slot with fewer open spots than the requested group size. Passing 0 or omitting it returns all slots regardless of availability count.
Scope and Freshness
The API covers the single public (non-resident) rate class for 18-hole rounds. It reflects the real-time availability shown on the course's online booking calendar for the requested date. All results for the queried day are returned at once — there is no cursor or page token to manage.
The Brookline Golf API is a managed, monitored endpoint for brooklinegolf.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when brooklinegolf.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official brooklinegolf.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Check same-day tee time availability at Brookline Golf for a walk-up group of 4 using the
playersfilter - Build a daily alert that monitors
available_spotsacross all slots and notifies when a preferred morning window opens - Aggregate weekly tee time density by querying
list_tee_timesfor each day and countingtotal_tee_times - Display a live availability widget for a Brookline-area golf app using
tee_timeandstarting_sidefields - Log historical booking patterns by archiving daily responses and comparing
available_spotsat consistent query times - Filter slots by
starting_sideto find only Front-nine starts for groups with time constraints
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does brooklinegolf.com have an official developer API?+
What does `list_tee_times` return for a specific date, and how does the `players` filter work?+
tee_time, starting_side, available_spots, and holes. Setting players to an integer between 1 and 4 removes any slot where available_spots is lower than that number, so only slots your group can actually book are returned.Does the API cover resident rates, 9-hole rounds, or twilight/junior rate classes?+
Can I query multiple dates in one request or retrieve a week's worth of availability at once?+
list_tee_times covers exactly one calendar day. Multi-date queries are not supported in a single request. You can fork the API on Parse and revise it to add a date-range endpoint that batches multiple day queries.How far in advance does the availability data extend?+
tee_times array will be empty.