metalpriceapi is the official PHP 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.
$ composer require metalpriceapi/metalpriceapi-php
use MetalpriceAPI\Client;
$client = new Client('SET_YOUR_API_KEY_HERE');
$result = $client->fetchLive('USD', ['XAU', 'XAG', 'XPD', 'XPT']);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 |
use MetalpriceAPI\Client;
// Default (US)
$client = new Client('SET_YOUR_API_KEY_HERE');
// Europe
$client = new Client('SET_YOUR_API_KEY_HERE', Client::BASE_URL_EU);You can switch server regions at runtime using the setServer method:
$client = new Client('SET_YOUR_API_KEY_HERE');
// Switch to EU server
$client->setServer('eu');
// Switch back to US server
$client->setServer('us');$client->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.
$client->fetchLive('USD', ['XAU', 'XAG', 'XPD', 'XPT'], 'troy_oz', null, null);$date<string> Required. Pass in a string with 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).
$client->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.
$client->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.
$client->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).
$client->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).
$client->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.
$client->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.
$client->carat('USD', 'XAU', '2024-02-06');$client->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.