The Free plan includes 5,000 requests a month and up to 10 requests a minute. Gold, silver and copper spot prices are delayed by 15 minutes, with the last 30 days of daily history available. Without a key, you can make 10 requests a minute and 100 an hour per IP address.
Included with Free
A free key gives your app its own monthly quota, separate from the per-IP limit shared by others on your network. Every plan, including Free, includes spot prices for XAU, XAG and HG and access to the MCP server. Free allows commercial use if the page displaying the prices includes a visible link to goldprice.dev.
| Free plan | Limit |
|---|---|
| Price | $0 |
| Requests a month | 5,000 |
| Requests a minute | 10 |
| Spot prices | 15 minutes late |
| Daily history | Last 30 days of daily history |
| Intraday bars | None (daily only) |
| Streaming | None |
| Dealer prices by country | No |
| MCP server | Yes |
| Commercial use | Yes, with a visible link to goldprice.dev near the prices |
Calling without a key
You can call /v1/prices, /v1/spot/{symbol}, /v1/carat and /v1/convert without a key. These calls use Free plan data and count toward a per-IP limit. A server using a shared IP address may reach the hourly cap sooner than expected. Keyless /v1/prices and /v1/spot responses include an X-Goldprice-Notice header directing you to a free key.
| Keyless (no API key) | Limit |
|---|---|
| Requests a minute, per IP | 10 |
| Requests an hour, per IP | 100 |
| Spot prices | 15 minutes late |
| Field groups | Lean default; no stats |
When you reach a limit
Use the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset response headers to slow requests before reaching a limit. At the limit, the API returns 429, a short JSON body, an X-RateLimit-Scope header and a Retry-After header measured in seconds.
curl -i "https://api.goldprice.dev/v1/prices?symbol=XAU-USD-SPOT" \ -H "Authorization: Bearer $GOLDPRICE_API_KEY"| Status | error | When |
|---|---|---|
| 429 | rate_limited | Keyless caller over 100 requests in the hour (per IP) |
| 429 | rate_limit_exceeded | Over the plan's requests a minute |
| 429 | quota_exceeded | Over the plan's requests a month; resets when the next month starts |
{ "error": "rate_limit_exceeded", "tier": "free_2026", "limit_per_minute": 10, "retry_after_seconds": 42}Limits on paid plans
Paid plans include live prices, higher request limits and more history. Country-specific dealer prices start on Basic. Streaming and the full daily history from 1996 start on Plus.
Basic plan
| Basic | Limit |
|---|---|
| Price | $19 a month, or $190 a year |
| Requests a month | 100,000 |
| Requests a minute | 60 |
| Spot prices | Live |
| Daily history | Last 1 year of daily history |
| Intraday bars | None (daily only) |
| Streaming | None |
| Dealer prices by country | Yes |
| MCP server | Yes |
| Commercial use | Yes, no credit link needed |
Plus plan
| Plus | Limit |
|---|---|
| Price | $39 a month, or $390 a year |
| Requests a month | 300,000 |
| Requests a minute | 120 |
| Spot prices | Live |
| Daily history | Full daily history (gold from 1996) |
| Intraday bars | 1h, 4h bars, last 30 days |
| Streaming | 1 connection in total (SSE or WebSocket) |
| Dealer prices by country | Yes |
| MCP server | Yes |
| Commercial use | Yes, no credit link needed |
Pro plan
| Pro | Limit |
|---|---|
| Price | $89 a month, or $890 a year |
| Requests a month | 1,000,000 |
| Requests a minute | 300 |
| Spot prices | Live |
| Daily history | Full daily history (gold from 1996) |
| Intraday bars | 1m, 5m, 15m, 30m, 1h, 2h, 4h bars, full depth |
| Streaming | 5 SSE and 5 WebSocket connections, dealer prices included |
| Dealer prices by country | Yes |
| MCP server | Yes |
| Commercial use | Yes, no credit link needed |
Choosing a plan
Free works for prototypes, internal dashboards and personal sites that can use prices delayed by 15 minutes. Choose a paid plan for live prices, more than 5,000 requests a month or more than 30 days of history. Annual billing includes two months free.