أقصر طريق إلى أسعار الصرف في Python هو طلب GET إلى /v1/latest/USD. يعود إليك JSON بأسعار 31 عملة مع حقلي حداثة، source وmarket_session. استدعاؤك الأول لا يحتاج مفتاح API.
نقاط أساسية
طلب GET واحد إلى /v1/latest/{base} يعيد أسعار 31 عملة بصيغة JSON.
تحمل كل استجابة source وmarket_session، فتعرف مدى حداثة كل سعر.
الخطة المجانية 10,000 استدعاء شهريًا بمعدل 12 طلبًا في الدقيقة، دون بطاقة.
import os
from decimal import Decimal
import requests
response = requests.get(
"https://api.exchangerate.dev/v1/convert/USD/EUR/100",
headers={"Authorization": f"Bearer {os.environ['EXCHANGERATE_API_KEY']}"},
timeout=10,
allow_redirects=False,
)
if not 200 <= response.status_code < 300:
raise RuntimeError(f"HTTP {response.status_code}; Retry-After: {response.headers.get('Retry-After')}")
data = response.json(parse_float=Decimal)
print(data["rate"], data["converted"])
اعرف مدى حداثة السعر
للعملة المعروضة، اقرأ sources[currency] لمعرفة نوع المصدر وeffective_at[currency] لمعرفة وقت الرصد. يلخص source البيانات الأقل حداثة في الاستجابة كلها. يصف market_session جلسة السوق، بينما يشير timestamp إلى وقت إنشاء الاستجابة لا إلى وقت رصد السعر.
قيمة الحقلما معناهامتى تتحرك
source: liveإجماع فوري مجمّعخلال اليوم (~60 ث)، أسبوع التداول
source: ecb_dailyتثبيت مرجعي رسميمرة كل يوم عمل
market_session: weekendسبت أو أحد (سوق ما بين البنوك مغلقة)التثبيت المرجعي يحمل قيمة الجمعة؛ التغذية الحية لا تتحدث
إرشادية، لا تصلح للتسوية
تُنشر الأسعار للمرجعية والتحليل والعرض. ليست تسعيرة تداول ويجب ألا تُستخدم لتسوية صفقة. تحمل كل استجابة ذلك في حقل notice الخاص بها.
اقرأ يومًا ماضيًا واحدًا
اطلب أي تاريخ رجوعًا حتى 1999 بوضعه في المسار. تضيف الاستجابة is_forward_filled، وتكون true عندما لم يُنشر سعر في ذلك اليوم، كعطلة نهاية أسبوع أو عيد:
python · rate on a past datecopy
import os
from decimal import Decimal
import requests
response = requests.get(
"https://api.exchangerate.dev/v1/2026-03-14/USD?symbols=JPY",
headers={"Authorization": f"Bearer {os.environ['EXCHANGERATE_API_KEY']}"},
timeout=10,
allow_redirects=False,
)
if not 200 <= response.status_code < 300:
raise RuntimeError(f"HTTP {response.status_code}; Retry-After: {response.headers.get('Retry-After')}")
data = response.json(parse_float=Decimal)
print(data["rates"]["JPY"], data["is_forward_filled"])
لسلسلة كاملة عبر نطاق تواريخ في استدعاء واحد، استخدم /v1/range مع start_date وend_date. يغطي ذلك دليل مستقل.