فاندای

برای توسعه‌دهنده‌ها و تحلیلگرها

API داده‌ی بازار سرمایه‌ی ایران، مستقیم در برنامه‌ی شما

همان داده‌ای که فاندای با آن کار می‌کند، از صورت‌های مالی کدال و معاملات روزانه تا فروش ماهانه و بورس کالا، با یک API در دسترس شماست. اعتبار فقط برای درخواست‌هایی کم می‌شود که پاسخ درست گرفته‌اند.

فقط برای استفاده‌ی غیرتجاری. API برای کار، پژوهش و برنامه‌های خودتان است. برای استفاده‌ی تجاری، لطفاً از صفحه‌ی همکاری سازمانی درخواست رسمی بفرستید.

همه‌ی مسیرها زیر این آدرس‌اند و پاسخ‌ها JSON است: https://fundai.ir/api/data/v1

شروع سریع

  1. کلید بسازید و ۱۰۰ اعتبار هدیه بگیرید: در بخش API پروفایل یک کلید بسازید. اگر شماره‌ی موبایل حسابتان تأیید شده باشد، با ساخت اولین کلید ۱۰۰ اعتبار هدیه به حساب شما افزوده می‌شود تا پیش از خرید، API را با داده‌ی واقعی امتحان کنید. کلید تنها یک بار نمایش داده می‌شود، پس همان لحظه آن را در جایی امن روی سرور خود ذخیره کنید.
  2. اولین درخواست را بفرستید: برای آزمودن اتصال، از مسیر /me/ شروع کنید؛ این درخواست رایگان است و نشان می‌دهد کلید به‌درستی کار می‌کند و چقدر اعتبار دارید. پس از آن می‌توانید سراغ داده‌ای بروید که به آن نیاز دارید.
  3. هر وقت لازم شد، اعتبار بخرید: وقتی اعتبار هدیه تمام شد، از صفحه‌ی تعرفه‌ها به هر میزان که نیاز دارید اعتبار تهیه کنید. اعتبار تاریخ انقضا ندارد و تا زمانی که مصرف نشود در حساب شما باقی می‌ماند.

احراز هویت

هر درخواست باید کلید شما را در هدر Authorization: Bearer همراه داشته باشد. اگر ابزاری که با آن کار می‌کنید این هدر را نمی‌پذیرد، می‌توانید کلید را در هدر X-API-Key بفرستید.

کلید را تنها از سمت سرور ارسال کنید. درخواست‌هایی که از مرورگر فرستاده شوند پذیرفته نمی‌شوند، زیرا کلیدی که در صفحه‌ی وب قرار بگیرد برای هر بیننده‌ای قابل مشاهده است.

اعتبار و قیمت

قیمت هر داده برای تعداد مشخصی ردیف تعیین شده است؛ برای معاملات روزانه هر ۳۰ ردیف و برای بقیه‌ی داده‌ها هر ۲۰ ردیف. اگر پاسخی ردیف‌های بیشتری داشته باشد، برای هر دسته‌ی بعدی همان قیمت دوباره محاسبه می‌شود؛ برای نمونه، ۲۱ تا ۴۰ ردیف از فیلتر دو برابر قیمت پایه دارد. هر صفحه به‌طور پیش‌فرض یک دسته است، بنابراین اگر limit را تعیین نکنید، قیمت تنها یک بار کسر می‌شود. مبلغ دقیق هر درخواست نیز در هدر X-Credits-Charged همان پاسخ آمده است.

قیمت هر داده
دادهمسیرنوعسقف هر صفحهقیمت هر درخواست موفق
فهرست شرکت‌هاGET /companies/فهرست پایه۱٬۰۰۰ ردیف۱ اعتبار برای هر ۱٬۰۰۰ ردیف
یک شرکتGET /companies/{company}/فهرست پایه۱ ردیف۱ اعتبار
فهرست صنعت‌هاGET /industries/فهرست پایه۵۰۰ ردیف۱ اعتبار برای هر ۵۰۰ ردیف
معاملات روزانهGET /companies/{company}/prices/خام۱٬۰۰۰ ردیف۳ اعتبار برای هر ۳۰ ردیف
صورت‌های مالیGET /companies/{company}/statements/خام۲٬۰۰۰ ردیف۱۰ اعتبار برای هر ۲۰ ردیف
چهار فصل اخیرGET /companies/{company}/statements/ttm/پردازش‌شده۱٬۰۰۰ ردیف۱۵ اعتبار برای هر ۲۰ ردیف
نسبت‌های مالیGET /companies/{company}/ratios/پردازش‌شده۱٬۰۰۰ ردیف۱۵ اعتبار برای هر ۲۰ ردیف
اجرای فیلترPOST /screener/پردازش‌شده۲۰۰ ردیف۲۵ اعتبار برای هر ۲۰ ردیف
فروش و تولیدGET /companies/{company}/sales/پردازش‌شده۲٬۰۰۰ ردیف۱۵ اعتبار برای هر ۲۰ ردیف
فروش و تولید، داده‌ی خام کدالGET /companies/{company}/sales/raw/خام۲٬۰۰۰ ردیف۱۰ اعتبار برای هر ۲۰ ردیف
معاملات بورس کالاGET /companies/{company}/commodity-trades/خام۲٬۰۰۰ ردیف۱۰ اعتبار برای هر ۲۰ ردیف
سود نقدیGET /companies/{company}/dividends/پردازش‌شده۱۰۰ ردیف۱۵ اعتبار برای هر ۲۰ ردیف
گزارش‌های کدالGET /companies/{company}/letters/خام۵۰۰ ردیف۱۰ اعتبار برای هر ۲۰ ردیف
پرتفوی صندوق‌ها و شرکت‌های سرمایه‌گذاریGET /companies/{company}/portfolio/پردازش‌شده۱٬۰۰۰ ردیف۲۰ اعتبار برای هر ۲۰ ردیف
تخفیف خرید بیشتر
خریدتخفیف
از ۱۰٬۰۰۰ اعتبار۱۰٪
از ۵۰٬۰۰۰ اعتبار۲۰٪
از ۱۰۰٬۰۰۰ اعتبار۳۰٪

با ساختن اولین کلید، ۱۰۰ اعتبار آزمایشی هدیه می‌گیرید تا پیش از خرید، API را امتحان کنید. این هدیه یک بار و برای حسابی است که شماره‌ی موبایلش تأیید شده.

چه درخواست‌هایی رایگان است

هدرهای هر پاسخ
هدرتوضیح
X-Request-Idبرای پیگیری یک درخواست، این شناسه را به پشتیبانی بدهید.
X-Credits-Chargedاعتباری که همین درخواست کم کرد (برای درخواست رایگان صفر).
X-Credits-Remainingاعتبار باقی‌مانده بعد از این درخواست.
X-Credits-Costقیمت این داده برای هر `X-Credits-Per-Rows` ردیف.
X-Credits-Per-Rowsتعداد ردیفی که یک بار قیمت می‌خرد: هر بلوکِ شروع‌شده یک بار حساب می‌شود.
X-RateLimit-Limitتعداد درخواست مجاز در این دقیقه.
X-RateLimit-Remainingدرخواست باقی‌مانده در این دقیقه.
X-RateLimit-Resetثانیه تا شروع دقیقه‌ی بعد.
X-Replayedوقتی پاسخ از تکرار رایگان یا Idempotency-Key آمده باشد `true` است.
X-Sandboxروی هر پاسخ به کلید آزمایشی (`fai-test_`) `true` است: داده‌ی نمونه، بدون هزینه.
ETagپس از مدت تکرار رایگان، آن را در If-None-Match برگردانید؛ اگر پاسخ عوض نشده باشد ۳۰۴ رایگان می‌گیرید. در همان مدت، تکرار درخواست خودش یک ۲۰۰ رایگان با `X-Replayed: true` است.

سقف درخواست

سطح‌های استفاده و سقف هر سطح
سطحاعتبار مصرف‌شدهدرخواست در دقیقهدرخواست در روزدرخواست هم‌زمان
۱۰۳۰۱٬۰۰۰۲
۲۲٬۰۰۰۶۰۵٬۰۰۰۳
۳۱۰٬۰۰۰۱۲۰۲۰٬۰۰۰۴
۴۵۰٬۰۰۰۲۴۰۵۰٬۰۰۰۶
۵۲۰۰٬۰۰۰۶۰۰۱۵۰٬۰۰۰۱۰

سقف درخواست هر حساب به سطح استفاده‌ی آن بستگی دارد. همه‌ی حساب‌ها از سطح ۱ آغاز می‌کنند و با استفاده‌ی بیشتر از API به سطح‌های بالاتر می‌رسند. ملاک این ارتقا اعتباری است که مصرف می‌کنید، نه اعتباری که می‌خرید، و سطح تازه حداکثر ده دقیقه بعد اعمال می‌شود. اگر از سقف عبور کنید، پاسخ ۴۲۹ دریافت می‌کنید که هزینه‌ای ندارد و هدر Retry-After مدت انتظار را به ثانیه اعلام می‌کند. بهتر است با استفاده از X-RateLimit-Remaining سرعت درخواست‌ها را تنظیم کنید تا اساساً به سقف نرسید.

