HomeEvery source, visible

Every source, visible

We don't blend. Spot prices pass through one source at a time. Add ?include=sources to see which source produced the price, with its price and timestamps.

Pass-through, per source

Most metals APIs collect prices from several feeds, run a weighted median, throw away the inputs, and hand you one number. The blend is opaque. When prices disagree across exchanges (which happens daily around rollover, around settlement, around every market close), you can't tell whether the API's number reflects reality or the API's internal weighting.

Spot prices pass through one licensed primary source without blending or averaging. During outages, a licensed backup serves gold and silver. Copper has no backup. Add ?include=sources to see the source that produced the price, its price, fetched_at and source_timestamp.

GET /v1/prices?symbol=XAU-USD-SPOT&include=sources

{
  "symbol": "XAU",
  "price": "4803.94",
  "is_stale": false,
  "computed_at": "2026-05-01T02:34:02Z",
  "sources": [
    { "source": "oracle.xau_usd", "display_name": "Live spot", "price": "4803.94", "fetched_at": "...", "source_timestamp": "..." }
  ]
}

Sources we ingest

Source categories at each tier. Per-call proof of which feeds fired for any given price lives in your /v1/prices response.

SourceUsed forTier
Primary live spot feedLive gold, silver and copper spot pricesAll plans; Free 15 minutes late, paid live
Backup spot feedGold and silver spot only while the primary is unavailableAll plans; Free 15 minutes late, paid live
Futures settlement reference (gold + silver + copper)Daily settlement, futures continuity, settlement-vs-spot differentialsLegacy plans only
exchangerate.dev FXCurrency conversion for non-USD gold pricesAll tiers

Source identifiers, refresh cadences, and upstream endpoint details are documented internally and evolve with each release. If you need this depth for legal evaluation, email hello@goldprice.dev with your use case and we'll respond.

Non-USD prices on the currency pages are USD gold spot multiplied by live FX from exchangerate.dev, our sibling currency API. Non-USD spot rows use no stored FX fallback. If live FX stops, /v1/convert and /v1/carat use the newest stored rate up to 3 days old; non-USD spot rows retain a stale price.

Backup spot feed

Spot uses licensed primary market data. Bid/ask are paid-only and optional, requiring a coherent two-sided quote. If the primary stops, gold and silver switch to a licensed backup until it returns. The backup price can run up to about two minutes behind the market. While it is in use, responses have no bid or ask.

We do not use the backup when the metals market is closed: daily from 17:00 to 18:00 and from Friday 17:00 to Sunday 18:00, all in New York time. Copper has no backup. If its feed stops, the last copper price is marked stale.

Cross-source divergence

Rows with at least two fresh primary sources include divergence_bps: their spread in basis points relative to the mean. Spot rows use one source and omit it. GET /v1/prices/divergence lists symbols above a spread threshold on every tier.

divergence_flag stays false on XAU-USD-SPOT; non-USD gold uses USD spot × live exchangerate.dev FX.

On the LBMA fix

Staleness, per source

The top-level is_stale becomes true when the source serving the price falls behind its expected refresh window. Add ?include=sources to see that source's price, fetched_at and source_timestamp, and assess freshness yourself.

Forward view: futures curve

The market-implied forward price path is served by /v1/forward-view/{asset}. The breakdown below covers the math, source, and refresh cadence.

Futures curve

The next 5 forward gold contracts. Settle prices are ~15 minutes delayed via our primary delayed-feed series with a secondary fallback. Futures values come from publicly available delayed feeds and are not licensed real-time data. The dashed line connects the 5 settle points; gaps appear when both our primary and fallback feeds fail for a contract. Open interest and volume are best-effort null and are not surfaced in the response.

Data freshness

Futures settle prices fire weekdays at 20:30 UTC: a single year-round schedule, +2h post-settle in EDT, +1h in EST, DST-stable.

What we don't do

  • LBMA fix. See above.
  • Tick-level L2 order books. We publish prices, not depth. Tick-level order books are outside this API's coverage.
  • Sub-second latency guarantees. We don't publish a numerical latency SLA.
  • Silent blending. The whole point of this page.

Common questions

Where our prices come from and how backup coverage works.

Who are your primary and backup data providers?

We use one licensed primary market data provider for gold, silver and copper. A licensed backup provider covers gold and silver. We do not name either provider.

Is your spot price a composite rate or one contributor’s quote?

We pass through the primary provider’s price without blending or averaging. It is not an official benchmark or the LBMA fix. ?include=sources returns sources[] with fetched_at and source_timestamp.

What happens if your primary feed stops?

A licensed backup serves gold and silver while the primary is unavailable. It can lag about two minutes and has no bid or ask. Copper has no backup. is_stale turns true when the served source falls behind its expected refresh window.

Methodology changelog

VersionChange
v3.3Updated data sources, backup coverage, group website use; current paid plans need no credit.
v3.2Copy corrected to match the API: Free delay, bid/ask availability, copper spot, source fields.
v3.1Added a backup spot feed for gold and silver. Retired the tokenized-gold fallback.
v3.0Tightened public methodology to source categories + divergence + staleness concepts. Per-source identifiers, refresh cadences, and aggregation specifics moved out of the public page.
v2.1Metals pivot. Added silver spot via XAG oracle and copper futures settlement.
v2.0Pivot to pass-through-per-source. Killed blended-median aggregation. Added live spot oracle, ECB FX, tokenized gold (informational).
v1.0Initial multi-source aggregation. Tier-1 weighted median (superseded).

For API endpoint, tier, and product releases beyond methodology revisions, see the product changelog.

Questions, corrections, challenges

Spot something off, or have a source we should consider? Email hello@goldprice.dev. We publish material corrections here.

Questions about the API? Read the docs.