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
CODEBLOCK0
Facility-Specific Search (SearchType: 1) — WORKS ✅
Requires a
FacilityId. Returns all tee times for that course on a given date.
CODEBLOCK1
Area Search (SearchType: 0) — DOES NOT WORK ❌
Returns 0 results without a FacilityId. The API requires facility-specific queries.
Key Parameters
| Param | Values | Notes |
|---|
| INLINECODE1 | "1"-"4" | String, not int |
| INLINECODE2 |
"1"=9h, "2"=18h, "3"=any | String |
|
TimeMin/
TimeMax | 10-42 | Maps to time ranges. 10=5AM, 42=9PM+ |
|
Date | "Feb 16 2026" | Human-readable format |
|
FacilityType | 0=any, 1=course, 2=simulator | |
|
BestDealsOnly | true/false | Hot deals filter (but returns 0 for area search) |
|
SearchType | 1 | Must be 1 (facility). 0/2/3 don't work |
Response Structure
CODEBLOCK2
Building Course URLs
https://www.golfnow.com/tee-times/facility/{seoFriendlyName}/search
Example: INLINECODE9
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:
- 1. 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:
CODEBLOCK4
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
- 1. 🔥 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)
Booking Flow## Booking Flow (GolfNow via Browser)
⚠️ CRITICAL: Always send a screenshot of the final checkout page to the user BEFORE clicking "Make Your Reservation". Wait for explicit approval.
Steps
- 1. Navigate to INLINECODE18
- 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
- 5. 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)
- 6. 📸 SCREENSHOT & SEND TO USER — Send checkout screenshot via Telegram before proceeding
- Wait for approval
- Accept terms: Check INLINECODE29
- Click reservation: INLINECODE30
- 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
高尔夫开球时间查找器 ⛳
使用GolfNow API(逆向工程)查找和比较高尔夫开球时间。适用于任何地点。
使用场景
- - 用户要求查找开球时间、预订高尔夫或打一轮球
- 寻找便宜/折扣高尔夫或热门优惠
- 比较某个区域的球场
- 检查特定日期的可用性
- 查找可使用积分预订(交易优惠)的开球时间
GolfNow API(主要方法)
GolfNow网站使用POST API获取开球时间。这是唯一可靠的方法——web_fetch返回空壳(JS渲染的SPA)。
API端点
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 10157) AppleWebKit/537.36
Origin: https://www.golfnow.com
特定球场搜索(SearchType: 1)— 有效 ✅
需要FacilityId。返回该球场在指定日期的所有开球时间。
json
{
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
}
区域搜索(SearchType: 0)— 无效 ❌
没有FacilityId时返回0个结果。API需要特定球场的查询。
关键参数
| 参数 | 值 | 说明 |
|---|
| Players | 1-4 | 字符串,非整数 |
| Holes |
1=9洞, 2=18洞, 3=任意 | 字符串 |
| TimeMin/TimeMax | 10-42 | 映射到时间段。10=凌晨5点, 42=晚上9点+ |
| Date | Feb 16 2026 | 人类可读格式 |
| FacilityType | 0=任意, 1=球场, 2=模拟器 | |
| BestDealsOnly | true/false | 热门优惠筛选(但区域搜索返回0) |
| SearchType | 1 | 必须为1(球场)。0/2/3无效 |
响应结构
ttResults.teeTimes[] → 开球时间组数组
├── formattedTime: 7:18
├── formattedTimeMeridian: AM
├── time: 2026-02-16T07:18:00 (ISO时间戳)
├── displayRate: 35.0 (每位球员价格)
├── multipleHolesRate: 18 (洞数)
├── maxPriceTransactionFee: 2.99
├── facility.name, facility.address.city, facility.averageRating, facility.reviewCount
├── facility.seoFriendlyName (用于构建URL)
├── facility.latitude, facility.longitude
└── teeTimeRates[] → 该时间段的费率选项
├── rateName: 预付 - 在线费率 / 热门优惠 / 黄昏价 / 等
├── isHotDeal: true/false 🔥
├── isTradeOffer: true/false 💳 (可用积分预订)
├── isCartIncluded: true/false
├── singlePlayerPrice.greensFees.value: 35.0
└── rateSetTypeId: 1=预付, 其他=到场支付
构建球场URL
https://www.golfnow.com/tee-times/facility/{seoFriendlyName}/search
示例:https://www.golfnow.com/tee-times/facility/5744-colony-west-golf-club-glades-course/search
辅助脚本
使用skills/golf-tee-times/golfnow-search.py进行批量查询。详见脚本使用说明。
查找球场ID
由于区域搜索无效,需要FacilityId。方法如下:
- 1. 使用已知球场数据库(见下文)
- 网页搜索: site:golfnow.com/tee-times/facility {城市} {州} — URL包含ID
- 浏览器拦截: 加载球场页面,拦截POST到/api/tee-times/tee-time-results,从请求体中读取FacilityId
Telegram输出格式
使用以下简洁格式展示开球时间:
🏌️ 开球时间 · {星期} {日期} · {人数}位球员
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
🔥 优惠
🔥 球场名称
城市 · X英里 · ⭐ X.X · N条评价
▸ 时间 · $XX · 18洞 · 含球车 🔥
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
球场名称
城市 · X英里 · ⭐ X.X · N条评价
▸ 时间段 · $XX
▸ 时间段 · $XX 黄昏价
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
所有价格均为每位球员 · 含球车 · 通过GolfNow
关键格式规则:
- - 使用▸表示时间段行
- 球场名称加粗并设为Markdown链接
- 先显示优惠部分(🔥热门优惠,💳积分/交易优惠)
- 在每个球场内按价格档次分组
- 包含距离、评分、评价数量
- 对显著可用性添加← 上午时段等标注
- 页脚:所有价格均为每位球员 · 含球车 · 通过GolfNow
- 不要使用反引号代码块显示时间列表(在手机上显示效果不佳)
折扣技巧
- 1. 🔥 GolfNow热门优惠 — API中的isHotDeal: true。未售出的库存大幅折扣。
- 💳 交易优惠 — isTradeOffer: true。可使用GolfNow积分预订。
- 🚶 步行不打球车 — 节省20-50美元球车费
- 🌅 黄昏价 — 下午2-3点后,价格大幅下降(查找rateName: Twilight)
- 🏠 佛罗里达居民价 — 在公共球场出示身份证享受本地折扣
- ⏰ 最后一分钟优惠 — 当天价格下降;热门优惠在临近开球时间时出现
- 📞 致电专卖店 — 仅电话预订的价格有时比网上便宜
- 🗓️ 工作日 > 周末 — 周一至周四总是更便宜
- 🌧️ 天气预报有雨 — 天气不佳时价格下降
季节性说明(您所在地区)
- - 旺季(12月-4月):价格最高,提前3-7天预订。上午时段很快售罄。
- 夏季(5月-9月):便宜40-60%,但炎热/潮湿。建议清晨或黄昏。
- 飓风季(6月-11月):雨天折扣常见
- 最佳价值月份:9月(最便宜+人最少)
预订流程(通过浏览器使用GolfNow)
⚠️ 重要:在点击进行预订之前,务必向用户发送最终结账页面的截图。等待明确批准。
步骤
- 1. 导航至 https://www.golfnow.com/tee-times/facility/{facilityId}/tee-time/{teeTimeId}
- 选择球员人数 — 点击单选按钮,触发change事件,确认果岭费总额已更新
- 点击继续预订(.btnBook)—