GET/api/v1/rates
Symbol prices
Buy and sell prices for your key's plan, with multiple symbols per request.
on the Free and Pro APIs
Free keys get minute-level data for free-plan symbols and include attribution, which must appear beside prices. Paid keys get live prices (refresh_seconds: null). Symbols per request: Free 20, Pro 100.
- One request with several symbols uses only one quota unit. Do not send separate requests for each symbol.
- Without
symbols, a plan exceeding the per-request symbol limit returns a truncated response withtruncatedandavailable. Then split symbols across requests usingsymbols.
Parameters
symbolsText, multipleURLOptionalComma-separated symbol codes, e.g.GOLD_18K,COIN_86, up to your plan's per-request limit. Omit to request all plan symbols. Emptysymbols=returns 400.
Example request
curl "https://market.markaznerkh.ir/api/v1/rates?symbols=GOLD_18K,COIN_86" \
-H "Authorization: Bearer $MARKAZNERKH_KEY"Example response
{
"generated_at": "2026-09-26T08:00:00Z",
"refresh_seconds": 60,
"count": 2,
"items": [
{
"code": "GOLD_18K",
"name": "طلای ۱۸ عیار",
"name_en": "18-carat gold",
"category": "gold",
"scope": "iran",
"unit": "هر گرم",
"currency": "IRT",
"buy": 9756000,
"sell": 9845000,
"updated_at": "2026-09-26T07:59:53Z",
"stale": false
},
{
"code": "COIN_86",
"name": "تمام سکه ۸۶",
"name_en": "Full Emami coin, minted 1386 onwards",
"category": "coin",
"scope": "iran",
"unit": "هر عدد",
"currency": "IRT",
"buy": 102776000,
"sell": 103500000,
"updated_at": "2026-09-26T07:59:26Z",
"stale": false
}
],
"attribution": {
"text": "قیمتها از مرکز نرخ",
"url": "https://markaznerkh.ir"
}
}Response fields
generated_atstringResponse generation time (UTC)
refresh_secondsinteger | nullUpdate interval in seconds:
60for free keys;nullfor real-time datacountintegerNumber of symbols in the response
items[].codestringSymbol code; use the same code for every endpoint
items[].namestringPersian name
items[].name_enstring | nullEnglish name
items[].categorystringCategory:
gold,coin,silver,currency,commodity,indexorstockitems[].scopestringiranfor Iranian markets orglobalfor global marketsitems[].unitstring | nullCommodity unit, e.g. “per gram” or “per item”; not a currency
items[].currencystringPrice currency:
IRT(toman) for Iranian symbols;USDand other currencies for global symbolsitems[].buynumber | nullBuy price;
nullmeans the source has no buy quoteitems[].sellnumber | nullSell price
items[].updated_atstring | nullLast time the source responded with this price (UTC)
items[].stalebooleantruemeans a stale price, due to source failure or quarantine. Display it with a “Not up to date” label.truncatedbooleanOnly when
symbolsis omitted and the plan has more symbols than the per-request limit: the response was truncated to that limitavailableintegerAlong with
truncated: total symbols the key can readattribution.textstringFree keys only: attribution text that must be displayed beside prices
attribution.urlstringLink to this text
Possible statuses and errors
- 304Use
If-None-Matchwith the previousETag. If unchanged, the response has no body and still counts against your quota. - 400You exceeded your plan's symbol limit, or
symbolsis empty - 404The requested symbol does not exist or is outside your plan (
Not available on your plan: …). - 421This host accepts free keys only
- 422Invalid input; details in
detail
401403429503and Key, access, rate-limit and capacity errors that can occur on any request (Error reference).

