8 dakikalık okumaÖğreticiler

Bağlantı Analitiği API: Tıklama İstatistiklerini Çekin

Bağlantı analitiği API rehberi: API anahtarının okuyabildiği tıklama raporları, sorgu parametreleri, JSON yanıtları, imleç sayfalama ve günlük Slack betiği.

Marius Voß
DevRel · edge infra

Elido bağlantı analitiği API'si, bir çalışma alanı API anahtarıyla kimlik doğrulanan, https://api.elido.app üzerindeki tek bir uç noktadır: GET /v1/workspaces/{workspace_id}/analytics/{report}. 15 rapor sunar: tıklama zaman serisi, etkileşim özeti, en çok tıklanan bağlantılar, son tıklamaların imleç sayfalamalı akışı ve ülke, referrer, cihaz, tarayıcı, ana makine ve hedefe göre dökümler. Tarihler varsayılan olarak son 30 gündür, link_id herhangi bir raporu tek bir kısa bağlantıya daraltır; CSV dışa aktarımı, hunilar, kohortlar ve LTV panoda kalır.

Yalnızca URL'ye ihtiyacınız varsa yanıtın tamamı bu. Rehberin geri kalanı, her tıklama analitiği API sayfasının en başta söylemesini dilediğim şeyler: tam parametreler, geri aldığınız JSON, tarih aralığının sessizce varsaydığınızdan farklı çalıştığı yerler ve dünün rakamlarını her sabah Slack'e gönderen 30 satırlık bir betik.

Tıklama verisi çeken çoğu kişi, kampanya etiketlemesiyle başlayan bir döngüyü kapatıyor; bağlantılarınız henüz tutarlı UTM taşımıyorsa önce onu uçtan uca UTM takibiyle düzeltin. Temiz girdi, istatistikleri çekmeye değer kılar.

Bağlantı Analitiği API'si Ne Döndürür?

Her rapor aynı yolun altında yaşar ve rapor adı son segmenttir. Eğik çizgili adlar (links/top, clicks/recent, breakdown/country) kodlanmadan girilir. İzin listesinin dışında bir şey isterseniz unknown analytics report ile 404 alırsınız.

RaporYanıt biçimiNe için iyi
timeseries{items: [{ts, count}]}Grafikler, güne göre karşılaştırmalar
summarybeş metrikli düz nesneGünlük özetler, KPI kutucukları
links/top{items: [{link_id, slug, count}]}"Haftayı hangi bağlantılar taşıdı"
clicks/recent{items: [tıklama satırları], next_cursor}Neredeyse gerçek zamanlı akışlar, kendi depolamanız
breakdown/country, /referrer, /device, /browser, /host, /destination{items: [{key, count}]}Pasta grafikleri, kanal dağılımları
top-countries, top-referrers, top-destinations{items: [{key, count}]}Aynı veri, daha düz adlar
top-regions, top-cities{points: [{country, region veya city, count}]}Ülke altı coğrafi ayrıntılandırma

Son satıra dikkat edin. Bölge ve şehir raporları satırlarını items değil points içine sarar; çünkü her satır tek bir anahtar yerine bir ülke artı bir bölge ya da şehir taşır. Genel bir ayrıştırıcının buna tam bir kez takıldığını gördüm. Bir kez yeter.

Aynı yüzey API ve SDK'ları, MCP sunucusunun analitik aracını ve n8n düğümündeki Get Analytics işlemini besler; yani burada öğrendiğiniz her şey oralara da geçer.

Yan yana iki editör anahtarının yanında salt okunur bir raporlama anahtarını gösteren Elido API anahtarları sayfası; her anahtarın ön eki ve istek sayısı görünüyor

Çalışma Alanı API Anahtarıyla Kimlik Doğrulama

API anahtarları elido_ ile başlar ve tam olarak bir çalışma alanına aittir. Anahtarı bearer belirteci olarak gönderin:

