# Send Golf Tee Times to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "golf-tee-times",
    "name": "Golf Tee Times",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/tag-assistant/golf-tee-times",
    "canonicalUrl": "https://clawhub.ai/tag-assistant/golf-tee-times",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/golf-tee-times",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=golf-tee-times",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "golfnow-search.py"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/golf-tee-times"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/golf-tee-times",
    "downloadUrl": "https://openagent3.xyz/downloads/golf-tee-times",
    "agentUrl": "https://openagent3.xyz/skills/golf-tee-times/agent",
    "manifestUrl": "https://openagent3.xyz/skills/golf-tee-times/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/golf-tee-times/agent.md"
  }
}
```
## Documentation

### Golf Tee Time Finder ⛳

Find and compare golf tee times using the GolfNow API (reverse-engineered). Works for any location.

### When to Use

User asks to find tee times, book golf, or play a round
Looking for cheap/discounted golf or hot deals
Comparing courses in an area
Checking availability for a specific date
Finding credit-bookable (trade offer) tee times

### GolfNow API (Primary Method)

The GolfNow website uses a POST API to fetch tee times. This is the only reliable method — web_fetch returns empty shells (JS-rendered SPA).

### API Endpoint

POST https://www.golfnow.com/api/tee-times/tee-time-results
Content-Type: application/json
Accept: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
Origin: https://www.golfnow.com

### Facility-Specific Search (SearchType: 1) — WORKS ✅

Requires a FacilityId. Returns all tee times for that course on a given date.

{
  "Radius": 50,
  "Latitude": 26.1224,
  "Longitude": -80.1373,
  "PageSize": 50,
  "PageNumber": 0,
  "SearchType": 1,
  "SortBy": "Date",
  "SortDirection": 0,
  "Date": "Feb 16 2026",
  "BestDealsOnly": false,
  "PriceMin": "0",
  "PriceMax": "10000",
  "Players": "2",
  "Holes": "3",
  "FacilityType": 0,
  "RateType": "all",
  "TimeMin": "10",
  "TimeMax": "42",
  "FacilityId": 5744,
  "SortByRollup": "Date.MinDate",
  "View": "Grouping",
  "ExcludeFeaturedFacilities": true,
  "TeeTimeCount": 50,
  "PromotedCampaignsOnly": "false",
  "CurrentClientDate": "2026-02-16T05:00:00.000Z"
}

### Area Search (SearchType: 0) — DOES NOT WORK ❌

Returns 0 results without a FacilityId. The API requires facility-specific queries.

### Key Parameters

ParamValuesNotesPlayers"1"-"4"String, not intHoles"1"=9h, "2"=18h, "3"=anyStringTimeMin/TimeMax10-42Maps to time ranges. 10=5AM, 42=9PM+Date"Feb 16 2026"Human-readable formatFacilityType0=any, 1=course, 2=simulatorBestDealsOnlytrue/falseHot deals filter (but returns 0 for area search)SearchType1Must be 1 (facility). 0/2/3 don't work

### Response Structure

ttResults.teeTimes[] → array of tee time groups
  ├── formattedTime: "7:18"
  ├── formattedTimeMeridian: "AM"
  ├── time: "2026-02-16T07:18:00"  (ISO timestamp)
  ├── displayRate: 35.0  (price per player)
  ├── multipleHolesRate: 18  (hole count)
  ├── maxPriceTransactionFee: 2.99
  ├── facility.name, facility.address.city, facility.averageRating, facility.reviewCount
  ├── facility.seoFriendlyName  (for building URLs)
  ├── facility.latitude, facility.longitude
  └── teeTimeRates[] → rate options for this time slot
       ├── rateName: "Prepaid - Online Rate" / "Hot Deal" / "Twilight" / etc.
       ├── isHotDeal: true/false  🔥
       ├── isTradeOffer: true/false  💳 (credit-bookable)
       ├── isCartIncluded: true/false
       ├── singlePlayerPrice.greensFees.value: 35.0
       └── rateSetTypeId: 1=prepaid, other=pay at course

### Building Course URLs

https://www.golfnow.com/tee-times/facility/{seoFriendlyName}/search

Example: https://www.golfnow.com/tee-times/facility/5744-colony-west-golf-club-glades-course/search

### Helper Script

Use skills/golf-tee-times/golfnow-search.py for batch queries. See script for usage.

### Finding Facility IDs

Since area search doesn't work, you need FacilityIds. Methods:

Use the known course database (see below)
Web search: site:golfnow.com/tee-times/facility {city} {state} — URL contains the ID
Browser intercept: Load a course page, intercept the POST to /api/tee-times/tee-time-results, read the FacilityId from the payload

### Telegram Output Format

Use this clean format for presenting tee times:

🏌️ *Tee Times · {Day} {Date} · {Players} Players*

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

🔥 *DEALS*

🔥 *[Course Name](url)*
City · X mi · ⭐ X.X · N reviews
▸ Time · *$XX* · 18 holes · cart 🔥

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

*[Course Name](url)*
City · X mi · ⭐ X.X · N reviews
▸ Time range · $XX
▸ Time range · $XX twilight

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

_All prices per player · cart included · via GolfNow_

Key formatting rules:

Use ▸ for time slot lines
Bold the course name as a markdown link
Show deals section first (🔥 hot deals, 💳 credit/trade offers)
Group times by price tier within each course
Include distance, rating, review count
Add ← AM slots or similar callouts for notable availability
Footer: All prices per player · cart included · via GolfNow
Do NOT use backtick code blocks for time listings (looks bad on mobile)

### Discount Tips

🔥 GolfNow Hot Deals — isHotDeal: true in API. Unsold inventory at deep discounts.
💳 Trade Offers — isTradeOffer: true. Bookable with GolfNow credits.
🚶 Walk don't ride — saves $20-50 on cart fees
🌅 Twilight rates — after 2-3 PM, prices drop significantly (look for rateName: "Twilight")
🏠 FL resident rate — show ID for local discount at public courses
⏰ Last-minute deals — day-of prices drop; hot deals appear closer to tee time
📞 Call pro shop — phone-only rates sometimes cheaper than online
🗓️ Weekday > Weekend — Monday-Thursday is always cheaper
🌧️ Rain forecast — prices drop when weather looks iffy

### Seasonal Notes (your area)

Peak season (Dec-Apr): Highest prices, book 3-7 days ahead. Morning sells out fast.
Summer (May-Sep): 40-60% cheaper, but hot/humid. Early AM or twilight.
Hurricane season (Jun-Nov): Rain discounts common
Best value month: September (cheapest + least crowded)

### Steps

Navigate to https://www.golfnow.com/tee-times/facility/{facilityId}/tee-time/{teeTimeId}
Select golfer count — click radio button, dispatch change event, verify green fees total updates
Click "Continue to Book" (.btnBook) — redirects to login if not authenticated
Login — GolfID iframe (my.golfid.io): use frame=[src*=golfid] to access email/password fields

Creds: scripts/vault.sh get golfnow


Checkout page (URL: .../checkout/players/{count}):

Apply rewards: Click #applyRewardsBtn → checkboxes by code ID (e.g. #MEMBERSAVE)

Note: Rewards marked "Cannot Be Combined" won't stack on Hot Deals


Apply GolfPass Points: Click #btn-apply-loyalty-points (these DO work on Hot Deals)
Decline Tee Time Protection: Click input[name=rdlTeeTimeProtection][value=false]
Decline charity roundup: Click "No Thanks" if desired
Payment: Pre-filled from saved cards (default: AMEX 1004)


📸 SCREENSHOT & SEND TO USER — Send checkout screenshot via Telegram before proceeding
Wait for approval
Accept terms: Check #agree-terms-top
Click reservation: #reservation-button-top
Confirmation: Remove Truist ad overlay ([class*=rokt], [class*=bold]), screenshot confirmation page

### the user's Booking Preferences

Always apply points/rewards to minimize cost
Decline Tee Time Protection (save $3-4)
Default payment: AMEX ending 1004
Send confirmation screenshot after booking
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: tag-assistant
- Version: 1.0.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/golf-tee-times)
- [Send to Agent page](https://openagent3.xyz/skills/golf-tee-times/agent)
- [JSON manifest](https://openagent3.xyz/skills/golf-tee-times/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/golf-tee-times/agent.md)
- [Download page](https://openagent3.xyz/downloads/golf-tee-times)