metalpriceapi / metalpriceapi-php
Official PHP wrapper for MetalpriceAPI.com - Metal price API and foreign exchange rate API
Package info
github.com/metalpriceapi/metalpriceapi-php
pkg:composer/metalpriceapi/metalpriceapi-php
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
This package is not auto-updated.
Last update: 2026-04-22 21:55:51 UTC
README
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.
Installation
Composer
$ composer require metalpriceapi/metalpriceapi-php
Usage
use MetalpriceAPI\Client; $client = new Client('SET_YOUR_API_KEY_HERE'); $result = $client->fetchLive('USD', ['XAU', 'XAG', 'XPD', 'XPT']);
Server Regions
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);
setServer
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');
Documentation
fetchSymbols()
$client->fetchSymbols();
fetchLive($base, $currencies, $unit, $purity, $math)
$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);
fetchHistorical($date, $base, $currencies, $unit)
$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');
hourly($base, $currency, $unit, $startDate, $endDate, $math, $dateType)
$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);
ohlc($base, $currency, $date, $unit, $dateType)
$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);
convert($from, $to, $amount, $date, $unit)
$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);
timeframe($startDate, $endDate, $base, $currencies, $unit)
$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');
change($startDate, $endDate, $base, $currencies, $dateType)
$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);
carat($base, $currency, $date)
$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');
usage()
$client->usage();
FAQ
-
How do I get an API Key?
Free API Keys are available here.
-
I want more information
Checkout our FAQs here.
Support
For support, get in touch using this form.