Live Silver 925 (sterling) (XAG925) - Per Troy Ounce Spot Price feed for API consumers
You need to quote and update sterling silver (925) items in real time, hedge exposure, or backtest a pricing rule—specifically in per–troy ounce terms for XAG925. By the end of this guide you’ll pull a live XAG925 spot feed via Metals-API, convert it to USD/oz instantly, and handle edge cases like units, caching, and weekends so your application ships reliably.
What “XAG925” represents and where live sterling silver spot fits in
XAG925 is sterling silver: 92.5% silver and 7.5% alloy (typically copper). It’s the reference many jewelers, manufacturers, and retailers use to price finished goods where purity is standardized at 925/1000. When you track XAG925 per troy ounce, you can:
- Reprice sterling SKUs dynamically as the spot moves.
- Calculate metal value per unit weight (e.g., grams) in USD or another currency.
- Model margin and hedging strategies across production and delivery windows.
Because sterling is prevalent in consumer products and industrial components, a live feed enables automated cart pricing, procurement quotes, and ERP updates integrated with your bill-of-materials.
The minimum you need to go live: Latest prices for XAG925
We’ll focus on one endpoint to start: latest. Metals-API returns exchange rates relative to a base currency (default USD) and per troy ounce for metals. For XAG925, you’ll read both oz-per-USD and USD-per-oz in a single call.
Copy-paste curl (latest XAG925)
curl "https://metals-api.com/api/latest?access_key=YOUR_API_KEY&symbols=XAG925,USDXAG925"
If your integration needs other symbols (inventory metals or payout currencies), check the catalog here: Metals-API Supported Symbols. Implementation details for all endpoints and parameters are in the Documentation.
Official JSON example (use these exact values for testing)
{"success":true,"timestamp":1792541280,"date":"2026-10-21","base":"USD","rates":{"XAG925":0.018691374795009,"USD":1,"USDXAG925":53.50061249999768}}
What you’ll actually use from this payload:
- timestamp: Unix epoch seconds (UTC). Use it to time-align and cache results.
- base: USD indicates rates are quoted relative to 1 USD.
- rates.XAG925: Ounces of XAG925 you get for 1 USD (oz/USD).
- rates.USDXAG925: Dollars per 1 ounce of XAG925 (USD/oz), the figure most pricing apps display.
Python example: read USD/oz for sterling and convert to grams
import requests
API_URL = "https://metals-api.com/api/latest"
params = {
"access_key": "YOUR_API_KEY",
"symbols": "XAG925,USDXAG925"
}
resp = requests.get(API_URL, params=params, timeout=10)
resp.raise_for_status()
data = resp.json()
if not data.get("success"):
raise RuntimeError(f"API error: {data}")
# Per the official example schema:
timestamp = data["timestamp"] # Unix seconds (UTC)
date = data["date"] # ISO date
base = data["base"] # Expect "USD"
oz_per_usd = data["rates"]["XAG925"] # oz per 1 USD
usd_per_oz = data["rates"]["USDXAG925"]# USD per 1 oz
# Convert to USD per gram for sterling silver (1 troy oz = 31.1034768 grams)
TROY_OUNCE_TO_GRAMS = 31.1034768
usd_per_gram = usd_per_oz / TROY_OUNCE_TO_GRAMS
print({
"timestamp": timestamp,
"date": date,
"usd_per_oz_xag925": usd_per_oz,
"usd_per_gram_xag925": usd_per_gram,
"oz_per_usd_xag925": oz_per_usd
})
Tip: Use usd_per_oz for retail displays and hedging. Use usd_per_gram for BOM costing, SKU-level pricing, or when weights are stored in grams.
Units, base currency, and purity: the gotchas that break rollouts
Metals-API returns metals prices in “per troy ounce” units by default. One troy ounce equals 31.1034768 grams (not the 28.349523125 grams of an avoirdupois ounce). Always convert using the troy ounce constant to avoid subtle valuation errors.
- Base currency: If the base is USD, rates.XAG925 is oz/USD and rates.USDXAG925 is USD/oz. Invert carefully if you only request one side.
- Purity: XAG925 reflects sterling fineness (92.5%). Don’t apply additional purity multipliers when you already use the XAG925 symbol, or you’ll double-adjust.
- Timestamps: The timestamp is epoch seconds in UTC. If you display local times, convert explicitly and show the timezone to users.
Sterling silver in manufacturing and digital pricing workflows
Sterling silver is common in jewelry, cutlery, medical devices, and IoT casings where conductivity and antimicrobial properties matter. In smart manufacturing, automated repricing tied to XAG925 reduces manual work and slippage between quote and fulfillment.
- E-commerce: Update PDPs and carts with USD/gram prices for XAG925 every polling interval, then add labor and overhead.
- ERP/MRP: Feed USD/oz into a BOM costing function that multiplies by component mass and scrap factors.
- Quant research: Backtest procurement windows and safety stocks using historical XAG925 levels to estimate carry and variance.
For hallmarking and purity context, see sterling definitions at Sterling silver (reference). For troy ounce definition and conversions, see Troy weight.
Going beyond “latest”: how to monitor moves and day structure
Most integrations start with the latest endpoint. When you need more structure, you can layer in two additional endpoints:
- Bid/Ask: Retrieve current bid/ask for XAG925 to compute the spread and execute conservative markups. This is helpful when your app quotes firm prices to customers.
- OHLC: Ingest open, high, low, close to build intraday or end-of-day surfaces and alerts. Use XAG925 to align sterling-specific valuations instead of pure silver (XAG).
Implementation details for these endpoints, parameters, and plan availability are covered in the Documentation. Keep your symbol to XAG925 in those requests.
Performance and reliability: polling cadence, caching, and market hours
Polling cadence depends on your plan’s update frequency. Many consumers:
- Poll latest on an interval aligned with their plan’s update window (for example, every 60 or 10 minutes).
- Cache responses in memory or a shared store keyed by symbol and timestamp to de-duplicate reads in web/API layers.
- Validate the timestamp changed before recalculating prices to avoid thrashing UI or pipelines.
Metals markets may exhibit reduced activity on weekends and holidays. Your code should tolerate unchanged timestamps and rates across non-trading hours. For storefronts, consider a fallback banner like “Last updated at [local time]” and delay recalculation until a new timestamp arrives.
End-to-end example: dynamic sterling pricing in an e-commerce flow
- Fetch latest for XAG925 and USDXAG925 once per polling interval.
- Convert USD/oz to USD/gram using 31.1034768 grams/oz.
- For each SKU, compute metal value = USD/gram × net metal mass (grams). Add fabrication, labor, overhead, and margin.
- Cache the computed per-SKU price until the next new timestamp. Bust cache when timestamp changes.
- Show users: “Metal price basis: XAG925 [USD/oz], updated [local timestamp]”.
Comparing fine silver vs sterling in your data model
If you price both fine silver and sterling products, keep them distinct in your symbol mapping so you don’t apply mistaken purity multipliers.
| Item | Symbol | Purity | Typical Use | Pricing Note |
|---|---|---|---|---|
| Fine silver | XAG | ~99.9% | Investment bars/coins, industrial | Use XAG when the product is 0.999 silver; do not apply a 0.925 factor. |
| Sterling silver | XAG925 | 92.5% | Jewelry, flatware, components | Use XAG925 as-is; avoid multiplying by 0.925 again. |
Confirm supported tickers in the Symbols directory before deployment.
Error handling and data hygiene
- Guard on success: Check success == true before reading rates.
- Field presence: Validate that rates contains XAG925 and, when requested, USDXAG925.
- Sanity checks: If USDXAG925 × XAG925 deviates materially from 1 (allowing for rounding), log and skip that cycle.
- Timeouts and retries: Short client timeouts with exponential backoff reduce user-facing delays during network hiccups.
- Idempotency: Since latest is read-only, cache at the API gateway/edge for the plan’s update interval to lower request volume.
Historical analysis options when you’re ready
When you need to backfill charts or run a P&L study, query historical or time series using XAG925. These endpoints return daily rates over a date range so you can compute rolling averages, realized volatility, or pricing bands. See examples and parameter limits in the Documentation. Keep all requests on the XAG925 symbol to ensure your analysis matches sterling use cases.
Compliance, procurement, and the role of XAG925 in smart manufacturing
As factories adopt MES/ERP integrations, a clean XAG925 feed supports:
- Automated purchase requisitions when sterling components exceed cost thresholds.
- Supplier negotiations anchored to a transparent spot baseline for 92.5% silver inputs.
- Digital twins that track cost drift on assemblies with sterling content, aiding predictive pricing and quoting.
Use USD/oz as the canonical storage, then derive USD/gram and local currencies in presentation layers using your internal FX rates or Metals-API currency pairs.
Security, keys, and deployment notes
- Keep your access key server-side. Do not embed in client browsers or native apps.
- Use environment variables and secrets managers in CI/CD and production.
- For multi-tenant apps, isolate per-tenant polling and caching to avoid data bleed.
If you need managed connectivity or SLAs, explore MCP. Metals-API does not offer a free trial; choose a plan that fits your update frequency and endpoints. When you’re ready, get an API key here: Register.
Quality checks before you ship
- Display units clearly: “USD per troy ounce (XAG925)”.
- Show update time with timezone (convert from UTC).
- Log the last timestamp seen; alert if it stalls beyond your plan’s cadence.
- Pin your unit conversion constant (31.1034768) in a single, tested module.
- Verify symbol support in the Symbols list before going to production.
FAQ
How do I get USD/oz if I only requested XAG925?
If the response includes only rates.XAG925 (oz/USD), compute USD/oz by taking 1 / rates.XAG925. Prefer requesting USDXAG925 directly to avoid floating-point surprises.
What unit should I store internally?
Store USD/oz for XAG925 as the canonical price; derive USD/gram, USD/kg, and oz/USD at read time.
Why did prices not change over a weekend?
Markets are less active during weekends/holidays. The latest timestamp may remain unchanged. Keep your last good price and display the “as of” time to users.
How often should I poll?
Align polling with your plan’s update frequency. Cache responses for at least that interval and refresh only when the timestamp changes.
Can I get bid/ask or OHLC for XAG925?
Yes—use the Bid/Ask or OHLC endpoints with the XAG925 symbol. See parameters and examples in the
Documentation.
Ready to integrate a live sterling silver feed? Create your API key and start with the latest endpoint for XAG925. Register here: Register. Explore advanced options, SLAs, and managed connectivity via MCP. For endpoint specifics, see the Documentation.