A free gold price API with live bid and ask, intraday history at 15-minute resolution, daily closes since 2011 and monthly prices back to 1833, in JSON and plain text. No key needed for the feeds; a free key (with a Standard Bullion account) raises the rate limit and enables webhooks. Silver, platinum and palladium use the same endpoints.

Gold right now: $4,297.61 per troy oz · the same number the API returns · full gold price page

Live price

GET /spot-prices.json — ask, bid, open, today's change and 1W / 1M / 1Y change for gold and the other three metals.

History

GET /api/v1/market/history?metal=XAU&range=1y — a clean { t, price } series at any range from 24 hours to 1833.

Plain text for AI

GET /spot-prices.txt — the same prices written for language models, with a citation line.

Push

Signed webhooks deliver the feed on your interval or when gold moves past a threshold you set.

Quick start

Three requests cover most uses. All responses are CORS-open and carry an attribution field.

curl https://standardbullion.com/spot-prices.json curl "https://standardbullion.com/api/v1/market/history?metal=XAU&range=1y" curl https://standardbullion.com/spot-prices.txt

JavaScript

const res = await fetch('https://standardbullion.com/spot-prices.json'); const { metals, updated, attribution } = await res.json(); const gold = metals.find(m => m.symbol === 'XAU'); console.log(`Gold ${gold.ask} ask / ${gold.bid} bid (${updated}) — ${attribution}`);

Python

import requests r = requests.get("https://standardbullion.com/api/v1/market/history", params={"metal": "XAU", "range": "5y"}, timeout=10) series = r.json()["points"] # [{"t": "2021-09-27T00:00:00Z", "price": 1750.12}, ...] print(series[-1], r.json()["attribution"])

Endpoints

EndpointReturnsCache
GET /spot-prices.jsonAll four metals: ask, bid, open, changeToday, changes.1w/1m/1y, updated, attribution.15 s
GET /spot-prices.txtPlain-text summary of the same, for assistants and quick reading.15 s
GET /api/v1/market/history?metal=XAU|XAG|XPT|XPD and range=24h|7d|1m|3m|6m|1y|5y|10y|25y|max or start_date=YYYY-MM-DD&end_date=YYYY-MM-DD. Returns points: [{ t, price }], grain (tick or daily) and unit.60 s
GET /api/v1/spot-pricesRaw live prices with the day's open, for building your own display.none
GET /api/v1/charts/metal-performance?metal=XAUPrice one day, week, month, year and five years ago with the change.none

Sample response — /api/v1/market/history?metal=XAU&range=7d

{ "source": "Standard Bullion", "url": "https://standardbullion.com", "attribution": "Data by Standard Bullion — https://standardbullion.com", "metal": "XAU", "name": "Gold", "page": "https://standardbullion.com/spot-gold-price", "unit": "USD per troy ounce", "range": "7d", "grain": "tick", "points": [ { "t": "2026-09-19T20:00:00.000Z", "price": 4281.40 }, // illustrative values { "t": "2026-09-19T21:00:00.000Z", "price": 4283.15 }, … ] }

Intraday ranges (24h, 7d, 1m) return 15-minute, hourly and 4-hour closes from our own capture. Longer ranges return daily closes; max reaches 1833 on monthly data.

Where the gold price comes from

The live price is the wholesale bid and ask Standard Bullion trades on itself, which is why the API returns two numbers rather than one indicative mid. It is captured every 15 minutes into our own record, which is the source of the intraday series; the last capture of each day is promoted to that day's close. Daily closes before our capture began, and the monthly series back to 1833, come from published LBMA and USGS data. Prices are USD per troy ounce (31.1035 g).

Freshness

Live feed updates continuously during market hours (Sunday evening to Friday afternoon, U.S. Eastern). Feeds cache for 15 seconds.

Coverage

Gold from 1833 (monthly), 2011 (daily), and 15-minute since 2026. Silver from 1900, platinum from 1911, palladium from 1977.

Format

JSON with a stable shape, plain text, and ISO-8601 timestamps in UTC. Numbers are plain decimals, never strings with symbols.

Keys, rate limits and webhooks

Without a key you get 120 requests per minute per IP. A key raises that to 300 per minute (more on request), adds usage stats, and unlocks webhooks. Keys are free and issued instantly to a Standard Bullion account on the market data page.

curl -H "Authorization: Bearer sb_live_…" "https://standardbullion.com/api/v1/market/history?metal=XAU&range=max" # register a webhook: signed POSTs of the feed at most every 5 minutes, only when gold moves ≥ 0.25% curl -X POST https://standardbullion.com/api/v1/market/webhooks \ -H "Authorization: Bearer sb_live_…" -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/hooks/gold", "metals": ["XAU"], "min_interval_seconds": 300, "threshold_pct": 0.25 }'

Deliveries carry X-StandardBullion-Signature: t=…,v1=HMAC-SHA256(secret, t + "." + body). Full details and a verification snippet are on the market data page.

No code: the gold price chart widget

One script tag renders the live gold chart with range and moving-average controls, and adds the "Data by Standard Bullion" link and Dataset metadata. No key or account needed. The generator builds the snippet for any metal, range and theme.

<script src="https://standardbullion.com/embed/chart.js" data-metal="XAU" data-range="1y" data-theme="dark"></script>

Gold price API FAQ

Is the gold price API free?

Yes. The feeds and history endpoints work without a key on a shared limit of 120 requests per minute per IP. A free key, issued to a Standard Bullion account, raises the limit and enables webhooks. The one condition is that the "Data by Standard Bullion" attribution stays visible wherever the data is shown.

How often does the gold price update?

The live feed reflects the wholesale market continuously while it is open; responses are cached for 15 seconds. The intraday history is captured every 15 minutes and the daily close is recorded once a day.

Does the API return bid and ask or just one price?

Both. The ask is the price to buy gold from Standard Bullion and the bid is the price we pay to buy it, so the spread is visible. Most free gold price APIs return a single indicative mid price with no spread.

How far back does the historical gold price go?

Monthly to 1833, daily to 2011, and 15-minute intraday from 2026 onward. Use range=max for the full monthly series or start_date and end_date for any window.

Can I get the price in other currencies or per gram?

The API returns USD per troy ounce. Divide by 31.1035 for the price per gram, or multiply by your own FX rate for another currency. Per-gram and per-kilo figures are shown on the gold price page.

Can I use it in a commercial product?

Yes, with attribution, and without bulk-redistributing the raw feed as your own data source. The full terms are on the market data page.

Where does Standard Bullion get its gold price?

From the wholesale pricing feed we buy and sell on ourselves, so the API price is a real dealer price rather than a scraped or delayed quote. Historical series before our own capture come from LBMA and USGS publications.

Also: silver price, platinum price, palladium price, gold/silver ratio, and the AI-readable spot-prices.txt and llms.txt. Prices are indicative live dealer quotes for information only, not an offer to buy or sell.