تصفّح التوثيق كاملًا

مرجع funds API للصناديق

الأسعار وصافي قيمة الأصول (NAV) والسجل التاريخي والتوزيعات لصناديق ETF وصناديق الاستثمار المشتركة

نظرة عامة

الأسعار وسجل الأسعار والتوزيعات والملفات التعريفية والبحث لصناديق ETF والصناديق المشتركة. يتطلب كل طلب مفتاح Bearer، ويخصم REST وMCP من رصيد واحد.

معرّف صندوق ETF هو معرّف رمزه المُدرج، مثل ARCX:SPY. ومعرّف صندوق الاستثمار المشترك هو FUND ثم نقطتان رأسيتان ثم رمز التداول، مثل FUND:VFIAX. ويصلح أيضًا رمز تداول أمريكي مجرد مثل SPY إذا كان يشير إلى رمز مُدرج أمريكي واحد. معرّف سهم على مسار الصناديق يعيد 404 not_found، ومعرّف صندوق على مسار الأسهم يُحوَّل إلى هنا برمز 301.

لصندوق ETF سعر. أما صندوق الاستثمار المشترك فله صافي قيمة أصول (NAV) مرة واحدة في اليوم، في الحقول nav وprevious_nav وdate. وتحمل إجابة السعر حقل type يبيّن لك أيهما حصلت عليه.

عنوان URL الأساسي: https://api.narwhalapi.com. أداة MCP هي funds, with one action لكل مسار أدناه.

ما يحصل عليه كل حساب

ماكل حساب
آخر سعر لصندوق ETFمباشر
صافي قيمة أصول صندوق الاستثمار المشترك (NAV)آخر صافي قيمة أصول (NAV)
الشموع اليومية والتوزيعات السابقةالسجل التاريخي الكامل
شموع الدقيقة الواحدة (لصناديق ETF فقط)مشمول
البحث والملف التعريفيمشمول

راجع التسعير لمعرفة تكلفة الاستدعاء. يُحاسَب الطلب بسعر واجهته ما لم يذكر المسار خلاف ذلك.

  • صافي قيمة أصول صندوق الاستثمار المشترك قيمة نهاية اليوم ولا يتأخر أبدًا. ويُعدّ قديمًا (stale) إذا تجاوز عمره يوم العمل التالي.
  • لا توجد لصندوق الاستثمار المشترك شموع بدقيقة واحدة. وطلبها يعيد 400 invalid_interval.
  • شمعة صندوق الاستثمار المشترك اليومية هي صافي قيمة أصوله (NAV): الافتتاح والأعلى والأدنى والإغلاق رقم واحد، ولا يوجد حجم تداول.
  • يُحذف الحقل kind من التوزيع إلى أن تقدّمه مصادرنا.

نقاط النهاية

كل مسار هو طلب GET ويحتاج إلى مفتاحك في: Authorization: Bearer الترويسة. تعرض الأمثلة شكل الاستجابة، وليست بيانات مباشرة.

ملف تعريف صندوق واحد

GET /v1/funds/{id}

رمز الصندوق واسمه ونوعه (etf أو mutual_fund) وبورصته (لصناديق ETF فقط) وبلده وعملته، كما تحتفظ بها قائمة الرموز لدينا. متاح لكل حساب. تُحذف الحقول غير المعروفة.

MCP: الأداة funds, action profile.

المعلمات

معلمةالموضعمطلوبالنوعالمعنى
idمسارنعمسلسلة نصيةمعرّف الصندوق. صندوق ETF معرّفه هو معرّف رمزه المُدرج: رمز البورصة المكوّن من أربعة أحرف ثم نقطتان رأسيتان ثم رمز التداول (ARCX:SPY). وصندوق الاستثمار المشترك معرّفه FUND ثم نقطتان رأسيتان ثم رمز تداوله (FUND:VFIAX). ويصلح أيضًا رمز تداول أمريكي مجرد مثل SPY إذا كان يشير إلى رمز مُدرج أمريكي واحد؛ وتحمل الإجابة المعرّف القياسي.

