TeeOff APIteeoff.com ↗
Search golf tee times, course details, reviews, deals, and nearby facilities via the TeeOff.com API. 10 endpoints covering availability, pricing, and destinations.
What is the TeeOff API?
The TeeOff.com API provides 10 endpoints for querying golf tee time availability, course details, reviews, and deals from TeeOff.com. The search_tee_times endpoint returns paginated facility results with live pricing and availability filtered by location, date, number of holes, and player count. Companion endpoints cover discounted deals, flash daily promotions, course scorecards, and golfer reviews.
curl -X POST 'https://api.parse.bot/scraper/4c2fdb6d-ae35-42fa-abab-5fd559e72ce0/autocomplete_location' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "Orlando"
}'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 teeoff-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.
"""TeeOff Golf SDK — search courses, find deals, browse tee times."""
from parse_apis.teeoff_golf_tee_times_api import TeeOff, CourseNotFound
client = TeeOff()
# Search for golf courses with available tee times in Orlando
for facility in client.facilities.search(location="Orlando", limit=3):
print(facility.name, facility.min_price, facility.formatted_distance)
# Browse tee times for a specific facility
facility = client.facilities.search(location="Orlando", limit=1).first()
if facility:
for tt in facility.tee_times.list(limit=3):
print(f" {tt.formatted_time} - ${tt.min_tee_time_rate}")
# Get detailed course info and read reviews
try:
course = client.courses.get(course_id="1028365")
print(course.name, course.description)
for box in course.tee_boxes:
print(f" {box.tee}: par {box.par}, {box.length}, slope {box.slope}")
for review in course.reviews.list(limit=3):
print(f" ★{review.rating} by {review.user_nickname}: {review.title}")
except CourseNotFound as exc:
print(f"Course not found: {exc}")
# Autocomplete location search
for loc in client.locations.search(query="Pebble Beach", limit=3):
print(loc.name, loc.display_name)
print("exercised: facilities.search / tee_times.list / courses.get / reviews.list / locations.search")
Autocomplete search for course name, city, or postal code. Returns matching locations with geographic coordinates, address information, and type classification. Use the geo coordinates from results to feed into search_tee_times or get_courses_near_me.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search text (course name, city, or postal code) |
{
"type": "object",
"fields": {
"hits": "array of location objects with name, type, geo coordinates, and address information",
"count": "integer total number of matching results"
},
"sample": {
"data": {
"hits": [
{
"id": "677f13e0600104d3141edacf",
"geo": {
"lat": 28.452773,
"lon": -81.478124
},
"name": "Club Champion Orlando",
"type": "course",
"displayName": "Club Champion Orlando, Orlando, Florida, US"
}
],
"count": 31
},
"status": "success"
}
}About the TeeOff API
Tee Time Search and Availability
The search_tee_times endpoint accepts either a plain location string (resolved automatically to coordinates) or explicit lat/lng values, along with optional filters for date (MM/DD/YYYY), holes, players, and radius in miles. Responses include a ttResults object containing a facilities array where each facility carries its available tee times and per-golfer pricing. The get_all_tee_times_for_facility endpoint narrows this to a single facility identified by facility_id, returning every available slot for that day. For booking-page details — cart_included, price_per_golfer, and the exact time — use get_tee_time_details with a facility_id and tee_time_id from search results.
Deals and Promotions
search_deal_times filters results to DEAL Times only — discounted tee times near a given location. search_flash_daily_deals targets promoted campaign offers in the same geographic area; note that this endpoint may return zero results if no active campaigns exist for the requested location and date. Both return the same ttResults shape as the general search endpoint, making it straightforward to switch between them.
Course Details and Reviews
get_course_details returns structured course data for a given course_id (the reviewId from search results): tee_boxes with par, length, rating, and slope per box; a description string; quick_facts as key-value pairs; and a course_stats object with holes, par, and total length. get_course_reviews returns paginated golfer reviews via the Bazaarvoice system, with each review carrying a rating, review text, and submission time. Pagination uses limit and offset parameters.
Location Utilities and Destinations
autocomplete_location accepts a partial course name, city, or postal code and returns matching hits with geographic coordinates — useful for resolving a human-readable query into lat/lng values before calling get_courses_near_me. list_destinations returns the top golf destinations featured on TeeOff.com, including each destination's name, url, and slug, which can drive category or browse-style interfaces.
The TeeOff API is a managed, monitored endpoint for teeoff.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when teeoff.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 teeoff.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?+
- Display available tee times and per-golfer pricing near a user's GPS coordinates using
get_courses_near_me - Build a deal-alert tool that polls
search_deal_timesfor discounted tee times in a target city - Show a course scorecard with tee box ratings and slope data from
get_course_details - Aggregate golfer review scores and text for course comparison using
get_course_reviews - Power a destination guide by listing top golf markets via
list_destinations - Resolve a user's city or zip code input to coordinates with
autocomplete_locationbefore executing a tee time search - Surface flash promotion availability for a region using
search_flash_daily_dealsalongside regular search results
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does TeeOff.com have an official developer API?+
What does `search_tee_times` return and how do I filter results?+
ttResults object with a facilities array. Each facility includes tee time slots with pricing. You can filter by date (MM/DD/YYYY), holes (9 or 18), players, radius in miles, and sort via sort_by. Supply either a location string or explicit lat/lng coordinates — not both.How does `course_id` relate to `facility_id` across endpoints?+
facility_id identifies a bookable facility and is used by get_all_tee_times_for_facility, get_tee_time_details, and search_tee_times. course_id (also called reviewId in search results) is a separate identifier used specifically by get_course_details and get_course_reviews to retrieve scorecard and review data.Does `search_flash_daily_deals` always return results?+
location and date, the total field will be 0 and ttResults will contain an empty facilities array. Use search_deal_times as a fallback to find non-campaign discounts.Does the API support booking or completing a tee time reservation?+
get_tee_time_details returns booking-page data including price_per_golfer and cart_included, but does not submit a reservation. You can fork this API on Parse and revise it to add a booking or checkout endpoint.