احراز هویت
برای استفاده از API، کلید API خود را در هدر درخواست ارسال کنید. کلید را از پنل مدیریت دریافت کنید.
Authorization: Bearer YOUR_API_KEY
محدودیت نرخ
| پلن | محدودیت | پنجره |
|---|---|---|
| آزاد | 10 req | 1 min |
| پایه | 60 req | 1 min |
| حرفهای | 600 req | 1 min |
هدرهای پاسخ شامل اطلاعات محدودیت هستند:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1693520400
قالب پاسخ
همهٔ پاسخها با یک پوششِ یکسان برمیگردند: ok (بولین)،
data (داده)، و meta (اطلاعات کمکی، در صورت وجود).
خطا: {"ok": false, "error": {"code": "...", "message": "..."}}.
کدِ نماد به شکلِ market:SYMBOL است (بازار کوچک)، مثلاً
crypto:BTC-USD، tse:فولاد، ir_gold:18K.
/api/v1/quote/{code}
دریافت آخرین قیمتِ یک نماد (از بهترین منبعِ تازه).
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| code | string | path | کد نماد، مثلاً crypto:BTC-USD |
نمونه درخواست
curl "https://generalmarket.ir/api/v1/quote/crypto:BTC-USD"
نمونه پاسخ
{
"ok": true,
"data": {
"symbol_code": "crypto:BTC-USD",
"last": 77264.02,
"bid": null, "ask": null,
"volume": 22845603919,
"change_pct": -0.31,
"ts": "Sun, 13 Sep 2026 15:10:00 GMT"
}
}
/api/v1/quotes
دریافت آخرین قیمتِ چند نماد بهصورتِ یکجا (حداکثر ۱۰۰).
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| codes | string | query | لیست کدها با کاما، مثلاً crypto:BTC-USD,crypto:ETH-USD,ir_gold:18K |
curl "https://generalmarket.ir/api/v1/quotes?codes=crypto:BTC-USD,crypto:ETH-USD"
/api/v1/markets
لیستِ هر ۱۴ بازار (tse, ifb, ime, irenex, bond, fund, ir_gold, ir_fx, crypto, index, fx, commodity, us_equity, macro).
/api/v1/board/{market}
تابلوی قیمتِ یک بازار — همهٔ نمادهای آن با آخرین قیمت (از بهترین منبعِ تازه).
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| market | string | path | کد بازار، مثلاً crypto |
| limit | int | query | تعداد (پیشفرض ۱۰۰، سقف ۱۰۰۰) |
curl "https://generalmarket.ir/api/v1/board/crypto?limit=20"
/api/v1/symbols
لیست نمادها با فیلتر و صفحهبندی.
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| market | string | query | فیلتر بازار |
| page | int | query | شماره صفحه |
| per_page | int | query | تعداد در صفحه |
/api/v1/search
جستجوی نماد بر اساس نام یا کد. حرفِ ی/ک عربی و فارسی یکسان گرفته میشود؛
تطابقِ دقیقِ نماد اول میآید. پاسخ: {symbols:[...], markets:[...]}.
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| q | string | query | عبارت جستجو (مثلاً فولاد یا BTC) |
| limit | int | query | تعداد نتایج (پیشفرض ۲۰) |
curl "https://generalmarket.ir/api/v1/search?q=فولاد&limit=5"
/api/v1/candles
کندلهای OHLCV یک نماد. ⚠ پارامتر tf است نه timeframe
(پارامترِ اشتباه بیصدا دادهٔ روزانه میدهد).
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| symbol | string | query | کد نماد، مثلاً crypto:BTC-USD |
| tf | string | query | تایمفریم: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w, 1M, 3M, 1y |
| limit | int | query | تعداد (پیشفرض ۵۰۰) |
curl "https://generalmarket.ir/api/v1/candles?symbol=crypto:BTC-USD&tf=1d&limit=100"
{
"ok": true,
"data": [
{ "symbol_code": "crypto:BTC-USD", "tf": "1d",
"ts": "Thu, 11 Sep 2026 00:00:00 GMT",
"open": 76000, "high": 78200, "low": 75800,
"close": 77264, "volume": 22845603919 }
]
}
/api/v1/indicators
اندیکاتورهای محاسبهشده روی کندلهای یک نماد (SMA، EMA، RSI، ATR).
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| symbol | string | query | کد نماد (الزامی) |
| indicators | string | query | الزامی — با کاما، مثلاً sma,ema,rsi,atr |
| tf | string | query | تایمفریم (پیشفرض 1d) |
| period | int | query | دورهٔ اندیکاتور (پیشفرض ۱۴) |
curl "https://generalmarket.ir/api/v1/indicators?symbol=crypto:BTC-USD&tf=1d&indicators=sma,rsi&period=14"
/api/v1/ticks
دفترِ ثبتِ قیمت (append-only): هر قیمتِ متمایز از هر منبع با زمانِ دقیق. برای رجوع/ممیزیِ تاریخچهٔ قیمتِ هر منبع در هر لحظه.
پارامترها
| نام | نوع | محل | توضیحات |
|---|---|---|---|
| symbol | string | query | کد نماد (اختیاری) |
| source | string | query | کد منبع، مثلاً lbank (اختیاری) |
| from | string | query | از تاریخ (ISO-8601، اختیاری) |
| to | string | query | تا تاریخ (ISO-8601، اختیاری) |
| limit | int | query | تعداد (پیشفرض ۵۰۰، سقف ۵۰۰۰) |
curl "https://generalmarket.ir/api/v1/ticks?symbol=crypto:BTC-USD&source=lbank&from=2026-09-13T00:00:00Z"
ویجتهای قابل جاسازی
تیکر قیمت
نوار قیمت متحرک برای جاسازی در سایت شما.
<iframe
src="https://generalmarket.ir/embed/ticker?symbols=crypto:BTC-USD,ir_gold:18K,ir_fx:USD&theme=dark&speed=medium"
width="100%" height="40" frameborder="0">
</iframe>
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
| symbols | string | لیست نمادها با کاما |
| speed | string | سرعت: slow, medium, fast |
| theme | string | تم: dark, light |
نمودار
نمودار قیمت تعاملی برای جاسازی.
<iframe
src="https://generalmarket.ir/embed/chart/crypto:BTC-USD?tf=1d&type=candlestick&theme=dark&height=400&indicators=ichimoku,rsi"
width="100%" height="400" frameborder="0">
</iframe>
تابلوی قیمت
جدول قیمتهای یک بازار برای جاسازی.
<iframe
src="https://generalmarket.ir/embed/board/crypto?theme=dark&limit=10"
width="100%" height="500" frameborder="0">
</iframe>
نمونه کدها
import requests
BASE_URL = "https://generalmarket.ir"
# Latest price of one symbol
resp = requests.get(f"{BASE_URL}/api/v1/quote/crypto:BTC-USD")
q = resp.json()["data"]
print(f"BTC: {q['last']:,} ({q['change_pct']:+.2f}%) @ {q['ts']}")
# Latest prices of several symbols
resp = requests.get(
f"{BASE_URL}/api/v1/quotes",
params={"codes": "crypto:BTC-USD,crypto:ETH-USD,ir_gold:18K"},
)
for item in resp.json()["data"]:
print(f"{item['symbol_code']}: {item['last']}")
# OHLCV candles (tf, NOT timeframe)
resp = requests.get(
f"{BASE_URL}/api/v1/candles",
params={"symbol": "crypto:BTC-USD", "tf": "1d", "limit": 30},
)
candles = resp.json()["data"]
# Full price provenance — every source's price over time
resp = requests.get(
f"{BASE_URL}/api/v1/ticks",
params={"symbol": "crypto:BTC-USD", "source": "lbank", "limit": 100},
)
ticks = resp.json()["data"]
const BASE_URL = 'https://generalmarket.ir';
// Latest price of one symbol
const resp = await fetch(`${BASE_URL}/api/v1/quote/crypto:BTC-USD`);
const { data } = await resp.json();
console.log(`BTC: ${data.last.toLocaleString()} (${data.change_pct}%)`);
// Latest prices of several symbols
const r2 = await fetch(`${BASE_URL}/api/v1/quotes?codes=crypto:BTC-USD,crypto:ETH-USD`);
for (const q of (await r2.json()).data) {
console.log(`${q.symbol_code}: ${q.last}`);
}
// Poll every 5s for a live feed (no API key needed for public endpoints)
setInterval(async () => {
const q = (await (await fetch(`${BASE_URL}/api/v1/quote/crypto:BTC-USD`)).json()).data;
console.log(q.symbol_code, q.last, q.ts);
}, 5000);
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://generalmarket.ir';
$ch = curl_init("$baseUrl/api/v1/quote/crypto:BTC-USD");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true)['data'];
echo "BTC: " . number_format($data['last']) . " ({$data['change_pct']}%)\n";
# Latest price of one symbol
curl "https://generalmarket.ir/api/v1/quote/crypto:BTC-USD"
# Latest prices of several symbols
curl "https://generalmarket.ir/api/v1/quotes?codes=crypto:BTC-USD,ir_gold:18K"
# OHLCV candles (tf, not timeframe)
curl "https://generalmarket.ir/api/v1/candles?symbol=crypto:BTC-USD&tf=1d&limit=30"
# Price provenance ledger
curl "https://generalmarket.ir/api/v1/ticks?symbol=crypto:BTC-USD&source=lbank&limit=20"
امتحان کنید