The silver standard for real-time metal prices.
Bid and ask prices for nine metals, over a plain REST endpoint or a WebSocket stream. The four precious metals plus copper, aluminum, nickel, lead and zinc. Historical candles are included.
Free tier, no card required. You can make your first call in about a minute.
Connecting…
A price feed you can build on.
You can see how fresh it is
Every response includes an ageMs and a stale flag, so your app can tell exactly how old a number is.
Nine metals, one format
The four precious metals in troy ounces and five base metals in pounds, all in the same response shape.
Stream it or poll it
Subscribe over WebSocket to get pushed every change, or call the REST endpoint when you'd rather pull. It's the same data either way.
Your first request is a couple of lines.
Responses are plain JSON, so there's no SDK to install. curl or a fetch call is all you need.
curl https://api.<DOMAIN>/v1/spot/gold \
-H "X-API-Key: ag_live_yourkeyhere"
const res = await fetch("https://api.<DOMAIN>/v1/spot/gold", {
headers: { "X-API-Key": "ag_live_yourkeyhere" },
});
const gold = await res.json();
console.log(gold.bid, gold.ask);
import requests
resp = requests.get(
"https://api.<DOMAIN>/v1/spot/gold",
headers={"X-API-Key": "ag_live_yourkeyhere"},
)
gold = resp.json()
print(gold["bid"], gold["ask"])
Example response · 200 OK{
"metal": "gold",
"symbol": "AU",
"currency": "USD",
"unit": "OUNCE",
"bid": 4124.10,
"ask": 4126.10,
"mid": 4125.10,
"high": 4136.10,
"low": 4053.60,
"change": 48.70,
"changePercent": 1.2,
"sourceTimestamp": "Jul 09, 2026 10:35",
"fetchedAt": 1783607991505,
"ageMs": 177,
"stale": false
}
Pricing comes down to requests per minute.
There are no monthly request caps and no overage charges. You choose a rate limit, and you can change or cancel it whenever you want.
- 60 req/min
- WebSocket (1 concurrent conn)
- Terminal dashboard +$10/mo addon
- 1,000 req/min
- WebSocket (10 concurrent conns)
- Terminal dashboard included
Attach the live dashboard to Starter or Pro. Included automatically with Business.
Common questions
How fresh is the data?
Spot quotes update about once a minute, aggregated from public spot market sources — polling faster wouldn't get you anything newer. When a bid or ask does change, WebSocket subscribers see it the moment it happens. We're not going to call this tick-level or exchange-grade data, because it isn't: it's an honest, clean read of the public spot market.
What do bid, ask, and spread mean?
Bid is what buyers are currently offering; ask is what sellers want. The spread is the gap between them, a normal feature of any quoted market. Mid is the midpoint of bid and ask — it's what candles, change, and the ticker above are built from.
How do I keep my API key safe?
Send it in the X-API-Key header (or as a Bearer token) from your server, never from client-side JavaScript or a public repo. Keys aren't accepted as a query-string parameter for exactly this reason — they'd otherwise end up in logs and browser history. If a key ever leaks, rotate it from your client area; the old one stops working immediately.
What happens if I cancel or a payment fails?
Your key keeps working until your plan actually lapses. If a renewal payment fails, the key is suspended and API calls return 403 payment_required until you reactivate — no data loss and no new key to issue, it just turns back on once you pay.
Where do I get help?
Email support@<DOMAIN> or use the contact link in your client area. A person reads it, not a bot.