حقول الاستجابة

حقلالنوعيُرسلالمعنى
idسلسلة نصيةدائمًامعرّف الصندوق القياسي.
symbolسلسلة نصيةدائمًارمز تداول الصندوق.
nameسلسلة نصيةدائمًاالاسم كما تحتفظ به قائمة الرموز لدينا.
typeإحدى القيم: etf, mutual_fundدائمًانوع الأداة.
micسلسلة نصيةاختياريرمز البورصة المكوّن من أربعة أحرف. يُحذف لصندوق الاستثمار المشترك (لا بورصة له).
countryسلسلة نصيةاختياريبلد الصندوق، بثلاثة أحرف.
currencyسلسلة نصيةدائمًاعملة الأسعار.
طلب
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/funds/ARCX:SPY"
استجابة نموذجية
{
  "id": "ARCX:SPY",
  "symbol": "SPY",
  "name": "SPDR S&P 500 ETF Trust",
  "type": "etf",
  "mic": "ARCX",
  "country": "USA",
  "currency": "USD"
}

آخر سعر لصندوق واحد

GET /v1/funds/{id}/price

آخر سعر لصندوق ETF بشكل سعر السهم مضافًا إليه type: etf، أو آخر صافي قيمة أصول (NAV) لصندوق استثمار مشترك (type: mutual_fund: الحقول nav وprevious_nav وchange وchange_percent وdate الخاص بصافي القيمة؛ وهي قيمة نهاية اليوم ولا تتأخر أبدًا، وتصبح stale إذا تجاوز عمرها يوم العمل التالي). change_percent بالنسبة المئوية. معرّف السهم يعيد 404 not_found.

MCP: الأداة funds, action price.

المعلمات

معلمةالموضعمطلوبالنوعالمعنى
idمسارنعمسلسلة نصيةمعرّف الصندوق. صندوق ETF معرّفه هو معرّف رمزه المُدرج: رمز البورصة المكوّن من أربعة أحرف ثم نقطتان رأسيتان ثم رمز التداول (ARCX:SPY). وصندوق الاستثمار المشترك معرّفه FUND ثم نقطتان رأسيتان ثم رمز تداوله (FUND:VFIAX). ويصلح أيضًا رمز تداول أمريكي مجرد مثل SPY إذا كان يشير إلى رمز مُدرج أمريكي واحد؛ وتحمل الإجابة المعرّف القياسي.

حقول الاستجابة

حقلالنوعيُرسلالمعنى
idسلسلة نصيةدائمًامعرّف الرمز المُدرج المعتمد.
symbolسلسلة نصيةدائمًارمز التداول في تلك البورصة.
currencyسلسلة نصيةدائمًاعملة كل حقول الأسعار. يُحوَّل البنس إلى جنيه.
priceسلسلة نصيةاختياريآخر سعر، بوحدة currency.
previous_closeسلسلة نصيةاختياريإغلاق الجلسة السابقة. يُحذف عند عدم معرفته.
changeسلسلة نصيةاختياريprice ناقص previous_close. يُحذف مع previous_close.
change_percentسلسلة نصيةاختياريالتغير منذ previous_close، بالنسبة المئوية (1.5 تعني 1.5%).
volumeسلسلة نصيةاختياريعدد الأسهم المتداولة اليوم. يُحذف عند عدم معرفته، ويُحذف دائمًا في الاستجابة المتأخرة.
market_sessionإحدى القيم: pre, open, post, closedاختياريحالة بورصة الرمز المُدرج عند timestamp: pre أو open أو post أو closed. البورصات الأمريكية وحدها لها pre وpost.
timestampتاريخ ووقتاختياريوقت صلاحية السعر (بالتوقيت العالمي UTC، بالثواني الكاملة).
staleمنطقيدائمًاتكون القيمة true عندما يكون السعر أقدم من 15 دقيقة أثناء فتح البورصة، أو عندما تعذر تحديثه. السوق المغلق لا يُعد قديمًا أبدًا.
delayedدائمًا trueاختياريلا يُرسل: الأسعار فورية لكل حساب.
typeإحدى القيم: etf, mutual_fundدائمًاetf لصندوق ETF، وmutual_fund لصندوق استثمار مشترك.
navسلسلة نصيةاختياريصافي قيمة الأصول للوحدة الواحدة، بعملة currency.
previous_navسلسلة نصيةاختياريصافي قيمة الأصول لليوم السابق. يُحذف إذا لم يكن معروفًا.
dateالتاريخاختيارياليوم الذي يخصه صافي قيمة الأصول (YYYY-MM-DD).
طلب
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/funds/ARCX:SPY/price"
استجابة نموذجية
{
  "id": "ARCX:SPY",
  "symbol": "SPY",
  "currency": "USD",
  "price": "578.12",
  "previous_close": "576.40",
  "change": "1.72",
  "change_percent": "0.30",
  "volume": "61230500",
  "market_session": "open",
  "timestamp": "2026-10-26T15:42:00Z",
  "stale": false,
  "type": "etf"
}

آخر أسعار حتى 50 صندوقًا

GET /v1/funds/prices

آخر سعر لكل صندوق مذكور: آخر سعر لصندوق ETF أو آخر صافي قيمة أصول (NAV) لصندوق استثمار مشترك. يُحتسب استدعاء واحد لكل معرّف يعيد سعرًا، ويُخصم في خطوة واحدة: إذا لم يكفِ رصيدك لتغطية المعرّفات التي تم حلّها، يُرفض الطلب كله مع 402 insufficient_credits. المعرّفات التي لا تعيد سعرًا تُدرج في errors ولا تُكلّف شيئًا. change_percent بالنسبة المئوية.

أرسل حتى 50 معرّفًا، من صناديق ETF وصناديق الاستثمار المشتركة معًا. تُحاسَب الدفعة في خطوة واحدة: إذا لم يكفِ رصيدك لتغطية المعرّفات التي يتم حلّها، يعيد الطلب كله 402 insufficient_credits.

MCP: الأداة funds, action prices.

المعلمات

معلمةالموضعمطلوبالنوعالمعنى
idsاستعلامنعمسلسلة نصيةمعرّفات صناديق مفصولة بفواصل، بحد أقصى 50 بعد حذف المكرر. يخضع كل معرّف لقواعد مسار السعر الواحد نفسها. يُحتسب استدعاء واحد لكل معرّف يعيد سعرًا.

حقول الاستجابة

