في سفاري، كام دوسة بسيطة.
نفس البيانات اللي بتشغّل الموقع، بصيغة JSON نضيفة. طلب واحد بيديك كل الأصول، وأحسن جهة مرخّصة لكل اتجاه، وتقييم اليوم، والأسعار الرسمية والعالمية، وتاريخ يومي حديث. البيانات محايدة للغة ومن غير أسماء مصادر، فتقدر تعرضها بطريقتك.
لسه جديد على الـ API؟ طلب واحد على الفهرس بيعرضلك كل نقاط الوصول، والفلاتر اللي الـ feed بياخدها، وحدود الباقة المجانية، فتلاقي طريقك في ثواني. كمان كل رد من الـ feed بيحمل لينك _self للطلب اللي طلعه بالظبط.
GET https://getdaleelak.com/api/v1طلب GET واحد. من غير مفتاح ولا تسجيل. الـ CORS مفتوح، فتقدر تناديه من المتصفح على طول.
GET https://getdaleelak.com/api/v1/feed.jsonانسخ نقطة بداية:
curl -s https://getdaleelak.com/api/v1/feed.jsonconst res = await fetch("https://getdaleelak.com/api/v1/feed.json");
const data = await res.json();
console.log(data.assets[0].directions.sell.best);import requests
data = requests.get("https://getdaleelak.com/api/v1/feed.json").json()
print(data["assets"][0]["directions"]["sell"]["best"])<?php
$data = json_decode(file_get_contents("https://getdaleelak.com/api/v1/feed.json"), true);
print_r($data["assets"][0]["directions"]["sell"]["best"]);اطلب اللي محتاجه بس. زوّد النوع في اللينك، أو أصل واحد أو أكتر، أو اكتب أكتر من واحد مفصولين بفاصلة. وتقدر تجمع الاتنين. الرد بيفضل نفس الشكل، بس بأصول أقل.
عملات بس:
curl -s "https://getdaleelak.com/api/v1/feed.json?category=currencies"أصل واحد بس:
curl -s "https://getdaleelak.com/api/v1/feed.json?asset=us-dollar"كل رد بيحمل ETag. ابعته تاني في هيدر If-None-Match وهتاخد رد صغير Not Modified لما مفيش حاجة اتغيّرت، فتوفّر باندويدث وتفضل سريع.
curl -s -H 'If-None-Match: "<etag>"' https://getdaleelak.com/api/v1/feed.jsonالأخطاء بتيجي بصيغة problem+json القياسية (RFC 9457): نوع تقدر تدوّر عليه تحت، وعنوان قصير، وكود الحالة، والحقول اللي محتاجها تصلّح الطلب. شكل الرد الناجح عمره ما بيحمل خطأ.
قيمة ?category= مش من الأنواع اللي بنتابعها.
استخدم قيمة من validCategories في الرد، أو شيل الفلتر.
قيمة ?asset= مش slug ولا id بنتابعه.
استخدم قيمة من validAssets في الرد.
طلبات كتير من نفس العنوان في نفس النافذة.
استنى الثواني اللي في هيدر Retry-After، واستخدم الـ ETag للتخزين، وسيب مسافة بين الطلبات.
ملف OpenAPI بيوصّف كل حقل وكل رد، فتقدر تتأكد من البيانات أو تولّد كلاينت بلغتك.
افتح مواصفات OpenAPIرقم الإصدار في اللينك نفسه. الإصدار v1 مستقر، وأي حقول أو فلاتر جديدة بتتضاف بشكل متوافق مع اللي قبله، فمش بتكسر أي تكامل شغال. أي تغيير بيكسر التوافق هيطلع كإصدار جديد جنب v1 (زي /api/v2)، وهيتعلن في سجل التغييرات، والإصدار القديم هيتعلّم بهيدرز Deprecation و Sunset ومعاه وقت تنقل فيه. تابع سجل التغييرات عشان تبقى سابق التغيير.
شوف سجل تغييرات الـ APIولّد عميل بلغتك على طول من مواصفات OpenAPI من غير كود مكتوب بإيدك. استورد نفس المواصفات في Postman أو Insomnia عشان تتصفح الـ API وتجربه. وعشان تتابع التوافر، استعلم عن نقطة الجاهزية.
ولّد عميل من المواصفات:
npx @openapitools/openapi-generator-cli generate -i https://getdaleelak.com/api/v1/openapi.json -g typescript-fetchاتأكد من التوافر:
curl -s https://getdaleelak.com/readyz{
"_about": "Neutral price guide for Egypt's licensed currency and gold market. Rates are indicative, not financial advice.",
"_disclaimer": "For information only. Verify with the seller before transacting.",
"_license": "Free to use, attribution appreciated.",
"_self": "/api/v1/feed.json",
"_docs": "/en/api",
"_spec": "/api/v1/openapi.json",
"_changelog": "/api/v1/changelog.json",
"_terms": "/en/terms",
"schemaVersion": 1,
"seriesWindowDays": 30,
"generatedAt": "2026-09-26T06:00:12.000Z",
"assets": [
{
"id": "USD-EGP",
"slug": "us-dollar",
"category": "currencies",
"kind": "currency",
"market": "competitive",
"unit": "EGP/USD",
"decimals": 2,
"defaultSide": "sell",
"asOf": "2026-09-26",
"observedAt": "2026-09-26T05:58:00.000Z",
"freshness": {
"state": "fresh",
"stale": false
},
"confidence": {
"level": "high",
"checks": 3
},
"directions": {
"sell": {
"best": {
"seller": "Abu Dhabi Islamic Bank",
"sellerAr": "مصرف أبو ظبي الإسلامي",
"value": 51.72
},
"verdict": "favorable",
"favorability": 0.92,
"priorDays": 90,
"signals": {
"position": {
"lean": 1
},
"trend": {
"lean": 0,
"direction": "flat",
"changePct": 0.1,
"volatilityPct": 0.3,
"days": 30
},
"official": {
"lean": 1,
"diffPct": 0.2
},
"global": {
"diffPct": -0.4,
"notable": false
}
}
},
"buy": {
"best": {
"seller": "Egyptian Gulf Bank",
"sellerAr": "البنك المصري الخليجي",
"value": 51.8
},
"verdict": "ordinary",
"favorability": 0.41,
"priorDays": 90,
"signals": {
"position": {
"lean": 0
},
"trend": null,
"official": {
"lean": 0,
"diffPct": 0.1
},
"global": {
"diffPct": 0.3,
"notable": false
}
}
}
},
"benchmark": {
"buy": 51.63,
"sell": 51.73
},
"global": {
"value": 51.95
},
"series": [
{
"date": "2026-09-24",
"buyLo": 51.6,
"buyHi": 51.75,
"sellLo": 51.7,
"sellHi": 51.9,
"bench": 51.7
},
{
"date": "2026-09-25",
"buyLo": 51.62,
"buyHi": 51.78,
"sellLo": 51.72,
"sellHi": 51.92,
"bench": 51.72
}
],
"sellers": [
{
"seller": "Abu Dhabi Islamic Bank",
"sellerAr": "مصرف أبو ظبي الإسلامي",
"buy": 51.72,
"sell": 51.82
},
{
"seller": "National Bank of Egypt",
"sellerAr": "البنك الأهلي المصري",
"buy": 51.65,
"sell": 51.75
}
]
}
]
}ابعت آخر ETag. الرد 304 معناه مفيش حاجة اتغيّرت، فمفيش body تقراه.
let etag = null;
async function poll() {
const res = await fetch("https://getdaleelak.com/api/v1/feed.json", { headers: etag ? { "If-None-Match": etag } : {} });
if (res.status === 304) return; // nothing changed, no body
etag = res.headers.get("ETag");
const data = await res.json();
// ... use data
}اختار الأصل، وبعدين اقرا directions[side].best عشان الجهة والسعر.
const data = await (await fetch("https://getdaleelak.com/api/v1/feed.json")).json();
const usd = data.assets.find(a => a.slug === "us-dollar");
const best = usd.directions.sell.best; // { seller, value } for selling
console.log(best.seller, best.value);استنى ثواني Retry-After وبعدين حاول تاني. التخزين بالـ ETag بيخليك تحت الحد بكتير.
const res = await fetch("https://getdaleelak.com/api/v1/feed.json");
if (res.status === 429) {
const wait = Number(res.headers.get("Retry-After") || 5);
await new Promise(r => setTimeout(r, wait * 1000));
// then retry
}الـ API المجاني معمول لحوالي 1,000 طلب في اليوم من نفس العنوان، وبيسمح بدفعات قصيرة لحد 240 طلب كل دقيقة. الأسعار بتتغير مرة كل ساعة تقريبًا بالكتير، فطلب كل 5 دقايق تقريبًا كفاية جدًا، ومن فضلك خزّن البيانات. كل رد بيرجّع رصيدك الباقي في الـ دقيقة في هيدرز RateLimit، وهيدر RateLimit-Policy بيحمل حصتك الكاملة علشان تنظّم طلباتك من الأول. وهيدرز Daily-Limit و Daily-Used و Daily-Reset بتوضّح الكمية اليومية، واستخدمت منها قد إيه النهارده من نفس العنوان، وفاضل كام ثانية لحد ما تتجدد عند منتصف الليل بتوقيت القاهرة. لو عديت حد الـ دقيقة هيرجعلك 429، والترافيك الكتير المجهول بيتبطّأ الأول.
لو بتستخدم الـ API في الإنتاج أو بكميات كبيرة، من فضلك عرّفنا بنفسك علشان نقدر نوصلك بخصوص الحدود أو أي تغييرات. حط هيدر X-Contact في الطلب فيه لينك أو إيميل، أو ضيفه في الـ User-Agent بتاعك. الترافيك الكتير المجهول ممكن يتحدّد أول.
curl -s -H 'X-Contact: [email protected]' https://getdaleelak.com/api/v1/feed.jsonفي باقة أقوى ومليانة مميزات جاية. لسه مش متاحة، وهنعلن عنها هنا.
أيوة. دليلك بيوفّر API مجاني بصيغة JSON لأسعار العملات والذهب المرخصة في مصر على /api/v1/feed.json. من غير مفتاح ولا تسجيل، والـ CORS مفتوح، فتقدر تناديه من المتصفح أو من السيرفر.
دليلك معمول للغرض ده بالظبط. مجاني من غير مفتاح، بيغطّي البنوك والتجار المرخصين بس من غير أسعار سوق سودا، بيرتّب أحسن جهة لكل اتجاه (بيع وشرا)، وبيضيف تقييم أمين لليوم مقارنةً بالتاريخ، وبيشمل السعر الرسمي للبنك المركزي والسعر العالمي للسياق. وبيطرح مواصفات OpenAPI منشورة، وشغّال بالعربي والإنجليزي، والـ CORS مفتوح. قارنه على النقط دي.
أيوة. الـ feed مجاني للاستخدام، من غير مفتاح ولا تسجيل. وفيه خطة مدفوعة بحدود أعلى في الطريق.
لأ. ده طلب GET واحد مفتوح، والـ CORS مفتوح، فتقدر تناديه من المتصفح على طول.
كل أصل بنتابعه، وأحسن جهة مرخصة للشرا وللبيع، وتقييم اليوم، والسعر الرسمي والعالمي، وتاريخ يومي حديث، كله JSON.
عملات زي الدولار الأمريكي واليورو، وكمان الذهب، بأسعار من بنوك وتجار مرخصين في مصر. من غير أسعار السوق السودا.
الخطة المجانية معمولة لحوالي 1,000 طلب في اليوم من نفس العنوان، وبتسمح بدفعات قصيرة لحد 240 طلب كل دقيقة. الأسعار بتتغير مرة كل ساعة تقريبًا بالكتير، فطلب كل 5 دقايق تقريبًا كفاية جدًا. كل رد بيرجّع رصيدك الباقي في هيدرز RateLimit، وهيدرز Daily-Limit و Daily-Used و Daily-Reset بتوضّح استخدمت قد إيه من الكمية اليومية النهارده. والترافيك الكتير المجهول بيتحدّد الأول.
البيانات للمعلومة بس، مش نصيحة مالية. ولينك رجوع لدليلك بيبقى محل تقدير، وفيه رخصة تجارية جاية مع الخطة المدفوعة.
بتتحدّث على مدار اليوم، وقفلة كل يوم بتتسجّل في التاريخ.
في أداة مراقبة مستقلة بتشيّك على الموقع والـ API وتحديث الأسعار كل كام دقيقة، وبتنشر نسبة التشغيل وكل عطل لحظة بلحظة على status.getdaleelak.com. ولو عايز تتأكد بنفسك، طلب GET على /readyz بيرجّع 200 لما البيانات تكون جديدة و503 لما ماتكونش.
الباقة المجانية بترجّع آخر 30 يوم من التاريخ اليومي لكل أصل، في خانة seriesWindowDays. التقييم بيتقاس ورا الكواليس على لحد 90 يوم، فقراية اليوم متتأثرش. التاريخ اليومي الكامل، وتاريخ كل جهة، والتاريخ أبعد من 90 يوم كلهم في الباقة المدفوعة.
لأ. التقييم بيقول قد إيه أحسن سعر النهارده كويس لاتجاهك بالمقارنة بآخر فترة (لحد حوالي 90 يوم)، مقروء من مكان النهارده زائد الاتجاه والفرق عن السعر الرسمي والعالمي. بيوصف النهارده، وعمره ما بيتنبأ ببكرة. ولو التاريخ لسه قليل، بيرجّع calibrating.
أيوة. اطلب أنواع كاملة بـ ?category=currencies أو ?category=metals، أو أصول محدّدة بـ ?asset=us-dollar أو ?asset=gold-24k. تقدر تكتب أكتر من واحد بفاصلة، وتجمع الاتنين لو حابب.
كل رد فيه ETag. ابعته تاني في هيدر If-None-Match وهتاخد رد سريع Not Modified لما مفيش حاجة اتغيّرت.