COMEX Inventory API warehouse stocks and flows as JSON
Registered, eligible and total COMEX warehouse stocks, from CME Group's daily metal depository reports. Gold and silver go back to August 1992 and copper to April 1993, one row per report date, and range=ALL returns the whole series.
- Exchange-wide registered, eligible and total for gold, silver and copper, and for platinum, palladium, aluminium, zinc and lead since February 2026
- Each depository's received, withdrawn and adjustment figures, laid out like CME's report
- Delivery notices, volume and open interest on the same plan
- Included from Pro ($99 a month)
GET /v1/comex/inventory?symbol=XAG&range=1Y
curl -H "Authorization: Bearer mc_live_YOUR_KEY" \
"https://api.metalcharts.org/v1/comex/inventory?symbol=XAG&range=1Y"A year of exchange-wide silver stocks. Swap XAG for XAU, HG, XPT, XPD, ALI, ZN or PB, and pass range=ALL for the full series.
1992
Gold and silver stocks from
8
Metals covered
Daily
One row per report date
Pro
Plan that includes it
Endpoints
COMEX Inventory API endpoints
Every endpoint below needs Pro ($99 a month) or higher. Requests use the same key and bearer header as the rest of the API.
| Endpoint | Returns | From |
|---|---|---|
| GET/v1/comex/inventory | Registered, eligible and total per day. type=latest returns the newest day with the previous day's figures; type=depositories returns the newest day per depository | Pro |
| GET/v1/comex/depositories | Stocks and daily received, withdrawn and adjustment per depository, with the activity date of each movement | Pro |
| GET/v1/comex/delivery-notices | Delivery notice history for a metal | Pro |
| GET/v1/comex/volume-oi | Volume and open interest for a metal | Pro |
Response
What /v1/comex/inventory returns
Field names exactly as the API sends them, from the published OpenAPI specification.
| Field | Meaning |
|---|---|
| date | The CME report date |
| registered | Metal on warrant, which can be delivered against a futures contract |
| eligible | Metal in an approved vault that meets exchange standards but is not on warrant |
| total | Registered plus eligible |
| unit | At the top of the response: troy_ounces, short_tons or metric_tons, as the metal is reported |
| asOf, ageDays, stale | At the top of the response: the newest report date, how old it is, and whether the series has stopped updating |
Code
Call it from Python or JavaScript
No SDK to install: an HTTPS GET with your key in the Authorization header.
Python
import requests
resp = requests.get(
"https://api.metalcharts.org/v1/comex/inventory?symbol=XAG&range=1Y",
headers={"Authorization": "Bearer mc_live_YOUR_KEY"},
timeout=10,
)
resp.raise_for_status()
print(resp.json()["data"])JavaScript
const resp = await fetch("https://api.metalcharts.org/v1/comex/inventory?symbol=XAG&range=1Y", {
headers: { Authorization: "Bearer mc_live_YOUR_KEY" },
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const { data } = await resp.json();
console.log(data);FAQ
COMEX Inventory API questions
How far back does the COMEX inventory history go?
Gold and silver go back to 31 August 1992 and copper to 29 April 1993, one row per CME report date. Platinum, palladium, aluminium, zinc and lead start in February 2026. range=ALL (or MAX) returns the whole series.
What is the difference between registered and eligible?
Registered metal is on warrant and can be delivered against a COMEX futures contract. Eligible metal sits in an approved vault and meets the exchange's standards but is not on warrant. Total is the two together. Each row carries all three, so the registered share is a single division.
Can I get the figures for each depository?
Yes. /v1/comex/depositories returns each depository's stocks and the day's received, withdrawn and adjustment figures, laid out like CME's own report, with activityDate giving the business day the movements happened. type=depositories on /v1/comex/inventory returns just the newest day per depository.
How do I know the series is current?
Every response carries asOf (the newest report date), ageDays and a stale flag, so a script can tell a current series from one that has stopped updating without reading the array.
On metalcharts.org
See the same data as charts
More data
Other exchange data, same API
Start with Pro
COMEX Inventory data is included from Pro ($99 a month). Every plan, Free included, can call the live price endpoints.