قالب پاسخ

شکل پاسخ
فهرست‌ها به شکل {"data": [...], "next_cursor": ...} می‌آیند و یک مورد به شکل {"data": {...}}.
صفحه‌بندی
برای صفحه‌ی بعد، next_cursor را در پارامتر cursor بفرستید. وقتی null شد به آخر رسیده‌اید.
تاریخ
هر تاریخ دو بار می‌آید: date به میلادی و date_jalali به شمسی. در from و to هر کدام پذیرفته می‌شود.
واحد
واحد در نام فیلد است: close_rial یعنی ریال و value_million_rial یعنی میلیون ریال.
عدد نامعلوم
عددی که نداریم null است، نه صفر.
شناسه‌ی شرکت
در مسیرها، {company} هم slug شرکت را می‌پذیرد و هم نماد را.

خطاها

هر خطا به شکل {"detail": "..."} می‌آید و هزینه‌ای ندارد.

خطاهای API
وضعیتکد خطاتوضیح
۴۰۰validation-errorیکی از پارامترها اشتباه است و `errors` نامش را می‌گوید.
۴۰۰api-cursor-invalid`next_cursor` را همان‌طور که آمده برگردانید.
۴۰۰api-idempotency-key-invalid`Idempotency-Key` بیشتر از ۱۰۰ کاراکتر است.
۴۰۱api-key-missingکلید در `Authorization` یا `X-API-Key` فرستاده نشده است.
۴۰۱api-key-invalidکلید شناخته نشد، یا غیرفعال یا منقضی شده است.
۴۰۲insufficient-creditاعتبار برای این درخواست کافی نیست. چیزی کم نشد.
۴۰۳api-client-suspendedدسترسی API شما فعلاً بسته شده است.
۴۰۳api-origin-not-allowedدرخواست از مرورگری آمده که در فهرست مجاز شما نیست.
۴۰۳api-dataset-unavailableاین داده برای حساب شما باز نیست.
۴۰۴company-not-foundشرکتی با این شناسه یا نماد پیدا نشد.
۴۰۹api-idempotency-key-reusedاین `Idempotency-Key` برای درخواست دیگری به کار رفته است.
۴۰۹api-idempotency-in-progressدرخواست اول با همین `Idempotency-Key` هنوز تمام نشده است.
۴۰۳api-company-capسقف شرکت‌های این ماه پر شده است: شرکت تازه از ماه بعد (شمسی) باز می‌شود و شرکت‌هایی که این ماه خوانده‌اید باز می‌مانند. دسترسی بیشتر با قرارداد سازمانی است.
۴۰۳api-sandbox-needs-purchaseکلید آزمایشی بعد از اولین خرید اعتبار کار می‌کند؛ تا آن موقع API را با اعتبار هدیه امتحان کنید.
۴۲۹api-rate-limitedسقف دقیقه پر شد؛ به اندازه‌ی `Retry-After` صبر کنید.
۴۲۹api-daily-limitسقف روزانه پر شد؛ نیمه‌شب به وقت تهران دوباره باز می‌شود.
۴۲۹api-too-many-parallelدرخواست‌های هم‌زمان شما به سقف رسیده است.
۵۰۳api-busyکل API به سقفش رسیده؛ کمی بعد دوباره بفرستید.
۵۰۳api-pausedAPI برای به‌روزرسانی موقتاً متوقف است.

مرجع داده‌ها

هر داده با مسیر، قیمت، پارامترها، فیلدهای پاسخ و یک نمونه‌ی واقعی.

حساب

حساب شما

GET https://fundai.ir/api/data/v1/me/

قیمت: رایگان. نوع: رایگان.

اعتبار باقی‌مانده، درخواست‌های امروز و سقف‌هایتان. رایگان است و برای امتحان کلید اولین درخواست خوبی است.

فیلدهای پاسخ حساب شما
نامنوعواحدتوضیح
clientstringنام حساب شما.
keyobjectنام، شکل پوشیده و نوع کلیدی که با آن درخواست دادید؛ برای کلید آزمایشی sandbox برابر true است و سقف‌های زیر مال محیط آزمایشی است.
creditsintegerاعتباراعتبار باقی‌مانده.
used_todayintegerدرخواست‌هایی که امروز از سقف روزانه کم شده است.
limitsobjectسطح استفاده‌ی شما، سقف دقیقه، سقف روز، تعداد درخواست هم‌زمان، مدت تکرار رایگان، چند ساعتی که Idempotency-Key معتبر است و next_tier: اعتباری که تا سطح بعد باید مصرف شود، یا null در بالاترین سطح. سطح با مصرف اعتبار خودکار بالا می‌رود. night: ساعت‌های خلوت (به وقت تهران) که سقف دقیقه و درخواست هم‌زمان دو برابر می‌شود و اینکه الان در آن هستیم یا نه؛ عددهای بالا همین را حساب کرده‌اند.

نمونه‌ی پاسخ:

{
 "data": {
  "client": "user-0193…",
  "key": {
   "label": "server",
   "masked": "fai-api_••••••••Xk2Q",
   "sandbox": false
  },
  "credits": 4812,
  "used_today": 188,
  "limits": {
   "tier": 2,
   "per_minute": 60,
   "per_day": 5000,
   "concurrency": 4,
   "repeat_grace_seconds": 60,
   "idempotency_hours": 24,
   "next_tier": {
    "level": 3,
    "credits": 6400
   },
   "night": {
    "from": "00:00",
    "to": "07:00",
    "factor": 2,
    "active": false
   }
  }
 }
}

فهرست قیمت

GET https://fundai.ir/api/data/v1/datasets/

قیمت: رایگان. نوع: رایگان.

همه‌ی داده‌ها با قیمت فعلی، سقف صفحه و اینکه حساب شما به آن دسترسی دارد یا نه. رایگان است.

فیلدهای پاسخ فهرست قیمت
نامنوعواحدتوضیح
keystringشناسه‌ی داده.
groupstringگروه داده.
kindstringreference فهرست پایه، raw همان‌طور که منبع منتشر کرده، processed ساخته‌ی ما.
methodstringمتد HTTP.
pathstringمسیر زیر /api/data/v1.
costintegerاعتباراعتباری که درخواست موفق برای هر per_rows ردیف کم می‌کند.
per_rowsintegerتعداد ردیفی که یک بار cost می‌خرد؛ هر بلوکِ شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف از فیلتر دو برابر قیمت دارد.
max_limitintegerبیشترین limit که این داده می‌پذیرد.
availablebooleanاینکه حساب شما به آن دسترسی دارد.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "key": "prices",
   "group": "market",
   "kind": "raw",
   "method": "GET",
   "path": "/companies/{company}/prices/",
   "cost": 3,
   "per_rows": 30,
   "max_limit": 1000,
   "available": true
  }
 ]
}

مصرف شما

GET https://fundai.ir/api/data/v1/usage/

قیمت: رایگان. نوع: رایگان.

درخواست‌ها و اعتبار مصرف‌شده به تفکیک روز و داده، از تازه به قدیم. رایگان است.

پارامترهای مصرف شما
ناممحلنوعاجباری / پیش‌فرضتوضیح
daysکوئریintegerپیش‌فرض: 30چند روز گذشته، از ۱ تا ۹۰.
فیلدهای پاسخ مصرف شما
نامنوعواحدتوضیح
datedateروز، به وقت تهران.
datasetstringشناسه‌ی داده، برای درخواست رایگان null. ممکن است null باشد.
callsintegerتعداد درخواست.
charged_callsintegerدرخواست‌هایی که اعتبار کم کرد.
creditsintegerاعتباراعتبار مصرف‌شده.
errorsintegerدرخواست‌های ناموفق که هزینه‌ای نداشتند.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "date": "2026-11-07",
   "dataset": "prices",
   "calls": 412,
   "charged_calls": 398,
   "credits": 398,
   "errors": 3
  }
 ]
}

فهرست‌های پایه

فهرست شرکت‌ها

GET https://fundai.ir/api/data/v1/companies/

قیمت: ۱ اعتبار برای هر ۱٬۰۰۰ ردیف. نوع: فهرست پایه. سقف هر صفحه: ۱٬۰۰۰ ردیف.

همه‌ی شرکت‌های بورسی که پوشش می‌دهیم، با slug که بقیه‌ی مسیرها با آن کار می‌کنند.

