- YokAtlas için resmi olmayan API
- Unoffical API for YokAtlas
- Telegram:
izcipy - Mail:
ramazan.izcir@gmail.com
🆕 Net Sihirbazı desteği eklendi! Bölüm bazlı tüm bölümlere son giren kişilerin netlerine ve obpsine ulaşın.
pip install YokAPIfrom YokAPI import Lisans, Onlisans
import asyncio
async def main():
# Bölüm arama ve ÖSYM program kodu bulma için aşağıdaki CSV bölümüne bakınız.
async with Lisans(program_id=108210665, year=2024) as lisans:
r = await lisans.kontenjan() # -> Kontenjan
""" ---> Kontenjan(
osym_kod=108210665,
year=2024,
kont_gte=85,
genel_kont=85,
yer_oran=100.0,
kesn_kayt=88,
kayt_yptrmyn=0,
tubitak=None,
engelli=None,
okl_bir_kont=3,
okl_bir_yer=3,
t_kont=88,
t_yer=88,
ek_yer=0
)
"""
print(r.osym_kod) # -> 108210665
print(r.year) # -> 2024
print(r.genel_kont) # -> 85
r_iller = await lisans.iller() # -> Iller
""" ---> Iller(
osym_kod=108210665,
year=2024,
sehirler=[Il(
isim="Toplam",
sayi=88,
oran=100.0
),
Il(
isim="Samsun",
sayi=16,
orn=18.2
),
]
)
"""
print(r_iller.sehirler[1].isim) # -> Samsun
print(r_iller.sehirler[1].sayi) # -> 16
print(r_iller.sehirler[1].orn) # -> 18.2
lise_dict = r_iller.model_dump() # pydantic.BaseModel methods
print(lise_dict) # -> {'osym_kod': 108210665, 'year': 2024, 'sehirler': [{'isim': 'Toplam', 'sayi': 88, 'orn': 100.0}, {'isim': 'Samsun', 'sayi': 16, 'orn': 18.2}, ...]
if __name__ == "__main__":
asyncio.run(main())from YokAPI import Lisans, Onlisans
import asyncio
async def main():
# Bölüm arama ve ÖSYM program kodu bulma için aşağıdaki CSV bölümüne bakınız.
lisans_1 = Lisans(program_id=108210665, year=2024)
r = await lisans_1.kontenjan() # -> Kontenjan
print(r.tubitak) # -> None # 0
await lisans_1.close() # oluşan sessionu kendimiz kapatmalıyız. with bloğu kendi kapatır.
if __name__ == "__main__":
asyncio.run(main())- Program session parametresi vermezseniz kendi sessionunu oluşturur. Kendi sessionuzu vermek isterseniz aşağıdaki kodu inceleyin.
from YokAPI import Lisans, Onlisans
import asyncio
import aiohttp
# import certifi
# import ssl
async def main():
# ssl_context = ssl.create_default_context(cafile=certifi.where())
session_ = aiohttp.ClientSession(
connector=aiohttp.TCPConnector(ssl=False), # İsterseniz ssl_context kullanarak doğrulamayı açabilirsiniz.
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
}
)
onlisans_1 = Onlisans(program_id=108250346, year=2024, session=session_)
r = await onlisans_1.genel_blg() # -> GenelBilgilerOnlisans
print(r.bos_kontenjan) # -> None # 0
await session_.close()
if __name__ == "__main__":
asyncio.run(main())YokAPI kullanıcılarının bölümlerin ÖSYM program kodunu (osym_kod / program_code) hızlıca bulup veri çekebilmesi için, ÖSYM’nin yayımladığı kaynaklardan derlenmiş toplu ve temizlenmiş bir CSV dosyası eklenmiştir: data/universities_departments.csv.
- CSV sütunları:
- program_code (ÖSYM kodu)
- department_name (Bölüm adı)
- university_name (Üniversite adı)
- faculty_name (Fakülte adı)
- is_undergraduate (Lisans=True, Önlisans=False)
- years (ör. 2022,2023,2024)
- tags (İngilizce, KKTC, vb.)
- score_type (ör. SAY/SÖZ/EA/TYT)
- scholarship_type (ör. Ücretsiz/Burslu/%50 İndirimli)
Kısa bir örnek satırlar:
| program_code | department_name | university_name | faculty_name | is_undergraduate | years | tags | score_type | scholarship_type |
|---|---|---|---|---|---|---|---|---|
| 103390230 | Abaza Dili ve Edebiyatı | DÜZCE ÜNİVERSİTESİ | Fen-Edebiyat Fakültesi | True | 2024 | SÖZ | Ücretsiz | |
| 108690161 | Acil Durum ve Afet Yönetimi | PAMUKKALE ÜNİVERSİTESİ | Serinhisar Meslek Yüksekokulu | False | 2022,2023,2024 | TYT | Ücretsiz |
Notlar ve öneriler:
- Şu an YÖK Atlas’ta mevcut yıllar: 2022, 2023, 2024. Bir bölüm bazı yıllarda bulunmayabilir; istek atmadan önce CSV’deki
yearssütununu kontrol edip uygun yılı seçin. - Büyük boyutlu JSON’u repo’ya eklemedim; isterseniz
data/data_csv_to_json.pyile CSV’yi üniversiteye göre gruplanmış JSON’a dönüştürüp kullanabilirsiniz. - YokAPI scraper ile üretilmiş daha detaylı ve temizlenmiş bir veri seti için: https://github.com/izcir/turkish-university-admissions-dataset
CSV’den osym_kod bulup YokAPI ile veri çekme (Lisans örneği):
import pandas as pd
from YokAPI import Lisans
import asyncio
async def run():
df = pd.read_csv("data/universities_departments.csv")
row = df[(df["university_name"] == "ONDOKUZ MAYIS ÜNİVERSİTESİ") &
(df["department_name"] == "Bilgisayar Mühendisliği") &
(df["is_undergraduate"] == True)].iloc[0]
program_id = int(row["program_code"]) # 108210665
years = str(row.get("years")).split(",") # -> ['2022', '2023', '2024']
year = years[-1] # -> 2024
async with Lisans(program_id=program_id, year=year) as lisans:
genel = await lisans.genel_blg()
print(genel.toplam_kontenjan, genel.yer_012_son_sira)
asyncio.run(run())Önlisans bölümleri için benzer şekilde is_undergraduate == False filtreleyip Onlisans sınıfını kullanın.
- Modeller
pydantic.BaseModelsınıfındandır. BaseModel docs
cinsiyet()→Cinsiyetkontenjan()→Kontenjanogr_durum()→OgrenimDurumugenel_blg()→GenelBilgiler
lise_alan()→LiseAlanliseler()→Liselerlise_grup_tip()→LiseTipokul_birinci()→OkulBirinciKontenjan
tercih_il()→TercihIltercih_fark()→TercihFarktercih_program()→TercihProgramtercih_uni()→TercihUnitercih_uni_tur()→TercihUniTurtercih_istatistik()→TercihIstatistikort_tercih()→OrtTercihtaban_puan()→TabanPuantercih_genel()→TercihGenel
mezun_yil()→MezunYildegisim_ogr()→DegisimOgrencimezun_ogr()→MezunOgrencikayitli_ogr()→KayitliOgrenciyatay_gecis()→YatayGecis
ogretim_uyesi()→OgretimUyesiyerlesme_kosul()→YerlesmeKosul
cograf_bolg()→CografiBolgeleriller()→İller
- Modeller
pydantic.BaseModelsınıfındandır. BaseModel docs Lisanstan farklı Modeller:TercihFarkOnlisans,TabanPuanOnlisans,GenelBilgilerOnlisansÖnlisansta bulunmayan YKS verileri:yks_puan(),yks_sira()
cinsiyet()→Cinsiyetkontenjan()→Kontenjanogr_durum()→OgrenimDurumugenel_blg()→GenelBilgilerOnlisans
lise_alan()→LiseAlanliseler()→Liselerlise_grup_tip()→LiseTipokul_birinci()→OkulBirinci
tercih_il()→TercihIltercih_fark()→TercihFarkOnlisanstercih_program()→TercihProgramtercih_uni()→TercihUnitercih_uni_tur()→TercihUniTurtercih_istatistik()→TercihIstatistikort_tercih()→OrtTercihtaban_puan()→TabanPuanOnlisanstercih_genel()→TercihGenel
mezun_yil()→MezunYildegisim_ogr()→DegisimOgrencimezun_ogr()→MezunOgrencikayitli_ogr()→KayitliOgrenciyatay_gecis()→YatayGecis
ogretim_uyesi()→OgretimUyesiyerlesme_kosul()→YerlesmeKosul
cograf_bolg()→CografiBolgeleriller()→İller
Net Sihirbazı, belirli bir bölüm için tüm üniversitelerdeki yerleşen son kişinin net ortalamalarını getirir.
from YokAPI import NetSihirbaziLisans, NetSihirbaziOnlisans
import asyncio
async def main():
# Lisans için (bolum_id: data/bolumler_lisans.csv dosyasından alınır)
async with NetSihirbaziLisans(bolum_id=11685) as net_lisans: # 11685 = Abaza Dili ve Edebiyatı
data = await net_lisans.net_sihirbazi()
print(data.model_dump())
# Önlisans için (bolum_id: data/bolumler_onlisans.csv dosyasından alınır)
async with NetSihirbaziOnlisans(bolum_id=32020) as net_onlisans: # 32020 = Bilgisayar Programcılığı
data = await net_onlisans.net_sihirbazi()
print(data.model_dump())
asyncio.run(main()){
"bolum_id": 11685,
"bolumler": [
{
"osym_kod": 103390230,
"year": 2025,
"uni": "DÜZCE ÜNİVERSİTESİ (4 Yıllık)",
"katsayi": 0.12,
"obp": 308.126,
"puan": 213.28355,
"bolum_yerlesen": "21",
"dersler": {
"TYT Türkçe": 8.0,
"TYT Sosyal": 7.0,
"TYT Mat": -1.75,
"TYT Fen": 2.0,
"AYT TDE": 0.5,
"AYT Tar1": 3.25,
"AYT Coğ1": -0.5,
"AYT Tar2": 2.25,
"AYT Coğ2": 5.0,
"AYT Fel": -0.25,
"AYT Din": 0.75
}
},
{
"osym_kod": 103390231,
"year": 2025,
"uni": "DÜZCE ÜNİVERSİTESİ (İÖ) (4 Yıllık)",
"katsayi": 0.12,
"obp": 295.432,
"puan": 198.54321,
"bolum_yerlesen": "15",
"dersler": {
"TYT Türkçe": 6.5,
"TYT Sosyal": 5.0,
"TYT Mat": 1.25,
"TYT Fen": 3.0,
"AYT TDE": 1.0,
"AYT Tar1": 2.5,
"AYT Coğ1": 0.75,
"AYT Tar2": 1.5,
"AYT Coğ2": 3.25,
"AYT Fel": 0.5,
"AYT Din": 1.25
}
}
]
}bolum_iddeğerleridata/bolumler_lisans.csvvedata/bolumler_onlisans.csvdosyalarından alınabilir.dersleralanı dinamik olarak oluşturulur ve bölümün puan türüne göre farklı dersler içerebilir (SAY/SÖZ/EA/TYT).- Her üniversitedeki yerleşen son kişinin net ortalamaları döndürülür.
- Bu bölümde, veri modelleri ve içerikleri açıklanmaktadır.
| Alan | Tür | Bilgi |
|---|---|---|
osym_kod |
int |
ÖSYM program kodu |
year |
int |
Yıl |
bolum_ismi |
str |
Bölüm adı |
program_kod |
int |
Program kodu |
uni_tur |
str |
Üniversite türü |
uni |
str |
Üniversite adı |
fakulte |
str |
Fakülte adı |
puan_tur |
str |
Puan türü |
burs_tur |
str |
Burs durumu |
genel_kontenjan |
int |
Genel kontenjan |
ob_kontenjan |
int |
OBP kontenjanı |
toplam_kontenjan |
int |
Toplam kontenjan |
genel_yerlesen |
int |
Genel yerleşen |
ob_yerlesen |
int |
OBP yerleşen |
toplam_yerlesen |
int |
Toplam yerleşen |
bos_kontenjan |
int |
Boş kontenjan |
ilk_yer_oran |
float |
İlk yerleşme oranı |
kayit_yaptirmayan |
int |
Kayıt yaptırmayan |
ek_yerlesen |
int |
Ek yerleşen |
yer_012_son_puan |
float |
0.12 katsayı puanı |
yer_018_son_puan |
float |
0.18 katsayı puanı |
yer_012_son_sira |
int |
0.12 katsayı sıra |
yer_018_son_sira |
int |
0.18 katsayı sıra |
tavan_puan |
float |
En yüksek puan |
tavan_basari_sira |
int |
En iyi sıra |
obp_kirilan |
int |
OBP kırılan |
ort_obp |
float |
Ortalama OBP |
ort_diploma |
float |
Ortalama diploma |
| Alan | Tür | Bilgi |
|---|---|---|
osym_kod |
int |
ÖSYM program kodu |
year |
int |
Yıl |
bolum_ismi |
str |
Bölüm adı |
program_kod |
int |
Program kodu |
uni_tur |
str |
Üniversite türü |
uni |
str |
Üniversite adı |
fakulte |
str |
Fakülte adı |
puan_tur |
str |
Puan türü |
burs_tur |
str |
Burs durumu |
genel_kontenjan |
int |
Genel kontenjan |
ob_kontenjan |
int |
OBP kontenjanı |
toplam_kontenjan |
int |
Toplam kontenjan |
genel_yerlesen |
int |
Genel yerleşen |
ob_yerlesen |
int |
OBP yerleşen |
toplam_yerlesen |
int |
Toplam yerleşen |
bos_kontenjan |
int |
Boş kontenjan |
ilk_yer_oran |
float |
İlk yerleşme oranı |
kayit_yaptirmayan |
int |
Kayıt yaptırmayan |
ek_yerlesen |
int |
Ek yerleşen |
yer_012_son_puan |
float |
0.12 katsayı puanı |
yer_018_son_puan |
float |
0.18 katsayı puanı |
yer_012_son_sira |
int |
0.12 katsayı sıra |
yer_018_son_sira |
int |
0.18 katsayı sıra |
tavan_2024_puan |
float |
En yüksek puan (2024) |
tavan_2024_sira |
int |
En iyi sıra (2024) |
ort_obp_2024 |
float |
Ortalama OBP (2024) |
ort_dn_2024 |
float |
Ortalama diploma notu (2024) |
| Alan | Tür | Bilgi |
|---|---|---|
osym_kod |
int |
ÖSYM program kodu |
year |
int |
Yıl |
kont_gte |
int |
Kontenjan Genel, Tübitak, Engelli toplam |
genel_kont |
int |
Genel kontenjan |
yer_oran |
float |
Yerleşme oranı |
kesn_kayt |
int |
Kesin kayıt yaptıran |
kayt_yptrmyn |
int |
Kayıt yaptırmayan |
tubitak |
int |
TÜBİTAK kontenjanı |
engelli |
int |
Engelli kontenjanı |
okl_bir_kont |
int |
Okul birincisi kontenjanı |
okl_bir_yer |
int |
Okul birincisi yerleşen |
t_kont |
int |
Toplam kontenjan |
t_yer |
int |
Toplam yerleşen |
ek_yer |
int |
Ek yerleşen |
...existing code...