API alamat IP dan endpoint command line

Dapatkan alamat IP publik Anda dari skrip, shell, atau cron job: teks polos untuk curl, JSON dengan detailnya, serta host khusus IPv4 dan khusus IPv6 saat Anda butuh jenis alamat tertentu. Tanpa key, tanpa akun, 600 permintaan per menit per alamat.

Terakhir diperbarui 21 Oktober 2026

Mulai cepat: dapatkan IP Anda dengan curl

text
curl checkmyip.com/raw
203.0.113.42

Itulah seluruh API untuk kebanyakan kebutuhan: satu permintaan, alamatnya, satu baris baru. curl -4 dan curl -6 memaksa jenis alamat tertentu; curl checkmyip.com/json mengembalikan detail di bawah. Klien apa pun yang mengirim Accept: text/plain atau User-Agent command line mendapat alamat polos dari /raw; browser mendapat halaman untuk manusia.

shell · live
$ curl checkmyip.com
216.73.216.52
$ curl -H "Accept: text/plain" https://checkmyip.com/
216.73.216.52

Endpoint

EndpointMengembalikanCatatan
GET https://checkmyip.com/rawIP Anda sebagai teks polos dengan baris baru di akhirjuga GET / dengan User-Agent curl/wget/PowerShell
GET https://checkmyip.com/ip · /ip.txtalamat teks polos yang sama (alias untuk skrip yang mengharapkan path tersebut)Cache-Control: no-store
GET https://checkmyip.com/jsonJSON: ringkasan ip, version, geo, network, type, risk (field di bawah)Cache-Control: private, no-store
GET https://checkmyip.com/json?ip=203.0.113.42JSON yang sama untuk alamat publik apa punbatas 600/menit yang sama
GET https://ipv4.checkmyip.com/ip{ip, family: 4, …} hanya lewat IPv4gagal jika Anda tidak punya jalur IPv4
GET https://ipv6.checkmyip.com/ip{ip, family: 6, …} hanya lewat IPv6gagal jika Anda tidak punya jalur IPv6
GET https://ds.checkmyip.com/ipjenis alamat yang dipilih klien Anda saat keduanya berfungsi?format=text untuk keluaran polos

Semua endpoint menjawab lewat HTTPS dengan CORS aktif untuk pemakaian baca-saja, mengirim Cache-Control: no-store, dan ditandai noindex untuk mesin pencari. Hasil untuk alamat lain di-cache selama sepuluh menit.

GEThttps://checkmyip.com/raw
Plain text: your address + newline.
GEThttps://checkmyip.com/ip
Alias of /raw.
GEThttps://checkmyip.com/ip.txt
Alias of /raw with a file extension, for tools that want one.
GEThttps://checkmyip.com/
Plain text when the User-Agent is curl, wget, PowerShell or another non-browser, or when Accept: text/plain is sent; the HTML page otherwise.
GEThttps://checkmyip.com/json
JSON for your own address: live Cloudflare edge data, enriched by the lookup service within an 800 ms budget.
GEThttps://checkmyip.com/json?ip=203.0.113.9
JSON for any public address (lookup service). 503 with an error body when the service is unreachable — never guessed data.

All of them send Cache-Control: private, no-store, Access-Control-Allow-Origin: * and X-Robots-Tag: noindex; tidak perlu api key.

Field respons JSON

ip — alamat sebagai string. version — 4 atau 6. geo.consensus — country (ISO 3166-1 alpha-2), region, city, lat, lon, timezone, confidence (0–1), disagreement (boolean), anycast (boolean); geo.sources[] — jawaban setiap database beserta updated, licence, dan attribution. network — asn, as_name, as_org, prefix, rir, allocation_date, registry_country, abuse_contacts[]. hostname — nama PTR atau null. type.type — residential, mobile, business, datacenter, atau unknown, dengan confidence dan reasons[]. risk — is_proxy, is_vpn, is_tor, is_datacenter, is_relay, score (0–100), level, reasons[], blacklists[], dan score_version. Nilai yang tidak ada bernilai null dengan alasannya di status atau note; vonis heuristik dinyatakan sebagai heuristik. String atribusi wajib ditampilkan jika Anda menampilkan data geolokasi kepada pengguna (ketentuan CC BY 4.0 / CC BY-SA 4.0).

