API رایگان بورس و فرابورس؛ وبسرویس قیمت سهام
قیمت لحظهای همهی نمادهای بورس اوراق بهادار تهران و فرابورس ایران، از سهام و حقتقدم تا اوراق، اختیار معامله، آتی و شاخصها؛ با دامنهی نوسان، سرخط خرید و فروش، حجم و ارزش معاملات، EPS و P/E. وضعیت بازار از خود بورس خوانده میشود، پس تعطیلیها و روزهای نیمهکاره هم درستاند.
چه نمادهایی پوشش داده میشوند
نوع هر نماد از دستهبندی خود بورس میآید، نه از حدس روی نام. با پارامتر type هر نوع را جدا بگیرید (چند نوع را با کاما جدا کنید).
قیمتها ریالیاند (currency: IRR). شاخصها واحد پول ندارند. نمادهای متوقف وضعیت suspended میگیرند و آخرین قیمت پایانی و تاریخ آخرین معاملهشان را نگه میدارند، پس ارزش پرتفوی که سهم متوقف دارد هم محاسبه میشود.
شناسهی نمادها
شناسهی هر نماد tse: بهعلاوهی ISIN آن است، مثل tse:IRO1FOLD0001 برای فولاد. شاخصها ISIN ندارند و با کد داخلی بورس شناخته میشوند؛ شاخص کل tse:32097828799138957 است. اگر فقط نماد را میدانید، با symbols بپرسید؛ املای «ی» و «ک» عربی و فارسی فرقی نمیکند.
curl -G -H "x-api-key: YOUR_API_KEY" "https://nerkhy.ir/v1/quotes" \
--data-urlencode "symbols=فولاد,فملی" \
--data-urlencode "market=tse"const url = new URL("https://nerkhy.ir/v1/quotes");
url.searchParams.set("symbols", "فولاد,فملی");
url.searchParams.set("market", "tse");
const res = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" } });
const { data, meta } = await res.json();import requests
res = requests.get(
"https://nerkhy.ir/v1/quotes",
params={"symbols": "فولاد,فملی", "market": "tse"},
headers={"x-api-key": "YOUR_API_KEY"},
timeout=10,
)
res.raise_for_status()
data = res.json()["data"]<?php
$url = "https://nerkhy.ir/v1/quotes" . "?" . http_build_query(["symbols" => "فولاد,فملی", "market" => "tse"]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["x-api-key: YOUR_API_KEY"],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$data = $body["data"];برای جستوجوی آزاد (بخشی از نماد یا نام شرکت) از GET /v1/instruments?q=… استفاده کنید؛ نماد دقیق اول برمیگردد.
قیمت یک سهم
{
"data": {
"id": "tse:IRO1FOLD0001",
"market": "tse",
"type": "stock",
"symbol": "فولاد",
"name": {
"fa": "فولاد مبارکه اصفهان",
"en": null
},
"currency": "IRR",
"unit": "share",
"status": "active",
"referencePrice": 4540,
"price": {
"last": 4540,
"close": 4540,
"open": 4460,
"high": 4560,
"low": 4430,
"previousClose": 4410
},
"change": {
"amount": 130,
"percent": 2.95
},
"limits": {
"upper": 4540,
"lower": 4280
},
"orderBook": {
"bestBid": 4540,
"bestAsk": null
},
"trading": {
"volume": 1563050927,
"value": 7096251208580,
"count": 13401
},
"fund": null,
"fundamentals": {
"eps": 518,
"pe": 8.8,
"sharesOutstanding": "1935000000000",
"marketCap": "8784900000000000"
},
"tradeDate": "2026-10-14",
"lastTradeAt": "2026-10-14T12:29:54+03:30",
"observedAt": "2026-10-15T10:50:06.986Z",
"stale": false,
"source": "tsetmc"
}
}کل بازار در چند درخواست
برای گرفتن همهی سهام یا هر نوع دیگر، market و type را با صفحهبندی (limit تا ۱۰۰۰ و offset) بخواهید؛ تعداد کل در meta.total است.
async function allQuotes(type) {
const out = [];
for (let offset = 0; ; offset += 1000) {
const url = new URL("https://nerkhy.ir/v1/quotes");
url.search = new URLSearchParams({ market: "tse", type, limit: "1000", offset: String(offset) });
const res = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" } });
const { data, meta } = await res.json();
out.push(...data);
if (out.length >= meta.total || data.length === 0) return out;
}
}
const stocks = await allQuotes("stock");import requests
def all_quotes(type_):
out, offset = [], 0
while True:
res = requests.get(
"https://nerkhy.ir/v1/quotes",
params={"market": "tse", "type": type_, "limit": 1000, "offset": offset},
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
body = res.json()
out += body["data"]
if len(out) >= body["meta"]["total"] or not body["data"]:
return out
offset += 1000
stocks = all_quotes("stock")مشخصات نماد و گروه صنعت
GET /v1/instruments/{id} مشخصات پایه را همراه با آخرین قیمت برمیگرداند: گروه صنعت، بازار (TSE برای بورس و IFB برای فرابورس) و شناسههای بیرونی مثل کد داخلی TSETMC.
{
"data": {
"id": "tse:IRO1FOLD0001",
"market": "tse",
"code": "IRO1FOLD0001",
"type": "stock",
"symbol": "فولاد",
"name": {
"fa": "فولاد مبارکه اصفهان",
"en": null
},
"exchange": "TSE",
"sector": {
"code": "27",
"name": "فلزات اساسی"
},
"currency": "IRR",
"unit": "share",
"status": "active",
"statusNote": null,
"externalIds": {
"isin": "IRO1FOLD0001",
"tsetmcInsCode": "46348559193224090",
"tgjuKey": null
},
"firstSeenAt": "2026-10-15T11:21:01.089Z",
"lastSeenAt": "2026-10-22T10:36:22.567Z",
"quote": "{ … همان Quote … }"
}
}باز یا بسته بودن بازار
GET /v1/markets روز معاملاتی، باز یا بسته بودن بورس و زمان آخرین فعالیت را میگوید. این وضعیت از خود بورس خوانده میشود، نه از تقویم.
{
"data": [
{
"market": "tse",
"name": "بورس و فرابورس",
"state": "closed",
"stateTitle": "بسته",
"sessionDate": "2026-10-21",
"lastActivityAt": "2026-10-21T19:31:03+03:30",
"snapshotAt": "2026-10-22T10:36:22.567Z",
"observedAt": "2026-10-22T10:50:28.196Z",
"stale": false
},
{
"market": "spot",
"name": "بازار آزاد",
"state": "open",
"stateTitle": null,
"sessionDate": null,
"lastActivityAt": null,
"snapshotAt": "2026-10-22T10:51:17.695Z",
"observedAt": "2026-10-22T10:51:17.695Z",
"stale": false
}
]
}همین حالا شروع کنید
ثبتنام و استفاده از نرخی API رایگان است. پس از تأیید حساب، کلید API را از داشبورد بسازید و اولین درخواست را بفرستید.