How to get live gold prices in Zapier
Pull live gold prices into Zapier via Webhooks by Zapier — Custom Request GET, hourly Schedule trigger, downstream to Slack, Sheets, or Airtable.
Updated
To get live gold prices in Zapier, build a 2-step Zap: a Schedule trigger (hourly), then a Webhooks by Zapier → Custom Request GET to api.goldprice.dev/v1/spot/XAU-USD-SPOT with your API key in the X-API-Key header. The free tier covers 1,000 calls/month, no credit card. Tested April 2026 against Zapier (Webhooks by Zapier requires a paid plan; Schedule trigger is on Free).
1.Get your goldprice.dev API key
Sign up for a free account at goldprice.dev/onboarding. Your dashboard shows a key starting with
goldprice_live_. You will paste it into the Zap's Webhooks step in step 3 — Zapier stores headers as encrypted Zap settings, not in plaintext exports.The free tier includes 1,000 calls/month and 13 supported currencies. No credit card required.
Get your free API key1,000 calls/mo, no credit cardSign up free →2.Create the Zap with a Schedule trigger
From Create → Zap, pick the Schedule by Zapier trigger. Choose Every Hour (hourly is the safe free-tier default; every-15-min would burn 2,880 calls/month — over). Pick a minute offset (e.g.
:00). Test the trigger and continue.3.Add Webhooks by Zapier → Custom Request GET
Add an action: Webhooks by Zapier → Custom Request. Custom Request mode is required because the simpler GET action does not expose Headers configuration. Fill the fields below.
YAML · Zapier · Webhooks Custom Request fields# zapier: Webhooks by Zapier — Custom Request GET # curl-equivalent: https://api.goldprice.dev/v1/spot/XAU-USD-SPOT Method: GET URL: https://api.goldprice.dev/v1/spot/XAU-USD-SPOT Data Pass-Through?: false Data: (leave empty) Unflatten: yes Basic Auth: (leave empty) Headers: X-API-Key: goldprice_live_replace_with_your_key_here Accept: application/json4.Test the action and inspect parsed fields
Click Test action. Zapier auto-parses the JSON response and exposes every field as a usable token (
price,bid,computed_at, etc.) for downstream steps. Add a third step to write the result somewhere — Slack message, Google Sheets row, Airtable record. Free Zapier supports 2 steps; multi-step Zaps require Starter or higher.5.Switch currency or metal
Symbols are
METAL-CURRENCY-SPOT. To track multiple symbols, duplicate the Zap (one per symbol) — Zapier does not natively iterate URLs in a single Zap unless you add a Looping by Zapier step (paid). Multi-currency examples below.YAML · Zapier · multi-currency variants# USD spot — default URL: https://api.goldprice.dev/v1/spot/XAU-USD-SPOT # INR — Indian gold market (largest retail gold-search globally) URL: https://api.goldprice.dev/v1/spot/XAU-INR-SPOT # EUR — European pricing surfaces URL: https://api.goldprice.dev/v1/spot/XAU-EUR-SPOT # Silver in USD URL: https://api.goldprice.dev/v1/spot/XAG-USD-SPOT
Expected output
The API returns this shape:
{
"symbol": "XAU",
"quote_currency": "USD",
"unit": "troy_ounce",
"contract_type": "spot",
"price": "4726.01",
"bid": "4726.68",
"ask": "4725.33",
"is_stale": false,
"divergence_flag": false,
"computed_at": "2026-04-27T04:49:01.706844+00:00",
"sources": [
{
"source": "wgc.fsapi.usd",
"display_name": "World Gold Council (live spot)",
"price": "4726.01",
"is_stale": false,
"timestamp": "2026-04-27T04:47:24+00:00"
}
/* + cmc.paxg + cmc.xaut entries — full sources[] in live response */
],
"value_stale": false,
"price_gram_24k": "151.9447",
"open_price": "4681.305",
"high_price": "4729.56",
"low_price": "4672.927",
"prev_close_price": "4681.302",
"ch": "44.6260",
"chp": "0.9533",
"open_time": 1777248000
}Zapier displays the parsed response in the Test panel. Downstream steps reference fields by name — the <code>price</code> token is what you typically pipe into a Slack message body or a Sheets cell value.
Common errors
| Code | Symptom | Fix |
|---|---|---|
| 401 | Test action returns 401 Unauthorized in the run log | API key missing or invalid. Edit the Webhooks step → Headers, replace the value of X-API-Key with a fresh key from your dashboard. Re-test. Zapier caches the previous test response — clicking Test action again re-fires. |
| 429 | Sporadic 429 Too Many Requests in the Zap run history | Schedule cadence too aggressive for your tier. Hourly = 720 calls/month (inside free tier). Every-15-min = 2,880/month (over). Lower the Schedule frequency or upgrade — see /pricing for Basic and Pro tiers. Add a Filter by Zapier step after the Webhook with Status code is 200 to halt downstream steps on transient errors. |
| N/A | Webhooks step shows raw JSON string instead of parsed fields in downstream tokens | You used the simpler GET action instead of Custom Request, or you set Unflatten to no. Custom Request with Unflatten = yes exposes nested fields (e.g. sources__0__display_name) to downstream tokens. |
FAQ
How often does the price update?
The spot endpoint refreshes every 60 seconds (Pyth + WGC + CME aggregation). Zapier has no native cache — each Schedule fire = one fresh API call. Match the trigger cadence to your downstream needs and the free-tier quota.
Will this fit the free tier with auto-refresh?
Yes at hourly cadence — 720 calls/month, inside the 1,000-call free tier. Every-15-min = 2,880/month (over). For higher cadence, drop to 4 fires/day = 120/month, or upgrade — see /pricing for Basic and Pro tiers. Free Zapier also caps tasks at 100/month, so hourly schedule + downstream Slack post = 1,440 tasks/month → also requires a paid Zapier plan.
Can I use this commercially?
The Free tier is for personal use. For commercial automation (client workflows, internal ops automation at work), upgrade to Basic or Pro — see /pricing.
Why Custom Request instead of the simpler GET?
The simple GET action does not expose Headers. Without headers, you cannot send X-API-Key — and the API requires authentication. Custom Request adds the Headers field (and Method, Body, etc.) needed for any header-authenticated REST call.
What metals are supported?
Gold (XAU), silver (XAG), copper (HG), platinum (XPT), palladium (XPD). Substitute the metal code in the URL, e.g. /v1/spot/XAG-USD-SPOT.
Is the free tier really free?
Yes — 1,000 calls/month, no credit card, no expiration. Get the key at /onboarding.
Can I have Claude write this for me?
Yes. Open Claude Desktop with the goldprice.dev MCP server installed and ask: Build a Zapier Zap that GETs goldprice.dev /v1/spot/XAU-USD-SPOT hourly via Webhooks by Zapier Custom Request, sends the X-API-Key header, and posts the price into a Slack channel. The MCP server gives Claude the live schema, so generated step configs use correct field names on first try.
Going further
- Add a Filter step after the Webhook for
price > thresholdto convert this into a price-alert Zap - Pipe the response into a Google Sheets row-append for an audit log of every refresh
- Add a Formatter by Zapier step to format the timestamp from ISO 8601 into a friendly date for Slack messages
- Duplicate the Zap once per metal (gold, silver, copper) for a multi-asset alerting setup
- Use Looping by Zapier (paid) to iterate over a list of symbols in one Zap instead of duplicating
Next steps
Try the same setup in a different platform: