Metals API: live tin, aluminum, nickel, copper and iron ore

OilPriceAPI is a metals API that returns tin, aluminum, nickel, copper and iron ore from the same REST endpoint as crude oil, natural gas and refined fuels — every code in the same JSON shape, behind one API key.

Query COPPER_USD and IRON_ORE_USD with the same call you already use for BRENT_CRUDE_USD. Each response carries its own unit and source timestamp, so a per-pound metal and a per-ton bulk commodity never get mixed up in your parser.

Five industrial metals by code

TIN_USD, ALUMINUM_USD, NICKEL_USD and COPPER_USD are quoted per pound; IRON_ORE_USD is quoted per metric ton. The unit is on every response, not in a footnote.

One call for all five

Pass a comma-separated by_code list to /v1/prices/latest and get every metal back in a single data.prices[] array — the exact call that renders the table on this page.

Source timestamps, never a clock

created_at is the source's own observation time. A value you read at noon that was observed at 09:00 says 09:00, so you can decide for yourself whether it is fresh enough.

Same schema as oil and gas

A nickel quote parses exactly like a WTI quote. Adding metals to an existing energy integration is a change of code string, not a second vendor or a second parser.

JSON first, CSV export

Every endpoint returns JSON. Add ?format=csv to the same authenticated request for a flat file; the historical endpoints are on paid plans.

One key, official SDKs

A single Authorization header, plus production SDKs for Python, Node.js, Go and PHP. Start on the free tier with no credit card.

Live: tin, aluminum, nickel, copper and iron ore from one call

Rendered from a single /v1/prices/latest request with a comma-separated by_code list. Every value carries the source's own timestamp; a code that did not return a usable value is shown as unavailable rather than substituted.

by_codeInstrumentLatestPerSource timestamp
TIN_USDTin$24.38pound
ALUMINUM_USDAluminum$1.480pound
NICKEL_USDNickel$7.420pound
COPPER_USDCopper$6.680pound
IRON_ORE_USDIron ore$97.06metric ton

The request that produced this table

curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=TIN_USD,ALUMINUM_USD,NICKEL_USD,COPPER_USD,IRON_ORE_USD" \
  -H "Authorization: Token YOUR_API_KEY"
  • Units differ by code — tin, aluminum, nickel and copper per pound, iron ore per metric ton. Read the unit field before doing arithmetic.
  • The multi-code response is data.prices[]; a single-code request returns data as one object.

Each metal has its own live page with a chart and history: Tin price, Aluminum price, Nickel price, Copper price, Iron ore price.

Coverage truth

What the metals codes actually are

Coverage
Tin, aluminum, nickel and copper per pound; iron ore per metric ton. Five codes, one endpoint, one response shape.
Source
Aggregated from published market sources and normalized into one schema. We are not a party to any exchange or price-reporting agency.
Cadence
Latest available values carry a timestamp. Refresh cadence varies by source, market hours, dataset and plan.
First endpoint
GET /v1/prices/latest?by_code=COPPER_USD

Response fields to inspect

  • code — echoes the canonical code, which may differ from an alias you sent
  • price and currency — USD for every metals code
  • unit — lb for tin, aluminum, nickel and copper; metric_ton for iron ore
  • created_at — treat this as the freshness signal, not the time you called

Keep visible

  • History is recent: the five industrial-metal codes began collecting in 2026.
  • Units are not uniform — never assume pounds for iron ore.
  • API access conveys no third-party right in the underlying source material.
First-call proof

First call: copper and iron ore, same shape

Two requests, one header, one parser. The only difference between a per-pound metal and a per-ton bulk commodity is the unit field the API sends back.

Request

curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=COPPER_USD" \
  -H "Authorization: Token YOUR_API_KEY"

curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=IRON_ORE_USD" \
  -H "Authorization: Token YOUR_API_KEY"

Expected shape

{
  "status": "success",
  "data": {
    "code": "COPPER_USD",
    "price": 6.69,
    "currency": "USD",
    "unit": "lb",
    "created_at": "2026-09-25T15:33:01Z"
  }
}

{
  "status": "success",
  "data": {
    "code": "IRON_ORE_USD",
    "price": 97.06,
    "currency": "USD",
    "unit": "metric_ton",
    "created_at": "2026-09-25T15:33:52Z"
  }
}
  • Responses are abridged for readability and show real observations captured on 2026-09-25; yours will differ.
  • Add format=csv to either request for a flat CSV export instead of JSON.
  • Read the unit field before doing arithmetic — copper is per pound, iron ore is per metric ton.

Need gold, silver or the daily fixes as well? See the commodity data API page, or the commodities overview.

Endpoints you'll use

GET /v1/prices/latest?by_code=COPPER_USD

Latest copper value per pound with currency, unit and timestamp fields.

GET /v1/prices/latest?by_code=TIN_USD,ALUMINUM_USD,NICKEL_USD,COPPER_USD,IRON_ORE_USD

All five metals in one request — the call behind the live table above. Each code comes back with its own price, unit and source timestamp.

GET /v1/prices/past_year?by_code=NICKEL_USD

Historical observations for a single code (paid plans). Also past_day, past_week and past_month.

GET /v1/prices/all

One snapshot across every code your plan covers, metals and energy together.

Frequently asked questions

Which metals does the API return?

Industrial and bulk metals: TIN_USD, ALUMINUM_USD, NICKEL_USD and COPPER_USD per pound, and IRON_ORE_USD per metric ton. Precious metals (GOLD_USD, SILVER_USD, PLATINUM_USD, PALLADIUM_USD) and the daily gold and silver fixes are on the same endpoint and are documented on the commodity data API page.

What unit is each metal quoted in?

Tin, aluminum, nickel and copper are quoted in US dollars per pound. Iron ore is quoted in US dollars per metric ton. Every response carries a unit field — read it rather than assuming, because the two conventions differ by more than three orders of magnitude.

Can I get all five metals in one request?

Yes. Pass a comma-separated list to by_code on /v1/prices/latest and the response is a data.prices[] array with one object per code, each carrying its own price, unit and created_at. A single-code request returns data as one object instead.

How far back does the metals history go?

The five industrial-metal codes began collecting during 2026, so treat them as recent series rather than a multi-decade archive. Call /v1/prices/past_year for a code and inspect what actually comes back before you build on it.

Is the metals data the same source as the oil data?

Metals and energy are aggregated from published market sources and normalized into one schema; the sources differ by commodity. We are not a party to any exchange or price-reporting agency, and API access conveys no third-party right in the underlying source material.

Does the metals API support JSON and CSV?

Yes — every endpoint returns JSON by default, and adding format=csv to the same authenticated request returns a flat CSV export instead. CSV is a parameter on the API rather than a public download, so it needs an API key, and the historical endpoints require a paid plan.

Is there a free tier?

Yes — a 7-day free trial with 10,000 requests and no credit card, and a free tier of 50 requests per day after that. Paid plans start at $19/month.