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. 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 card
    Sign up free →
  2. 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. 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/json
  4. 4.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. 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:

JSON · GET /v1/spot/XAU-USD-SPOT
{
  "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

CodeSymptomFix
401Test action returns 401 Unauthorized in the run logAPI 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.
429Sporadic 429 Too Many Requests in the Zap run historySchedule 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/AWebhooks step shows raw JSON string instead of parsed fields in downstream tokensYou 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 > threshold to 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:

Browse all 6 tutorials →