حقلالنوعيُرسلالمعنى
pricesقائمة كائناتدائمًاسعر واحد لكل معرّف تم حله، مفهرسًا بالمعرّف.
prices[].idسلسلة نصيةدائمًامعرّف الرمز المُدرج المعتمد.
prices[].symbolسلسلة نصيةدائمًارمز التداول في تلك البورصة.
prices[].currencyسلسلة نصيةدائمًاعملة كل حقول الأسعار. يُحوَّل البنس إلى جنيه.
prices[].priceسلسلة نصيةاختياريآخر سعر، بوحدة currency.
prices[].previous_closeسلسلة نصيةاختياريإغلاق الجلسة السابقة. يُحذف عند عدم معرفته.
prices[].changeسلسلة نصيةاختياريprice ناقص previous_close. يُحذف مع previous_close.
prices[].change_percentسلسلة نصيةاختياريالتغير منذ previous_close، بالنسبة المئوية (1.5 تعني 1.5%).
prices[].volumeسلسلة نصيةاختياريعدد الأسهم المتداولة اليوم. يُحذف عند عدم معرفته، ويُحذف دائمًا في الاستجابة المتأخرة.
prices[].market_sessionإحدى القيم: pre, open, post, closedاختياريحالة بورصة الرمز المُدرج عند timestamp: pre أو open أو post أو closed. البورصات الأمريكية وحدها لها pre وpost.
prices[].timestampتاريخ ووقتاختياريوقت صلاحية السعر (بالتوقيت العالمي UTC، بالثواني الكاملة).
prices[].staleمنطقيدائمًاتكون القيمة true عندما يكون السعر أقدم من 15 دقيقة أثناء فتح البورصة، أو عندما تعذر تحديثه. السوق المغلق لا يُعد قديمًا أبدًا.
prices[].delayedدائمًا trueاختياريلا يُرسل: الأسعار فورية لكل حساب.
prices[].typeإحدى القيم: etf, mutual_fundدائمًاetf لصندوق ETF، وmutual_fund لصندوق استثمار مشترك.
prices[].navسلسلة نصيةاختياريصافي قيمة الأصول للوحدة الواحدة، بعملة currency.
prices[].previous_navسلسلة نصيةاختياريصافي قيمة الأصول لليوم السابق. يُحذف إذا لم يكن معروفًا.
prices[].dateالتاريخاختيارياليوم الذي يخصه صافي قيمة الأصول (YYYY-MM-DD).
errorsقائمة كائناتدائمًاالمعرّفات التي لم تعد سعرًا. لا تُحتسب عليها رسوم.
errors[].idسلسلة نصيةدائمًاالمعرّف كما طُلب.
errors[].codeإحدى القيم: not_found, not_covered, upstream_busyدائمًاnot_found: لا يوجد رمز مُدرج بهذا المعرّف. not_covered: لا أسعار لهذه البورصة بعد. upstream_busy: تعذر جلب السعر الآن، فأعد المحاولة بعد قليل.
طلب
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/funds/prices?ids=ARCX:SPY,FUND:VFIAX"
استجابة نموذجية
{
  "prices": [
    {
      "id": "ARCX:SPY",
      "symbol": "SPY",
      "currency": "USD",
      "price": "578.12",
      "previous_close": "576.40",
      "change": "1.72",
      "change_percent": "0.30",
      "volume": "61230500",
      "market_session": "open",
      "timestamp": "2026-10-26T15:42:00Z",
      "stale": false,
      "type": "etf"
    },
    {
      "id": "FUND:VFIAX",
      "symbol": "VFIAX",
      "currency": "USD",
      "type": "mutual_fund",
      "nav": "551.07",
      "previous_nav": "549.80",
      "change": "1.27",
      "change_percent": "0.23",
      "date": "2026-10-23",
      "stale": false
    }
  ],
  "errors": [
    {
      "id": "FUND:NOPE",
      "code": "not_found"
    }
  ]
}

شموع أسعار صندوق واحد

GET /v1/funds/{id}/bars

شموع يومية (1d) أو بدقيقة واحدة (1m)، الأقدم أولًا، بشكل شموع الأسهم. الشمعة اليومية لصندوق الاستثمار المشترك هي صافي قيمة أصوله اليومي (الافتتاح والأعلى والأدنى والإغلاق كلها صافي القيمة، بلا حجم تداول)؛ ولا توجد له شموع بدقيقة واحدة (400 invalid_interval). شموع الدقيقة الواحدة لصناديق ETF فقط. السجل التاريخي: كامله، لكل حساب. حتى 5,000 شمعة في الصفحة، مع next_cursor؛ والمؤشر الذي لم يعد يطابق الأسعار يعيد 409 cursor_expired. استدعاء واحد لكل صفحة.

إذا غيّر تجزئة أو توزيع السجل التاريخي بين صفحتين، يتوقف المؤشر عن العمل ويعيد 409 cursor_expired.

MCP: الأداة funds, action bars.

المعلمات

