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

تحويل العملات في JavaScript وNode.js

اجلب أسعار صرف حية وحوّل المبالغ في JavaScript عبر واجهة fetch العامة. يعمل في Node 18+ وDeno وBun والمتصفحات الحديثة. لا مفتاح للبداية، و10,000 استدعاء شهريًا في الخطة المجانية.

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

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

Key points
تعمل fetch العامة مباشرة في Node 18+ وDeno وBun والمتصفحات دون أي اعتماديات إضافية.
طلب GET واحد إلى /v1/latest/{base} يعيد أسعار 31 عملة، مع source وmarket_session.
مرّر مفتاحك بصيغة Authorization: Bearer exr_live_...، أو استخدم X-API-Key إذا تعذّر على منصتك ضبط Authorization.
الخطة المجانية 10,000 استدعاء شهريًا بمعدل 12 طلبًا في الدقيقة، دون بطاقة.
الأسعار إرشادية، للمرجعية والتحليل فقط، وليست تسعيرة تداول.

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

في Node 18 أو أي متصفح حديث لديك fetch جاهزة. await واحدة تكفي لقراءة سعر اليورو:

javascript · no keycopy
const res = await fetch("https://api.exchangerate.dev/v1/latest/USD");
const data = await res.json();

console.log(data.rates.EUR);        // 0.87531
console.log(data.source);           // ecb_daily
console.log(data.market_session);   // open

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

أضف مفتاحًا ومعالجة للأخطاء

مرّر مفتاحك كرمز bearer في ترويسة Authorization. افحص res.ok وارمِ استثناء عند حالة سيئة كي تظهر الأخطاء مبكرًا:

javascript · authenticated call with error handlingcopy
const API = "https://api.exchangerate.dev/v1";
const KEY = "exr_live_...";   // free key at https://exchangerate.dev/signup

async function getLatest(base = "USD") {
  const res = await fetch(`${API}/latest/${base}`, {
    headers: { Authorization: `Bearer ${KEY}` },
  });

  if (!res.ok) {
    const err = await res.json().catch(() => ({}));
    throw new Error(`exchangerate.dev ${res.status}: ${err.message ?? res.statusText}`);
  }

  return res.json();
}

const data = await getLatest("USD");
console.log(data.rates.GBP, data.market_session);

ترويسة X-API-Key: exr_live_... مقبولة أيضًا، للمنصات التي لا تستطيع ضبط ترويسة Authorization (بعض بيئات serverless وZapier وأدوات no-code المماثلة).

حوّل مبلغًا

للتحويل المباشر استدعِ /v1/convert/{from}/{to}/{amount}. تعطيك الاستجابة السعر والمبلغ المحوّل في رحلة واحدة:

javascript · convert 100 USD to EURcopy
const res = await fetch(`${API}/convert/USD/EUR/100`, {
  headers: { Authorization: `Bearer ${KEY}` },
});
const data = await res.json();

console.log(data.rate);       // 0.87572
console.log(data.converted);  // 87.57

يعيد مسار التحويل حقلي source وmarket_session نفسيهما اللذين يعيدهما مسار latest، فتستطيع أن تعرض للمستخدمين فئة السعر وهل أسبوع التداول بين البنوك مفتوح.

افهم source وmarket_session

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

قيمة الحقلما معناهامتى تتحرك
source: liveإجماع فوري مجمّعخلال اليوم (~60 ث)، أسبوع التداول
source: ecb_dailyالتثبيت المرجعي للبنك المركزي الأوروبيمرة كل يوم عمل (~16:00 CET)
source: fred_dailyالسلسلة اليومية للاحتياطي الفيدراليمرة كل يوم عمل
market_session: weekendسبت أو أحد (سوق ما بين البنوك مغلقة)التثبيتات المرجعية تحمل قيمة الجمعة؛ التغذية الحية لا تتحدث

يخبرك حقل data_updated_at بآخر مرة كُتب فيها السعر الأساسي. ويسجّل timestamp وقت بناء الاستجابة. معًا يتيحان لك تقرير كيفية التخزين المؤقت للقيمة وعرضها.

أسعار إرشادية فقط
تُنشر هذه الأسعار للمرجعية والتحليل والعرض. ليست تسعيرة تداول ويجب ألا تُستخدم لتسوية صفقة أو تحويل. تصرّح كل استجابة بذلك في حقل notice الخاص بها.

حدود الخطة المجانية

يمنحك المفتاح المجاني 10,000 استدعاء شهريًا بمعدل 12 طلبًا في الدقيقة. لا حاجة إلى بطاقة عند التسجيل. إذا تجاوزت حد الدقيقة تعيد الواجهة 429؛ تمهّل وأعد المحاولة. تُعاد الحصة الشهرية في ذكرى تاريخ فوترتك.

  • 10,000 استدعاء شهريًا
  • 12 طلبًا في الدقيقة
  • دون بطاقة ائتمان
  • يغطي /v1/latest و/v1/convert و/v1/range و/v1/{date}/{base}
ER
exchangerate.dev
أدلة تكامل للمطورين.

Keep reading

Tutorialكيف تجلب أسعار الصرف في PythonRead 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