DEV Community

Ozor
Ozor

Posted on

Free Public IP API — No Key, No Signup, No Rate Limits (ipify Alternative)

Every developer needs to detect public IP addresses at some point. Whether you're building a "What's my IP" feature, logging user locations, or configuring servers — you need a reliable, free IP API.

Most options either require signup (ipinfo), have strict rate limits (ip-api), or only return the IP with no context (ipify).

Here's one that does it all — no API key, no signup, no account required:

curl https://agent-gateway-kappa.vercel.app/ip
Enter fullscreen mode Exit fullscreen mode

That's it. Returns your IP address as plain text. Let me show you what else it can do.

Three Endpoints, Zero Authentication

1. Get Your IP (Plain Text)

curl https://agent-gateway-kappa.vercel.app/ip
# → 203.0.113.42
Enter fullscreen mode Exit fullscreen mode

Perfect for scripts where you just need the IP string:

MY_IP=$(curl -s https://agent-gateway-kappa.vercel.app/ip)
echo "Server IP: $MY_IP"
Enter fullscreen mode Exit fullscreen mode

2. Get Your IP + Geolocation (JSON)

curl https://agent-gateway-kappa.vercel.app/ip/json
Enter fullscreen mode Exit fullscreen mode

Returns:

{
  "ip": "203.0.113.42",
  "country": "United States",
  "countryCode": "US",
  "region": "California",
  "city": "San Francisco",
  "lat": 37.7749,
  "lon": -122.4194,
  "timezone": "America/Los_Angeles",
  "isp": "Cloudflare Inc",
  "org": "Cloudflare"
}
Enter fullscreen mode Exit fullscreen mode

One request gives you everything — IP, country, city, coordinates, timezone, and ISP.

3. Look Up Any IP Address

curl https://agent-gateway-kappa.vercel.app/ip/geo/8.8.8.8
Enter fullscreen mode Exit fullscreen mode

Pass any IP address and get full geolocation data back.

Code Examples

JavaScript (Node.js)

// Get your own IP
const res = await fetch('https://agent-gateway-kappa.vercel.app/ip/json');
const data = await res.json();
console.log(`You're in ${data.city}, ${data.country}`);

// Look up any IP
const lookup = await fetch('https://agent-gateway-kappa.vercel.app/ip/geo/1.1.1.1');
const info = await lookup.json();
console.log(`1.1.1.1 is in ${info.country}`);
Enter fullscreen mode Exit fullscreen mode

Python

import requests

# Your IP + location
data = requests.get('https://agent-gateway-kappa.vercel.app/ip/json').json()
print(f"IP: {data['ip']}, Location: {data['city']}, {data['country']}")

# Bulk lookup
ips = ['8.8.8.8', '1.1.1.1', '208.67.222.222']
for ip in ips:
    info = requests.get(f'https://agent-gateway-kappa.vercel.app/ip/geo/{ip}').json()
    print(f"{ip}: {info.get('city', 'N/A')}, {info.get('country', 'N/A')}")
Enter fullscreen mode Exit fullscreen mode

Go

resp, _ := http.Get("https://agent-gateway-kappa.vercel.app/ip")
body, _ := io.ReadAll(resp.Body)
fmt.Println("My IP:", string(body))
Enter fullscreen mode Exit fullscreen mode

Browser (Frontend)

// Works from any website — CORS enabled
fetch('https://agent-gateway-kappa.vercel.app/ip/json')
  .then(r => r.json())
  .then(data => {
    document.getElementById('ip').textContent = data.ip;
    document.getElementById('location').textContent =
      `${data.city}, ${data.country}`;
  });
Enter fullscreen mode Exit fullscreen mode

Comparison: Frostbyte vs ipify vs ip-api vs ipinfo

Feature Frostbyte ipify ip-api ipinfo
Plain text IP Yes Yes No No
Geolocation (free) Yes No Yes Limited
API key required No No No Yes (for geo)
Rate limit 120/min Unlimited 45/min 50k/month
HTTPS (free) Yes Yes No (paid only) Yes
Lookup any IP Yes No Yes Yes
ISP/Org data Yes No Yes Yes

Frostbyte gives you the best of all worlds: plain text like ipify, geolocation like ip-api, and HTTPS like ipinfo — all without requiring a key.

Use Cases

DevOps / Server Setup:

# Add your server's IP to a firewall allow list
SERVER_IP=$(curl -s https://agent-gateway-kappa.vercel.app/ip)
ufw allow from $SERVER_IP
Enter fullscreen mode Exit fullscreen mode

Dynamic DNS:

# Update DNS record when IP changes
CURRENT_IP=$(curl -s https://agent-gateway-kappa.vercel.app/ip)
if [ "$CURRENT_IP" != "$LAST_IP" ]; then
  # Update your DNS provider
  echo "IP changed to $CURRENT_IP"
fi
Enter fullscreen mode Exit fullscreen mode

Geo-Personalization:

const { country, timezone } = await fetch(
  'https://agent-gateway-kappa.vercel.app/ip/json'
).then(r => r.json());

// Show local currency, language, or time
const localTime = new Date().toLocaleString('en-US', { timeZone: timezone });
Enter fullscreen mode Exit fullscreen mode

API Rate Limiting by Region:

geo = requests.get(f'https://agent-gateway-kappa.vercel.app/ip/geo/{client_ip}').json()
if geo.get('countryCode') in ['US', 'GB', 'DE']:
    rate_limit = 100  # Higher limit for target markets
else:
    rate_limit = 30
Enter fullscreen mode Exit fullscreen mode

Need More? Get an API Key

The public endpoints handle most use cases. But if you need:

  • Higher rate limits (300 req/min vs 120)
  • Access to 40+ additional APIs (DNS, screenshots, web scraping, crypto prices, code execution)
  • Usage analytics and credit tracking

Create a free API key — no email required:

curl -X POST https://agent-gateway-kappa.vercel.app/api/keys/create
Enter fullscreen mode Exit fullscreen mode

You get 200 free credits immediately. Each API call costs 1 credit.

Full API catalog: api-catalog-three.vercel.app


Try it right now — open your terminal and run:

curl https://agent-gateway-kappa.vercel.app/ip/json
Enter fullscreen mode Exit fullscreen mode

No signup. No API key. Just your IP and location, instantly.

Top comments (0)