معلمةالموضعمطلوبالنوعالمعنى
idمسارنعمسلسلة نصيةمعرّف الصندوق. صندوق ETF معرّفه هو معرّف رمزه المُدرج: رمز البورصة المكوّن من أربعة أحرف ثم نقطتان رأسيتان ثم رمز التداول (ARCX:SPY). وصندوق الاستثمار المشترك معرّفه FUND ثم نقطتان رأسيتان ثم رمز تداوله (FUND:VFIAX). ويصلح أيضًا رمز تداول أمريكي مجرد مثل SPY إذا كان يشير إلى رمز مُدرج أمريكي واحد؛ وتحمل الإجابة المعرّف القياسي.
intervalاستعلاملاإحدى القيم: 1d, 1m1d (شمعة واحدة لكل جلسة؛ وشمعة صندوق الاستثمار المشترك هي صافي قيمة أصوله اليومي) أو 1m (شموع الدقيقة الواحدة: لصناديق ETF فقط). أي قيمة أخرى تعيد 400 invalid_interval.
startاستعلاملاسلسلة نصيةأول شمعة. 1d: تاريخ (YYYY-MM-DD)، شاملًا؛ وحذفه يعني أقدم شمعة متاحة. 1m: وقت بتوقيت UTC (YYYY-MM-DDTHH:MM:SSZ، أو تاريخ للدلالة على 00:00 UTC)، شاملًا؛ وحذفه يعني يومًا واحدًا قبل end.
endاستعلاملاسلسلة نصيةآخر شمعة. 1d: تاريخ، شاملًا؛ وحذفه يعني أحدث جلسة صدرت شمعتها. 1m: وقت بتوقيت UTC، غير شامل؛ وحذفه يعني الآن، أو بعد خمسة أيام من start. الحد الأقصى 5 أيام بين start وend للقيمة 1m (400 range_too_large).
cursorاستعلاملاسلسلة نصيةقيمة next_cursor من الصفحة السابقة، مع المعاملات الأخرى نفسها. يتوقف المؤشر عن العمل عندما تتغير الأسعار التي يستند إليها (تجزئة أو توزيعة): 409 cursor_expired.

حقول الاستجابة

حقلالنوعيُرسلالمعنى
idسلسلة نصيةدائمًامعرّف الرمز المُدرج المعتمد.
currencyسلسلة نصيةدائمًاعملة كل سعر. يتحول البنس إلى جنيه.
adjustedمنطقيدائمًادائمًا true: الأسعار معدّلة لتجزئات الأسهم والتوزيعات. تتفق الصفحة والتي تليها دائمًا؛ وإذا غيّرت تجزئة أو توزيعة السجل بين صفحتين، يتوقف المؤشر عن العمل (409 cursor_expired) بدلًا من خلط الاثنتين.
startسلسلة نصيةاختياريلا يُرسل أبدًا: لا يُنقل start.
endسلسلة نصيةاختياريلا يُرسل أبدًا: لا تُقتطع الشموع اليومية.
barsقائمة كائناتدائمًا5,000 شمعة في الصفحة كحد أقصى.
bars[].dateسلسلة نصيةاختياريتاريخ الجلسة (YYYY-MM-DD). للشموع اليومية فقط؛ ويُحذف في شموع الدقيقة الواحدة.
bars[].timestampتاريخ ووقتدائمًابداية فترة الشمعة (UTC): افتتاح البورصة للشمعة اليومية، والدقيقة لشمعة الدقيقة الواحدة.
bars[].openسلسلة نصيةدائمًاأول سعر في الفترة.
bars[].highسلسلة نصيةدائمًاأعلى سعر في الفترة.
bars[].lowسلسلة نصيةدائمًاأدنى سعر في الفترة.
bars[].closeسلسلة نصيةدائمًاآخر سعر في الفترة.
bars[].volumeسلسلة نصيةاختياريعدد الأسهم المتداولة في الفترة. يُحذف عند عدم معرفته.
next_cursorسلسلة نصيةدائمًاأعد إرساله لقراءة الصفحة التالية. تكون قيمته null في الصفحة الأخيرة.
طلب
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/funds/ARCX:SPY/bars?interval=1d&start=2026-10-01"
استجابة نموذجية
{
  "id": "ARCX:SPY",
  "currency": "USD",
  "adjusted": true,
  "bars": [
    {
      "date": "2026-10-23",
      "timestamp": "2026-10-23T13:30:00Z",
      "open": "575.10",
      "high": "577.60",
      "low": "573.90",
      "close": "576.40",
      "volume": "48210300"
    }
  ],
  "next_cursor": null
}

توزيعات صندوق واحد

GET /v1/funds/{id}/distributions

