Gold prices, in your Google Sheet.

Bring metal prices into the spreadsheet you already use. Choose a metal, currency and unit, then refresh from the Bullion API menu. Keep the price and its observation time together.

Install with Apps Script. No Marketplace add-on required. Manual refresh; cached data, not real-time quotes.

Bullion Prices
A5=BULLION_PRICE("gold", "GBP", "troy_oz", BullionRefresh)
MetalValueCurrencyUnit
Gold3,135.78GBPtroy_oz
Observed15 October 2026, 11:00 UTC
StatusCached, refreshed hourly, not live
Illustrative layout with a recorded quote, rounded here for display. Your sheet returns exact decimal text in six columns, including the observation time and applicable attribution. This example does not refresh.

One sheet for the metals you follow

Choose your price

Gold, silver, platinum, palladium and copper. Request grams, kilograms or troy ounces in a supported API currency.

See when it was observed

Every result includes its observation time. The refresh time tells you when the sheet fetched it; it does not make an older quote current.

Control your requests

Refresh explicitly from the menu. Recalculating a formula makes no API calls, and matching requests reuse a snapshot for up to one hour.

Start with one gold price

Use a blank sheet and your own Bullion API key. The script creates the request and results tabs inside your spreadsheet.

This is a manual Apps Script installation. A public, ready-to-copy Google template is not available yet.

  1. Install the three files

    Download the three files above and open them in a text editor. In a blank Google Sheet, open Extensions → Apps Script. Replace the default Code.gscontents with the downloaded script. Add an HTML file named Settings and paste the contents of Settings.html.

    In Apps Script, open Project Settings and enable Show appsscript.json manifest file. Replace that file with the downloaded appsscript.json. Save the project, then reload your spreadsheet.

  2. Create the template and save your key

    Choose Bullion API → Create template tabs and approve Google’s permissions. As the sheet owner, open Settings in that menu and save your API key there. Keep it out of cells and formulas.

  3. Choose GBP and refresh

    In Bullion Requests, keep one price row for gold, GBP and troy_oz; clear the other sample rows. In Bullion Prices, clear the example formulas in A9 and A13, then replace the formula in A5 with the one below. Leave its six output columns clear, then choose Bullion API → Refresh prices.

Plain text
=BULLION_PRICE("gold", "GBP", "troy_oz", BullionRefresh)

Changing currency? Update both the request row and the formula, then refresh. A new currency request can use another API call.

A refresh you control

There is no automatic polling or background trigger. Choose Refresh prices when you want an update. A matching snapshot is reused for up to one hour after retrieval.

Once a snapshot expires, recalculating shows an error until you refresh. Already displayed values do not update just because time passes. Always check the observation timestamp.

The local monthly cap starts at 30. It tracks this script’s requests, including failed attempts; your account’s other API usage also counts towards your plan quota.

Compare plans and request limits

Keep your sheet yours

Your key is saved through the settings dialog and sent in the API request header. Only share edit access with people you trust: editors can change the attached script and could access the owner’s key.

Prices stay as exact decimal text. Converting them to spreadsheet numbers or using ordinary arithmetic introduces spreadsheet precision limits.

Free and Pro are for non-commercial use. Business use requires Business; it does not allow resale or redistribution of raw market-price data.

Read the usage terms

Go further with carat prices and history

The script also includes gold carat prices per gram and retained weekday history per troy ounce. History can be sparse. A standalone carat query can use two requests for its price and matching metadata.

Start with the single-price setup, then follow the function reference for request rows, supported inputs and quota costs.