Tutorial/بداية سريعة مع Python

كيف تجلب أسعار الصرف في Python

اقرأ أسعار صرف حية وتاريخية في Python ببضعة أسطر. لا مفتاح للبداية، و10,000 استدعاء شهريًا بعد التسجيل، وكل استجابة تخبرك بمدى حداثة السعر.

ERexchangerate.dev·Jun 19, 2026·قراءة 5 دقائق

أقصر طريق إلى أسعار الصرف في Python هو طلب GET إلى /v1/latest/USD. يعود إليك JSON بأسعار 31 عملة مع حقلي حداثة، source وmarket_session. استدعاؤك الأول لا يحتاج مفتاح API.

Key points
طلب GET واحد إلى /v1/latest/{base} يعيد أسعار 31 عملة بصيغة JSON.
تحمل كل استجابة source وmarket_session، فتعرف مدى حداثة كل سعر.
الخطة المجانية 10,000 استدعاء شهريًا بمعدل 12 طلبًا في الدقيقة، دون بطاقة.
الأسعار إرشادية، منشورة للمرجعية والتحليل، وليست تسعيرة تداول.

استدعاؤك الأول، دون اعتماديات

لا تحتاج شيئًا خارج المكتبة القياسية. تتكفل urllib.request باستدعاء واحد:

python · standard librarycopy
import json
import urllib.request

url = "https://api.exchangerate.dev/v1/latest/USD"
with urllib.request.urlopen(url) as resp:
    data = json.load(resp)

print(data["rates"]["EUR"])     # 0.87531
print(data["source"])            # ecb_daily
print(data["market_session"])    # open

يعمل هذا دون مفتاح. الاستدعاءات المجهولة محدودة لكل عنوان IP، فلأي شيء يتجاوز التجربة السريعة تحتاج مفتاحًا مجانيًا.

مع requests ومفتاح API

معظم المشاريع تستخدم requests أصلًا. مرّر مفتاحك كرمز bearer:

python · requestscopy
import requests

API = "https://api.exchangerate.dev/v1"
KEY = "exr_live_..."   # free key at https://exchangerate.dev/signup

resp = requests.get(
    f"{API}/latest/USD",
    headers={"Authorization": f"Bearer {KEY}"},
    timeout=10,
)
resp.raise_for_status()
data = resp.json()

print(data["rates"]["GBP"], data["market_session"])

المفتاح المجاني يرفع حدك إلى 10,000 استدعاء شهريًا بمعدل 12 طلبًا في الدقيقة. تعمل ترويسة X-API-Key أيضًا، للمنصات التي لا تستطيع ضبط Authorization.

حوّل مبلغًا

للتحويل بدل سرد الأسعار، استدعِ /v1/convert. يعيد السعر والمبلغ المحوّل معًا:

python · convert 100 USD to EURcopy
r = requests.get(
    f"{API}/convert/USD/EUR/100",
    headers={"Authorization": f"Bearer {KEY}"},
).json()

print(r["rate"])         # 0.87572
print(r["converted"])    # 87.57

اعرف مدى حداثة السعر

حقلان في كل استجابة يخبرانك بما تنظر إليه. source هو فئة البيانات: live للفوري المجمّع، وecb_daily للتثبيت المرجعي للبنك المركزي الأوروبي، وfred_daily للسلسلة اليومية للاحتياطي الفيدرالي. أما market_session فهو open أو weekend أو interbank_closed لإغلاق معروف خارج عطلة نهاية الأسبوع.

قيمة الحقلما معناهامتى تتحرك
source: liveإجماع فوري مجمّعخلال اليوم (~60 ث)، أسبوع التداول
source: ecb_dailyتثبيت مرجعي رسميمرة كل يوم عمل
market_session: weekendسبت أو أحد (سوق ما بين البنوك مغلقة)التثبيت المرجعي يحمل قيمة الجمعة؛ التغذية الحية لا تتحدث
إرشادية، لا تصلح للتسوية
تُنشر الأسعار للمرجعية والتحليل والعرض. ليست تسعيرة تداول ويجب ألا تُستخدم لتسوية صفقة. تحمل كل استجابة ذلك في حقل notice الخاص بها.

اقرأ يومًا ماضيًا واحدًا

اطلب أي تاريخ رجوعًا حتى 1999 بوضعه في المسار. تضيف الاستجابة is_forward_filled، وتكون true عندما لم يُنشر سعر في ذلك اليوم، كعطلة نهاية أسبوع أو عيد:

python · rate on a past datecopy
r = requests.get(
    f"{API}/2026-03-14/USD",
    headers={"Authorization": f"Bearer {KEY}"},
).json()

print(r["rates"]["JPY"], r["is_forward_filled"])

لسلسلة كاملة عبر نطاق تواريخ في استدعاء واحد، استخدم /v1/range مع start_date وend_date. يغطي ذلك دليل مستقل.

ER
exchangerate.dev
أدلة تكامل للمطورين.

Keep reading

Tutorialتحويل العملات في JavaScript وNode.jsRead Guideأسعار تاريخية وسلاسل زمنية في استدعاء واحدRead Referenceقراءة source وmarket_sessionRead
المزيد من المقارناتFixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
تعلّمReading source and market_session in your pipelineIndicative vs executable FX rates: what a rates API actually gives youECB reference rates, explained
أسعار مباشرةEUR/USDGBP/USDUSD/JPY