BIST halka arzları

Borsa İstanbul halka arzları — duyurulan, talep toplayan ve tamamlanan — talep toplama penceresi, fiyat, büyüklük, dağıtım yöntemi, lider aracı kurum ve yayımlanan dağıtım sonucuyla.

Uç noktalar

Uç noktaKapsamAçıklama
GET/v1/ipo?state=all|upcoming|active|completed&from=&to=&limit=&cursor=ipo:read | quotes:bistTüm halka arzlar, duruma ve ilk işlem tarihine göre filtrelenebilir; tarihsiz duyurular önce, sonra en yeni talep toplama penceresi
GET/v1/ipo/{id}ipo:read | quotes:bistHisse koduyla tek bir halka arz — bist:XXXX ya da yalın XXXX; en son arz esas alınır

İki uç nokta da ipo:read ya da quotes:bist kapsamını kabul eder. quotes:bist ile borsada işlem gören kayıtlar last_price ve return_since_ipo_pct de taşır; yalnızca ipo:read ile bu iki alan null gelir.

Deneme Alanı'nda deneyin →

Filtreler ve parametreler

from ve to (YYYY-MM-DD, dahil) first_trade_date üzerinden filtreler; ikisinden biri verildiğinde ilk işlem tarihi olmayan halka arzlar düşer ve total yalnızca eşleşenleri sayar. Liste yalnızca state, from, to, limit ve cursor kabul eder, ayrıntı uç noktası hiçbirini kabul etmez: başka her sorgu parametresi, adını belirten bir 400 döner; böylece bir yazım hatası sessizce filtresiz listeyi döndürmez. status bir alandır, filtre değildir: state kullanın. Hatalı tarih ya da to'dan sonra gelen from da 400'dür.

Veri nereden geliyor

Satırlar Portföy uygulamasının halka arz tablosundan gelir; bu tablo kamuya açık halka arz listelerinden (birkaç saatte bir kontrol edilir) ve bir Portföy operatörünün girdiği kayıtlardan dolar. Her öğe hangisi olduğunu söyler: source otomatik veya manual'dır; biliniyorsa source_url ve source_updated_at (sayfanın son değişiklik zamanı) da gelir. PortGate tabloyu yaklaşık 15 dakika önbellekte tutar.

Durumlar

status, ?state= ile filtreleyebileceğiniz basit bir gruptur; stage ise kaynağın kendi yaşam döngüsü adımını korur. Tanımadığımız bir adım her iki alanda da olduğu gibi (küçük harfle) gösterilir ve yalnızca state=all altında görünür. Başka bir state değeri 422'dir.

AlanTürNotlar
stage: upcomingstatus: upcomingtarihleriyle duyuruldu, talep toplama henüz açılmadı (ertelenen arzlar dahil). Tarihleri henüz açıklanmamış bir arz, tarihler açıklanana kadar listelenmez
stage: collectingstatus: activetalep toplama sürüyor ya da kapandı ve dağıtım sonuçları bekleniyor
stage: distributedstatus: completeddağıtım sonuçları yayımlandı, henüz işlem görmüyor
stage: tradingstatus: completedilk işlem günü geldi ve hisse borsada

curl

curl — completed IPOs (scope: quotes:bist)
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/ipo?state=completed&limit=20"
curl — one IPO by ticker
curl -H "X-API-Key: $PORTGATE_KEY" \
  "https://api.theportfoy.com/portgate/v1/ipo/bist:INTET"
response
{
  "symbol": "INTET",
  "instrument_id": "bist:INTET",
  "bist_code": null,
  "company_name": "İntetra Teknoloji",
  "market_segment": "Yıldız Pazar",
  "status": "completed",
  "stage": "trading",
  "offering_start": "2026-08-26T06:00:00Z",
  "offering_end": "2026-08-27T14:00:00Z",
  "first_trade_date": "2026-09-01",
  "price": {"currency": "TRY", "min": 53.6, "max": 53.6, "offer": 53.6},
  "offering_size": {"lots": 40000000, "individual_investor_lots": 40000000,
                    "derived_value_try": 2144000000.0},
  "distribution_method": "Eşit Dağıtım",
  "distribution_method_code": "equal",
  "lead_broker": "Bulls Yatırım",
  "free_float_ratio": null,
  "distribution_result": {"participants": 650000, "lots_per_individual_investor": 61},
  "source": "auto",
  "source_url": "https://…",
  "source_updated_at": "2026-09-14T10:05:03Z",
  "as_of": "2026-09-16T09:05:12Z",
  "stale": false
}

GET /v1/ipo → {state, items, count, total, next_cursor, as_of, stale}

Bilinmeye değer alanlar

AlanTürNotlar
instrument_idstring | nullHisse PortGate'te fiyatlanabilir olduğunda bist:XXXX (yanıt anında canlı katalogla kontrol edilir); borsaya girmeden önce null.
offering_start / offering_enddatetime | nullTalep toplama penceresi, UTC (TSİ = UTC+3). first_trade_date bir Türkiye takvim günüdür.
priceobjectTRY. min/max her zaman kaydedildiği gibi; offer yalnızca sabit fiyatta (min = max) doludur — fiyat aralığında nihai fiyat kaydedilmediği için offer null'dır.
offering_sizeobjectArz edilen lot (1 lot = 1 pay) ve bireysel yatırımcı tahsisatı. derived_value_try PortGate tarafından lot × arz fiyatı olarak hesaplanır — yayımlanmış bir rakam değildir — ve biri bilinmiyorsa (ör. fiyat aralığı) null'dır.
distribution_method(_code)string | nulldistribution_method kaydedildiği gibi (Türkçe, ör. Eşit Dağıtım); distribution_method_code equal ya da proportional'dır, metin bilinen bir yöntem değilse null.
distribution_resultobject | nullYayımlanan dağıtım sonucu: kesin katılımcı sayısı ve bireysel yatırımcı başına lot. Sonuçlar yayımlanana kadar null — asla sıfır değil. Kaynağın tahmini katılımcı sayısı sunulmaz (eksik olduğunda ortalamayla doldurulur).
free_float_rationumber | nullArz sonrası halka açıklık oranı, yüzde (0–100), kaydedildiyse.
last_pricestring | nullGüncel BIST fiyatı (TRY), /v1/quotes'un sunduğu şekliyle. quotes:bist gerektirir; borsaya girmeden önce ya da kotasyon yoksa null.
return_since_ipo_pctstring | nullPortGate tarafından hesaplanır: (last_price − price.offer) / price.offer × 100, iki ondalık. Biri bilinmiyorsa (ör. fiyat aralığı) null. Borsaya girişten sonraki bedelsiz gibi sermaye işlemlerine göre düzeltilmez.

Kaynağa ulaşılamadığında

Halka arz kaynağına ulaşılamazsa PortGate son sağlam kopyayı (günlerce saklanır) gövdede stale: true ve bir X-Data-Stale: true yanıt başlığıyla sunmaya devam eder — as_of bu kopyanın ne zaman çekildiğini söyler. Çağrı yalnızca hiç kopya yoksa başarısız olur: kaynağa ulaşılamıyorsa 503, kullanılamaz bir yanıt verdiyse 502.