GolfData
API

GolfData API

A read-only JSON API over the same data behind the Price Index: catalog, current prices, and daily price history recorded every day.

Endpoints

EndpointAccessReturns
GET /v1/meta Keyless Catalog stats: counts by category, enrichment coverage, snapshot count, freshness.
GET /v1/pricing Keyless Price ladder, lookup costs and machine URLs.
GET /v1/spotlight Keyless Twelve enriched products with 90 day daily-low series, current low, 30 and 90 day lows. Cached one hour.
GET /v1/limits Keyless Caller's lane and remaining quota, or the keyless limits without a key.
GET /v1/products?brand&category&q&limit Keyless Search canonical products.
GET /v1/products/{id} Keyless One product plus its enrichment_sources provenance rows.
GET /p/{slug}/{id} Keyless Public HTML product page with current price and 90 day history.
GET /p/{id} Keyless Redirect to the canonical public HTML product page.
GET /compare/{slug}/{idA}/{idB} Keyless Public HTML price comparison page for two canonical products.
GET /drops Keyless Public HTML page of the biggest current price drops, grouped by category.
GET /drops/{category} Keyless Public HTML page of the biggest price drops in one category.
GET /partners Keyless Public HTML partner kit page with free key, badge and Price Index terms for publishers and creators.
GET /brands Keyless Public HTML index of major golf brands.
GET /brands/{brand} Keyless Public HTML hub of observed prices for one major brand.
GET /retailers Keyless Public HTML index of retailers with fresh priced products.
GET /retailers/{retailer} Keyless Public HTML hub of products a retailer prices lowest.
GET /badge/{productId}.svg Keyless Embeddable SVG price badge for one product.
GET /v1/prices/current?product_id Key Latest stored advertised prices per retailer.
GET /v1/prices/history?product_id&days Key Daily price snapshots per retailer, days up to 365.
GET /v1/compare?product_id Key Current prices plus min, max, median and 30 and 90 day lows.
GET /v1/offers/discover?canonical_product_id&variant_id&offset Key Discover admitted marketplace sources and verify each through the Chip gate.
GET /v1/offers/verified?source_kind&source_id&canonical_product_id&variant_id Key Verify one known marketplace source (golf-offer.v1).
POST /v1/keys Keyless Issue a free key to an email, once per email. Body {email}, JSON or form-encoded. 3 per minute per IP.
GET /reports/2026-08?session_id Keyless Paid August 2026 Market Movement Report as HTML. Stripe Payment Link redirects here with session_id; the session is the access token.
GET /v1/keys/claim?session_id Keyless Claim the paid key for a completed Stripe Checkout Session, once. Stripe Payment Links redirect here with session_id. 3 per minute per IP.
POST /v1/contact Keyless Submit a retailer or brand contact request. Body {company,email,feed_url,message,reason}, JSON or form-encoded.
POST /mcp Keyless MCP streamable HTTP, JSON-RPC 2.0. Same reads as tools.

Keys and pricing

Keyless: search and single product lookup, 10 requests per minute per IP, no signup. Everything else takes an x-api-key header. Requests without a valid key return HTTP 402 with a JSON body pointing at /v1/pricing and the free key endpoint. Lookups are metered per key at $0.005 each and every response carries an x-price-usd header.

Machine doors

MCP config

{
  "mcpServers": {
    "golfdata": { "url": "https://golfdata.co/mcp" }
  }
}

OpenAPI

The same route table, generated from the OpenAPI 3.1 document at /openapi.json.

{
  "openapi": "3.1.0",
  "info": {
    "title": "GolfDataAPI",
    "version": "1.0.0",
    "description": "Golf equipment catalog and multi-retailer prices, recorded every day. $0.005 per lookup."
  },
  "servers": [
    {
      "url": "https://golfdata.co"
    }
  ],
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    }
  },
  "paths": {
    "/v1/meta": {
      "get": {
        "summary": "Catalog stats: counts by category, enrichment coverage, snapshot count, freshness.",
        "description"...

Free key in one POST

Search and product lookups need no key. Prices, history and compare take an x-api-key header.

1,000 lookups per month, no card. The key is shown once.

Data notes

Prices come from retailer and affiliate feeds, not from scraping public pages. Product ids are UUIDs from /v1/products. GET and OPTIONS, plus POST /mcp and POST /v1/keys. CORS open to all origins.