پارامترهای فهرست شرکت‌ها
ناممحلنوعاجباری / پیش‌فرضتوضیح
industryکوئریstringاختیاریفقط شرکت‌های این صنعت (slug صنعت).
symbolکوئریstringاختیاریپیدا کردن یک نماد.
primaryکوئریbooleanپیش‌فرض: Trueنمادهای دوم همان شرکت (حق تقدم و تابلوی دیگر) را کنار می‌گذارد.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ فهرست شرکت‌ها
نامنوعواحدتوضیح
slugstringشناسه‌ی ثابت که در بقیه‌ی مسیرها به کار می‌رود.
symbolstringنماد معاملاتی به همان شکلی که سایت بورس می‌نویسد.
namestringنام شرکت.
name_enstringنام انگلیسی، اگر داشته باشیم. ممکن است null باشد.
ticker_enstringنماد لاتین، اگر داشته باشیم. ممکن است null باشد.
industryobjectصنعت شرکت به شکل {slug, name}. ممکن است null باشد.
tsetmc_idstringشناسه‌ی نماد در سایت tsetmc.com. ممکن است null باشد.
boardstringبازار و تابلوی معاملاتی به عبارت سایت بورس. ممکن است null باشد.
trading_statestringtrading یعنی باز و halted یعنی متوقف. ممکن است null باشد.
fiscal_year_endstringماه و روز پایان سال مالی به شمسی، به شکل MM-DD. ممکن است null باشد.
national_idstringشناسه‌ی ملی شرکت. ممکن است null باشد.
is_primary_listingbooleanبرای نماد دوم همان شرکت (حق تقدم یا تابلوی دیگر) false است.
updated_atdatetimeآخرین تغییر این ردیف به قالب ISO 8601. ممکن است null باشد.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "slug": "foulad",
   "symbol": "فولاد",
   "name": "فولاد مبارکه اصفهان",
   "name_en": "Mobarakeh Steel",
   "ticker_en": "FOLD",
   "industry": {
    "slug": "basic-metals",
    "name": "فلزات اساسی"
   },
   "tsetmc_id": "46348559193224090",
   "board": "بازار اول (تابلوی اصلی) بورس",
   "trading_state": "trading",
   "fiscal_year_end": "12-29",
   "national_id": "10260145720",
   "is_primary_listing": true,
   "updated_at": "2026-11-06T21:14:03+03:30"
  }
 ],
 "next_cursor": "WzEyXQ"
}

یک شرکت

GET https://fundai.ir/api/data/v1/companies/{company}/

قیمت: ۱ اعتبار. نوع: فهرست پایه. سقف هر صفحه: ۱ ردیف.

اطلاعات یک شرکت، به‌علاوه‌ی موضوع فعالیت، مدیرعامل، حسابرس و وب‌سایت.

پارامترهای یک شرکت
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
فیلدهای پاسخ یک شرکت
نامنوعواحدتوضیح
slugstringشناسه‌ی ثابت که در بقیه‌ی مسیرها به کار می‌رود.
symbolstringنماد معاملاتی به همان شکلی که سایت بورس می‌نویسد.
namestringنام شرکت.
name_enstringنام انگلیسی، اگر داشته باشیم. ممکن است null باشد.
ticker_enstringنماد لاتین، اگر داشته باشیم. ممکن است null باشد.
industryobjectصنعت شرکت به شکل {slug, name}. ممکن است null باشد.
tsetmc_idstringشناسه‌ی نماد در سایت tsetmc.com. ممکن است null باشد.
boardstringبازار و تابلوی معاملاتی به عبارت سایت بورس. ممکن است null باشد.
trading_statestringtrading یعنی باز و halted یعنی متوقف. ممکن است null باشد.
fiscal_year_endstringماه و روز پایان سال مالی به شمسی، به شکل MM-DD. ممکن است null باشد.
national_idstringشناسه‌ی ملی شرکت. ممکن است null باشد.
is_primary_listingbooleanبرای نماد دوم همان شرکت (حق تقدم یا تابلوی دیگر) false است.
updated_atdatetimeآخرین تغییر این ردیف به قالب ISO 8601. ممکن است null باشد.
activitystringموضوع فعالیت به همان شکل که ثبت شده. ممکن است null باشد.
ceostringمدیرعامل. ممکن است null باشد.
auditorstringحسابرس. ممکن است null باشد.
websitestringوب‌سایت. ممکن است null باشد.

نمونه‌ی پاسخ:

{
 "data": {
  "slug": "foulad",
  "symbol": "فولاد",
  "name": "فولاد مبارکه اصفهان",
  "activity": "تولید و فروش انواع محصولات فولادی",
  "ceo": "…",
  "auditor": "…",
  "website": "msc.ir"
 }
}

فهرست صنعت‌ها

GET https://fundai.ir/api/data/v1/industries/

قیمت: ۱ اعتبار برای هر ۵۰۰ ردیف. نوع: فهرست پایه. سقف هر صفحه: ۵۰۰ ردیف.

درخت صنعت‌ها در دو سطح.

پارامترهای فهرست صنعت‌ها
ناممحلنوعاجباری / پیش‌فرضتوضیح
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ فهرست صنعت‌ها
نامنوعواحدتوضیح
slugstringشناسه‌ی صنعت.
namestringنام صنعت.
name_enstringنام انگلیسی. ممکن است null باشد.
parentstringشناسه‌ی صنعت بالاتر، در سطح اول null. ممکن است null باشد.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "slug": "basic-metals",
   "name": "فلزات اساسی",
   "name_en": "Basic Metals",
   "parent": null
  }
 ],
 "next_cursor": null
}

بازار

معاملات روزانه

GET https://fundai.ir/api/data/v1/companies/{company}/prices/

قیمت: ۳ اعتبار برای هر ۳۰ ردیف. نوع: خام. سقف هر صفحه: ۱٬۰۰۰ ردیف.

برای هر روز معاملاتی یک ردیف، از تازه به قدیم، همان‌طور که سایت بورس منتشر کرده: قیمت، حجم، ارزش، ارزش بازار و تفکیک حقیقی و حقوقی. قیمت‌ها برای افزایش سرمایه و سود نقدی تعدیل نشده‌اند.

پارامترهای معاملات روزانه
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
fromکوئریdateاختیاریقدیمی‌ترین تاریخ، خودش هم حساب می‌شود. هم شمسی (1404-01-01) و هم میلادی (2025-03-21) پذیرفته می‌شود.
toکوئریdateاختیاریتازه‌ترین تاریخ، خودش هم حساب می‌شود، به هر دو تقویم.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ معاملات روزانه
نامنوعواحدتوضیح
datedateروز معاملاتی به وقت تهران.
date_jalalistringهمان روز به شمسی.
trading_statestringtrading باز، halted متوقف. ممکن است null باشد.
close_rialnumberریالقیمت پایانی.
last_rialnumberریالقیمت آخرین معامله.
previous_close_rialnumberریالقیمت پایانی روز قبل.
volumenumberسهمحجم معاملات.
value_rialnumberریالارزش معاملات.
tradesnumberتعداد معاملات.
market_cap_rialnumberریالارزش بازار: تعداد سهام ضرب در قیمت پایانی.
shares_outstandingnumberسهمتعداد سهام.
average_volume_30dnumberسهممیانگین حجم ۳۰ روز معاملاتی اخیر، با همین روز. ممکن است null باشد.
individual_buy_volumenumberسهمحجم خرید حقیقی.
individual_sell_volumenumberسهمحجم فروش حقیقی.
institutional_buy_volumenumberسهمحجم خرید حقوقی.
institutional_sell_volumenumberسهمحجم فروش حقوقی.
individual_buyersnumberتعداد خریداران حقیقی.
individual_sellersnumberتعداد فروشندگان حقیقی.
institutional_buyersnumberتعداد خریداران حقوقی.
institutional_sellersnumberتعداد فروشندگان حقوقی.
individual_buy_per_trader_rialnumberریالسرانه‌ی خرید حقیقی: قیمت پایانی ضرب در حجم خرید حقیقی، تقسیم بر تعداد خریداران حقیقی. ممکن است null باشد.
individual_sell_per_trader_rialnumberریالسرانه‌ی فروش حقیقی، به همان روش برای فروشندگان. ممکن است null باشد.
individual_buyer_powernumberنسبتقدرت خریدار حقیقی: سرانه‌ی خرید تقسیم بر سرانه‌ی فروش. ممکن است null باشد.
individual_net_flow_rialnumberریالخالص ورود پول حقیقی: قیمت پایانی ضرب در (حجم فروش حقوقی منهای حجم خرید حقوقی). عدد منفی یعنی خروج پول حقیقی.
  • فقط روزهایی که معامله داشته‌اند می‌آیند.
  • اگر یک طرف معامله‌گری نداشته باشد، سرانه‌ها null است، نه صفر.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "date": "2026-10-14",
   "date_jalali": "1405-07-22",
   "trading_state": "trading",
   "close_rial": 4540,
   "last_rial": 4540,
   "previous_close_rial": 4410,
   "volume": 1563050927,
   "value_rial": 7096251208580,
   "trades": 13401,
   "market_cap_rial": 8784900000000000,
   "shares_outstanding": 1935000000000,
   "average_volume_30d": 3418635750.87,
   "individual_buy_volume": 1091991421,
   "individual_sell_volume": 1072498112,
   "institutional_buy_volume": 471059506,
   "institutional_sell_volume": 490552815,
   "individual_buyers": 1517,
   "individual_sellers": 2887,
   "institutional_buyers": 91,
   "institutional_sellers": 16,
   "individual_buy_per_trader_rial": 3268056065.48,
   "individual_sell_per_trader_rial": 1686574793.38,
   "individual_buyer_power": 1.94,
   "individual_net_flow_rial": 88499622860
  }
 ],
 "next_cursor": "WyIyMDI2LTEwLTE0IiwgOTEyMzRd"
}

