Historische Daten abrufen
Tagespreise bis zurück ins Jahr 1999 abfragen, Zeiträume abrufen, zwei Stichtage vergleichen, OHLC-Daten nutzen und Preistrends analysieren.
Welche Historie verfügbar ist
MetalAPI speichert pro Symbol und Tag einen Tagesbalken (Eröffnung, Hoch, Tief und Schluss):
- Währungen seit 1999
- Edelmetalle, Industriemetalle und Energie seit 2000
- Krypto seit 2014
Metallpreise vor Oktober 2026 sind aus Frontmonats-Futures abgeleitet und können daher leicht vom Spotpreis desselben Tages abweichen. Alle Tarife können die gesamte Historie abfragen. Die Tarife unterscheiden sich nur darin, wie viele Tage eine einzelne Zeitraumanfrage umfassen darf.
Ein einzelner Tag
Verwenden Sie das Datum als Pfad, den Endpunkt /historical mit dem Parameter date oder /yesterday. Die Antwort enthält die Schlusskurse dieses Tages (UTC). Für GET /api/v1/2026-10-01?currencies=XAU,XAG:
{
"success": true,
"timestamp": 1790812800,
"historical": true,
"date": "2026-10-01",
"base": "USD",
"rates": {
"XAU": 0.0002583044893,
"USDXAU": 3871.4,
"XAG": 0.02097315436,
"USDXAG": 47.68
}
}Zeiträume mit /timeframe
/timeframe liefert einen Eintrag pro Tag zwischen start_date und end_date, mit dem Datum als Schlüssel. Für GET /api/v1/timeframe?start_date=2026-10-19&end_date=2026-10-23¤cies=XAU:
{
"success": true,
"timeframe": true,
"start_date": "2026-10-19",
"end_date": "2026-10-23",
"base": "USD",
"rates": {
"2026-10-19": { "XAU": 0.0002537298285, "USDXAU": 3941.2 },
"2026-10-20": { "XAU": 0.0002526049889, "USDXAU": 3958.75 },
"2026-10-21": { "XAU": 0.0002517369852, "USDXAU": 3972.4 },
"2026-10-22": { "XAU": 0.0002506642603, "USDXAU": 3989.4 },
"2026-10-23": { "XAU": 0.0002501319446, "USDXAU": 3997.89 }
}
}Tage ohne Schlusskurs, etwa Wochenenden oder Börsenfeiertage, können fehlen. Gehen Sie also nicht von einem Eintrag pro Kalendertag aus. /timeseries ist ein Alias, der "timeseries": true statt "timeframe": true zurückgibt.
Zeiträume, die über Ihr Tariflimit hinausgehen
Eine einzelne Anfrage kann im Free-Tarif bis zu 30 Tage und in kostenpflichtigen Tarifen bis zu 365 Tage umfassen. Längere Zeiträume liefern Fehler 207. Teilen Sie lange Zeiträume in Abschnitte auf, wobei jeder Abschnitt eine Anfrage ist:
const DAY = 86_400_000;
const MAX_DAYS = 365; // 30 im Free-Tarif
const iso = (d) => d.toISOString().slice(0, 10);
async function fetchRange(start, end, currencies) {
const rates = {};
let from = new Date(`${start}T00:00:00Z`);
const last = new Date(`${end}T00:00:00Z`);
while (from <= last) {
const to = new Date(Math.min(from.getTime() + MAX_DAYS * DAY, last.getTime()));
const params = new URLSearchParams({ start_date: iso(from), end_date: iso(to), currencies });
const res = await fetch(`https://metalapi.com/api/v1/timeframe?${params}`, {
headers: { "X-API-Key": process.env.METALAPI_KEY },
});
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code}: ${data.error.info}`);
Object.assign(rates, data.rates);
from = new Date(to.getTime() + DAY);
}
return rates;
}
// Zehn Jahre tägliche Goldpreise mit 10 Anfragen
const gold = await fetchRange("2016-01-01", "2025-12-31", "XAU");Veränderungen zwischen zwei Daten
/change vergleicht zwei Tage direkt, sodass Sie den Zeitraum dazwischen nicht herunterladen müssen. Für GET /api/v1/change?start_date=2026-09-30&end_date=2026-10-23¤cies=XAU:
{
"success": true,
"change": true,
"start_date": "2026-09-30",
"end_date": "2026-10-23",
"base": "USD",
"rates": {
"XAU": { "start_rate": 0.0002591613539, "end_rate": 0.0002501319446, "change": -0.000009029409258, "change_pct": -3.48409 },
"USDXAU": { "start_rate": 3858.6, "end_rate": 3997.89, "change": 139.29, "change_pct": 3.60986 }
}
}Verwenden Sie für Preisänderungen die Schlüssel mit Präfix wie USDXAU. Die Kehrwert-Schlüssel bewegen sich in die entgegengesetzte Richtung.
Tägliche OHLC-Daten
/ohlc liefert Eröffnungs-, Höchst-, Tiefst- und Schlusskurs eines Tages – genau das, was Sie für Candlestick-Charts und Tagesspannen brauchen. Für GET /api/v1/ohlc?date=2026-10-22¤cies=XAU:
{
"success": true,
"ohlc": true,
"date": "2026-10-22",
"base": "USD",
"rates": {
"USDXAU": { "open": 3962.1, "high": 4012.75, "low": 3951.3, "close": 3989.4 },
"XAU": { "open": 0.0002523914086, "high": 0.0002530812644, "low": 0.000249205657, "close": 0.0002506642603 }
}
}Historische Umrechnungen
Mit date rechnet /convert zu einem vergangenen Schlusskurs um. So viel waren zum Beispiel 10 Feinunzen Silber am 1. Oktober 2026 in Euro wert:
GET /api/v1/convert?api_key=YOUR_API_KEY&from=XAG&to=EUR&amount=10&date=2026-10-01Trends analysieren
Die Antwort von /timeframe lässt sich leicht in eine Zeitreihe umwandeln. Dieses Beispiel berechnet einen einfachen gleitenden 20-Tage-Durchschnitt des Goldpreises:
// data = Antwort von /timeframe?currencies=XAU
const series = Object.entries(data.rates)
.sort(([a], [b]) => a.localeCompare(b))
.map(([date, rates]) => ({ date, price: rates.USDXAU }));
function movingAverage(points, period) {
return points.slice(period - 1).map((point, i) => ({
date: point.date,
sma: points.slice(i, i + period).reduce((sum, p) => sum + p.price, 0) / period,
}));
}
const sma20 = movingAverage(series, 20);Schlusskurse vergangener Tage ändern sich nie. Speichern Sie sie daher dauerhaft, statt sie erneut abzufragen. Nur der Balken des heutigen Tages bewegt sich noch.
Verwandte Anleitungen
Bereit zum Loslegen?
Erstellen Sie ein kostenloses Konto, um Ihren API-Schlüssel zu erhalten, oder entdecken Sie alle Endpunkte in der API-Referenz.