curl -s "https://api.elido.app/v1/workspaces/4821/analytics/summary" \
  -H "Authorization: Bearer $ELIDO_API_KEY"

Yönlendirici, herhangi bir sorgu çalışmadan önce iki şeyi denetler: anahtarın 4821 çalışma alanına ait olduğunu ve analytics.view izni taşıdığını. Her yerleşik rolde bu izin var, Viewer dahil. Bu yüzden raporlama işleri için bir Viewer anahtarı oluşturun. Bir raporlama cron'unun bağlantı silebilmesi için hiçbir gerekçe yok ve Viewer anahtarı silemez. Erişimi olmayan anahtar 403 alır.

link_id erişimi de genişletmez. Denetlenen, yoldaki çalışma alanı kimliğidir; bu yüzden başkasının çalışma alanından ödünç alınmış bir bağlantı kimliği sıfır satırla eşleşir ve boş liste döndürür. Doğru hata türü bu: sıkıcı ve hiçbir şey sızmıyor.

Tıklama İstatistikleri İçin Sorgu Parametreleri: Tarihler, Saat Dilimi, Filtreler

Yapacağınız hemen her kısa bağlantı istatistik API çağrısını altı parametre kapsar:

  • YYYY-MM-DD biçiminde from ve to. İkisini de bırakırsanız şu ana kadarki 30 günü alırsınız. Yalnızca to verirseniz from varsayılan olarak ondan 30 gün öncedir.
  • Herhangi bir raporu tek bir bağlantıya kapsamlamak için link_id, tek bir yönlendirme alan adına kapsamlamak için host; bir çalışma alanı birkaç markalı alan adı çalıştırdığında işe yarar.
  • timeseries için interval, ya hour ya da day (varsayılan). Başka bir değer isteği başarısız kılar.
  • Dökümler ve en çok listeleri için limit, 1 ila 200, varsayılan 50. links/top istisnadır: daha fazlasını istemezseniz 10 döndürür.

Başınızı ağrıtacak ayrıntı şu. İki tarih de gece yarısı UTC olarak okunur ve pencere from'u içerir ama to'dan önce biter. 21 Eylül'ün tamamı için from=2026-09-21&to=2026-09-22 gönderin. to=2026-09-21 gönderirseniz o günden hiçbir şey alamazsınız.

Saat dilimi diğeri. tz'yi bir IANA saat dilimi adı olarak verin ya da X-User-TZ başlığı ayarlayın; timeseries saatlik veya günlük kovalarını yerel saate göre keser. Yalnızca kovalar kayar. from/to penceresi hâlâ UTC'dir; bu yüzden Berlin'in "dünü" biraz daha geniş bir pencere ister, aşağıdaki betik bunu halleder. Europe/Berln gibi bir yazım hatası unknown IANA timezone ile 400 döndürür; bu, sessizce yanlış bir grafikten iyidir.

curl -s -G "https://api.elido.app/v1/workspaces/4821/analytics/timeseries" \
  -H "Authorization: Bearer $ELIDO_API_KEY" \
  --data-urlencode "from=2026-09-01" \
  --data-urlencode "to=2026-09-22" \
  --data-urlencode "interval=day" \
  --data-urlencode "tz=Europe/Berlin" \
  --data-urlencode "link_id=918273"

Üzerinde Kod Yazabileceğiniz Yanıt Biçimleri

Bir zaman serisi noktası, kovanın başlangıcı için bir RFC 3339 zaman damgası olan ts ile count taşır. Sıfır tıklamalı kovalar yalnızca yoktur; bu yüzden grafiğe dökmeden önce boşlukları kendiniz doldurun, yoksa sakin bir pazar x ekseninden kaybolur.

{
  "items": [
    { "ts": "2026-09-19T00:00:00Z", "count": 412 },
    { "ts": "2026-09-21T00:00:00Z", "count": 388 }
  ]
}

Dökümler sayıya göre sıralı {"items": [{"key": "DE", "count": 1204}, ...]} döndürür. Özet düz bir nesnedir:

