Docs / Physical prices

Physical dealer prices

What gold actually costs where you are: real dealer and retail quotes per country, with the premium over international spot as a first-class field. Product overview at /physical.

PHYSICAL TIER+12 COUNTRIES LIVEMCP TOOL PARITY

Country index

GET/v1/physicalBearer · Physical+

Which countries are live, how many sources each has, and the freshest fetch time. Use it to discover coverage before calling the per-country endpoint.

Sample response

{
  "result": "success",
  "countries": [
    {"country": "ID", "sources": 4, "products": ["digital_gram", "bar"],
     "currency": "IDR", "latest_fetched_at": "2026-07-04T02:15:09Z"},
    {"country": "MY", "sources": 1, "products": ["bar"],
     "currency": "MYR", "latest_fetched_at": "2026-07-04T02:15:11Z"}
  ]
}

Dealer quotes for one country

GET/v1/physical/{country}Bearer · Physical+

Latest quote per (source, brand, product, denomination). country is an ISO 3166-1 alpha-2 code (ID, MY, VN, CN, PK, AE, JP, NP, EG, IN, SA, HK). Unknown codes return 404 unknown_country with the live country list. Responses are cached for 60 seconds.

Sample response

{
  "result": "success",
  "country": "ID",
  "currency": "IDR",
  "spot_reference": {
    "xau_usd": "4123.50",
    "fx_usd_local": "16250.00",
    "spot_per_gram_local": "2154917.00"
  },
  "quotes": [
    {"source": "treasury_id", "brand": null, "product": "digital_gram",
     "denomination_grams": null, "price_basis": "per_gram",
     "sell": "2497154", "buyback": "2414599",
     "premium_over_spot_bps": 1588,
     "data_updated_at": "2026-07-04T02:14:02Z",
     "fetched_at": "2026-07-04T02:15:09Z"},
    {"source": "indogold", "brand": "Antam", "product": "bar",
     "denomination_grams": "1", "price_basis": "per_bar",
     "sell": "2719000", "buyback": "2520000",
     "premium_over_spot_bps": 2618,
     "data_updated_at": null,
     "fetched_at": "2026-07-04T02:15:10Z"}
  ]
}

Reading the quote rows

price_basis tells you what the price is per: per_gram, per_bar (with denomination_grams carrying the bar weight), per_tola, or per_tael. premium_over_spot_bps compares the per-gram equivalent against purity-adjusted international spot converted at the live FX cross: 18-karat rows compare against 18k-equivalent spot, never against pure spot. Products whose purity is not in the label carry premium: null. Stale spot or FX inputs also yield null, never a fabricated number.

MCP tool + WebSocket channel

The get_physical_price(country) MCP tool returns the same shape as the per-country endpoint, gated identically. On Realtime Pro, the physical:{country}WebSocket channel pushes this payload whenever a country's quotes change; see the stream reference.

FAQ

What does /v1/physical/{country} return?
The latest dealer quote per (source, brand, product, denomination) for one country: sell and buyback prices, the pricing basis (per gram, per bar, per tola, per tael), and premium_over_spot_bps computed against live international spot times live FX, purity-adjusted per product.
When is premium_over_spot_bps null?
Whenever an input would make it dishonest: the spot or FX reading is stale (older than 15 minutes), or the product's purity is not stated in its label. A null premium is deliberate. The API never fabricates a number.
Which tier do I need?
Physical or higher. Free and grandfathered Basic keys receive 403 plan_gated. The MCP tool get_physical_price follows the same gate.