Altın Fiyatı API'si: Geliştiriciler İçin Eksiksiz Rehber
Altın fiyatı API'si nasıl kullanılır: anahtar alın, curl, JavaScript ve Python ile çağırın, kurları doğru okuyun; geçmiş veri, hata, kota ve önbelleği yönetin.
Bir altın fiyatı API'si size ne sunar
Bir altın fiyatı API'si, altının güncel ve geçmiş fiyatını yapılandırılmış veri olarak, genellikle HTTPS üzerinden JSON biçiminde döndürür; böylece yazılımınız web sayfalarından veri kazımadan veya sayıları elle kopyalamadan bu fiyatları kullanabilir. MetalAPI'de altının sembolü, bir troy ons altın için ISO 4217 kodu olan XAU'dur. Canlı fiyatı spot fiyattır: bankalar arası alış ve satış kotasyonlarının orta noktası.
Entegrasyonların çoğu alım satım sistemi değildir. Tipik kullanım alanları şunlardır:
- Altın ürünlerini piyasa hareket ettikçe yeniden fiyatlandıran online mağazalar ve kuyumcular.
- Hurda altın, ayarlı kuyum ürünleri veya külçe primleri için hesaplayıcılar.
- Varlıkları yerel para birimiyle değerleyen portföy takip ve kişisel finans uygulamaları.
- Stokları günlük kapanış fiyatıyla yeniden değerleyen muhasebe ve ERP sistemleri.
- Son bir yılın grafiğine ihtiyaç duyan gösterge panelleri, bültenler ve dahili raporlar.
Aynı API gümüşü (XAG), platini (XPT) ve paladyumu (XPD), dört endüstriyel metali, beş enerji kontratını, 57 para birimini ve 13 kripto parayı da kapsar: toplam 83 sembol, tümü semboller sayfasında listelenmiştir. Bu rehber altına odaklanıyor, ancak anlatılan her şey diğer semboller için de geçerlidir.
API anahtarı alın
Ücretsiz bir hesap oluşturun. Free plan kredi kartı gerektirmez ve günlük fiyat güncellemeleriyle ayda 100 istek içerir; bu, bir entegrasyonu geliştirip test etmek için yeterlidir. Ücretli planlar daha güncel fiyatlar, daha fazla istek ve ek endpoint'ler sunar; aşağıdaki plan tablosu bunları özetliyor.
Panelde API keys bölümünü açın ve bir anahtar oluşturun. Anahtarlar mk_live_ ile başlar. Yalnızca hash değeri saklandığı için tam anahtar yalnızca bir kez gösterilir; bu nedenle onu hemen bir ortam değişkenine veya bir gizli bilgi yöneticisine (secrets manager) kaydedin:
export METALAPI_KEY="mk_live_your_key_here"API, anahtarı birbirine eşdeğer üç yolla kabul eder: api_key sorgu parametresi, Authorization: Bearer header'ı veya X-API-Key header'ı. Canlı ortamda header kullanmayı tercih edin; çünkü tam URL'ler erişim loglarına, proxy'lere ve hata izleme araçlarına düşme eğilimindedir. Kimlik doğrulama rehberi, tarayıcıdan yapılan çağrılar için alan adıyla sınırlandırılmış anahtarları da açıklar.
# 1. Sorgu parametresi
curl "https://metalapi.com/api/v1/latest?api_key=$METALAPI_KEY¤cies=XAU"
# 2. Authorization header'ı
curl "https://metalapi.com/api/v1/latest?currencies=XAU" \
-H "Authorization: Bearer $METALAPI_KEY"
# 3. X-API-Key header'ı
curl "https://metalapi.com/api/v1/latest?currencies=XAU" \
-H "X-API-Key: $METALAPI_KEY"curl, JavaScript ve Python ile ilk isteğiniz
Her endpoint, https://metalapi.com/api/v1/ altında basit bir GET isteğidir. /latest endpoint'i güncel fiyatları döndürür. base, fiyatların ifade edildiği para birimini belirler (varsayılan USD); currencies ise yanıtı ihtiyacınız olan sembollerle sınırlar. Tek bir istek çok sayıda sembol döndürebilir ve yine de tek istek sayılır.
curl "https://metalapi.com/api/v1/latest?base=USD¤cies=XAU,XAG" \
-H "X-API-Key: $METALAPI_KEY"Başarılı bir yanıt şöyle görünür. Sayılar canlı fiyatlar değil, MetalAPI dokümantasyonu boyunca kullanılan örnek değerlerdir:
{
"success": true,
"timestamp": 1792834892,
"date": "2026-10-24",
"base": "USD",
"rates": {
"XAU": 0.0002501319,
"USDXAU": 3997.89,
"XAG": 0.0185392857,
"USDXAG": 53.94
},
"rate_limit": {
"limit": 10000,
"remaining": 9876,
"reset": 1793491200,
"used": 124,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}Aynı çağrı, fetch yerleşik olarak gelen Node.js 18 veya daha yeni sürümlerde şöyle yapılır. Üst düzey await çalışsın diye dosyayı gold.mjs olarak kaydedin, ardından node gold.mjs komutuyla çalıştırın:
const params = new URLSearchParams({ base: "USD", currencies: "XAU,XAG" });
const res = await fetch(`https://metalapi.com/api/v1/latest?${params}`, {
headers: { Authorization: `Bearer ${process.env.METALAPI_KEY}` },
signal: AbortSignal.timeout(10_000),
});
const data = await res.json();
if (!data.success) {
throw new Error(`MetalAPI ${data.error.code} (${data.error.type}): ${data.error.info}`);
}
const gold = data.rates[`${data.base}XAU`];
const asOf = new Date(data.timestamp * 1000).toISOString();
console.log(`Gold: ${gold} ${data.base} per troy ounce (data from ${asOf})`);Python'da ise requests kütüphanesiyle:
import os
import requests
resp = requests.get(
"https://metalapi.com/api/v1/latest",
params={"base": "USD", "currencies": "XAU,XAG"},
headers={"X-API-Key": os.environ["METALAPI_KEY"]},
timeout=10,
)
data = resp.json()
if not data["success"]:
err = data["error"]
raise RuntimeError(f"MetalAPI {err['code']} ({err['type']}): {err['info']}")
base = data["base"]
print(f"Gold: {data['rates'][base + 'XAU']} {base} per troy ounce")
print(f"Silver: {data['rates'][base + 'XAG']} {base} per troy ounce")Her iki kod parçacığı da kur anahtarını sabit kodlamak yerine data.base üzerinden oluşturur. Bu küçük alışkanlık, ileride baz para birimini değiştirdiğinizde kodun doğru çalışmaya devam etmesini sağlar ve bizi bu rehberin en önemli bölümüne getirir.
Kur formatını doğru okuyun
Her sembol rates içinde iki kez yer alır ve bu iki sayı birbirinin tersidir:
| Anahtar | Anlamı | Örnek değer |
|---|---|---|
USDXAU | Bir troy ons altının baz para birimi (USD) cinsinden fiyatı | 3997.89 |
XAU | Baz para biriminin bir birimiyle alınabilecek troy ons altın miktarı | 0.0002501319 |
Genel kural şudur: rates.<BASE><SYMBOL>, sembolün bir biriminin baz para birimi cinsinden fiyatıdır. Yalın rates.<SYMBOL> anahtarı ise bunun tersidir, yani baz para biriminin bir birimi başına sembol miktarı. Ters biçim, forex tarzı API'lerle ve eski MetalAPI entegrasyonlarıyla uyumluluk için korunmaktadır.
Altın fiyatı entegrasyonlarındaki en yaygın hata, rates.XAU değerini okuyup onu fiyat olarak kullanmaktır. Bu değer 1 ÷ fiyat olduğundan ürün sayfası 3.997,89 yerine 0,00025 gösterir ve bu değerle çarpma yapan her hesaplama kat kat yanlış sonuç verir. rates.USDXAU veya rates.EURXAU gibi ön ekli anahtarı okuyun.
Eski bir entegrasyondan kalma ters değerleri zaten saklıyorsanız onları yeniden indirmeniz gerekmez: fiyat = 1 ÷ ters değer. Yukarıdaki örnekte 1 ÷ 0,0002501319, son basamaklardaki yuvarlama farkı dışında yine 3997,89 sonucunu verir.
Para birimleri de aynı kuralı izler. Baz USD iken USDEUR bir euronun dolar cinsinden fiyatı, EUR ise dolar başına euro miktarıdır. Veri formatları rehberinde, Standard ve üzeri planlarda kullanılabilen alış ve satış anahtarları dahil daha fazla örnek bulunur.
Baz para birimleri ve birimler
Altını başka bir para birimiyle fiyatlandırmak için base değerini değiştirin. Kur anahtarı da onunla birlikte değişir: base=EUR, EURXAU değerini; base=INR ise INRXAU değerini döndürür. Çapraz kurlar tek bir anlık görüntüden gelir; bu nedenle euro cinsinden altın ile dolar cinsinden euro birbiriyle her zaman tutarlıdır.
Metal fiyatları varsayılan olarak troy ons başınadır. unit parametresi fiyatları başka bir ağırlık birimi başına döndürür:
| unit | Fiyatın birimi | Tipik kullanım |
|---|---|---|
troy_oz (varsayılan) | Troy ons, 31,1034768 g | Külçe fiyatları |
gram | Gram | Kuyum ve perakende |
kilogram | Kilogram | Kilogramlık külçeler, toptan |
ounce | Avoirdupois ons, 28,349523125 g | Altın için nadiren doğru seçim |
pound | Avoirdupois libre | Bakır |
metric_ton | Metrik ton (1.000 kg) | Alüminyum, çinko |
short_ton | Kısa ton (2.000 lb) | Çelik (HRC) |
Bu istek altın ve gümüşü gram başına euro cinsinden döndürür. unit varsayılan değerde olmadığında yanıt bunu üst düzeydeki bir unit alanında tekrarlar:
curl "https://metalapi.com/api/v1/latest?base=EUR¤cies=XAU,XAG&unit=gram" \
-H "X-API-Key: $METALAPI_KEY"unit=ounce (ve kısa biçimi oz) avoirdupois onstur ve troy onstan yaklaşık %8,9 daha hafiftir. Külçe fiyatları için unit parametresini hiç göndermeyin veya troy_oz gönderin.
unit yalnızca değerli ve endüstriyel metalleri etkiler. Enerji, para birimleri ve kripto bundan etkilenmez. Troy ons, gram, tola ve yuvarlama ile ilgili ayrıntılar için Troy ons, gram ve kilogram yazısını okuyun. Kuyum ürünleri satıyorsanız ayara göre altın fiyatları yazısı 22 ve 18 ayar fiyatlarını ve /carat endpoint'ini ele alıyor.
Geçmiş altın fiyatları
Geçmiş fiyatlar aynı parametreleri ve aynı yanıt formatını kullanır. Geçmiş veriler metaller ve enerji için 2000'de, para birimleri için 1999-01-04'te ve kripto için 2014'te başlar. İhtiyaçların çoğunu dört endpoint karşılar:
/YYYY-MM-DD(veya/historical?date=YYYY-MM-DDya da/yesterday): tek bir günün kapanış fiyatları. Hafta sonları ve tatiller için en son işlem gününün kapanışı döner./timeframe(takma adı/timeseries):start_dateileend_datearasındaki günlük kapanışlar; Free planda istek başına en fazla 30 gün, ücretli planlarda 365 gün./change: iki tarih arasındaki başlangıç kuru, bitiş kuru, mutlak ve yüzde değişim./ohlc: tek bir günün açılış, en yüksek, en düşük ve kapanış değerleri.
# 15 Ocak 2024 kapanışında altın ve gümüş
curl "https://metalapi.com/api/v1/2024-01-15?currencies=XAU,XAG" \
-H "X-API-Key: $METALAPI_KEY"
# Eylül 2026 için euro cinsinden günlük altın kapanışları
curl "https://metalapi.com/api/v1/timeframe?start_date=2026-09-01&end_date=2026-09-30&base=EUR¤cies=XAU" \
-H "X-API-Key: $METALAPI_KEY"Geçmiş günlerin kapanış fiyatları değişmez; bu nedenle onları tekrar tekrar istemek yerine bir kez saklayın. API ile geçmiş altın ve gümüş fiyatları yazısı 25 yıllık veriyi sayfalara bölerek çekmeyi, yerel olarak saklamayı ve grafiğe dökmeyi adım adım anlatıyor. Geçmiş veriler rehberinde uzun aralıklar için bir JavaScript yardımcısı bulunur.
Hatalar, kotalar ve plan limitleri
Başarısız bir istek, bir HTTP hata durum kodu ve success: false içeren bir gövde döndürür. error nesnesi sayısal bir code, makine tarafından okunabilir bir type ve insan tarafından okunabilir bir info içerir. Kodunuzda info metnine göre değil, her zaman code veya type değerine göre dallanın. İstek limiti (104), kota (105), plan kısıtlaması (106) ve zaman aralığı (207) hataları ayrıca bir upgrade_url içerir:
{
"success": false,
"error": {
"code": 106,
"type": "plan_restriction",
"info": "The carat endpoint requires a paid subscription plan",
"upgrade_url": "https://metalapi.com/dashboard/billing"
}
}En sık karşılaşacağınız kodlar:
| Kod | Tür | HTTP | Ne yapmalı |
|---|---|---|---|
101, 102 | no_api_key, invalid_api_key | 401 | Geçerli bir anahtar gönderin ve ortam değişkeninizi kontrol edin |
104 | too_many_requests | 429 | Retry-After kadar saniye bekleyin, ardından yeniden deneyin |
105 | quota_exceeded | 429 | Aylık kota tükendi; ayın 1'inde (UTC) sıfırlanır |
106 | plan_restriction | 403 | Endpoint veya parametre planınıza dahil değil |
205 | invalid_date | 400 | Hatalı biçimlendirilmiş veya gelecekteki tarihi düzeltin |
207 | timeframe_too_long | 400 | Aralığı daha kısa isteklere bölün |
300 | no_results | 404 | Veri yok; örneğin geçmiş verinin başladığı tarihten önce |
500, 503 | server_error, service_unavailable | 500, 503 | Üstel geri çekilmeyle (exponential backoff) yeniden deneyin |
Kimliği doğrulanmış her yanıt, kotanızı hem X-RateLimit-* header'ları olarak hem de gövdedeki rate_limit nesnesinde bildirir. /usage ve /symbols hiçbir zaman kotadan düşülmez; bu nedenle izleme sistemleriniz onları serbestçe çağırabilir. 104, 106, 107 veya bir sunucu hatasıyla reddedilen istekler ücretlendirilmez, ancak doğrulama hataları ücretlendirilir. Hata yönetimi rehberi tüm kodları listeler ve bir yeniden deneme yardımcısı içerir.
Planlar esas olarak istek hacminde ve fiyatların ne kadar güncel olduğunda farklılık gösterir:
| Plan | Aylık fiyat | Aylık istek | Güncelleme | Ekledikleri |
|---|---|---|---|---|
| Free | 0 $ | 100 | Günlük | 30 günlük aralıklar |
| Lite | 4,99 $ | 1.000 | 30 dk | Ayar fiyatları, 365 günlük aralıklar |
| Standard | 11,99 $ | 10.000 | 10 dk | Alış/satış fiyatları |
| Advanced | 24,99 $ | 50.000 | 1 dk | Webhook alarmları |
| Pro | 49,99 $ | 100.000 | 1 dk | Gerçek zamanlı akış |
| Ultra | 99,99 $ | 500.000 | 15 sn | Daha yüksek hacim |
| Business | 149,99 $ | 500.000 | 15 sn | Çalışma süresi SLA'sı |
| Enterprise | 299,99 $ | 1.500.000 | 5 sn | En yüksek hacim |
Yıllık faturalandırmayla %25'e varan tasarruf sağlarsınız. Güncel ayrıntılar her zaman fiyatlandırma sayfasında yer alır.
Önbellekleme ve canlı ortam ipuçları
/latest endpoint'ini planınızın güncelleme sıklığından daha sık çağırmak aynı sayıları döndürür ve kotanızı boşa harcar. Güncel fiyatları en az planınızın güncelleme aralığı kadar, geçmiş günleri ise kalıcı olarak önbelleğe alın. Bu Python yardımcısı güncel fiyatları önbelleğe alır ve API'ye ulaşılamazsa son başarılı yanıtı sunmaya devam eder:
import os
import time
import requests
TTL_SECONDS = 600 # Standard plan: fiyatlar 10 dakikada bir güncellenir
session = requests.Session()
session.headers["X-API-Key"] = os.environ["METALAPI_KEY"]
_cache = {"at": 0.0, "data": None}
def latest_prices():
now = time.monotonic()
if _cache["data"] and now - _cache["at"] < TTL_SECONDS:
return _cache["data"]
try:
r = session.get(
"https://metalapi.com/api/v1/latest",
params={"currencies": "XAU,XAG,XPT,XPD"},
timeout=10,
)
data = r.json()
except (requests.RequestException, ValueError):
data = None
if data and data.get("success"):
_cache.update(at=now, data=data)
return data
if _cache["data"]:
return _cache["data"] # son geçerli fiyatlar; zaman damgalarını gösterin
raise RuntimeError(data["error"] if data else "MetalAPI unreachable")Bir entegrasyonu ucuz ve güvenilir tutan birkaç alışkanlık daha:
- Tüm sembolleri tek bir çağrıda isteyin.
currencies=XAU,XAG,XPT,XPDtek bir isteğe mal olur; dört ayrı çağrı ise dört isteğe. - Anahtarı sunucuda tutun. API'yi bir tarayıcının çağırması gerekiyorsa alan adıyla sınırlandırılmış bir anahtar kullanın. Kod yazmadan bir web sitesinde fiyat göstermek için gömülebilir bir widget anahtarı sayfanın tamamen dışında tutar.
- Zaman damgasını gösterin.
timestamp, isteğinizin değil verinin zamanıdır. Özellikle önbellekteki bir değeri sunarken veya piyasa hafta sonu kapalıyken bunu fiyatın yanında gösterin. - Sorgulama sıklığınızı planlayın. 10 dakikada bir sorgulama ayda yaklaşık 4.500, dakikada bir sorgulama ise yaklaşık 45.000 istek kullanır. Pro ve üzeri planlarda bunun yerine gerçek zamanlı akışı kullanabilir, Advanced ve üzeri planlarda ise webhook fiyat alarmları alabilirsiniz.
- Zaman aşımları ve seçici yeniden denemeler kullanın. 10 saniye civarında bir zaman aşımı belirleyin,
104hatasınıRetry-Aftersüresinden sonra,5xxhatalarını ise geri çekilmeyle yeniden deneyin; doğrulama hatalarını asla yeniden denemeyin. - Sembolleri önceden doğrulayın. Başlangıçta
/symbolsendpoint'ini bir kez yükleyin (ücretsizdir) ve bilinmeyen kodları bir isteğe mal olmadan reddedin.
AI asistanlarıyla çalışıyorsanız https://metalapi.com/mcp adresindeki MetalAPI MCP sunucusu aynı verileri araçlar olarak sunar; böylece Claude, ChatGPT, Cursor veya VS Code, planınız dahilinde altın fiyatlarına ve geçmiş verilere erişebilir. Bkz. Yapay zekâ ve MCP. Tüm endpoint'ler ve parametreler için başvuru kaynağı API dokümantasyonudur.
Kendi verilerinizle deneyin
Ücretsiz bir hesap oluşturun ve ilk isteğinizi iki dakikadan kısa sürede gönderin. Ayda 100 istek, kredi kartı gerekmez.
Okumaya devam edin
Web Sitenize Canlı Altın Fiyatı Widget'ı Nasıl Eklenir
WordPress, Shopify veya HTML sitenize canlı altın fiyatı widget'ı ekleyin: MetalAPI panelinde oluşturun, sembol, düzen ve temayı seçin, iki satırı yapıştırın.
Altın Ayar Fiyatları: 24, 22 ve 18 Ayar Nedir, Nasıl Hesaplanır?
24, 22 ve 18 ayar ne demek, 916 ve 750 gibi milyem damgaları ne anlama gelir, ayar altının gram fiyatı nasıl hesaplanır ve altın fiyatı API'sinden nasıl alınır?
Canlı Altın Fiyatlarıyla Kuyum Fiyat Hesaplayıcısı Geliştirin
TypeScript ve Python ile gram altın fiyatı, ayar, işçilik, KDV ve kotaya uygun önbellekleme içeren sunucu tarafı bir kuyum fiyat hesaplayıcısı geliştirin.