صورت‌های مالی و نسبت‌ها

صورت‌های مالی

GET https://fundai.ir/api/data/v1/companies/{company}/statements/

قیمت: ۱۰ اعتبار برای هر ۲۰ ردیف. نوع: خام. سقف هر صفحه: ۲٬۰۰۰ ردیف.

ردیف‌های صورت‌های مالی همان‌طور که شرکت در کدال منتشر کرده: ترازنامه، صورت سود و زیان (جداگانه و تلفیقی) و جریان وجوه نقد، از تازه‌ترین دوره به قدیم.

پارامترهای صورت‌های مالی
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
categoryکوئریstringاختیاریفقط یک صورت مالی. مقدارها: balance-sheet، income-statement، income-statement-consolidated، cash-flow.
durationکوئریstringاختیاریدوره. ۳، ۶، ۹ و ۱۲ دوره‌های تجمعی از ابتدای سال مالی‌اند و s-1 تا s-4 فصل‌های جداشده. filed همه‌ی دوره‌های تجمعی و quarters همه‌ی فصل‌ها را می‌دهد. مقدارها: 3، 6، 9، 12، s-1، s-2، s-3، s-4، filed، quarters.
include_forecastsکوئریbooleanپیش‌فرض: Falseردیف‌های پیش‌بینی خود شرکت را هم می‌آورد (فقط صورت سود و زیان).
fromکوئریdateاختیاریقدیمی‌ترین پایان دوره، به هر دو تقویم.
toکوئریdateاختیاریتازه‌ترین پایان دوره.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ صورت‌های مالی
نامنوعواحدتوضیح
companystringشناسه‌ی شرکت.
categorystringکدام صورت مالی.
durationstringبرچسب دوره.
monthsintegerتعداد ماه‌های دوره.
fiscal_quarterintegerبرای فصل‌ها ۱ تا ۴، وگرنه null. ممکن است null باشد.
period_enddateآخرین روز دوره.
period_end_jalalistringهمان روز به شمسی.
line_slugstringشناسه‌ی ثابت ردیف که در همه‌ی شرکت‌ها یکی است.
line_titlestringنام ردیف.
unitstringmillion_rial میلیون ریال، rial_per_share ریال برای هر سهم (EPS و DPS)، percent درصد (حاشیه‌های سود).
valuenumberعدد ردیف، به واحد unit.
is_forecastbooleanپیش‌بینی است، نه عدد گزارش‌شده.
  • فصل‌ها (s-1 تا s-4) را ما از دوره‌های تجمعی حساب می‌کنیم. کدال آن‌ها را جدا منتشر نمی‌کند.
  • حاشیه‌های سود از ردیف‌های همان صورت مالی حساب شده‌اند.
  • ردیفی که نیامده منتشر نشده است. سرفصل‌ها و ردیف‌های خالی حذف شده‌اند.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "company": "foulad",
   "category": "income-statement",
   "duration": "6",
   "months": 6,
   "fiscal_quarter": null,
   "period_end": "2026-09-22",
   "period_end_jalali": "1405-06-31",
   "line_slug": "operating-income",
   "line_title": "درآمدهای عملیاتی",
   "unit": "million_rial",
   "value": 2509422184,
   "is_forecast": false
  },
  {
   "company": "foulad",
   "category": "income-statement",
   "duration": "6",
   "months": 6,
   "fiscal_quarter": null,
   "period_end": "2026-09-22",
   "period_end_jalali": "1405-06-31",
   "line_slug": "eps",
   "line_title": "سود (زیان) خالص هر سهم - ریال",
   "unit": "rial_per_share",
   "value": 306,
   "is_forecast": false
  }
 ],
 "next_cursor": "…"
}

چهار فصل اخیر

GET https://fundai.ir/api/data/v1/companies/{company}/statements/ttm/

قیمت: ۱۵ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۱٬۰۰۰ ردیف.

ساخته‌ی ما از صورت سود و زیان: جمع چهار فصل اخیر در پایان هر فصل مالی (basis=ttm)، یا هر دوره کنار فصل قبل، سال قبل، بیشترین، کمترین و میانگین آن (basis=period).

پارامترهای چهار فصل اخیر
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
basisکوئریstringپیش‌فرض: ttmttm یا period. مقدارها: ttm، period.
categoryکوئریstringاختیاریصورت سود و زیان جداگانه یا تلفیقی. مقدارها: income-statement، income-statement-consolidated.
durationکوئریstringاختیاریبرچسب دوره. ردیف‌های TTM فقط s-1 تا s-4 دارند. مقدارها: 3، 6، 9، 12، s-1، s-2، s-3، s-4، filed، quarters.
fromکوئریdateاختیاریقدیمی‌ترین تاریخ، خودش هم حساب می‌شود. هم شمسی (1404-01-01) و هم میلادی (2025-03-21) پذیرفته می‌شود.
toکوئریdateاختیاریتازه‌ترین تاریخ، خودش هم حساب می‌شود، به هر دو تقویم.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ چهار فصل اخیر
نامنوعواحدتوضیح
companystringشناسه‌ی شرکت.
categorystringکدام صورت مالی.
basisstringttm یا period.
durationstringبرچسب دوره.
monthsintegerبرای TTM عدد ۱۲.
fiscal_quarterintegerفصل مالی پایان دوره. ممکن است null باشد.
period_enddateآخرین روز دوره.
period_end_jalalistringبه شمسی.
line_slugstringشناسه‌ی ردیف.
line_titlestringنام ردیف.
unitstringمثل صورت‌های مالی.
valuenumberجمع چهار فصل، یا عدد همان دوره.
previous_quarter_valuenumberفصل قبل (فقط period). ممکن است null باشد.
previous_year_valuenumberهمان دوره در سال قبل (فقط period). ممکن است null باشد.
high_valuenumberبیشترین مقدار این ردیف در همین برچسب دوره تا امروز. ممکن است null باشد.
high_period_enddateزمان بیشترین مقدار. ممکن است null باشد.
low_valuenumberکمترین مقدار تا امروز. ممکن است null باشد.
low_period_enddateزمان کمترین مقدار. ممکن است null باشد.
average_valuenumberمیانگین دوره‌های غیرصفر. ممکن است null باشد.
average_periodsintegerتعداد دوره‌هایی که در میانگین آمده. ممکن است null باشد.
  • فقط ردیف‌های اصلی ساخته می‌شوند: درآمد عملیاتی، سود ناخالص، سود خالص، حاشیه‌های سود و EPS.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "company": "foulad",
   "category": "income-statement",
   "basis": "ttm",
   "duration": "s-2",
   "months": 12,
   "fiscal_quarter": 2,
   "period_end": "2026-09-22",
   "period_end_jalali": "1405-06-31",
   "line_slug": "operating-income",
   "line_title": "درآمدهای عملیاتی",
   "unit": "million_rial",
   "value": 4569548192,
   "previous_quarter_value": null,
   "previous_year_value": null,
   "high_value": null,
   "high_period_end": null,
   "low_value": null,
   "low_period_end": null,
   "average_value": null,
   "average_periods": null
  }
 ],
 "next_cursor": null
}

نسبت‌های مالی

GET https://fundai.ir/api/data/v1/companies/{company}/ratios/

قیمت: ۱۵ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۱٬۰۰۰ ردیف.

نسبت‌های ارزش‌گذاری، سودآوری، اهرمی، فعالیت و جریان نقد برای هر روز، از تازه به قدیم. فیلدهایی که به _pct ختم می‌شوند درصدند (۳۵٫۸ یعنی ۳۵٫۸ درصد).

