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ç nokta | Kapsam | Açıklama |
|---|---|---|
| GET/v1/ipo?state=all|upcoming|active|completed&from=&to=&limit=&cursor= | ipo:read | quotes:bist | Tü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:bist | Hisse 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.
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.
| Alan | Tür | Notlar |
|---|---|---|
| stage: upcoming | status: upcoming | tarihleriyle duyuruldu, talep toplama henüz açılmadı (ertelenen arzlar dahil). Tarihleri henüz açıklanmamış bir arz, tarihler açıklanana kadar listelenmez |
| stage: collecting | status: active | talep toplama sürüyor ya da kapandı ve dağıtım sonuçları bekleniyor |
| stage: distributed | status: completed | dağıtım sonuçları yayımlandı, henüz işlem görmüyor |
| stage: trading | status: completed | ilk işlem günü geldi ve hisse borsada |
curl
curl -H "X-API-Key: $PORTGATE_KEY" \
"https://api.theportfoy.com/portgate/v1/ipo?state=completed&limit=20"curl -H "X-API-Key: $PORTGATE_KEY" \
"https://api.theportfoy.com/portgate/v1/ipo/bist:INTET"{
"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
| Alan | Tür | Notlar |
|---|---|---|
| instrument_id | string | null | Hisse PortGate'te fiyatlanabilir olduğunda bist:XXXX (yanıt anında canlı katalogla kontrol edilir); borsaya girmeden önce null. |
| offering_start / offering_end | datetime | null | Talep toplama penceresi, UTC (TSİ = UTC+3). first_trade_date bir Türkiye takvim günüdür. |
| price | object | TRY. 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_size | object | Arz 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 | null | distribution_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_result | object | null | Yayı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_ratio | number | null | Arz sonrası halka açıklık oranı, yüzde (0–100), kaydedildiyse. |
| last_price | string | null | Güncel BIST fiyatı (TRY), /v1/quotes'un sunduğu şekliyle. quotes:bist gerektirir; borsaya girmeden önce ya da kotasyon yoksa null. |
| return_since_ipo_pct | string | null | PortGate 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
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.