Two fields are additive on top of the list above: schema_version (the lookup service's response schema, 1.1 today; fields are only ever added) and geo.agreement — the per-field tally behind the consensus (country_sources, country_source_ids, city_sources, city_source_ids, the disagreeing ids and a one-line summary such as “country confirmed by 3 sources, city from 2”). network.origins[] lists every ASN that originates the address (asn, as_name, as_org, named_by[], primary; network.multi_origin is true when there is more than one and network.note says which was chosen as primary). risk.factors[] carries the score arithmetic (id, label, points, source; sum = score before the cap at 100) and risk.reasons[] the same signals as full sentences. A tied city vote sets geo.consensus.city to null and lists the options in geo.consensus.city_candidates[]; geo.consensus.tie_break says what rule applied. hosted_domains (full lookups only) is the IP2WHOIS hosted-domain block: status (ok, cached, budget_exhausted with retry_after, no-data, skipped on fast answers), total_domains, domains[] (a sample — the free plan returns one name per page), page/total_pages and the attribution string, which must be shown with the names. Own-address answers also carry colo (the Cloudflare data centre that served you) and cache (live or edge ≤10 min).

Contoh kode

Setiap contoh mencetak alamat publik mesin tempat kode itu dijalankan.

curl

text
curl -s https://checkmyip.com/raw
curl -s -4 https://checkmyip.com/raw     # hanya IPv4
curl -s -6 https://checkmyip.com/raw     # hanya IPv6
curl -s https://checkmyip.com/json | jq .geo.consensus.country

wget

text
wget -qO- https://checkmyip.com/raw

PowerShell

text
(Invoke-WebRequest -Uri https://checkmyip.com/raw -UseBasicParsing).Content.Trim()
(Invoke-RestMethod -Uri https://checkmyip.com/json).network.asn

Python

text
import urllib.request
ip = urllib.request.urlopen("https://checkmyip.com/raw", timeout=5).read().decode().strip()
print(ip)

JavaScript (fetch)

text
const r = await fetch("https://checkmyip.com/json", { cache: "no-store" });
const { ip, geo } = await r.json();
console.log(ip, geo.consensus.country);

Go

text
resp, err := http.Get("https://checkmyip.com/raw")
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(strings.TrimSpace(string(b)))

Skrip Bash dan cron

text
#!/bin/sh
# beri tahu saat IP publik berubah (jalankan dari cron setiap 5 menit)
new=$(curl -fsS --max-time 5 https://checkmyip.com/raw) || exit 0
old=$(cat /var/tmp/public-ip 2>/dev/null)
[ "$new" != "$old" ] && { echo "$new" > /var/tmp/public-ip; logger "public IP changed: $old -> $new"; }

Gunakan --max-time, perlakukan kegagalan sebagai tidak diketahui dan bukan berubah, dan jangan melakukan polling lebih sering dari sekali per menit.

Batas permintaan dan pemakaian wajar

/raw, /ip, /ip.txt, /json, /json?ip=, dan host /ip khusus per jenis alamat mengizinkan 600 permintaan per menit per alamat; pemeriksa port mengizinkan 20 per menit dan hanya pernah menguji alamat pemanggilnya sendiri. Melebihi batas mengembalikan HTTP 429 dengan body error JSON. Endpoint ini gratis untuk pemakaian pribadi, internal, dan komersial dalam batas tersebut; jika Anda memperkirakan volume berkelanjutan di atas batas, atau ingin menyematkan data kami dalam sebuah produk, beri tahu kami lebih dulu lewat halaman kontak. Mohon jangan memakai halaman untuk manusia dari skrip — halaman itu lebih berat dan lebih lambat daripada endpoint di atas.

Uptime dan status

Endpoint berjalan di jaringan edge yang sama dengan situs dan dipantau terus-menerus; endpoint /healthz di server uji kami melaporkan versi dan uptime-nya. Halaman status publik sedang direncanakan. Perubahan format respons diumumkan di halaman ini sebelumnya; field yang sudah ada tidak pernah diganti namanya, hanya ditambah.

Pertanyaan yang sering diajukan

Apakah ada API IP gratis?

Ada. Endpoint di halaman ini mengembalikan alamat publik Anda sebagai teks polos atau JSON tanpa key atau akun, dalam batas permintaan di atas, dan /json?ip= mengembalikan JSON yang sama untuk alamat publik apa pun. Halaman cek alamat IP menampilkan data yang sama untuk manusia.

Apakah IP grabber ilegal?

“IP grabber” adalah tautan atau gambar yang mencatat alamat siapa pun yang membukanya. Mencatat alamat pengunjung situs Anda sendiri itu legal dan lazim; menipu seseorang agar mengungkapkannya untuk melecehkan, melacak, atau menyerang mereka adalah titik di mana hukum ikut campur. Endpoint kami hanya mengembalikan alamat klien yang memanggilnya.

Apakah API punya alamat IP?

Setiap server yang menjawab sebuah API punya alamat IP, termasuk milik kami. Pertanyaan yang biasanya ada di balik pertanyaan ini — “bisakah sebuah program mengetahui alamat publiknya sendiri?” — adalah gunanya endpoint ini: program bertanya kepada kami, dan kami menjawab dengan alamat asal permintaan yang kami lihat.

Apa itu API alamat IP saya?

Endpoint web yang menjawab dengan alamat siapa pun yang memanggilnya. https://checkmyip.com/raw mengembalikannya sebagai teks dan https://checkmyip.com/json beserta detail lokasi, jaringan, dan risiko, seperti didokumentasikan di atas.

Apa yang dilakukan curl ifconfig.me?

ifconfig.me adalah situs lain yang mengembalikan alamat pemanggil saat diambil dengan curl. curl checkmyip.com/raw melakukan hal yang sama di sini; endpoint JSON kami juga memberi Anda field jaringan dan lokasi.

Bagaimana cara mengetahui alamat IP saya dengan curl?

Jalankan curl -s https://checkmyip.com/raw di terminal mana pun yang terhubung internet. Tambahkan -4 atau -6 untuk memaksa IPv4 atau IPv6. Keluarannya adalah alamat diikuti baris baru, sehingga aman dipakai dalam skrip.

Apakah ifconfig.me aman?

Kami tidak bisa menjamin layanan lain. Untuk layanan kami: permintaan dijawab tanpa menyimpan alamat Anda, respons dilayani lewat HTTPS, dan kebijakan privasi berlaku untuk endpoint persis seperti untuk halaman.