پارامترهای نسبت‌های مالی
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
durationکوئریstringاختیاریفصل مالی آخرین گزارشی که در محاسبه آمده. مقدارها: s-1، s-2، s-3، s-4.
fromکوئریdateاختیاریقدیمی‌ترین تاریخ، خودش هم حساب می‌شود. هم شمسی (1404-01-01) و هم میلادی (2025-03-21) پذیرفته می‌شود.
toکوئریdateاختیاریتازه‌ترین تاریخ، خودش هم حساب می‌شود، به هر دو تقویم.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ نسبت‌های مالی
نامنوعواحدتوضیح
companystringشناسه‌ی شرکت.
datedateروز محاسبه.
price_datedateروز معاملاتی که قیمتش در نسبت‌ها آمده.
close_rialnumberریالهمان قیمت پایانی.
period_enddateپایان دوره‌ی آخرین گزارش. ممکن است null باشد.
fiscal_quarterintegerفصل مالی آن گزارش. ممکن است null باشد.
pe_ttmnumberنسبتP/E چهار فصل اخیر: قیمت تقسیم بر EPS چهار فصل اخیر. ممکن است null باشد.
ps_ttmnumberنسبتP/S چهار فصل اخیر. ممکن است null باشد.
pbnumberنسبتP/B. ممکن است null باشد.
pd_ttmnumberنسبتP/D: قیمت تقسیم بر سود نقدی مورد انتظار هر سهم. ممکن است null باشد.
peg_ttmnumberنسبتPEG: P/E تقسیم بر درصد رشد سود عملیاتی. ممکن است null باشد.
pegy_ttmnumberنسبتPEGY: مثل PEG، با بازده سود نقدی که به رشد اضافه می‌شود. ممکن است null باشد.
eps_ttm_rialnumberریال برای هر سهمEPS چهار فصل اخیر. ممکن است null باشد.
operating_revenue_ttm_million_rialnumberمیلیون ریالدرآمد عملیاتی چهار فصل اخیر. ممکن است null باشد.
gross_margin_ttm_pctnumberدرصدحاشیه‌ی سود ناخالص. ممکن است null باشد.
net_margin_ttm_pctnumberدرصدحاشیه‌ی سود خالص. ممکن است null باشد.
roa_ttm_pctnumberدرصدبازده دارایی (ROA). ممکن است null باشد.
roe_ttm_pctnumberدرصدبازده حقوق صاحبان سهام (ROE). ممکن است null باشد.
debt_to_equitynumberنسبتنسبت بدهی به حقوق صاحبان سهام. ممکن است null باشد.
debt_to_assets_pctnumberدرصدنسبت بدهی به دارایی. ممکن است null باشد.
receivable_days_ttmnumberروزدوره‌ی وصول مطالبات. ممکن است null باشد.
inventory_days_ttmnumberروزدوره‌ی گردش موجودی. ممکن است null باشد.
operating_cash_flow_ttm_million_rialnumberمیلیون ریالجریان نقد عملیاتی. ممکن است null باشد.
ocf_to_net_profit_ttmnumberنسبتنسبت جریان نقد عملیاتی به سود خالص. ممکن است null باشد.
high_close_rialnumberریالبیشترین قیمت پایانی تا این روز. ممکن است null باشد.
low_close_rialnumberریالکمترین قیمت پایانی تا این روز. ممکن است null باشد.
high_close_datedateروز آن بیشترین قیمت. ممکن است null باشد.
low_close_datedateروز آن کمترین قیمت. ممکن است null باشد.
pd_periodnumberنسبتP/D روی دوره‌ی گزارش. ممکن است null باشد.
peg_periodnumberنسبتPEG روی دوره‌ی گزارش. ممکن است null باشد.
pegy_periodnumberنسبتPEGY روی دوره‌ی گزارش. ممکن است null باشد.
roa_period_pctnumberدرصدROA روی دوره‌ی گزارش. ممکن است null باشد.
roe_period_pctnumberدرصدROE روی دوره‌ی گزارش. ممکن است null باشد.
receivable_days_periodnumberروزدوره‌ی وصول مطالبات در دوره‌ی گزارش. ممکن است null باشد.
inventory_days_periodnumberروزدوره‌ی گردش موجودی در دوره‌ی گزارش. ممکن است null باشد.
operating_cash_flow_period_million_rialnumberمیلیون ریالجریان نقد عملیاتی دوره‌ی گزارش. ممکن است null باشد.
ocf_to_net_profit_periodnumberنسبتنسبت جریان نقد عملیاتی به سود خالص در دوره‌ی گزارش. ممکن است null باشد.
operating_cash_flow_ttm_thousand_usdnumberجریان نقد عملیاتی چهار فصل اخیر به دلار آزاد. ممکن است null باشد.
operating_cash_flow_ttm_thousand_usd_nimanumberجریان نقد عملیاتی چهار فصل اخیر به دلار نیمایی. ممکن است null باشد.
operating_cash_flow_period_thousand_usdnumberجریان نقد عملیاتی دوره‌ی گزارش به دلار آزاد. ممکن است null باشد.
operating_cash_flow_period_thousand_usd_nimanumberجریان نقد عملیاتی دوره‌ی گزارش به دلار نیمایی. ممکن است null باشد.
ocf_to_net_profit_ttm_usdnumberنسبتنسبت جریان نقد عملیاتی به سود خالص، هر دو به دلار آزاد. ممکن است null باشد.
ocf_to_net_profit_ttm_usd_nimanumberنسبتنسبت جریان نقد عملیاتی به سود خالص، هر دو به دلار نیمایی. ممکن است null باشد.

هر نسبت _ttm یک همتای _period هم دارد که فقط روی دوره‌ی گزارش حساب شده و سالانه نشده است. جریان نقد هم به ریال و هم به هزار دلار با نرخ آزاد و نیمایی می‌آید (_thousand_usd و _thousand_usd_nima). هر تاریخ یک همتای _jalali دارد.

  • ردیف‌ها روزهای تقویمی‌اند: در روز تعطیل آخرین قیمت تکرار می‌شود (price_date را ببینید).
  • نسبت‌های _period سالانه نشده‌اند و نباید با _ttm مقایسه شوند.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "company": "foulad",
   "date": "2026-10-26",
   "date_jalali": "1405-08-04",
   "price_date": "2026-10-14",
   "close_rial": 4540,
   "period_end": "2026-09-22",
   "fiscal_quarter": 2,
   "pe_ttm": 6.551,
   "ps_ttm": 1.922,
   "pb": 2.344,
   "eps_ttm_rial": 693,
   "gross_margin_ttm_pct": 29.2,
   "net_margin_ttm_pct": 29.3,
   "roa_ttm_pct": 17.2,
   "roe_ttm_pct": 35.8,
   "debt_to_equity": 1.079,
   "debt_to_assets_pct": 51.9,
   "receivable_days_ttm": 153.37,
   "inventory_days_ttm": 135.8
  }
 ],
 "next_cursor": "…"
}

فیلتر

اجرای فیلتر

POST https://fundai.ir/api/data/v1/screener/

قیمت: ۲۵ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۲۰۰ ردیف.

همان فیلتر چندمرحله‌ای سایت را با همه‌ی امکانات اجرا کنید و شرکت‌هایی را که از فیلتر رد می‌شوند با همه‌ی عددهای هر مرحله بگیرید. بدنه را JSON بفرستید و برای تکرار امن Idempotency-Key بگذارید.

پارامترهای اجرای فیلتر
ناممحلنوعاجباری / پیش‌فرضتوضیح
filtersبدنهarrayاجباریمرحله‌ها با «و» کنار هم: [{step, params}]. خانواده‌ها: financial-ratio، monthly، income-statement، operating-revenue، bourse-kala و technical. مرحله‌ای که operator (gt، gte، lt، lte یا has) و value داشته باشد فیلتر می‌کند.
groupsبدنهarrayاختیاریاختیاری: چند گروه که با «یا» جمع می‌شوند. اگر باشد جای filters را می‌گیرد.
sortبدنهstringاختیاریکلیدهای meta.columns[].engine_key با ویرگول، - برای نزولی.
column_filtersبدنهarrayاختیاری[{key, min, max}] روی کلیدهای موتور، به واحد خود موتور.
limitبدنهintegerاختیاریردیف هر صفحه؛ پیش‌فرض ۲۰ ردیف و حداکثر ۲۰۰. هر ۲۰ ردیف (هر دسته‌ی شروع‌شده) یک بار قیمت دارد: ۲۱ تا ۴۰ ردیف دو برابر قیمت دارد.
cursorبدنهstringاختیاریnext_cursor صفحه‌ی قبل.
فیلدهای پاسخ اجرای فیلتر
نامنوعواحدتوضیح
slugstringشناسه‌ی شرکت.
symbolstringنماد.
namestringنام شرکت.
industryobjectصنعت.
boardstringبازار نماد. ممکن است null باشد.
is_trading_haltedbooleanامروز متوقف است.
figuresobjectهمه‌ی عددهای اجرا. عدد هر مرحله step_<n>_<field> است و ستون‌های ثابت واحدشان را در نام دارند (price_rial، market_value_billion_toman). واحد عددهای مرحله در meta.columns آمده است.

meta شامل total_rows، total_companies، steps (تعداد شرکت باقی‌مانده بعد از هر مرحله)، sort، columns (کلید، عنوان انگلیسی، قالب، واحد و engine_key) و money_unit (میلیارد تومان) است.

  • هر صفحه هزینه‌ی یک اجرا را دارد. صفحه‌ها را ظرف ۵ دقیقه با cursor بگیرید تا نتیجه از حافظه بیاید.
  • پارامترهای هر مرحله همان فیلترساز سایت است. می‌توانید فیلتر را در سایت بسازید و بدنه‌اش را کپی کنید.

نمونه‌ی بدنه‌ی درخواست:

{
 "filters": [
  {
   "step": "financial-ratio",
   "params": {
    "title_slug": "pe_ttm",
    "operator": "lt",
    "value": 8
   }
  }
 ],
 "limit": 2
}

نمونه‌ی پاسخ:

