Get Palladium Sep 2026 (PAU26) - Per Troy Ounce Historical Prices using this API - CSV export guide
You need to backfill Palladium per troy ounce prices for September 2026 to power a futures-roll backtest, render a month view in a chart, or reconcile fills against a benchmark. By the end of this guide you will query historical Palladium prices for September 2026 via the API, parse them into date/value pairs, and export to CSV—ready to plug into your quant or pricing workflow.
What exactly are we pulling for “Palladium Sep 2026 (PAU26)”?
Metals-API exposes Palladium as the spot metal symbol XPD quoted per troy ounce with USD as the default base. If you track a specific exchange-traded contract such as “PAU26” (commonly used shorthand for a September 2026 palladium contract), you typically need a continuous spot series to benchmark the contract or to build a roll-adjusted curve. Use XPD to retrieve per-oz daily prices across September 2026 and map those values to your PAU26 analysis window.
Before coding, confirm whether any contract-specific symbol is provided for your workflow. See the full, authoritative list here: Metals-API Supported Symbols. If a dedicated PAU26 symbol is not listed, use XPD for per troy ounce Palladium history and align it with the Sep 2026 tenor in your model.
Single date lookup: historical endpoint for a day in September 2026
Use the historical endpoint by appending a date in YYYY-MM-DD format. The example below retrieves Palladium (XPD) for one day in September 2026. Replace YOUR_API_KEY with your key.
curl "https://metals-api.com/api/2026-09-15?access_key=YOUR_API_KEY&symbols=XPD"
Illustrative (not live) JSON structure you can expect from the historical endpoint:
{
"success": true,
"timestamp": 1790381374,
"base": "USD",
"date": "2026-09-15",
"rates": {
"XPD": 0.00074
},
"unit": "per troy ounce"
}
Field notes you will actually use:
- success: Boolean to verify the request succeeded before parsing.
- timestamp: Unix epoch seconds for the rate snapshot.
- date: The effective date for this historical price (UTC-based calendar date).
- base: Quotation currency (default USD). The price meaning is “how many troy ounces per 1 USD.”
- rates.XPD: Palladium rate per USD. To get USD per troy ounce, invert: 1 / rates.XPD.
- unit: Confirms “per troy ounce” unit. One troy ounce = 31.1034768 grams.
Month backfill: time-series endpoint for the Sep 2026 window
For a backtest or month-view chart, you will likely pull the entire September 2026 range in a single call. Use the time-series endpoint with start and end date boundaries:
curl "https://metals-api.com/api/timeseries?access_key=YOUR_API_KEY&start_date=2026-09-01&end_date=2026-09-30&symbols=XPD"
Illustrative (not live) JSON structure from the time-series endpoint—trimmed to show the shape:
{
"success": true,
"timeseries": true,
"start_date": "2026-09-01",
"end_date": "2026-09-30",
"base": "USD",
"rates": {
"2026-09-01": { "XPD": 0.00075 },
"2026-09-02": { "XPD": 0.000746 },
"2026-09-15": { "XPD": 0.00074 }
},
"unit": "per troy ounce"
}
Again, the rates are quoted as troy ounces per USD. If you need USD/oz, take the reciprocal per date.
Python: turn the time-series JSON into date/value pairs and export CSV
The snippet below calls the same time-series endpoint for September 2026, extracts the date and inverted USD-per-oz values, and writes a two-column CSV ready for spreadsheets, BI tools, or a backtesting engine.
import os
import csv
import requests
API_KEY = os.getenv("METALS_API_KEY", "YOUR_API_KEY")
url = "https://metals-api.com/api/timeseries"
params = {
"access_key": API_KEY,
"start_date": "2026-09-01",
"end_date": "2026-09-30",
"symbols": "XPD"
}
r = requests.get(url, params=params, timeout=30)
r.raise_for_status()
data = r.json()
if not data.get("success"):
raise RuntimeError(f"API error: {data}")
rates_by_date = data.get("rates", {})
rows = []
for date_str, symbols in sorted(rates_by_date.items()):
xpd_rate = symbols.get("XPD") # ounces per USD
if xpd_rate and xpd_rate > 0:
usd_per_oz = 1.0 / xpd_rate
rows.append((date_str, usd_per_oz))
# Write CSV: date,usd_per_troy_ounce
with open("palladium_sep_2026_xpd_usd_per_oz.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["date", "usd_per_troy_ounce"])
writer.writerows(rows)
print(f"Wrote {len(rows)} rows to palladium_sep_2026_xpd_usd_per_oz.csv")
How to read the JSON for Palladium and map it to PAU26 workflows
Most developers will only use a few fields:
- rates: Dict mapping each date to metal symbols; for our use case, read rates[date]["XPD"].
- units: “per troy ounce” confirms that values invert to “USD per troy ounce.”
- base: Always interpret the quotation side correctly. With base USD, rates mean “oz per USD.”
- timestamp, date: Use these to align your time zone and session rules. Dates are calendar days, UTC-based.
To benchmark a specific Sep 2026 futures contract (often referenced as PAU26), do one of the following in your analytics layer:
- Use XPD daily values through the contract’s Sep 2026 calendar window as the benchmark spot series.
- Apply your own roll conventions (e.g., last business day of Aug) to map spot to the front contract and PAU26 tenor.
If Metals-API later lists a contract-specific symbol you need, you can find it on the official symbols page: browse supported symbols and metadata. Otherwise, the spot XPD series is the standard input for quant, pricing, and reconciliation tasks around Palladium futures curves.
CSV export options beyond Python
If your stack prefers command-line tooling, you can convert the time-series JSON to CSV using your language of choice. A typical approach is:
- Request the JSON via curl (as shown above).
- Load and invert the values (oz per USD → USD per oz) in your script.
- Write a header like date,usd_per_troy_ounce and append rows in ISO date order.
Keeping one row per day makes it easy to join with trade logs, futures rolls, or P&L curves.
Practical details that save time
Units: troy ounces and grams
- All XPD prices are per troy ounce. 1 troy ounce = 31.1034768 grams. Multiply USD/oz by 1/31.1034768 for USD/gram, or multiply oz-quoted quantities by 31.1034768 for grams.
Base currency and inversion
- The API returns metal rates with base “USD” by default. The numeric value for XPD is “troy ounces per USD.”
- To convert to “USD per troy ounce,” invert the number: usd_per_oz = 1 / rates["XPD"].
- If you need another currency for reporting (e.g., EUR per oz), you can convert externally using FX rates or explore conversion options in the Metals-API Documentation.
Timestamps, dates, and time zones
- Each response includes a Unix timestamp (seconds since epoch) and a YYYY-MM-DD date. Treat the date as UTC-based.
- When merging with exchange-traded futures data (like a PA contract month), decide whether your analytics use UTC calendar days or a local market close. Adjust mapping accordingly.
Weekends, holidays, and missing days
- For some calendar days (weekends/holidays), you may see no new price. Your time-series could have gaps or repeated last values depending on your plan’s data cadence.
- When building charts or backtests, handle missing days with an explicit rule: forward-fill, skip non-business days, or aggregate to weekly buckets—be consistent across assets.
Maximum range per request and pagination
- The date span per time-series request depends on your plan. If your Sep 2026 window is larger than the plan’s limit, split the month into multiple calls and concatenate the results locally.
- Consult the plan-specific limits and supported query parameters in the Metals-API Documentation.
Caching and backfills
- Historical data for a given date is stable. Cache it aggressively (e.g., per-day JSON files keyed by date and symbol) to avoid repeated API calls during development and batch re-runs.
- When backfilling an entire month, store the original JSON and the derived CSV. If you change your inversion or unit conversions later, you can quickly regenerate the CSV from cached JSON.
- For intraday tools, rate-limit your polling and consider a local TTL cache to reduce repeated requests for the same date.
Why Palladium data matters for automotive and manufacturing teams
Palladium (XPD) is a core input in autocatalysts—linking directly to automotive emissions technology and environmental compliance. Having a reliable Sep 2026 series helps engineering and procurement teams simulate cost exposure for planned production runs and helps treasury model hedges ahead of tool-up cycles. Integrating Metals-API XPD data into digital supply chains and smart manufacturing dashboards aligns procurement, R&D, and finance on a single, programmatic price source.
For product managers building fintech or commodity tooling, a clean, per-oz daily XPD series unlocks features like cost-indexed pricing, automated alerts, and roll analytics for customers exposed to palladium. Start from the API calls above, then compose them into your ERP, risk, or e-commerce pricing logic.
End-to-end example: pull, invert, and save a clean CSV for Sep 2026
- Call time-series for 2026-09-01 to 2026-09-30 with symbols=XPD.
- Parse JSON, sort by date, and compute USD per troy ounce as 1 / XPD.
- Write CSV: date,usd_per_troy_ounce. Keep the file under version control with a README capturing your normalization rules.
- Join this CSV with your PAU26 contract metadata (e.g., Sep 2026 business days, exchange holidays) in your backtest or reconciliation pipeline.
Where to find what you need
- Main landing page for features and plans: Metals-API Website
- Endpoints, parameters, and limits: Metals-API Documentation
- Check if a specific symbol (e.g., contract code) is available: Metals-API Supported Symbols
Additional references for context
- Commodity contract conventions and roll calendars: CME Palladium futures overview
- Unit standards for troy ounces: NIST measurement resources
FAQ
Does Metals-API provide a PAU26 (contract) symbol?
Check the live symbol directory here: Supported Symbols. If a contract code is not listed, use XPD (Palladium, per troy ounce) and align it to your Sep 2026 tenor in your own analytics.
How do I get “USD per troy ounce” instead of “troy ounces per USD”?
Invert the rate: usd_per_oz = 1 / rates["XPD"]. The API’s base is USD by default, so XPD is quoted as oz per USD.
What happens on weekends or holidays?
Some dates may not have fresh ticks. Handle gaps explicitly: forward-fill for charts, or restrict to business days for backtests. Store your rule in code for reproducibility.
How large a date range can I request in one call?
Range limits depend on your plan. If you hit a limit, split the month into multiple time-series calls and merge locally. See the documentation for plan-specific details.
Can I export directly to CSV from the API?
The API returns JSON. Export to CSV by parsing JSON in your language of choice (example Python above) and writing date/value rows. Keep the JSON cached so you can regenerate CSVs with different normalization rules later.
Ready to ship this integration? Get your key and start querying XPD for Sep 2026 now: Create a free Metals-API account to get your API key. Then follow the historical and time-series calls above, and you’ll have a clean CSV for your PAU26 workflows in minutes.