
1-minute XAU/USD OHLC bars are available on Pro through GET /v1/bars?symbol=XAU-USD-SPOT&interval=1m; Free and Basic get daily bars, while Plus adds 1-hour and 4-hour bars for the last 30 days.
What 1-minute OHLC means here
The symbol is XAU-USD-SPOT. Each bar contains the open, high, low and close for its interval. Prices are decimal strings, quoted in US dollars per troy ounce.
These are spot gold bars. They do not represent a contract traded on one exchange. The volume field is always null because spot gold has no consolidated exchange volume. Do not interpret that value as zero trading activity.
A 1-minute interval describes the bar duration. It does not mean that every returned bar is complete. The current bar can still be forming.
Which plan gets which interval
| Plan | Daily gold bars | Intraday bars |
|---|---|---|
| Free | Last 30 days | Not included |
| Basic | Last 1 year | Not included |
| Plus | From 1996 | 1h and 4h, last 30 days |
| Pro | From 1996 | All supported intervals at full depth |
The supported intervals are 1m, 5m, 15m, 30m, 1h, 2h, 4h and 1d. Free and keyless callers receive bars 15 minutes late.
Choose the interval and date window together. Plus access to intraday bars does not include 1-minute bars. Daily history also has a different starting point from intraday history.
Request example
Set FROM and TO to the dates or ISO timestamps you need. Set LIMIT to your requested page size and GOLDPRICE_API_KEY to your Pro key.
curl --get 'https://api.goldprice.dev/v1/bars' \ --header "X-API-Key: $GOLDPRICE_API_KEY" \ --data-urlencode 'symbol=XAU-USD-SPOT' \ --data-urlencode 'interval=1m' \ --data-urlencode "from=$FROM" \ --data-urlencode "to=$TO" \ --data-urlencode "limit=$LIMIT"Each bar has these fields:
bar_start: the start of the interval.open,high,low,close: prices as decimal strings.volume: alwaysnullfor spot.is_closed: whether the bar has finished forming.
An empty range returns HTTP 200 with bars: []. Handle that result without assuming that every successful request contains observations.
Paging and closed bars
Results arrive newest first. If the response includes next_cursor, pass that value as cursor on the next request to continue paging.
For calculations that need chronological order, arrange the collected bars by bar_start before processing them. Check is_closed before using a bar in a backtest or treating its close as final. A forming bar can change before its interval ends.
Deeper history through bulk files
Deeper intraday history is available through bulk files at /v1/download. Intraday history begins in 2006. Use the historical documentation to distinguish the bars endpoint's plan depth from the deeper files.
The deprecated /v1/prices/history endpoint should be replaced with /v1/bars.
Common mistakes
Do not replace volume: null with an assumed volume. Do not use a forming bar as a completed candle. An intraday request older than your plan's depth returns HTTP 400 with range_too_deep; check your plan window before retrying the same range.
Next
Live gold prices, historical OHLC, and multi-source aggregation, available via REST and SSE.