---
title: "Discover admitted marketplace sources and verify each through the Chip gate."
method: GET
path: "/v1/offers/discover"
---

# Discover admitted marketplace sources and verify each through the Chip gate.

`GET /v1/offers/discover`

## Request

- Base URL: `https://golfdata.co`
- URL: `https://golfdata.co/v1/offers/discover`
- Auth: API key in header `x-api-key`

Costs 2 lookup(s) at $0.005 each. Requires x-api-key.

## Query parameters

- `canonical_product_id` string, uuid, required
- `variant_id` union
  - string, uuid
  - 'null'
- `offset` integer

## Headers

- `Idempotency-Key` string

## Response `200`

OK

- OfferDiscoveryResponse
  - `schema_version` 'golf-offers.v1', required
  - `canonical_product_id` string, uuid, required
  - `variant_id` string, uuid, nullable, required
  - `status` 'offers' | 'unavailable' | 'variant_required' | 'variant_unavailable' | 'invalid_request', required
  - `results` VerifiedOfferResponse[], required
    - union
      - object
        - `schema_version` 'golf-offer.v1', required
        - `status` 'verified_offer', required
        - `reason` string, nullable, required
        - `offer` AgentOffer, required: Read-only observed evidence. verified_offer is not purchase readiness. Currency is unknown; no click attribution or purchase authority is created. valid_until bounds verification evidence, not a merchant price guarantee.
          - `source` object, required
            - `kind` 'deal' | 'product', required
            - `id` string, uuid, required
          - `canonical_product_id` string, uuid, required
          - `offer_id` string, uuid, required
          - `variant_id` string, uuid, nullable, required
          - `variant` object, nullable, required
            - `hand` string, nullable, required
            - `flex` string, nullable, required
            - `loft` number, nullable, required
            - `shaftMaterial` string, nullable, required
            - `shaftModel` string, nullable, required
            - `setMakeup` string, nullable, required
            - `headSize` string, nullable, required
            - `length` string, nullable, required
            - `condition` string, nullable, required
          - `attributes` object, required
          - `title` string, required
          - `merchant` string, required
          - `image_url` string, nullable, required
          - `price` object, required
            - `amount` number, nullable, required
            - `currency` unknown, required
            - `observed_at` string, date-time, required
            - `freshness` string, required
          - `last_observed_price` object, required
            - `amount` number, required
            - `currency` unknown, required
            - `observed_at` string, date-time, required
          - `stock` object, required
            - `in_stock_at_observation` unknown, required
            - `observed_at` string, date-time, required
          - `verification` object, required
            - `path` 'chip-commerce-gate', required
            - `link_verified_at` string, date-time, required
            - `policy_version` string, required
            - `valid_until` string, date-time, required
          - `affiliate` object, required
            - `status` 'affiliate' | 'nonaffiliate', required
            - `network` string, required
            - `url` string, required
            - `click_attribution` 'not_created', required
          - `unknown_fields` string[], required
          - `actionability` object
            - `status` 'not_purchase_ready', required
            - `blockers` string[], required
      - object
        - `schema_version` 'golf-offer.v1', required
        - `status` 'check_price', required
        - `reason` string, nullable, required
        - `offer` AgentOffer, required: Read-only observed evidence. verified_offer is not purchase readiness. Currency is unknown; no click attribution or purchase authority is created. valid_until bounds verification evidence, not a merchant price guarantee.
          - `source` object, required
            - `kind` 'deal' | 'product', required
            - `id` string, uuid, required
          - `canonical_product_id` string, uuid, required
          - `offer_id` string, uuid, required
          - `variant_id` string, uuid, nullable, required
          - `variant` object, nullable, required
            - `hand` string, nullable, required
            - `flex` string, nullable, required
            - `loft` number, nullable, required
            - `shaftMaterial` string, nullable, required
            - `shaftModel` string, nullable, required
            - `setMakeup` string, nullable, required
            - `headSize` string, nullable, required
            - `length` string, nullable, required
            - `condition` string, nullable, required
          - `attributes` object, required
          - `title` string, required
          - `merchant` string, required
          - `image_url` string, nullable, required
          - `price` object, required
            - `amount` number, nullable, required
            - `currency` unknown, required
            - `observed_at` string, date-time, required
            - `freshness` string, required
          - `last_observed_price` object, required
            - `amount` number, required
            - `currency` unknown, required
            - `observed_at` string, date-time, required
          - `stock` object, required
            - `in_stock_at_observation` unknown, required
            - `observed_at` string, date-time, required
          - `verification` object, required
            - `path` 'chip-commerce-gate', required
            - `link_verified_at` string, date-time, required
            - `policy_version` string, required
            - `valid_until` string, date-time, required
          - `affiliate` object, required
            - `status` 'affiliate' | 'nonaffiliate', required
            - `network` string, required
            - `url` string, required
            - `click_attribution` 'not_created', required
          - `unknown_fields` string[], required
          - `actionability` object
            - `status` 'not_purchase_ready', required
            - `blockers` string[], required
      - object
        - `schema_version` 'golf-offer.v1', required
        - `status` 'unavailable', required
        - `reason` string, nullable, required
        - `offer` unknown, required
  - `variants` object[], required
    - `variant_id` string, uuid, required
    - `attributes` object, required
    - `specs_verified` boolean, required
    - `specs_observed_at` string, date-time, nullable, required
    - `role` 'selection_metadata_not_offer', required
  - `variants_truncated` boolean, required
  - `coverage` object, required
    - `candidates_examined` integer, required
    - `unavailable_count` integer, required
    - `source_window_count` integer, required
    - `source_window_truncated` boolean, nullable, required
    - `may_have_more` boolean, required
    - `next_offset` integer, nullable, required
    - `pagination_consistency` 'live_window_not_snapshot', required

## Other responses

- `400`: Invalid input.
- `402`: Key required. Body carries pricing_url, free_key_url, docs_url and checkout_url when set.
- `409`: Idempotency key already used for this API key when atomic metering is enabled.
- `429`: Rate limit or quota reached. Body carries retry_after_seconds and the same URLs.
- `502`: Upstream data request failed.
- `503`: Backend or atomic usage reservation/finalization unavailable.

---

[API](https://skmtc.dev/golfdata/apis/golfdataapi.md) · [All operations](https://skmtc.dev/golfdata/apis/golfdataapi/llms.txt) · [OpenAPI document](https://skmtc.dev/golfdata/apis/golfdataapi/revisions/f65dc04ba24a?raw)
