BIST hisseleri

Borsa İstanbul hisseleri: tüm evren üzerinde 15 dakika gecikmeli fiyatlar (POİP/İZL tek-fiyat segmentleri dahil 649 sembol), 5 dakikalık gün içi barlar ve derin günlük geçmiş.

Uç noktalar

Uç noktaKapsamAçıklama
GET/v1/quotes/bist:{SYM}quotes:bistTek fiyat (toplu: GET /v1/quotes?ids=…, ≤100 kimlik)
GET/v1/candles/bist:{SYM}?resolution=5m|1dhistoryGün içi 5dk (yaklaşık son 7 gün) veya günlük barlar
GET/v1/eod/bist:{SYM}?from=&to=historyGün sonu kayıtları (2024'ten itibaren geçmiş)
GET/v1/markets/bist/statusany keySeans saati (10:00–18:00 TRT)
GET/v1/markets/bist/moversquotes:bistEvren genelinde yükselenler / düşenler / en çok işlem görenler
GET/v1/stocks/bist:{SYM}/indicators?indicators=&periods=historyKendi barlarımız üzerinde teknik göstergeler (RSI, MACD, Bollinger, SMA/EMA, …)
GET/v1/stocks/bist:{SYM}/financials?timeframe=&currency=historyFinansal tablolar (lisanslı veri dağıtıcısı üzerinden KAP bildirimleri): yıllık, çeyreklik (bildirildiği gibi kümülatif) ve türetilmiş quarterly_standalone ile ttm
GET/v1/stocks/bist:{SYM}/valuation?currency=historyDeğerleme metrikleri: piyasa değeri, F/K, PD/DD, FAVÖK, net borç, FD, FD/FAVÖK (TTM), kâr büyümesi, PEG; ?currency=USD|EUR
GET/v1/valuation?ids=&currency=historyAynı değerleme yanıtı, tek çağrıda en fazla 100 bist: kimliği için
GET/v1/stocks/bist:{SYM}/valuation/history?from=&to=historyGünlük piyasa değeri + F/K serisi (işlem günleri, 2025-09-20'den itibaren; yalnızca TRY)
GET/v1/stocks/bist:{SYM}/dividendshistoryTemettü geçmişi: hisse başına net + brüt tutar, hak kullanım tarihi, ödeme tarihi, taksit — bkz. Temettüler
GET/v1/dividends?market=bist&from=&to=&date_field=&status=&symbols=historyBir tarih aralığındaki tüm BIST temettüleri (hak kullanım ya da ödeme tarihi), sayfalı — bkz. Temettüler
BIST borsa yatırım fonları (BYF, ör. bist:ZPX30F, bist:GLDTRF) fiyatlar, toplu fiyatlar, mumlar ve gün sonu geçmişi için aynı bist: kimliklerini kullanır — listelemek için /v1/instruments?market=bist&asset_type=ETF&limit=100. Değerleme ve hedef fiyatlar bir BYF için 404 döner (hisse temelleri); finansal tablolar boş gelir; teknik göstergeler fiyat barlarından hesaplandığı için çalışır.

Deneme Alanı'nda deneyin →

Sektör üyeliği

Her BIST enstrüman kaydı (/v1/instruments, /v1/instruments/{id}) sector ve sector_code taşır: hissenin ait olduğu Portföy sektörü (Türkçe adı ve /v1/sectors'ta kullanılan slug, ör. bankacilik, holdingler — aynı 30 kod). Hisse hiçbir sektörde değilse ikisi de null'dır. ABD enstrümanlarında bu iki alan eski anlamını korur: SIC sektör açıklaması ve kodu. Bir sektörün üyeleri /v1/sectors/{code}/constituents altındadır — bkz. Sektör analitiği.

curl — AKBNK's sector (any key)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/instruments/bist:AKBNK"
# → { …, "sector": "Bankacılık", "sector_code": "bankacilik" }

Teknik göstergeler

Kendi BIST barlarımız üzerinde on gösterge — RSI, MACD, Bollinger, SMA, EMA (+ ROC, OBV, ATR, ADX, Stochastic). Varsayılan set (rsi,macd,bbands,sma,ema; periyotlar 20/50/200) günlük olarak önceden hesaplanır ve anında sunulur; özel seçimler aynı matematikle anlık hesaplanır. Bar bazlı yüksek/düşük gerektiren göstergeler (ATR/ADX/Stochastic) BIST günlük barlarında unavailable altında raporlanır (uydurulmaz) — bunlar için resolution=5m kullanın.

curl — default indicator snapshot
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:THYAO/indicators"

Finansal tablolar

KAP'a bildirilen gelir tablosu, bilanço ve nakit akışı (lisanslı veri dağıtıcısı aracılığıyla). 2024 ve sonrası TMS-29 enflasyona göre düzeltilmiş, 2023 ve öncesi nominaldir — her dönem kendi basis değerini taşır. Yıllar arası karşılaştırma için currency=USD isteyin. timeframe=annual|quarterly (çeyreklik değerler bildirildiği gibi yıl-başından-bugüne kümülatiftir).

curl — annual statements in USD (cross-year comparable)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:AEFES/financials?timeframe=annual&currency=USD"

Bir tablonun hangi sürümü: ?basis=

basis parametresi (yalnızca BIST) bir bildirilmiş tablonun hangi sürümünü aldığınızı seçer. Varsayılan — current — değerin bugün itibarıyla durduğu halidir: kaynağımız geçmiş dönemleri zaman içinde ileriye doğru yeniden ifade eder, dolayısıyla eski bir dönem en yeni ölçü biriminde gösterilir. Sunulan her dönem yine kendi inflation_adjusted / nominal esas etiketini taşır.

?basis=as_reported size her dönemi İLK BİLDİRİLDİĞİ HALİYLE verir; sonraki herhangi bir revizyon ya da yeniden ifadeden bağımsız. Dürüst sınırı bilin: bu anlık görüntü yalnızca ileriye doğru alınır (yeni bildirimlerin ilk görüldüğü andan itibaren), bu yüzden seyrektir — çoğu eski dönemin henüz as-reported satırı yoktur ve geriye doldurulmak yerine periods'tan basitçe eksiktir. annual ve quarterly zaman aralıklarını kapsar; türetilmiş quarterly_standalone / ttm bunun üzerinde hesaplanmaz (bunları istemek dürüst bir boş seri döner). Her as_reported yanıtı bunu açıklayan bir methodology notu taşır. us: tablolar doğaları gereği ilk-bildirildiği-gibidir; dolayısıyla bir us: kimliğinde basis 400 döner.

curl — annual statements as originally filed (scope: history)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:AEFES/financials?timeframe=annual&basis=as_reported"
response (abridged) — sparse snapshot, empty for now
{
  "instrument_id": "bist:AEFES", "currency": "TRY",
  "timeframe": "annual", "basis": "as_reported",
  "methodology": "basis=as_reported returns each period's figures AS FIRST FILED …",
  "periods": [],
  "count": 0
}

Bugün itibarıyla anlık görüntü henüz boştur — ilk-bildirilmiş hiçbir satır gelmedi — bu yüzden periods [] döner. Bir sonraki bildirim döneminden itibaren dolmaya başlar.

Türetilmiş dönemler: quarterly_standalone ve ttm

Şirketler çeyrekleri kümülatif bildirir (Q2 = ilk altı ay). İki timeframe bu çıkarmayı sizin yerinize yapar. quarterly_standalone her 3 aylık çeyreği tek başına verir: Q1 bildirildiği gibi, Q2 = 6A − 3A, Q3 = 9A − 6A, Q4 = tam yıl − 9A. ttm son on iki ayı verir: son tam yıl + bu yılın yıl-başından-bugüne değeri − geçen yılın aynı dönemi. İkisi de şirketin yayımladığı değil, PortGate'in hesapladığı değerlerdir: her dönem derived: true taşır, formülünü ve hesaba giren source_periods listesini gösterir; yanıtta bir methodology metni bulunur. Yalnızca akım kalemleri türetilir (gelir tablosu ve nakit akışı); bilanço kalemleri en son girdinin bildirildiği halidir, hisse başına kalemler çıkarılır.

curl — THYAO standalone quarters (scope: history)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:THYAO/financials?timeframe=quarterly_standalone&limit=3"
response (abridged)
{
  "instrument_id": "bist:THYAO", "currency": "TRY",
  "timeframe": "quarterly_standalone", "derived": true,
  "methodology": "Derived by PortGate from the filed rows — NOT a source observation …",
  "periods": [
    {"fiscal_period": "Q2", "fiscal_year": "2026", "end_date": "2026-06-30",
     "basis": "inflation_adjusted", "derived": true,
     "formula": "quarterly#2026-06 − quarterly#2026-03",
     "source_periods": ["quarterly#2026-06", "quarterly#2026-03"],
     "null_reason": null,
     "items": {"3C": {"value": "327108000000", "label_tr": "Satış Gelirleri", …}, …}},
    {"fiscal_period": "Q1", "formula": "quarterly#2026-03", …},
    {"fiscal_period": "Q4", "fiscal_year": "2025", "end_date": "2025-12-31",
     "formula": "annual#2025-12 − quarterly#2025-09",
     "items": {}, "income_statement": {},
     "null_reason": "TMS-29 measuring-unit mismatch: the source restates inflation-adjusted annual rows …"}
  ],
  "count": 3
}
Bazı türetilmiş dönemler neden boş (null_reason)
FY2024'ten itibaren tablolar enflasyona göre düzeltilmiştir (TMS-29). Kaynağımız her yıllık tabloyu en yeni bildiriminin satın alma gücüyle yeniden ifade eder; çeyreklik tablolar ise kendi çeyrek sonunun lirasıyla kalır. Birini diğerinden çıkarmak iki farklı ölçü birimini karıştırır ve kesin görünen ama doğru olmayan bir sayı üretir. Bu yüzden FY2024'ten itibaren yıllık bir satırı çeyreklik bir satırla asla birleştirmeyiz: tek başına Q4 ve Q1–Q3'teki TTM boş tablolar ve bunu söyleyen bir null_reason ile döner. Tek başına Q1–Q3 yine türetilir, yıl sonundaki TTM doğrudan yıllık satırdır ve 2023 ve öncesi (nominal) tüm dönemler eksiksiz türetilir.

Bir çeyrek türetilebildiğinde bile her bildirim kendi dönem sonu lirasıyladır; bu yüzden tek başına bir çeyrek, birbirinden biraz farklı iki birimi çıkarır ve fark iki tarih arasındaki enflasyonla büyür. Eksik bir girdi dönemi ya da farklı muhasebe esası veya şablondaki girdiler de boş tablo ve null_reason üretir — asla karışık bir rakam değil. USD rakamları kendi USD serisinden ayrıca türetilir.

Tazelik: üst kaynak konsolidatörünü günde beş kez tararız — 09:30 / 13:30 / 18:30 / 21:30 / 23:30 TSİ — ve tabloları 5 dakika önbellekte tutarız. Tablolar, üst kaynak konsolidatörü yayımladıkça görünür; iş günlerinde bu tipik olarak KAP bildiriminden birkaç saat sonradır ve bu üst kaynak gecikmesi hiçbir taramamızın aşamayacağı bir tabandır. Yanıttaki source kaynak bilgisi esastır.

Değerleme metrikleri

Piyasa değeri (ham TRY, ayrıca milyar cinsinden değer ve büyüklük kovası) ile F/K, işlem günlerinde 5 dakikada bir güncellenerek lisanslı veri dağıtıcımızdan aynen geçirilir. Geri kalan her şey PortGate tarafından bildirilen tablolardan hesaplanır; sade haliyle:

formulas
PD/DD (pb_ratio)  = piyasa değeri ÷ ana ortaklığa ait özkaynak
FAVÖK (ebitda)    = esas faaliyet kârı + amortisman ve itfa
                    (en yeni çeyrek, bildirildiği gibi kümülatif)
ebitda_ttm        = aynısı, son on iki ay için
net_debt          = finansal borçlar − nakit
                    − kısa vadeli finansal yatırımlar
ev (FD)           = piyasa değeri + net_debt   (azınlık payları eklenmez)
ev_ebitda         = ev ÷ ebitda_ttm            (biri ≤ 0 ise null)
eps_growth_pct    = ana ortaklığa ait TTM net kârın yıllık büyümesi
peg               = F/K ÷ eps_growth_pct       (büyüme ≤ 0 ise null)

PD/DD, azınlık payları dahil toplam özkaynağa değil, ana ortaklığa ait özkaynağa bölünür — KCHOL gibi bir holdingde bu PD/DD'yi 0,44'ten 0,72'ye taşır. Bankalar ve sigortacılar farklı bir tablo formatıyla (banka/sigorta tablo formatı) bildirir: orada özkaynak satırını etiketinden okur, tabloda ayrıca gösteriliyorsa azınlık paylarını düşeriz (hangi satırların kullanıldığını note söyler); azınlık payını ayrıca göstermeyen sigortacılarda toplam özkaynak kullanılır ve note bunu belirtir. Net borç, FD ve FAVÖK yalnızca sanayi şablonu içindir — bankalar ve sigortacılar için gerekçeli null'dır. Kiralama yükümlülükleri net borca yalnızca şirket bunları finansal borçların içinde raporluyorsa girer.

Hesaplanan bir oran, iki gözlem zamanını dürüstçe karıştırır: tablo tarafı source_period (ör. quarterly#2026-06) ve period_end ile, piyasa verisi tarafı as_of / data_date ile etiketlenir. 2024 ve sonrası tablolar TMS-29 enflasyona göre düzeltilmiştir; bu yüzden PD/DD başka yerlerde yayımlanan rakamlardan farklı olabilir.

Kaynakta sıfır, eksik demektir — biz bunun yerine null ile birlikte null_reason sunarız, asla sahte bir değer değil. (0.001, 1000) aralığı dışına düşen bir PD/DD de, mantıksız bir sayı yerine null olarak sunulur (girdiler büyük olasılıkla uyumsuzdur).

TTM tabanlı alanlar (ebitda_ttm, ev_ebitda, eps_growth_pct, peg) yukarıdaki finansal tablo ttm kurallarını izler: FY2024 ve sonrasında en yeni tablo bir Q1–Q3 bildirimiyken TTM, enflasyona göre yeniden ifade edilmiş bir yıllık satırı bildirildiği gibi kalan çeyreklerle karıştırır; bu yüzden bu dört alan bu gerekçeyle null'dır ve en yeni tablo bir yıl sonu tablosu olduğunda dolar. Büyüme nominaldir, yani enflasyonu içerir. Eski ebitda alanı (en yeni çeyrek, kümülatif) değişmedi.

Her metrik aynı biçimdedir

AlanTürNotlar
valuestring | nullTam ondalık metin olarak değer ya da null.
null_reasonstring | nullvalue neden null (ör. kaynak sağlamıyor, banka/sigorta tablo formatı, TMS-29 ölçü birimi uyuşmazlığı). value doluysa null.
source_periodstring | nullKullanılan tablo dönemi: quarterly#2026-06 (bildirildiği gibi kümülatif) veya ttm#2026-06 (türetilmiş). Yalnızca hesaplanan metriklerde.
period_enddate | nullO dönemin tablo tarihi.
inputsobjectHesaba giren rakamların kendisi, ör. {market_cap, equity_attributable_to_parent}.
notestring | nullAlan adından anlaşılmıyorsa formül / kalem seçimi.
curl — THYAO valuation (scope: history)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:THYAO/valuation"
response (abridged)
{
  "instrument_id": "bist:THYAO", "market": "bist", "currency": "TRY",
  "source": "licensed-distributor + kap-filings",
  "as_of": "2026-08-24T15:32:45Z", "data_date": "2026-08-24",
  "market_cap": {"value": "414690000000", "billions": "414.69",
                 "category": "200-500B TRY", "null_reason": null},
  "pe_ratio": {"value": "3.7", "null_reason": null},
  "pb_ratio": {"value": "0.41", "null_reason": null,
               "source_period": "quarterly#2026-06", "period_end": "2026-06-30",
               "inputs": {"market_cap": "414690000000",
                          "equity_attributable_to_parent": "1018517000000"}},
  "ebitda": {"value": "53567000000", "source_period": "quarterly#2026-06", …},
  "net_debt": {"value": "620378000000", "source_period": "quarterly#2026-06",
               "inputs": {"short_term_financial_debt": "187257000000",
                          "long_term_financial_debt": "726977000000",
                          "cash_and_equivalents": "80346000000",
                          "short_term_financial_investments": "213510000000"},
               "note": "net debt = financial borrowings (2AA …) − cash … (1AA) − … (1AB) …"},
  "ev": {"value": "1035068000000",
         "inputs": {"market_cap": "414690000000", "net_debt": "620378000000"}, …},
  "ebitda_ttm": {"value": null, "source_period": "ttm#2026-06",
                 "null_reason": "TMS-29 measuring-unit mismatch: …",
                 "note": "TTM = quarterly#2026-06 + annual#2025-12 − quarterly#2025-06"},
  "ev_ebitda": {"value": null, "null_reason": "ebitda_ttm unavailable: TMS-29 measuring-unit mismatch: …"},
  "eps_growth_pct": {"value": null, "null_reason": "TMS-29 measuring-unit mismatch: …", …},
  "peg": {"value": null, "null_reason": "eps_growth_pct unavailable: …"},
  "coverage_from": "2025-09-20",
  "disclaimer": "…",
  "fx_rate": null, "fx_as_of": null
}

?currency=USD veya EUR para alanlarını — piyasa değeri (value ve billions), FAVÖK ve parasal girdiler — güncel spot kurla çevirir; kullanılan kur fx_rate ve fx_as_of ile bildirilir. Oranların (F/K, PD/DD, FD/FAVÖK, büyüme, PEG) para birimi yoktur ve asla değişmez. Büyüklük kovası kaynağın TRY kovası olarak kalır; çeyreklik tablo rakamları çeyrek sonu kuruyla değil bugünün kuruyla çevrilir. Günlük geçmiş uç noktası yalnızca TRY'dir: TRY dışında bir ?currency= 422 döner, çünkü her günü dürüstçe çevirmek o günün kurunu gerektirir — istemci tarafında fx:USDTRY günlük barlarıyla çevirin.

curl — KCHOL valuation in USD (money fields convert, ratios don't)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/stocks/bist:KCHOL/valuation?currency=USD"

Toplu: GET /v1/valuation?ids= virgülle ayrılmış en fazla 100 bist: kimliği alır ve her biri için tekli uç noktanın yanıtının aynısını istek sırasıyla döner (tekrarlar bir kez yanıtlanır). Başka piyasalardan ya da kapsamı olmayan kimlikler not_found içinde, kimlik başına gerekçe not_found_reasons içinde döner. Boş ya da 100'den fazla kimlik 422'dir. Kimlik başına ölçülür; ?currency= tüm grup için tek kur kullanır.

curl — bulk valuation (scope: history)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/valuation?ids=bist:THYAO,bist:KCHOL,bist:GARAN,us:AAPL"
# → {"valuations": [ …3 entries… ],
#    "not_found": ["us:AAPL"],
#    "not_found_reasons": {"us:AAPL": "valuation metrics cover bist: instruments only today"}}

Geçmiş uç noktası günlük piyasa değeri + F/K serisini artan sırayla, yalnızca işlem günleri olarak sunar (bayat hafta sonu/tatil satırları ayıklanır); varsayılan pencere son 90 gündür (?from=&to=). Kapsam 2025-09-20 tarihinde başlar — öncesindeki boş bir pencere hata değil, dürüst cevaptır.

Bilinmeye değer fiyat alanları

BIST fiyatları günlük fiyat bandını içerir — limit_up / limit_down (tavan/taban) — ayrıca alış/satış, gün OHLC, hacim (lot) ve işlem hacmi (TRY). as_of borsa işlem zamanıdır (İstanbul saati, UTC olarak döndürülür).

Bar anlambilimi (kaynağa sadık)

  • 5dk: close anlık fiyattır; open bir önceki anlık görüntünün fiyatıdır (türetilmiş); yüksek/düşük null değerindedir (5 dakikalık çözünürlükte gözlenmez); turnover bar boyunca oluşan gün-işlem-hacmi farkıdır.
  • 1g: yüksek/düşük/işlem hacmi/işlem sayısı gerçek seans değerleridir; open değeri null — kaynak depo bir BIST seans açılışı tutmaz.
curl — last year of daily bars in USD
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/candles/bist:THYAO?resolution=1d&currency=USD"

Bir alanın neden tahmin edilmek yerine null olduğunu ve 15 dakikalık gecikmenin her piyasada nasıl işlediğini: Veri ve tazelik politikası.

Tek-fiyat segmentleri

POİP ve İZL (izleme listesi) sembolleri tek fiyat açık artırması ile işlem görür — sürekli işlem değil, periyodik tek-fiyat sabitlemeleri. Enstrüman kayıtları price_mechanism: "auction" taşır; böylece bunları doğru gösterebilirsiniz (sabitlemeler arasındaki düz çizgi gerçektir, bayat veri değil).