GitHub profilime LeetCode istatistiklerimi eklemek istediğimde ilk işim dokümantasyon aramak oldu. Sonuç: resmi API yok.
Ama tarayıcıyı açıp F12'ye bastım, Network sekmesine baktım ve ilginç bir şey gördüm.
GraphQL Endpoint'i
LeetCode'un frontend'i https://leetcode.com/graphql adresine istek atıyor. Bu endpoint'e doğrudan query gönderebiliyorsunuz. Resmi değil, duyurulmamış, ama çalışıyor.
query userPublicProfile($username: String!) {
matchedUser(username: $username) {
submitStats {acSubmissionNum {
difficulty count }
} profile {
ranking }
}
}Python tarafında bunu çekmek için requests yeterli:
def get_leetcode_stats(username):\n url = "https://leetcode.com/graphql"\n resp = requests.post(url, json={"query": query, "variables": {"username": username}})\n return resp.json()["data"]["matchedUser"]Schema Nasıl Keşfettim
Resmi schema yok. Tarayıcıda network trafiğini izleyerek hangi field'ların kullanıldığını anladım. Bir de introspection query çalıştırdım — tüm type'ları ve field'ları döküyor.
Rate Limiting
Agresif istekler atarsanız 429 alıyorsunuz. SQLite ile basit bir cache yazdım, saatte bir güncelleme yeterli.

Sonuçta Ne Yaptım
GitHub Actions ile her sabah çalışan bir workflow yazdım — stats çekiyor, SVG badge oluşturuyor, README'yi commit ediyor. Resmi API olmadan da oluyordu.
Bu endpoint'ler resmi olmadığından LeetCode istediği zaman değiştirebilir. Production'a kritik bağımlılık olarak koymazdım, ama kişisel projeler için gayet iyi çalışıyor.