---
title: "Retail bullion dealer prices"
method: GET
path: "/v1/bullion/"
tags: ["Markets"]
---

# Retail bullion dealer prices

`GET /v1/bullion/`

## Request

- Base URL: `https://api.metalcharts.org`
- URL: `https://api.metalcharts.org/v1/bullion/`
- Auth: none declared

Retail bullion prices across competing dealers, with each quote's premium over spot. Every product is normalised to its fine-ounce content so premiums are comparable across coins, bars and junk silver. `best` is the cheapest in-stock quote at or above spot, falling back to the cheapest such quote; a below-spot quote stays in `quotes` but is never `best`, and `best` is null when every fresh quote is below spot. Premium is the figure recorded at scrape time and travels with its own scrapedAt, so price and premium always agree. Filter with metal: gold, silver, platinum or palladium, or the code each product carries in `metal` (XAU, XAG, XPT, XPD), in any case. Quotes older than 7 days are excluded by default and never chosen as `best`, because individual dealer scrapers fail silently and a stale row would otherwise be presented as today's cheapest price; widen or narrow that with max_age_days, and read `asOf`, `ageDays` and `staleQuotesExcluded` to judge freshness yourself. Requires the Pro plan or higher.

## Query parameters

- `metal` string: Optional. gold, silver, platinum or palladium, or the code XAU, XAG, XPT or XPD, in any case.
- `max_age_days` string

## Response `200`

Success.

- object
  - `success` boolean, required
  - `maxAgeDays` number
  - `count` number
  - `data` object[], required
    - `asOf` string, date-time
    - `best` object
      - `dealer` string
      - `inStock` boolean
      - `premiumPct` number
      - `priceCash` number
      - `scrapedAt` string, date-time
    - `fineOz` number
    - `form` string
    - `metal` string
    - `name` string
    - `productId` string
    - `purity` number
    - `quotes` object[]
      - `ageDays` number
      - `dealer` string
      - `dealerId` string
      - `inStock` boolean
      - `premiumPct` number
      - `priceCard` unknown
      - `priceCash` number
      - `scrapedAt` string, date-time
    - `series` string
    - `staleQuotesExcluded` number
    - `weightLabel` string

## Other responses

- `400`: Invalid parameter.

---

[API](https://skmtc.dev/metalcharts/apis/metalcharts-api.md) · [All operations](https://skmtc.dev/metalcharts/apis/metalcharts-api/llms.txt) · [OpenAPI document](https://skmtc.dev/metalcharts/apis/metalcharts-api/revisions/53d6a0af0479?raw)