توزيعات صندوق واحد، الأحدث تاريخ استحقاق أولًا، على صفحات. يحصل كل حساب على السجل الكامل. كل طلب يُحتسب استدعاءً واحدًا. المعرّف غير المعروف يعيد 404 not_found.

MCP: الأداة funds, action distributions.

المعلمات

معلمةالموضعمطلوبالنوعالمعنى
idمسارنعمسلسلة نصيةمعرّف الصندوق. صندوق ETF معرّفه هو معرّف رمزه المُدرج: رمز البورصة المكوّن من أربعة أحرف ثم نقطتان رأسيتان ثم رمز التداول (ARCX:SPY). وصندوق الاستثمار المشترك معرّفه FUND ثم نقطتان رأسيتان ثم رمز تداوله (FUND:VFIAX). ويصلح أيضًا رمز تداول أمريكي مجرد مثل SPY إذا كان يشير إلى رمز مُدرج أمريكي واحد؛ وتحمل الإجابة المعرّف القياسي.
cursorاستعلاملاسلسلة نصيةقيمة next_cursor من الصفحة السابقة، مع المعاملات الأخرى نفسها.

حقول الاستجابة

حقلالنوعيُرسلالمعنى
idسلسلة نصيةدائمًامعرّف الصندوق القياسي.
startالتاريخاختياريلا يُرسل أبدًا: يحصل كل حساب على السجل الكامل.
distributionsقائمة كائناتدائمًاالأحدث تاريخ استحقاق أولًا.
distributions[].ex_dateالتاريخدائمًاأول يوم يُتداول فيه الصندوق دون التوزيع.
distributions[].amountسلسلة نصيةدائمًاالتوزيع للوحدة الواحدة، بعملة currency.
distributions[].currencyسلسلة نصيةدائمًاعملة amount.
distributions[].pay_dateالتاريخاختيارييوم الدفع. يُحذف عند عدم معرفته.
distributions[].record_dateالتاريخاختيارياليوم الذي يجب أن يكون فيه المالك مسجلًا. يُحذف عند عدم معرفته.
distributions[].kindإحدى القيم: income, capital_gainاختيارينوع التوزيع. يُحذف حيث لا يذكره المصدر.
next_cursorسلسلة نصيةدائمًامرّره كقيمة cursor للصفحة التالية؛ وتكون قيمته null في الصفحة الأخيرة.
طلب
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/funds/ARCX:SPY/distributions"
استجابة نموذجية
{
  "id": "ARCX:SPY",
  "distributions": [
    {
      "ex_date": "2026-09-18",
      "amount": "1.78",
      "currency": "USD",
      "pay_date": "2026-10-30",
      "record_date": "2026-09-18"
    }
  ],
  "next_cursor": null
}

الأخطاء

تستخدم الأخطاء بنية المشكلة المشتركة مع: request_id. راجع أخطاء API والرصيد لمعرفة الشكل وترويسات الرصيد. لا تُحاسَب الطلبات الفاشلة.

الرمزالحالةالمعنى
invalid_query400معامل مفقود أو غير معروف أو مكرر أو خارج نطاقه.
invalid_id400معرّف أو زوج غير مكتوب بالصيغة التي تتوقعها هذه الواجهة.
too_many_ids400تحتوي الدفعة على أكثر من 50 معرّفًا.
invalid_interval400الفاصل الزمني ليس 1d ولا 1m، أو غير متاح لهذه الأداة.
range_too_large400النافذة أطول مما يسمح به المسار.
not_found404لا يوجد رمز مُدرج أو صندوق أو زوج بهذا المعرّف.
invalid_cursor400مؤشر الصفحة هذا لم يُعده هذا الطلب، أو أنه من طلب مختلف.
cursor_expired409تغيرت الأسعار التي يقوم عليها المؤشر. ابدأ من جديد دون المؤشر.
insufficient_credits402رصيدك أقل من تكلفة الطلب.
upstream_busy503تعذّر جلب السعر الآن. وفي الدفعة يُدرج في errors. حاول مجددًا بعد قليل.
area_unavailable503هذا القسم لا يستطيع الإجابة الآن.

هل كانت هذه الصفحة مفيدة؟