ipify
The simplest public IP address API on the internet. One endpoint, returns your caller's public IP as text, JSON, or JSONP. Unlimited and free forever.
🟢 Online · 231 ms
100%
Unlimited, no key, no credit card
No key required
Free alternatives (live ranking)
- Free Dictionary API — 🟢 Online · Unlimited (fair use), no key, no credit card
- DiceBear Avatars — 🟢 Online · Unlimited (fair use), no key, no credit card
- JSONPlaceholder — 🟢 Online · Unlimited (fair use), no key, no credit card
Compare ipify with…
- ipify vs Free Dictionary API — Unlimited (fair use), no key, no credit card
- ipify vs DiceBear Avatars — Unlimited (fair use), no key, no credit card
- ipify vs JSONPlaceholder — Unlimited (fair use), no key, no credit card
Paid alternatives
- IPinfo — free 50k/mo, paid from $99/mo
- Abstract IP Geolocation — from $9/mo
Frequently Asked Questions
Does ipify require an API key?
No, ipify is freely accessible without registration or an API key.
What is ipify's free tier?
Unlimited, no key, no credit card
Is ipify currently online?
We check ipify every hour. The current status is shown at the top of this page. You can also see the 30-day uptime history in the chart above.
Implementation notes
When to use ipify
ipify answers exactly one question — 'what is my public IP address?' — and answers it more reliably than any alternative. One GET, response in text, JSON, or JSONP, IPv4 (api.ipify.org) or IPv6-aware (api64.ipify.org). It exists because every dynamic-DNS updater, router config script, VPN checker, and 'show my IP' widget needs this primitive. Open source, funded as a public good, no key, genuinely unlimited.
Common pitfalls
- api.ipify.org returns IPv4 only. If the caller is on an IPv6-only network, use api64.ipify.org which returns IPv6 when no IPv4 is available. Mixing the two hostnames across your codebase produces inconsistent results for dual-stack users.
- The bare-text response (`?format=` omitted) has no trailing newline. Shell scripts doing `IP=$(curl -s api.ipify.org)` work fine, but scripts comparing against a file with `echo` output will fail on the missing newline.
- This returns the caller's egress IP — from a server it's the server's IP; from a Cloudflare Worker it's Cloudflare's IP, not the visiting user's. To get a *user's* IP in a web app, read the request header (CF-Connecting-IP, X-Forwarded-For) server-side instead of making the browser call ipify.
Quick start (bash)
curl "https://api.ipify.org/?format=json"
# {"ip":"98.207.254.136"} From our monitoring
ipify is tied for the most reliable API in our entire catalog — sub-100ms responses and no recorded downtime in our tracking. It's a static-logic endpoint on distributed infrastructure with a corporate sponsor covering hosting. This is what a permanently-free API looks like: near-zero marginal cost per request.
Embed this badge
Add a live status badge to your README, docs, or website.
Markdown
[](https://freeapi.watch/ipify) HTML
<a href="https://freeapi.watch/ipify"><img src="https://freeapi-builder.a10ayassine.workers.dev/badge/ipify.svg" alt="ipify Status"/></a>