ipadresimne.net, IP adresi bilgilerini uygulamalarınızda, betiklerinizde ve komut satırında kullanabilmeniz için ücretsiz bir JSON API sunar. API anahtarı, üyelik ya da kayıt gerekmez. Tek bir istekle IP adresinin konumunu, internet sağlayıcısını, ASN'sini, hostname'ini ve bağlantı türünü alabilirsiniz.
Uç Noktalar
| Adres | Yanıt |
|---|---|
ipadresimne.net | Genel IP adresiniz, düz metin. Yalnızca curl, wget, HTTPie ve PowerShell gibi komut satırı istemcileri içindir; tarayıcılar normal sayfayı görür. |
ipadresimne.net/ip | Genel IP adresiniz, düz metin. Tüm istemciler için; CORS açıktır. |
ipadresimne.net/json | Kendi bağlantınızın tüm bilgileri, JSON. |
ipadresimne.net/api/{ip-veya-alan-adı} | Herhangi bir IPv4/IPv6 adresinin ya da alan adının bilgileri, JSON. |
Bu adreslerdeki JSON yanıtlarında kıta ve ülke adları ile Türkiye'deki il adları Türkçe yazılır (ör. Amerika Birleşik Devletleri, İstanbul). İngilizce adlar için adrese /en öneki ekleyin: ipadresimne.net/en/json, ipadresimne.net/en/api/8.8.8.8. Uygulamalarınızda her zaman https:// ile başlayan adresleri kullanın.
Kendi IP Adresinizi Düz Metin Olarak Alma
Ana sayfa, komut satırı istemcilerine yalnızca IP adresinizi döndürür; betiklerde en kısa yöntem budur. Diğer istemciler ve tarayıcıdaki JavaScript kodu için /ip adresini kullanın: her istemciye düz metin döndürür ve CORS başlığı içerir.
$ curl ipadresimne.net
203.0.113.45
$ curl https://ipadresimne.net/ip
203.0.113.45
Bağlantınız hem IPv4 hem IPv6 destekliyorsa, hangi protokolle bağlandıysanız o adresi görürsünüz. Belirli bir sürümü zorlamak için curl'ün -4 ve -6 seçeneklerini kullanabilirsiniz (-6, sitemiz IPv6 üzerinden de erişilebilir olduğunda çalışır).
JSON Yanıtı: /json ve /api
/json kendi bağlantınızın, /api/{sorgu} ise verdiğiniz IP adresinin ya da alan adının bilgilerini döndürür. Sorgu olarak IPv4 (/api/8.8.8.8), IPv6 (/api/2001:4860:4860::8888) ya da alan adı (/api/google.com) kullanabilirsiniz. Komut satırında curl ipadresimne.net/8.8.8.8 yazmak da aynı JSON'u döndürür; aynı adres tarayıcıda 8.8.8.8 IP sorgulama raporunu açar.
Örnek yanıt
$ curl https://ipadresimne.net/api/8.8.8.8
{
"ip": "8.8.8.8",
"version": 4,
"type": "public",
"hostname": "dns.google",
"location": {
"continent": "Kuzey Amerika",
"country": "Amerika Birleşik Devletleri",
"country_code": "US",
"region": "California",
"city": "Mountain View",
"postal": null,
"latitude": 37.422,
"longitude": -122.085,
"timezone": "America/Los_Angeles",
"utc_offset": "-07:00",
"is_eu": false
},
"network": {
"asn": 15169,
"organization": "Google LLC",
"isp": "Google",
"block": "8.8.8.0/24",
"connection": "hosting",
"tor": false,
"vpn": false,
"relay": false
},
"source": "DB-IP"
}
Canlı yanıtı tarayıcıda açarak görebilirsiniz. Alan adı sorgularında yanıtın başına iki alan eklenir: query (sorgulanan alan adı) ve resolved (alan adının tüm IPv4 ve IPv6 adresleri). Raporun geri kalanı bu listedeki ilk adrese aittir:
$ curl https://ipadresimne.net/api/dns.google
{
"query": "dns.google",
"resolved": ["8.8.8.8", "8.8.4.4", "2001:4860:4860::8888", "2001:4860:4860::8844"],
"ip": "8.8.8.8",
…
}
Yanıt Alanları
| Alan | Açıklama |
|---|---|
ip | Sorgulanan IP adresi |
version | IP sürümü: 4 veya 6 |
type | Adres türü: public (genel), private (özel ağ), loopback, cgnat, link-local ya da reserved (ayrılmış) |
hostname | Ters DNS (PTR) kaydı; kayıt yoksa null |
location.continent, country, country_code | Kıta, ülke adı ve iki harfli ISO 3166-1 ülke kodu |
location.region, city, postal | İl veya bölge, şehir ve posta kodu (biliniyorsa) |
location.latitude, longitude | Yaklaşık koordinatlar; sokak adresini değil bölgenin merkezini gösterir |
location.timezone, utc_offset | IANA saat dilimi (ör. Europe/Istanbul) ve yaz saati dahil şu anki UTC farkı |
location.is_eu | Ülke Avrupa Birliği üyesiyse true |
network.asn, organization | Otonom sistem numarası ve bu ağı işleten kuruluş |
network.isp | İnternet servis sağlayıcısı |
network.block | Adresin ait olduğu IP bloğu (CIDR) |
network.connection | Bağlantı türü: isp (ev/iş yeri), mobile, hosting (veri merkezi), proxy, vpn, relay, tor ya da bilinmiyorsa null |
network.tor, vpn, relay | Adres bir Tor çıkış düğümüne, bilinen bir VPN hizmetine ya da iCloud Özel Geçiş (Private Relay) gibi bir aktarma hizmetine aitse true |
source | Verinin kaynağı (ör. DB-IP); eksik alanlar yedek bir servisten tamamlandıysa o servisin adı da eklenir |
Özel ağ adreslerinde (ör. 192.168.1.1) type alanı adres türünü gösterir; konum ve ağ alanları ise null döner.
Hata Kodları
| HTTP durumu | Anlamı |
|---|---|
| 400 | Geçersiz IP adresi veya alan adı |
| 404 | Alan adının IP adresi (A/AAAA kaydı) bulunamadı |
| 429 | Dakikalık istek sınırı aşıldı |
| 503 | DNS sorgusu geçici olarak yapılamadı; biraz sonra yeniden deneyin |
Hata yanıtlarının gövdesi, açıklamayı içeren tek alanlı bir JSON nesnesidir. Açıklama Türkçe adreslerde Türkçe, /en adreslerinde İngilizcedir:
{
"error": "Kısa sürede çok fazla sorgu yaptınız. Lütfen bir dakika sonra tekrar deneyin."
}
Kullanım Sınırları ve Adil Kullanım
- Hız sınırı:
/apisorguları IP adresi başına dakikada 30 istekle sınırlıdır (IPv6'da /64 bloğu başına). Sınırı aşarsanız HTTP 429 yanıtı alırsınız; bir dakika bekleyip yeniden deneyin. - /json: Çok sık çağrılırsa hostname yeniden sorgulanmaz ve
nulldönebilir. - CORS: JSON yanıtları ve
/ip,Access-Control-Allow-Origin: *başlığıyla gönderilir; tarayıcıdaki JavaScript kodundan doğrudan çağrılabilir. - Önbellek kullanın: Bir IP adresinin konum ve ağ bilgisi sık değişmez. Aynı adresi tekrar tekrar sorgulamak yerine sonucu en az birkaç saat saklayın.
- Toplu sorgular: Binlerce IP adresi sorgulamanız gerekiyorsa API'yi yormak yerine DB-IP Lite gibi ücretsiz bir konum veritabanını kendi sunucunuzda barındırın.
- Hataları ele alın: Uygulamanız 429 ve 503 yanıtlarında ve zaman aşımlarında düzgün çalışmaya devam etmelidir.
Kod Örnekleri
curl
curl https://ipadresimne.net/json
curl https://ipadresimne.net/api/8.8.8.8
curl https://ipadresimne.net/api/2001:4860:4860::8888
curl -s https://ipadresimne.net/api/google.com | jq -r '.network.organization'
PowerShell
$bilgi = Invoke-RestMethod https://ipadresimne.net/api/8.8.8.8
$bilgi.location.country
$bilgi.network.organization
# Sadece kendi IP adresiniz
(Invoke-RestMethod https://ipadresimne.net/ip).Trim()
Python (requests)
import requests
yanit = requests.get("https://ipadresimne.net/api/8.8.8.8", timeout=10)
yanit.raise_for_status()
veri = yanit.json()
print(veri["location"]["country"], veri["network"]["asn"])
Python (standart kütüphane)
import json
from urllib.request import urlopen
with urlopen("https://ipadresimne.net/json", timeout=10) as yanit:
veri = json.load(yanit)
print(veri["ip"], veri["location"]["city"])
JavaScript (fetch)
async function ipBilgisi() {
const yanit = await fetch("https://ipadresimne.net/json");
if (!yanit.ok) throw new Error(`HTTP ${yanit.status}`);
return yanit.json();
}
ipBilgisi().then((veri) => {
console.log(veri.ip, veri.location.country);
});
PHP
<?php
$baglam = stream_context_create(['http' => ['timeout' => 10]]);
$govde = file_get_contents('https://ipadresimne.net/api/8.8.8.8', false, $baglam);
if ($govde === false) {
exit('İstek başarısız oldu');
}
$veri = json_decode($govde, true);
echo $veri['location']['country'], ' - ', $veri['network']['organization'], PHP_EOL;
Lisans ve Atıf
Konum ve ağ verileri ağırlıklı olarak DB-IP'nin her ay güncellenen Lite veritabanlarından gelir ve CC BY 4.0 lisansıyla sunulur. API'den aldığınız konum bilgisini bir sitede, uygulamada ya da raporda gösterirseniz “IP Geolocation by DB-IP” ifadesini https://db-ip.com adresine bağlantı vererek yayımlamanız gerekir.