{
 "data": [
  {
   "slug": "gardeshgari",
   "symbol": "وگردش",
   "name": "بانک گردشگری",
   "industry": {
    "slug": "bank",
    "name": "بانک ها و موسسات اعتباری"
   },
   "board": "farabourse",
   "is_trading_halted": false,
   "figures": {
    "step_1_value": 1.676,
    "pe_ttm": 1.676,
    "price_rial": 1730,
    "market_value_billion_toman": 27584.85,
    "eps_rial": 1032
   }
  }
 ],
 "next_cursor": "WzJd",
 "meta": {
  "total_rows": 168,
  "total_companies": 168,
  "steps": [
   {
    "step": 1,
    "group": 1,
    "family": "financial-ratio",
    "companies": 168
   }
  ],
  "sort": "pe_ttm",
  "money_unit": "billion_toman"
 }
}

فعالیت و فروش

فروش و تولید

GET https://fundai.ir/api/data/v1/companies/{company}/sales/

قیمت: ۱۵ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۲٬۰۰۰ ردیف.

درآمد عملیاتی به تفکیک محصول از گزارش‌های فعالیت ماهانه و صورت‌های مالی، یکسان‌سازی‌شده به همان شکلی که صفحه‌ی شرکت نشان می‌دهد: نام محصولات ادغام‌شده و واحدهای یکدست.

پارامترهای فروش و تولید
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
periodکوئریstringپیش‌فرض: 11 گزارش فعالیت ماهانه (پیش‌فرض)؛ 3، 6، 9 و 12 دوره‌های تجمعی صورت‌های مالی. مقدارها: 1، 3، 6، 9، 12.
attrکوئریstringاختیاریفقط یک شاخص، مثل sale_amount (مقدار فروش)، sale_price (مبلغ فروش)، sale_ratio (نرخ فروش)، production_amount (مقدار تولید) یا cost_sale (بهای تمام‌شده).
fromکوئریdateاختیاریقدیمی‌ترین پایان دوره.
toکوئریdateاختیاریتازه‌ترین پایان دوره.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ فروش و تولید
نامنوعواحدتوضیح
product_idintegerشناسه‌ی محصول.
productstringنام محصول.
product_enstringنام انگلیسی. ممکن است null باشد.
is_totalbooleanردیف جمع (داخلی، صادراتی، کل و…).
income_categorystringدسته‌ی درآمد: فروش داخلی، صادراتی، خدمات، تخفیف، برگشت از فروش و…
attrstringشاخصی که این ردیف دارد.
period_monthsinteger۱، ۳، ۶، ۹ یا ۱۲.
period_enddateآخرین روز دوره.
period_end_jalalistringبه شمسی.
valuenumberعدد. ممکن است null باشد.
unitstringواحد به همان شکل که ثبت شده (تن، هزار تن، عدد…). ممکن است null باشد.
money_unitstringmillion_rial برای مبلغ‌ها، rial_per_unit برای نرخ‌ها (ریال برای هر یک unit)، rial، یا null برای مقدار فیزیکی. ممکن است null باشد.
standardizedbooleanیکسان‌سازی (ادغام یا تغییر واحد) روی این ردیف اثر گذاشته است.
  • دوره‌ی ۱ فقط همان ماه است، نه از ابتدای سال. ۳، ۶، ۹ و ۱۲ تجمعی‌اند، همان‌طور که ثبت شده.
  • اصلاحات، پیش‌بینی‌ها و نام‌هایی که در ادغام کنار رفته‌اند مثل سایت حذف شده‌اند.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "product_id": 229,
   "product": "محصولات سرد",
   "product_en": "Cold products",
   "is_total": false,
   "income_category": "internal_sale",
   "attr": "sale_price",
   "period_months": 1,
   "period_end": "2026-09-22",
   "period_end_jalali": "1405-06-31",
   "value": 149710887,
   "unit": "میلیون ریال",
   "money_unit": "million_rial",
   "standardized": false
  }
 ],
 "next_cursor": "…"
}

فروش و تولید، داده‌ی خام کدال

GET https://fundai.ir/api/data/v1/companies/{company}/sales/raw/

قیمت: ۱۰ اعتبار برای هر ۲۰ ردیف. نوع: خام. سقف هر صفحه: ۲٬۰۰۰ ردیف.

همان ردیف‌های sales، با عددهایی که شرکت در کدال ثبت کرده: هر جا یکسان‌سازی ردیفی را تغییر داده، مقدار، واحد، نام محصول و دسته‌ی اصلی برمی‌گردد و standardized برابر true است.

پارامترهای فروش و تولید، داده‌ی خام کدال
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
periodکوئریstringپیش‌فرض: 11 گزارش فعالیت ماهانه (پیش‌فرض)؛ 3، 6، 9 و 12 دوره‌های تجمعی صورت‌های مالی. مقدارها: 1، 3، 6، 9، 12.
attrکوئریstringاختیاریفقط یک شاخص، مثل sale_amount (مقدار فروش)، sale_price (مبلغ فروش)، sale_ratio (نرخ فروش)، production_amount (مقدار تولید) یا cost_sale (بهای تمام‌شده).
fromکوئریdateاختیاریقدیمی‌ترین پایان دوره.
toکوئریdateاختیاریتازه‌ترین پایان دوره.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ فروش و تولید، داده‌ی خام کدال
نامنوعواحدتوضیح
product_idintegerشناسه‌ی محصول.
productstringنام محصول.
product_enstringنام انگلیسی. ممکن است null باشد.
is_totalbooleanردیف جمع (داخلی، صادراتی، کل و…).
income_categorystringدسته‌ی درآمد: فروش داخلی، صادراتی، خدمات، تخفیف، برگشت از فروش و…
attrstringشاخصی که این ردیف دارد.
period_monthsinteger۱، ۳، ۶، ۹ یا ۱۲.
period_enddateآخرین روز دوره.
period_end_jalalistringبه شمسی.
valuenumberعدد. ممکن است null باشد.
unitstringواحد به همان شکل که ثبت شده (تن، هزار تن، عدد…). ممکن است null باشد.
money_unitstringmillion_rial برای مبلغ‌ها، rial_per_unit برای نرخ‌ها (ریال برای هر یک unit)، rial، یا null برای مقدار فیزیکی. ممکن است null باشد.
standardizedbooleanیکسان‌سازی (ادغام یا تغییر واحد) روی این ردیف اثر گذاشته است.
  • ردیفی را که در ادغام به‌عنوان تکراری حذف شده نمی‌توانیم نشان دهیم.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "product_id": 229,
   "product": "محصولات سرد",
   "product_en": "Cold products",
   "is_total": false,
   "income_category": "internal_sale",
   "attr": "sale_amount",
   "period_months": 1,
   "period_end": "2026-09-22",
   "period_end_jalali": "1405-06-31",
   "value": 138,
   "unit": "هزار تن",
   "money_unit": null,
   "standardized": false
  }
 ],
 "next_cursor": "…"
}

معاملات بورس کالا

GET https://fundai.ir/api/data/v1/companies/{company}/commodity-trades/

قیمت: ۱۰ اعتبار برای هر ۲۰ ردیف. نوع: خام. سقف هر صفحه: ۲٬۰۰۰ ردیف.

همه‌ی معاملات محصولات شرکت در بورس کالای ایران، از تازه به قدیم، همان‌طور که بورس کالا منتشر کرده.

پارامترهای معاملات بورس کالا
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
fromکوئریdateاختیاریقدیمی‌ترین تاریخ، خودش هم حساب می‌شود. هم شمسی (1404-01-01) و هم میلادی (2025-03-21) پذیرفته می‌شود.
toکوئریdateاختیاریتازه‌ترین تاریخ، خودش هم حساب می‌شود، به هر دو تقویم.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ معاملات بورس کالا
نامنوعواحدتوضیح
idstringشناسه‌ی معامله در بورس کالا.
datedateتاریخ معامله.
date_jalalistringبه شمسی.
productstringنام محصول.
product_enstringنام انگلیسی. ممکن است null باشد.
product_symbolstringنماد محصول در بورس کالا.
income_categorystringفروش داخلی یا صادراتی.
contract_typestringنوع قرارداد: نقدی، نسیه، سلف، دلاری، صادراتی و…
currencystringارز معامله.
unitstringواحد معامله به همان شکل ثبت‌شده.
supplynumberعرضه، به واحد unit.
demandnumberتقاضا.
quantitynumberحجم معامله‌شده.
base_pricenumberقیمت پایه‌ی عرضه.
min_pricenumberکمترین قیمت.
max_pricenumberبیشترین قیمت.
pricenumberقیمت میانگین وزنی. برای معامله‌ی ریالی محصولی که به تن معامله می‌شود ریال برای هر کیلوگرم، برای کالای شمارشی ریال برای هر عدد، و برای معامله‌ی ارزی به همان ارز برای هر unit.
value_thousand_rialnumberهزار ریالارزش معامله‌ی ریالی. ممکن است null باشد.
value_in_currencynumberارزش معامله‌ی ارزی، به همان ارز. ممکن است null باشد.
delivery_datedateتاریخ تحویل. ممکن است null باشد.
settlement_datedateتاریخ تسویه. ممکن است null باشد.
warehousestringانبار تحویل. ممکن است null باشد.
settlementstringشرایط تسویه. ممکن است null باشد.
  • عرضه‌های بدون معامله حذف شده‌اند. چیزی به ریال تبدیل نشده، چون این داده‌ی خام است.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "id": "r685122",
   "date": "2026-10-11",
   "date_jalali": "1405-07-19",
   "product": "آرگون",
   "product_en": "Argon",
   "product_symbol": "MSC-ARGAB-00",
   "income_category": "internal_sale",
   "contract_type": "self",
   "currency": "IRR",
   "unit": "تن",
   "supply": 200,
   "demand": 460,
   "quantity": 200,
   "base_price": 321300,
   "min_price": 621899,
   "max_price": 648999,
   "price": 628847,
   "value_thousand_rial": 125769400,
   "value_in_currency": null,
   "delivery_date": "2026-11-09",
   "settlement_date": null,
   "warehouse": "انبار کارخانه",
   "settlement": "نقدی"
  }
 ],
 "next_cursor": "…"
}

