Skip to content

TEFAS API Client - Türkiye'deki yatırım ve emeklilik fonlarına erişim (Python, TypeScript, Go, .NET, Java)

License

Notifications You must be signed in to change notification settings

eneshenderson/Tefas-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TEFAS API

License: MIT Python TypeScript Go .NET Java

TEFAS (Türkiye Elektronik Fon Alım Satım Platformu) için çoklu dil desteğine sahip API client kütüphanesi.

🎯 Ne İşe Yarar?

Bu kütüphane ile Türkiye'deki tüm yatırım fonları ve emeklilik fonlarının verilerine programatik olarak erişebilirsiniz:

  • Fon Bilgileri: Fiyat, toplam değer, yatırımcı sayısı
  • Fiyat Geçmişi: Geçmiş tarihli fiyat verileri
  • Varlık Dağılımı: Hisse, tahvil, repo, mevduat oranları
  • Piyasa Özeti: Toplam piyasa büyüklüğü ve istatistikler

📊 Güncel Veriler

Metrik Yatırım Fonları (YAT) Emeklilik Fonları (EMK)
Fon Sayısı 1,965 390
Toplam Portföy 7.40 Trilyon ₺ 2.05 Trilyon ₺
Yatırımcı Sayısı 10.3 Milyon 54.5 Milyon

🚀 Hızlı Başlangıç

Python

cd python
pip install -e .
playwright install chromium
from tefas import TefasClient, FundType

async with TefasClient(headless=True) as client:
    # Tüm fonları getir
    funds = await client.get_funds()
    
    # En büyük 10 fon
    top_funds = await client.get_top_funds(limit=10)
    
    # Belirli bir fon
    fund = await client.get_fund("GRO")
    print(f"{fund.code}: {fund.total_value_billion:.2f} Milyar ₺")

JavaScript / TypeScript

cd javascript
npm install
npx playwright install chromium
import { TefasClient } from 'tefas-api';

const client = new TefasClient({ headless: true });
await client.start();

const funds = await client.getFunds();
const topFunds = await client.getTopFunds({ limit: 10 });
const summary = await client.getMarketSummary();

console.log(`Toplam: ${summary.totalFunds} fon, ${summary.totalValueTrillion.toFixed(2)} Trilyon ₺`);

await client.close();

Go

cd go
go mod download
go run github.com/playwright-community/playwright-go/cmd/playwright install chromium
package main

import (
    "fmt"
    "github.com/eneshenderson/tefas-api/go/tefas"
)

func main() {
    client := tefas.NewClient(tefas.ClientOptions{Headless: true})
    client.Start()
    defer client.Close()

    funds, _ := client.GetFunds(tefas.FundTypeYAT)
    summary, _ := client.GetMarketSummary(tefas.FundTypeYAT)
    
    fmt.Printf("Toplam: %d fon, %.2f Trilyon ₺\n", 
        summary.TotalFunds, summary.TotalValueTrillion())
}

.NET (C#)

cd dotnet
dotnet restore
dotnet build
# Playwright kurulumu
pwsh bin/Debug/net8.0/playwright.ps1 install chromium
using Tefas.Api;

await using var client = new TefasClient(new TefasClientOptions { Headless = true });
await client.StartAsync();

var funds = await client.GetFundsAsync();
var topFunds = await client.GetTopFundsAsync(limit: 10);
var summary = await client.GetMarketSummaryAsync();

Console.WriteLine($"Toplam: {summary.TotalFunds} fon, {summary.TotalValueTrillion:F2} Trilyon ₺");

Java

cd java
# Maven
mvn compile
# veya Gradle
gradle build
import com.tefas.TefasClient;
import com.tefas.TefasClientOptions;

TefasClientOptions options = new TefasClientOptions();
options.setHeadless(true);

try (TefasClient client = new TefasClient(options)) {
    var funds = client.getFunds();
    var topFunds = client.getTopFunds(10);
    var summary = client.getMarketSummary();
    
    System.out.printf("Toplam: %d fon, %.2f Trilyon ₺%n", 
        summary.getTotalFunds(), summary.getTotalValueTrillion());
}

📚 API Metodları

Tüm dillerde aynı metodlar mevcuttur:

Metod Açıklama
getFunds() Tüm fonları listeler
getFund(code) Belirli bir fonun detaylarını getirir
getPriceHistory(code, days) Fon fiyat geçmişini getirir
getAllocation(code) Fon varlık dağılımını getirir
getTopFunds(limit) En büyük fonları sıralar
getMarketSummary() Piyasa özeti ve istatistikleri getirir
searchFunds(query) Fon adı veya koduna göre arama yapar

🏗️ Proje Yapısı

tefas-api/
├── python/          # Python paketi
├── javascript/      # TypeScript/JavaScript paketi  
├── go/              # Go modülü
├── dotnet/          # .NET kütüphanesi
├── java/            # Java kütüphanesi (Maven + Gradle)
├── LICENSE          # MIT Lisansı
└── README.md

⚙️ Yapılandırma

Parametre Varsayılan Açıklama
headless false Tarayıcı görünür/gizli modu
timeout 60000 İstek zaman aşımı (ms)

🔧 Teknik Detaylar

  • TEFAS web sitesi WAF (Web Application Firewall) koruması kullanır
  • Bu nedenle Playwright ile tarayıcı otomasyonu gereklidir
  • headless: false varsayılan olarak kullanılır (WAF bypass için gerekli)
  • Sunucu ortamlarında headless: true denenebilir ancak WAF engelleyebilir

📝 Fon Tipleri

Kod Açıklama
YAT Yatırım Fonları
EMK Emeklilik Fonları

🤝 Katkıda Bulunma

  1. Fork edin
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Commit edin (git commit -m 'Add amazing feature')
  4. Push edin (git push origin feature/amazing-feature)
  5. Pull Request açın

📄 Lisans

Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakın.

👤 Geliştirici

Enes Henderson

⚠️ Sorumluluk Reddi

Bu kütüphane resmi TEFAS API'si değildir. Yatırım kararlarınızda bu verileri kullanmadan önce resmi kaynaklardan doğrulama yapın.

About

TEFAS API Client - Türkiye'deki yatırım ve emeklilik fonlarına erişim (Python, TypeScript, Go, .NET, Java)

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published