{
  "total_clicks": 5310,
  "unique_visitors": 3987,
  "returning_visitors": 611,
  "avg_clicks_per_visitor": 1.33,
  "bounce_rate": 0.85
}

İki tanım önemli. Benzersiz ziyaretçiler penceredeki farklı IP adreslerine göre sayılır; yani tek bağlantı arkasındaki bir ofis bir kez sayılır. Ve bounce_rate yüzde değil, kesirdir: pencerede yalnızca bir kez tıklayan benzersiz ziyaretçilerin payı. İniş sayfanızda ne olduğu hakkında hiçbir şey söylemez; bu sayıların GA4 oturumlarıyla neden hiç tutmadığı da bu yüzden (tıklamalar ile GA4 oturumları yazısı aradaki farkı anlatır). Her rakam size ulaşmadan önce botlardan arındırılır; Elido bağlantı analitiğinde gördüğünüz sayılar da bunlardır.

Son Tıklamaları İmleçle Sayfalama

clicks/recent, tek tek tıklamaları döndüren bağlantı takibi API raporudur ve en yeniden başlar. Her satırda ts, link_id, slug, host, referer, country_code, device, browser, destination, user_agent ve ip vardır. Sayfa boyutu 1 ila 500, varsayılan 100.

Bir sayfa dolu döndüğünde yanıt bir next_cursor taşır. Bir sonraki, daha eski sayfayı almak için bunu ?cursor= olarak verin; null pencerenin sonuna geldiğiniz anlamına gelir.

Bağlantı analitiği API'sinin clicks/recent raporu için imleç sayfalama: ilk istek tıklamaların en yeni sayfasını ve next_cursor değerini döndürür, istemci bunu bir sonraki eski sayfa için ?cursor= olarak geri verir ve null next_cursor döngüyü bitirir

İmleç son satırın zaman damgasına ve bağlantı kimliğine işaret eder. Aynı bağlantıya aynı milisaniyede yapılan iki tıklama bir sayfa sınırında eşitlenebilir ve en kötü durum bir yinelenen satırdır; asla atlanan bir satır değil. Saklarken tam satıra göre tekilleştirin. Nadirdir, ama on satırlık bir ekleme, muhasebeye bir birim kaymasını açıklamaktan iyidir.

Bu satırlar IP adreslerini ve user agent'ları içerir; yani kişisel veridir. Bunları bir veri ambarına kopyalıyorsanız AB'de tutun ve bir saklama süresi belirleyin; gerekçeyi pazarlama ekipleri için AB veri barındırma rehberi anlatır. Çoğu rapor için ham satırlara hiç ihtiyacınız yok ve günlük bir toplam herkese daha nazik davranır.

Slack ya da Bir Tablo İçin Günlük Tıklama Raporu Betiği

İşte çoğu kişinin gerçekte istediği iş: her sabah dünün tıklamalarını ve en çok tıklanan beş bağlantıyı bir kanala gönder. Yalnızca Python standart kütüphanesini ve bir Slack gelen webhook'unu kullanır.

import datetime as dt, json, os, urllib.parse, urllib.request
from zoneinfo import ZoneInfo

BASE = "https://api.elido.app/v1/workspaces/{ws}/analytics/{report}"
WS, KEY = os.environ["ELIDO_WORKSPACE_ID"], os.environ["ELIDO_API_KEY"]
TZ = ZoneInfo("Europe/Berlin")

def report(name, **params):
    url = BASE.format(ws=WS, report=name) + "?" + urllib.parse.urlencode(params)
    req = urllib.request.Request(url, headers={"Authorization": f"Bearer {KEY}"})
    with urllib.request.urlopen(req, timeout=20) as r:
        return json.load(r)

day = dt.datetime.now(TZ).date() - dt.timedelta(days=1)
# UTC window one day wider on each side, then keep only local hours of `day`
window = {"from": day - dt.timedelta(days=1), "to": day + dt.timedelta(days=2)}
hours = report("timeseries", interval="hour", tz="Europe/Berlin", **window)["items"]
total = sum(p["count"] for p in hours
            if dt.datetime.fromisoformat(p["ts"]).astimezone(TZ).date() == day)

