# Teeoff — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Find and book golf tee times across courses worldwide, compare pricing and availability, read detailed course reviews, and discover new golf destinations. Get real-time access to course information, current deals, flash sales, and locate nearby courses with a single search.

**Category:** Sports | **Website:** [teeoff.com/](https://teeoff.com/) | **Docs:** [parse.bot/marketplace/ddee1028-945c-4f89-bfdb-3539b2d8c54b/teeoff-com-api](https://parse.bot/marketplace/ddee1028-945c-4f89-bfdb-3539b2d8c54b/teeoff-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### autocomplete_location

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.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `query` | string | Yes | Search text (course name, city, or postal code) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/autocomplete_location \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"<string>"}'
```

### get_all_tee_times_for_facility

Get all available tee times for a specific golf facility on a given date. Returns a comprehensive list of tee times with full pricing breakdown, rate details, player rules, and cart inclusion info. Use the facilityId from search_tee_times results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in MM/DD/YYYY format. Defaults to tomorrow. |
| `facility_id` | string | Yes | Facility ID from search results (e.g., '877' for Dubsdread Golf Course) |
| `holes` | integer | No | Number of holes filter (9 or 18) |
| `players` | integer | No | Number of players filter |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/get_all_tee_times_for_facility \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>","facility_id":"<string>","holes":"<integer>","players":"<integer>"}'
```

### get_course_details

Get detailed information about a specific golf course including description, tee box details (par, length, rating, slope per tee), course statistics, and quick facts. Uses the reviewId from search results as course_id.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `course_id` | string | Yes | Course/review ID from search results reviewId field (e.g., '1028365' for Dubsdread Golf Course) |
| `slug` | string | No | SEO-friendly name slug (e.g., 'dubsdread-golf-course'). Improves URL routing but not required. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/get_course_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"course_id":"<string>","slug":"<string>"}'
```

### get_course_reviews

Get golfer reviews and ratings for a specific course via the Bazaarvoice reviews API. Returns paginated review results with overall and secondary ratings (Pace, Course Conditions, Staff Friendliness, Value for Money, Course Layout), reviewer context data, and submission details.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `course_id` | string | Yes | Course/review ID from search results reviewId field (e.g., '1028365' for Dubsdread Golf Course) |
| `limit` | integer | No | Max reviews to return per page |
| `offset` | integer | No | Pagination offset |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/get_course_reviews \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"course_id":"<string>","limit":"<integer>","offset":"<integer>"}'
```

### get_courses_near_me

Get golf courses near a given geographic location. Returns facilities with tee time availability sorted by distance. Equivalent to search_tee_times with explicit coordinates and no additional filters.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `lat` | number | Yes | Latitude coordinate of the search location (e.g., 28.5384 for Orlando area) |
| `lng` | number | Yes | Longitude coordinate of the search location (e.g., -81.3789 for Orlando area) |
| `radius` | integer | No | Search radius in miles |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/get_courses_near_me \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"lat":"<number>","lng":"<number>","radius":"<integer>"}'
```

### get_tee_time_details

Get details for a specific tee time booking page. Returns facility ID, tee time ID, and available booking information parsed from the page.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `facility_id` | string | Yes | Facility ID (e.g., '877') |
| `tee_time_id` | string | Yes | Tee time ID (e.g., '61157297') from search results |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/get_tee_time_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"facility_id":"<string>","tee_time_id":"<string>"}'
```

### list_destinations

List top golf destinations available on TeeOff. Returns destination names, URLs, and slugs parsed from the destinations page.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/list_destinations \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### search_deal_times

Search for DEAL Times (discounted tee times) by location. Filters results to show only hot deal tee times near the specified location. Returns the same facility structure as search_tee_times but filtered to courses with active deals.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in MM/DD/YYYY format. Defaults to tomorrow. |
| `location` | string | Yes | Location name (e.g., 'Orlando') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/search_deal_times \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>","location":"<string>"}'
```

### search_flash_daily_deals

Search for Flash Daily Deals (promoted campaign offers) by location. May return zero results if no promoted campaigns are active in the area.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in MM/DD/YYYY format. Defaults to tomorrow. |
| `location` | string | Yes | Location name (e.g., 'Orlando') |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/search_flash_daily_deals \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>","location":"<string>"}'
```

### search_tee_times

Search for available tee times by location and filters. Requires either a location name (auto-resolved to coordinates via autocomplete) or explicit lat/lng coordinates. Returns paginated facility results with tee time availability, pricing, ratings, and distance. Each facility includes up to 3 representative tee times in the tile view.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in MM/DD/YYYY format. Defaults to tomorrow. |
| `holes` | integer | No | Number of holes filter (9 or 18) |
| `hot_deals_only` | boolean | No | Show only DEAL Times |
| `lat` | number | No | Latitude coordinate. Must be provided with lng if location is not specified. |
| `lng` | number | No | Longitude coordinate. Must be provided with lat if location is not specified. |
| `location` | string | No | Location name (e.g., 'Orlando'). Auto-resolved to coordinates via autocomplete. Either location or both lat and lng must be provided. |
| `page_index` | integer | No | Page number (0-based) |
| `page_size` | integer | No | Results per page |
| `players` | integer | No | Number of players (0 means any) |
| `price_max` | integer | No | Maximum price filter in dollars |
| `price_min` | integer | No | Minimum price filter in dollars |
| `promoted_campaigns_only` | boolean | No | Show only Flash Daily Deals |
| `radius` | integer | No | Search radius in miles |
| `sort_by` | string | No | Sort field |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-teeoff-com-api-ddee1028/search_tee_times \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>","holes":"<integer>","hot_deals_only":"<boolean>","lat":"<number>","lng":"<number>","location":"<string>","page_index":"<integer>","page_size":"<integer>","players":"<integer>","price_max":"<integer>","price_min":"<integer>","promoted_campaigns_only":"<boolean>","radius":"<integer>","sort_by":"<string>"}'
```
