metalpriceapi is the official Node.js wrapper for MetalpriceAPI.com. This allows you to quickly integrate our metal price API and foreign exchange rate API into your application. Check https://metalpriceapi.com documentation for more information.
$ npm i metalpriceapi
const api = require('metalpriceapi');
api.setAPIKey('SET_YOUR_API_KEY_HERE');
await api.fetchLive('USD', ['XAU', 'XAG', 'XPD', 'XPT']);apiKey<string> API Key
In order to use this library, you must first call this function with an API key.
api.setAPIKey('SET_YOUR_API_KEY_HERE');server<string> Pass'eu'to use the EU server (api-eu.metalpriceapi.com), or'us'for the US server. Defaults to US if not specified.
api.setServer('eu');await api.fetchSymbols();base<string> Optional. Pass in a base currency, defaults to USD.currencies<Array<string>> Optional. Pass in an array of currencies to return values for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).purity<string> Optional. Pass in a purity level for metal prices.math<string> Optional. Pass in a math expression to apply to the rates.
await api.fetchLive('USD', ['XAU', 'XAG', 'XPD', 'XPT'], 'troy_oz', null, null);date<string> Required. Pass in a string with formatYYYY-MM-DDbase<string> Optional. Pass in a base currency, defaults to USD.currencies<Array<string>> Optional. Pass in an array of currencies to return values for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).
await api.fetchHistorical('2024-02-05', 'USD', ['XAU', 'XAG', 'XPD', 'XPT'], 'troy_oz');base<string> Optional. Pass in a base currency, defaults to USD.currency<string> Required. Specify currency you would like to get hourly rates for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).startDate<string> Required. Specify the start date using the formatYYYY-MM-DD.endDate<string> Required. Specify the end date using the formatYYYY-MM-DD.math<string> Optional. Pass in a math expression to apply to the rates.dateType<string> Optional. Pass in a date type, overrides date parameters if passed in.
await api.hourly('USD', 'XAU', 'troy_oz', '2025-11-03', '2025-11-03', null, null);base<string> Optional. Pass in a base currency, defaults to USD.currency<string> Required. Specify currency you would like to get OHLC for.date<string> Required. Specify date to get OHLC for specific date using formatYYYY-MM-DD.unit<string> Optional. Pass in a unit, defaults to troy_oz.dateType<string> Optional. Pass in a date type, overrides date parameter if passed in.
await api.ohlc('USD', 'XAU', '2024-02-06', 'troy_oz', null);from<string> Optional. Pass in a base currency, defaults to USD.to<string> Required. Specify currency you would like to convert to.amount<number> Required. The amount to convert.date<string> Optional. Specify date to use historical midpoint value for conversion with formatYYYY-MM-DD. Otherwise, it will use live exchange rate date if value not passed in.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).
await api.convert('USD', 'EUR', 100, '2024-02-05', null);startDate<string> Required. Specify the start date of your timeframe using the formatYYYY-MM-DD.endDate<string> Required. Specify the end date of your timeframe using the formatYYYY-MM-DD.base<string> Optional. Pass in a base currency, defaults to USD.currencies<Array<string>> Optional. Pass in an array of currencies to return values for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).
await api.timeframe('2024-02-05', '2024-02-06', 'USD', ['XAU', 'XAG', 'XPD', 'XPT'], 'troy_oz');startDate<string> Required. Specify the start date of your timeframe using the formatYYYY-MM-DD.endDate<string> Required. Specify the end date of your timeframe using the formatYYYY-MM-DD.base<string> Optional. Pass in a base currency, defaults to USD.currencies<Array<string>> Optional. Pass in an array of currencies to return values for.dateType<string> Optional. Pass in a date type, overrides date parameters if passed in.
await api.change('2024-02-05', '2024-02-06', 'USD', ['XAU', 'XAG', 'XPD', 'XPT'], null);base<string> Optional. Pass in a base currency, defaults to USD.currency<string> Optional. Pass in a metal code to get carat prices for (defaults to XAU).date<string> Optional. Specify date to get Carat for specific date using formatYYYY-MM-DD. If not specified, uses live rates.
await api.carat('USD', 'XAU', '2024-02-06');await api.usage();-
How do I get an API Key?
Free API Keys are available here.
-
I want more information
Checkout our FAQs here.
For support, get in touch using this form.