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_PRICE("gold", "GBP", "troy_oz", BullionRefresh)| Metal | Value | Currency | Unit |
|---|---|---|---|
| Gold | 3,135.78 | GBP | troy_oz |
| Observed | 15 October 2026, 11:00 UTC | ||
| Status | Cached, refreshed hourly, not live | ||
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.
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 namedSettingsand paste the contents ofSettings.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.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.
Choose GBP and refresh
In Bullion Requests, keep one
pricerow forgold,GBPandtroy_oz; clear the other sample rows. In Bullion Prices, clear the example formulas inA9andA13, then replace the formula in A5 with the one below. Leave its six output columns clear, then choose Bullion API → Refresh prices.
=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 limitsKeep 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 termsGo 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.