top = report("links/top", limit=5, **{"from": day, "to": day + dt.timedelta(days=1)})
lines = [f"• {l['slug']}: {l['count']}" for l in top["items"]]
text = f"Clicks on {day} (Berlin): {total}\nTop links (UTC day):\n" + "\n".join(lines)

body = json.dumps({"text": text}).encode()
urllib.request.urlopen(urllib.request.Request(
    os.environ["SLACK_WEBHOOK_URL"], data=body,
    headers={"Content-Type": "application/json"}))

Yerel saatle 07:00'de cron'dan çalıştırın. Toplamı UTC günü yerine gerçek bir Berlin günü yapan, saatlik hiledir; links/top'ın tz'si yoktur, bu yüzden sıralaması UTC günü üzerinde kalır ve mesaj bunu söyler.

Bunun yerine tablo mu istiyorsunuz? Aynı iki çağrı, UrlFetchApp ve günlük bir tetikleyiciyle Google Apps Script'ten de çalışır ve her gün bir satır ekler. Bu, bir Looker Studio panosuna giden en ucuz yol da.

Her pazartesi hâlâ ekran görüntülerinden rakam kopyalıyorsanız bir betiğe Viewer anahtarı verin ve sabahlarınızı geri alın.

Yalnızca Panoda Kalanlar

API anahtarı yüzeyi salt okunurdur ve bilerek panodan daha dardır. Bunlara anahtarla erişilemez:

  • CSV tıklama dışa aktarımı (clicks.csv). Toplu dosyalar için yol, panodaki Download CSV düğmesidir.
  • Hunilar, kohortlar, LTV raporu, zaman ve coğrafi ısı haritaları ve trafik kalitesi görünümü.

İhtiyacınız yalnızca bir dosyanın zamanlanmış biçimde bir yere düşmesiyse panonun zamanlanmış e-posta raporları bunu kodsuz yapar. Hesaptan ayrılma düzeyinde eksiksiz bir çekim için kısa bağlantı hesabından neleri dışa aktarabileceğinize ve eksiksiz olduğunu nasıl denetleyeceğinize bakın. Ve "tek bağlantının her şeyi" için birleşik bir çağrı henüz yok; bu yüzden bağlantı başına bir pano, rapor başına bir istek demek. SDK hızlı başlangıcı bunları paralel çalıştırmayı ve hız sınırlarına takıldığınızda geri çekilmeyi anlatır.

Gerçek Zaman İçin Tıklama Analitiği API'sini Yoklama ve Webhook'lar

Dürüst sürüm: bugün tıklama verisi yalnızca çekmeli. Elido webhook'ları bağlantı ve alan adı olaylarını imzalı ve yeniden denemeli olarak iter, ama tıklama başına bir click.created olayı yol haritasında ve henüz gönderilmiyor. Tıklamalarla ilgili gerçek zamanlı her şey clicks/recent'ı yoklamak demek.

Tıklama verisi için bağlantı analitiği API'sini yoklama ile webhook'ların karşılaştırması: saklanan imleçle clicks/recent'ı yoklamak bugün çalışır, webhook'lar bağlantı ve alan adı olaylarını kapsar, tıklama başına click.created olayı planlıdır ama gönderilmez

Bu, kulağa geldiğinden daha az acı verici. Bir iki dakikada bir yoklayın, daha önce sakladığınız bir satıra ulaşır ulaşmaz durun; yük çok küçük kalır, çünkü sakin bir dakika tek bir küçük sayfadır. click.created çıktığında bir satırı işleyen işleyici, onun bir sayfadan mı yoksa bir itmeden mi geldiğini umursamaz. Genel ödünleşimler tıklama takibi için webhook'lar ve yoklama yazısında ortaya konuyor; bu sayılardan hangilerinin rapor hak ettiğine karar veriyorsanız kısa bağlantı analitiğinde neyi ölçmeli daha kısa bir okuma.