رویدادها و پرتفوی

سود نقدی

GET https://fundai.ir/api/data/v1/companies/{company}/dividends/

قیمت: ۱۵ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۱۰۰ ردیف.

برای هر سال مالی یک ردیف: مجمع عادی سالانه، سود نقدی هر سهم که تصویب کرده و زمان پرداخت آن به سهام‌داران.

پارامترهای سود نقدی
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
fromکوئریdateاختیاریقدیمی‌ترین پایان سال مالی.
toکوئریdateاختیاریتازه‌ترین پایان سال مالی.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ سود نقدی
نامنوعواحدتوضیح
fiscal_year_enddateپایان سال مالی که مجمع درباره‌اش تصمیم می‌گیرد.
meeting_datedateتاریخ مجمع. ممکن است null باشد.
meeting_timestringساعت مجمع به وقت تهران. ممکن است null باشد.
meeting_urlstringنامه‌ی دعوت به مجمع در کدال. ممکن است null باشد.
payment_fromdateشروع پرداخت سود به سهام‌داران حقیقی. ممکن است null باشد.
payment_todateپایان پرداخت. اگر یک روز اعلام شده باشد با payment_from یکی است. ممکن است null باشد.
payment_textstringعبارت خود نامه‌ی زمان‌بندی. ممکن است null باشد.
payment_estimatedbooleanنامه روز مشخصی نگفته است.
schedule_urlstringنامه‌ی زمان‌بندی پرداخت در کدال. ممکن است null باشد.
dividend_per_share_rialintegerریال برای هر سهمسود نقدی هر سهم. ممکن است null باشد.
days_to_paymentintegerفاصله‌ی مجمع تا پرداخت، به روز. ممکن است null باشد.
  • فقط خوانش‌هایی می‌آیند که از درستی‌شان مطمئنیم، مثل سایت.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "fiscal_year_end": "2026-03-20",
   "fiscal_year_end_jalali": "1404-12-29",
   "meeting_date": "2026-07-20",
   "meeting_time": "09:00",
   "payment_from": "2026-09-08",
   "payment_to": "2026-09-08",
   "payment_text": "۱۴۰۵/۰۶/۱۷",
   "payment_estimated": false,
   "dividend_per_share_rial": 55,
   "days_to_payment": 50
  }
 ],
 "next_cursor": "…"
}

گزارش‌های کدال

GET https://fundai.ir/api/data/v1/companies/{company}/letters/

قیمت: ۱۰ اعتبار برای هر ۲۰ ردیف. نوع: خام. سقف هر صفحه: ۵۰۰ ردیف.

نامه‌های گزارش مالی که عددها از آن‌ها خوانده می‌شود: گزارش فعالیت ماهانه و صورت‌های مالی میان‌دوره‌ای و سالانه، با لینک نامه، PDF و خروجی اکسل.

پارامترهای گزارش‌های کدال
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
periodکوئریstringاختیاری۱، ۳، ۶، ۹ یا ۱۲. مقدارها: 1، 3، 6، 9، 12.
fromکوئریdateاختیاریقدیمی‌ترین روز انتشار.
toکوئریdateاختیاریتازه‌ترین روز انتشار.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ گزارش‌های کدال
نامنوعواحدتوضیح
idintegerشناسه.
titlestringعنوان نامه در کدال.
period_monthsintegerطول دوره به ماه.
period_enddateپایان دوره‌ی گزارش.
published_atdatetimeزمان انتشار.
is_auditedbooleanحسابرسی‌شده.
is_consolidatedbooleanتلفیقی.
is_correctionbooleanاصلاحیه.
urlstringلینک نامه.
attachment_urlstringپیوست‌ها. ممکن است null باشد.
pdf_urlstringفایل PDF. ممکن است null باشد.
excel_urlstringخروجی اکسل. ممکن است null باشد.
  • دوره‌ای که چند بار منتشر شده (حسابرسی‌نشده، حسابرسی‌شده، اصلاحیه) همه‌ی نسخه‌هایش را دارد.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "id": 92671,
   "title": "اطلاعات و صورت‌های مالی میاندوره‌ای دوره ۶ ماهه منتهی به ۱۴۰۵/۰۶/۳۱ (حسابرسی نشده)",
   "period_months": 6,
   "period_end": "2026-09-22",
   "published_at": "2026-10-22T14:37:13+03:30",
   "is_audited": false,
   "is_consolidated": false,
   "is_correction": false,
   "url": "https://www.codal.ir/Reports/Decision.aspx?LetterSerial=…"
  }
 ],
 "next_cursor": "…"
}

پرتفوی صندوق‌ها و شرکت‌های سرمایه‌گذاری

GET https://fundai.ir/api/data/v1/companies/{company}/portfolio/

قیمت: ۲۰ اعتبار برای هر ۲۰ ردیف. نوع: پردازش‌شده. سقف هر صفحه: ۱٬۰۰۰ ردیف.

دارایی‌های یک صندوق یا شرکت سرمایه‌گذاری، برای هر شرکت سرمایه‌پذیر در هر گزارش ماهانه یک ردیف. بدون تاریخ، تازه‌ترین گزارش می‌آید. شرکتی که هیچ‌کدام نباشد فهرست خالی می‌گیرد.

پارامترهای پرتفوی صندوق‌ها و شرکت‌های سرمایه‌گذاری
ناممحلنوعاجباری / پیش‌فرضتوضیح
companyمسیرstringاجباریمقدار slug شرکت از فهرست /companies/، یا نماد آن (فولاد). نماد با هر املایی که کدال و سایت بورس می‌نویسند پیدا می‌شود.
report_dateکوئریdateاختیاریفقط گزارش همین ماه.
fromکوئریdateاختیاریقدیمی‌ترین تاریخ، خودش هم حساب می‌شود. هم شمسی (1404-01-01) و هم میلادی (2025-03-21) پذیرفته می‌شود.
toکوئریdateاختیاریتازه‌ترین تاریخ، خودش هم حساب می‌شود، به هر دو تقویم.
limitکوئریintegerاختیاریتعداد ردیف هر صفحه. پیش‌فرض یک دسته‌ی قیمت است (per_rows: برای معاملات روزانه ۳۰ و برای بیشتر داده‌ها ۲۰). هر دسته‌ی شروع‌شده یک بار حساب می‌شود، پس ۲۱ ردیف صورت مالی دو برابر قیمت دارد. بیشتر از سقف همان داده خطای ۴۰۰ می‌گیرد.
cursorکوئریstringاختیاریمقدار next_cursor صفحه‌ی قبل را همان‌طور که آمده بفرستید. برای صفحه‌ی اول نفرستید.
فیلدهای پاسخ پرتفوی صندوق‌ها و شرکت‌های سرمایه‌گذاری
نامنوعواحدتوضیح
portfolio_typestringصندوق یا شرکت سرمایه‌گذاری.
report_datedateپایان ماه گزارش.
letter_urlstringنامه‌ی کدال.
letter_tracing_nointegerشماره‌ی پیگیری کدال.
namestringنام شرکت سرمایه‌پذیر به همان شکل گزارش. ممکن است null باشد.
companyobjectشرکت بورسی متناظر، اگر پیدا شده باشد. ممکن است null باشد.
closing_quantitynumberسهمتعداد سهام در پایان ماه. ممکن است null باشد.
closing_cost_rialnumberریالبهای تمام‌شده در پایان ماه. ممکن است null باشد.
closing_value_rialnumberریالارزش در پایان ماه (خالص ارزش فروش برای صندوق، ارزش بازار برای شرکت سرمایه‌گذاری). ممکن است null باشد.
ownership_percentnumberدرصدفقط شرکت سرمایه‌گذاری: درصد مالکیت. ممکن است null باشد.
segmentstringفقط شرکت سرمایه‌گذاری: بورسی، بازار پایه یا غیربورسی. ممکن است null باشد.

