TeeOff APIteeoff.com ↗
Access TeeOff.com tee time availability, golf course details, reviews, and deal pricing across thousands of courses via 8 structured endpoints.
What is the TeeOff API?
The TeeOff.com API exposes 8 endpoints covering golf tee time search, course details, golfer reviews, and deal discovery. Use search_tee_times to query available tee times by location, date, player count, and hole count, then drill into a specific facility with get_all_tee_times_for_facility to retrieve full pricing breakdowns, rate names, and cart inclusion details. Location resolution, course metadata, and deal filters are all covered in dedicated endpoints.
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 to coordinates internally) or explicit lat/lng values, along with optional filters for date (MM/DD/YYYY), holes (9 or 18), players, radius in miles, and sort_by. It returns a facilities array where each object includes tee time slots, per-round pricing, distance from the search point, and course ratings. The total field reflects how many facilities matched. For coordinate-first lookups, get_courses_near_me provides the same facility structure sorted by distance with no additional filter parameters required.
Facility-Level Tee Time Detail
get_all_tee_times_for_facility takes a facility_id (sourced from search_tee_times results) and returns the complete tee time list for a single course on a given date. Each tee time object includes rate details, full pricing breakdown, player rules, and whether a cart is included. The total field gives the count of available slots for that day.
Course Details and Reviews
get_course_details returns structured metadata for a course including a description, tee_boxes array (each entry has tee name, par, length, rating, and slope), course_stats (holes, par, total length), and a quick_facts object of miscellaneous course attributes. The course_id parameter maps to the reviewId field in search results. get_course_reviews returns paginated golfer reviews with Rating, ReviewText, Title, UserNickname, SubmissionTime, and five SecondaryRatings dimensions: Pace, Course Conditions, Staff Friendliness, Value for Money, and Course Layout.
Deal and Location Utilities
search_deal_times filters results to facilities with active discounted tee times for a given location and date. search_flash_daily_deals targets promoted campaign offers; note that it may return zero results if no active campaigns exist in the area. autocomplete_location resolves partial course names, city names, or postal codes into structured location hits with geo coordinates, type, and address fields — these coordinates feed directly into search_tee_times or get_courses_near_me.
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?+
- Build a tee time comparison tool that queries search_tee_times across multiple cities and surfaces the lowest-priced available slots by date.
- Aggregate course difficulty metrics by pulling tee_boxes data (rating, slope, length) from get_course_details for a set of facilities.
- Create a deal alert system that polls search_deal_times and search_flash_daily_deals daily for a target metro area.
- Power a golf trip planner by combining autocomplete_location for city resolution, search_tee_times for availability, and get_course_reviews for quality filtering.
- Display a scorecard-style course profile page using tee_boxes, course_stats, quick_facts, and description from get_course_details.
- Build a proximity-based course finder using get_courses_near_me with user-provided GPS coordinates and a configurable radius.
- Analyze golfer sentiment across a region by ingesting SecondaryRatings dimensions (Pace, Value for Money, Course Layout) from get_course_reviews.
| 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.