Benim görüşüm: günlük özetle başlayın. Benden gerçek zamanlı tıklama isteyen hemen her ekip, kahveden önce teslim edilen dünün rakamlarından memnun kalıyor.

Temel yazıyı okuyun → UTM kampanyaları uçtan uca nasıl izlenir

Blogda İlgili Yazılar

Sıkça sorulan sorular

Elido'nun kısa bağlantı tıklamaları için bir analitik API'si var mı?

Evet. Bir çalışma alanı API anahtarı api.elido.app üzerinde GET /v1/workspaces/{workspace_id}/analytics/{report} çağırabilir ve 15 raporu okuyabilir: zaman serisi, özet, en çok tıklanan bağlantılar, son tıklamalar, altı döküm ve beş en çok listesi. Anahtarın analytics.view izni olmalıdır; Viewer dahil her yerleşik rolde bu izin zaten vardır.

API ile tek bir kısa bağlantının tıklama istatistiklerini nasıl alırım?

Herhangi bir raporun sorgu dizesine link_id ekleyin. Sayısal bağlantı kimliği zaman serisini, özeti, dökümleri ve son tıklamaları o tek bağlantıya daraltır. Yoldaki çalışma alanı erişimi yine belirler; bu yüzden başka bir çalışma alanından alınan bağlantı kimliği veri sızdırmak yerine satır döndürmez.

Tıklama verisini API üzerinden CSV olarak dışa aktarabilir miyim?

API anahtarıyla hayır. CSV tıklama dışa aktarımı, hunilar, kohortlar ve LTV raporu yalnızca panoda bulunur. Betikli bir akış için clicks/recent raporunu imleciyle sayfalayıp satırları kendiniz yazın; ya da gelen kutusunda bir dosya yeterliyse panodan e-posta raporu zamanlayın.

Bağlantı analitiği API'si hangi saat dilimini kullanır?

from ve to tarihleri UTC takvim günü olarak okunur. Zaman serisi raporunda tz'yi Europe/Berlin gibi bir IANA adıyla verebilir ya da X-User-TZ başlığı gönderebilirsiniz; saatlik veya günlük kovalar o dilimde kesilir. Bilinmeyen bir dilim adı 400 hatası döndürür.

Bir kısa bağlantıya yapılan her tıklama için webhook alabilir miyim?

Henüz değil. Tıklama başına bir click.created webhook'u yol haritasında ama bugün gönderilmiyor; yani webhook'lar şu an yalnızca bağlantı ve alan adı olaylarını kapsıyor. Neredeyse gerçek zamanlı tıklama verisi için clicks/recent raporunu kısa aralıkla yoklayın ve son imleci çalıştırmalar arasında saklayın.

Hangi API anahtarı rolü tıklama analitiğini okuyabilir?

Herhangi bir yerleşik rol. Analitiği okumak analytics.view gerektirir ve Viewer rolünde bu zaten vardır; bu yüzden bir raporlama betiği için en güvenli seçim Viewer anahtarıdır. İzin verilen her raporu okuyabilir ama anahtar bir cron makinesinden sızarsa bağlantı oluşturamaz, düzenleyemez ya da silemez.

Elido'yu deneyin

Bir URL yapıştırın, çalışan bir kısa bağlantı alın

Kayıt gerekmez. Bağlantı 30 gün boyunca yaşar. Sonsuza kadar saklamak için kaydolun.

Kayıt gerekmez. Ücretsiz kaydolun, ayda 50 bağlantı oluşturun.

Elido'yu deneyin

Özel alan adları, derinlemesine analitik ve açık bir API'ye sahip AB'de barındırılan URL kısaltıcı. Ücretsiz katman - kredi kartı gerekmez.

Etiketler
link analytics api
click analytics api
short link stats api
url shortener analytics api
link tracking api
click data export

Okumaya devam et