ردیف صندوق تعداد، بهای تمام‌شده و مبلغ ابتدای دوره، خرید و فروش را هم دارد (opening_*، bought_*، sold_*) و closing_price_rial. ردیف شرکت سرمایه‌گذاری opening_*، تغییر ماه (change_*)، capital_rial، par_value_rial، is_rights و cost_per_share_rial را دارد. همه‌ی مبلغ‌ها به ریال است.

  • مقدارها همان‌طور که گزارش شده‌اند. فقط بخش سهام پوشش داده می‌شود.

نمونه‌ی پاسخ:

{
 "data": [
  {
   "portfolio_type": "fund",
   "report_date": "2026-09-22",
   "letter_tracing_no": 1606387,
   "name": "آريان كيميا تك",
   "company": {
    "slug": "kimia-tech",
    "symbol": "کیمیاتک"
   },
   "closing_quantity": 1116173,
   "closing_price_rial": 19450,
   "closing_cost_rial": 8887705531,
   "closing_value_rial": 21541749914
  }
 ],
 "next_cursor": "…"
}

استفاده با هوش مصنوعی

اگر با ChatGPT، Claude یا دستیار دیگری کار می‌کنید، نیازی نیست محتوای این صفحه را برای آن توضیح دهید. فایل llms.txt همه‌ی قاعده‌ها و داده‌ها را به زبانی در بر دارد که مدل‌ها به‌سادگی می‌خوانند، و فایل OpenAPI را نیز می‌توان مستقیم در اختیار ابزارها گذاشت.

استفاده با MCP

اگر دستیار شما از MCP پشتیبانی می‌کند، مانند Claude، Cursor، Copilot، Codex یا Gemini CLI، می‌توانید فاندای را مستقیم به آن متصل کنید. از آن پس دستیار خودش داده‌ها را دریافت می‌کند و نیازی به نوشتن کد نیست. سرور MCP فاندای با روش POST و پروتکل Streamable HTTP کار می‌کند و پیام‌های آن در قالب JSON-RPC است.

POST https://fundai.ir/api/data/mcp/

پرسش‌های پرتکرار

با API فاندای به چه داده‌هایی دسترسی دارم؟

فهرست شرکت‌ها و صنایع بورس و فرابورس، معاملات روزانه‌ی هر نماد از سایت بورس، صورت‌های مالی کدال و جمع چهار فصل اخیر، نسبت‌های مالی روزانه، فروش و تولید ماهانه، معاملات بورس کالا، سود نقدی مصوب مجامع، گزارش‌های کدال و پرتفوی صندوق‌ها و شرکت‌های سرمایه‌گذاری، همگی از طریق API در دسترس‌اند. فیلتر چندمرحله‌ای سایت را نیز می‌توانید با API اجرا کنید.

هزینه‌ی API چطور حساب می‌شود؟

ابتدا اعتبار تهیه می‌کنید و سپس هر درخواست موفق، قیمت همان داده را از اعتبار شما کسر می‌کند. قیمت هر داده برای تعداد مشخصی ردیف است، یعنی ۳۰ ردیف برای معاملات روزانه و ۲۰ ردیف برای بقیه‌ی داده‌ها، و جدول قیمت همین صفحه جزئیات آن را نشان می‌دهد. درخواستی که با خطا پاسخ داده شود هزینه‌ای ندارد و تکرار همان درخواست تا ۶۰ ثانیه بعد نیز دوباره محاسبه نمی‌شود.

آیا می‌توانم پیش از خرید، API را امتحان کنم؟

بله. با ساختن نخستین کلید در بخش API پروفایل، ۱۰۰ اعتبار هدیه به حساب شما افزوده می‌شود و می‌توانید با آن داده‌ی واقعی بگیرید. برای نمونه، داده‌ی ۳۰ روز معاملاتی اخیر یک نماد با یک درخواست ۳ اعتبار مصرف می‌کند. این هدیه تنها یک بار و برای حسابی ارائه می‌شود که شماره‌ی موبایل آن تأیید شده باشد.

کلید API را از کجا بگیرم؟

پس از ورود به حساب فاندای، به بخش API پروفایل بروید؛ در آنجا می‌توانید اعتبار بخرید و کلید بسازید. کلید تنها یک بار نمایش داده می‌شود، پس همان لحظه آن را در جایی امن ذخیره کنید. در هر زمان می‌توانید حداکثر ۵ کلید فعال داشته باشید.

سقف تعداد درخواست‌ها چقدر است؟

سقف درخواست هر حساب به سطح استفاده‌ی آن بستگی دارد. حساب تازه در سطح ۱ قرار دارد و می‌تواند ۳۰ درخواست در دقیقه، ۱٬۰۰۰ درخواست در روز و ۲ درخواست هم‌زمان داشته باشد. با استفاده‌ی بیشتر از API، سطح حساب و سقف آن بالاتر می‌رود؛ ملاک این ارتقا اعتباری است که مصرف می‌کنید، نه اعتباری که می‌خرید، و سطح تازه حداکثر ده دقیقه بعد اعمال می‌شود. عبور از سقف با پاسخ ۴۲۹ همراه است که هزینه‌ای ندارد. اگر زودتر به سقف بالاتری نیاز دارید، لطفاً موضوع را با پشتیبانی در میان بگذارید.

داده‌ی چند شرکت را می‌توانم بگیرم؟

در هر ماه شمسی می‌توانید داده‌های حداکثر ۵۰ شرکت مختلف را دریافت کنید. شرکتی که یک بار داده‌هایش را خوانده‌اید تا پایان همان ماه دوباره شمرده نمی‌شود، بنابراین برنامه‌ای که چند نماد مشخص را دنبال می‌کند به این سقف نمی‌رسد. فهرست شرکت‌ها، صنایع و فیلتر چندمرحله‌ای نیز در این سقف محاسبه نمی‌شوند. برای دسترسی به داده‌های کل بازار، لطفاً درخواست قرارداد سازمانی ارسال کنید.

می‌توانم API را به ChatGPT یا Claude وصل کنم؟

بله. Claude، Cursor، Copilot در VS Code، Windsurf، Codex، Gemini CLI و هر دستیار دیگری که از MCP پشتیبانی کند، می‌تواند مستقیم به سرور MCP فاندای متصل شود و داده‌ها را خودش دریافت کند. برای دستیارهای دیگر، مانند ChatGPT، کافی است راهنمای llms.txt را در اختیارشان بگذارید تا با قاعده‌ها و همه‌ی داده‌ها آشنا شوند. هر درخواست دستیار همان هزینه‌ی درخواست API را دارد.

فرق داده‌ی خام و پردازش‌شده چیست؟

داده‌ی خام همان چیزی است که کدال، سایت بورس یا بورس کالا منتشر کرده‌اند، با همان ارقام و واحدها. داده‌ی پردازش‌شده را فاندای از داده‌ی خام ساخته است؛ نام محصولات یکسان‌سازی شده، چهار فصل اخیر جمع زده شده و نسبت‌های مالی محاسبه شده‌اند. نوع هر داده در جدول قیمت مشخص شده است.

داده‌ها کی به‌روز می‌شوند و تاریخچه از کجا شروع می‌شود؟

داده‌های API همان داده‌هایی است که سایت فاندای نمایش می‌دهد و به همان اندازه به‌روز است؛ معاملات روزانه پس از هر روز معاملاتی و گزارش‌های کدال پس از انتشار افزوده می‌شوند. با اعتبار، داده‌های ۳ سال اخیر را دریافت می‌کنید و بازه‌ی آن را با پارامترهای from و to تعیین می‌کنید. سابقه‌ی کامل در قالب قرارداد سازمانی ارائه می‌شود.

می‌توانم از API در محصول یا کسب‌وکارم استفاده کنم؟

API فاندای برای استفاده‌ی شخصی و غیرتجاری فراهم شده است؛ یعنی برای پژوهش، تحلیل و تصمیم‌گیری درباره‌ی معاملات خودتان. اگر قصد دارید داده‌ها را در محصول، سایت، اپلیکیشن یا خدمتی برای دیگران به کار بگیرید، یا آن‌ها را بفروشید یا منتشر کنید، لطفاً از صفحه‌ی همکاری سازمانی درخواست رسمی ارسال کنید. درخواست شما را بررسی می‌کنیم و شرایط استفاده‌ی تجاری را در قراردادی جداگانه با شما هماهنگ می‌کنیم.

اعتبار را چطور بخرم و تاریخ انقضا دارد؟

در صفحه‌ی تعرفه‌ها، میزان اعتبار مورد نیاز را وارد کنید یا یکی از مقدارهای پیشنهادی را برگزینید و مبلغ را با کارت بانکی از طریق درگاه پرداخت آنلاین بپردازید. اعتبار تاریخ انقضا ندارد و تا زمانی که مصرف نشود در حساب شما باقی می‌ماند.

پشتیبانی

سؤالی دارید یا داده‌ای لازم دارید که اینجا نیست؟ به support@fundai.ir بنویسید یا از پروفایل تیکت پشتیبانی بفرستید.