MetalpriceAPI is the official .NET 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.
dotnet add package MetalpriceAPI
Or add to your .csproj:
<PackageReference Include="MetalpriceAPI" Version="1.3.0" />using MetalpriceAPI;
string apiKey = "SET_YOUR_API_KEY_HERE";
using var client = new MetalpriceApiClient(apiKey);
// Or use EU server:
// using var client = new MetalpriceApiClient(apiKey, "eu");MetalpriceAPI provides two regional endpoints. Choose the one closest to your servers for optimal performance.
| Region | Base URL |
|---|---|
| United States (default) | https://api.metalpriceapi.com/v1 |
| Europe | https://api-eu.metalpriceapi.com/v1 |
using MetalpriceAPI;
// Default (US)
using var client = new MetalpriceApiClient("SET_YOUR_API_KEY_HERE");
// Europe
using var client = new MetalpriceApiClient("SET_YOUR_API_KEY_HERE", "eu");await client.FetchSymbolsAsync();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.
client.SetServer("eu");baseVal<string> Optional. Pass in a base currency, defaults to USD.currencies<List<string>> Optional. Pass in a list 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 client.FetchLiveAsync("USD", new List<string> { "XAU", "XAG", "XPD", "XPT" }, "troy_oz");date<string> Required. Pass in a string with formatYYYY-MM-DDbaseVal<string> Optional. Pass in a base currency, defaults to USD.currencies<List<string>> Optional. Pass in a list of currencies to return values for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).
await client.FetchHistoricalAsync("2024-02-05", "USD", new List<string> { "XAU", "XAG", "XPD", "XPT" }, "troy_oz");baseVal<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 client.HourlyAsync("USD", "XAU", "troy_oz", "2025-11-03", "2025-11-03");baseVal<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 client.FetchOHLCAsync("USD", "XAU", "2024-02-05", "troy_oz");fromCurrency<string> Optional. Pass in a base currency, defaults to USD.toCurrency<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 client.ConvertAsync("USD", "EUR", 100, "2024-02-05");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.baseVal<string> Optional. Pass in a base currency, defaults to USD.currencies<List<string>> Optional. Pass in a list of currencies to return values for.unit<string> Optional. Pass in a unit for metal prices (e.g.troy_oz,gram,kilogram).
await client.TimeframeAsync("2024-02-05", "2024-02-06", "USD", new List<string> { "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.baseVal<string> Optional. Pass in a base currency, defaults to USD.currencies<List<string>> Optional. Pass in a list of currencies to return values for.dateType<string> Optional. Pass in a date type, overrides date parameters if passed in.
await client.ChangeAsync("2024-02-05", "2024-02-06", "USD", new List<string> { "XAU", "XAG", "XPD", "XPT" });baseVal<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 client.CaratAsync("USD", "XAU", "2024-02-05");await client.UsageAsync();-
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.