metalpriceapi/metalpriceapi-php

Official PHP wrapper for MetalpriceAPI.com - Metal price API and foreign exchange rate API

Maintainers

Package info

github.com/metalpriceapi/metalpriceapi-php

Homepage

pkg:composer/metalpriceapi/metalpriceapi-php

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-02-24 22:58 UTC

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();

Link

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);

Link

fetchHistorical($date, $base, $currencies, $unit)

  • $date <string> Required. Pass in a string with format YYYY-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');

Link

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 format YYYY-MM-DD.
  • $endDate <string> Required. Specify the end date using the format YYYY-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);

Link

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 format YYYY-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);

Link

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 format YYYY-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);

Link

timeframe($startDate, $endDate, $base, $currencies, $unit)

  • $startDate <string> Required. Specify the start date of your timeframe using the format YYYY-MM-DD.
  • $endDate <string> Required. Specify the end date of your timeframe using the format YYYY-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');

Link

change($startDate, $endDate, $base, $currencies, $dateType)

  • $startDate <string> Required. Specify the start date of your timeframe using the format YYYY-MM-DD.
  • $endDate <string> Required. Specify the end date of your timeframe using the format YYYY-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);

Link

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 format YYYY-MM-DD. If not specified, uses live rates.
$client->carat('USD', 'XAU', '2024-02-06');

Link

usage()

$client->usage();

Link

Official documentation

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.