IP: 216.73.217.14
Location: Columbus, Ohio US
ISP: Amazon.com
🙏 We rely on ads to keep this site free. If you enjoy our tools, please consider allowing ads on WhatIsMyIP.net.
Free IP, GeoIP & Whois API
Lightweight, real-time access to IP address and domain data — built for developers, network administrators,
cybersecurity platforms and any app that needs accurate information about visitors or assets on the internet.
No API key required
CORS enabled
50 requests / minute
JSON responses
API Usage Stats
Since 07/2025
/ip2,055,439calls
/geoip893,091calls
/whois115,112calls
Total Calls Served3,063,642
Available Endpoints
Three endpoints: /ip/ for your public IP, /geoip/ for location and ISP data,
and /whois/ for domain registration data via RDAP.
GET/ip/text/plain
Returns the visitor's current IP address in plain text.
GEThttps://www.whatismyip.net/ip/
GET/geoip/JSON
Returns geolocation details for your current IP address in JSON format.
GEThttps://www.whatismyip.net/geoip/
GET/geoip/?ip=IP_ADDRESSJSON
Returns geolocation details for a provided IPv4 or IPv6 address in JSON format.
#!/bin/bash
ip=$(curl -s https://www.whatismyip.net/ip/)
echo "My public IP address is: $ip"
# This example requires the requests library be installed.
from requests import get
ip = get('https://www.whatismyip.net/ip/').text
print('My public IP address is: {}'.format(ip))
require "net/http"
ip = Net::HTTP.get(URI("https://www.whatismyip.net/ip/"))
puts "My public IP Address is: " + ip
<?php
$ip = file_get_contents('https://www.whatismyip.net/ip/');
echo "My public IP address is: " . $ip;
?>
try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://www.whatismyip.net/ip/").openStream(), "UTF-8").useDelimiter("\\A")) {
System.out.println("My current IP address is " + s.next());
} catch (java.io.IOException e) {
e.printStackTrace();
}
use strict;
use warnings;
use LWP::UserAgent;
my $ua = new LWP::UserAgent();
my $ip = $ua->get('https://www.whatismyip.net/ip/')->content;
print 'My public IP address is: '. $ip;
var httpClient = new HttpClient();
var ip = await httpClient.GetStringAsync("https://www.whatismyip.net/ip/");
Console.WriteLine($"My public IP address is: {ip}");
Dim httpClient As New System.Net.Http.HttpClient
Dim ip As String = Await httpClient.GetStringAsync("https://www.whatismyip.net/ip/")
Console.WriteLine($"My public IP address is: {ip}")
var https = require('https');
https.get('https://www.whatismyip.net/ip/', function(resp) {
resp.on('data', function(ip) {
console.log("My public IP address is: " + ip);
});
});
use strict;
use warnings;
use LWP::UserAgent;
use JSON;
my $ua = new LWP::UserAgent();
my $geoip = decode_json($ua->get('https://www.whatismyip.net/geoip/')->content);
print "IP: " . $geoip->{ip} . "\n";
print "Country: " . $geoip->{country} . "\n";
using System.Net.Http;
using Newtonsoft.Json;
var httpClient = new HttpClient();
var response = await httpClient.GetStringAsync("https://www.whatismyip.net/geoip/");
dynamic geoip = JsonConvert.DeserializeObject(response);
Console.WriteLine($"IP: {geoip.ip}");
Console.WriteLine($"Country: {geoip.country}");
Imports Newtonsoft.Json
Dim httpClient As New System.Net.Http.HttpClient
Dim response As String = Await httpClient.GetStringAsync("https://www.whatismyip.net/geoip/")
Dim geoip = JsonConvert.DeserializeObject(response)
Console.WriteLine($"IP: {geoip.ip}")
Console.WriteLine($"Country: {geoip.country}")
var https = require('https');
https.get('https://www.whatismyip.net/geoip/', function(resp) {
var data = '';
resp.on('data', function(chunk) { data += chunk; });
resp.on('end', function() {
var geoip = JSON.parse(data);
console.log("IP: " + geoip.ip);
console.log("Country: " + geoip.country);
});
});
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type GeoIP struct {
IP string `json:"ip"`
Country string `json:"country"`
City string `json:"city"`
}
func main() {
resp, _ := http.Get("https://www.whatismyip.net/geoip/")
body, _ := ioutil.ReadAll(resp.Body)
var geoip GeoIP
json.Unmarshal(body, &geoip)
fmt.Printf("IP: %s\nCountry: %s\n", geoip.IP, geoip.Country)
}
try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://www.whatismyip.net/whois/?domain=whatismyip.net").openStream(), "UTF-8").useDelimiter("\\A")) {
java.util.Map whois = new com.google.gson.Gson().fromJson(s.next(), java.util.Map.class);
System.out.println("Registrar: " + whois.get("registrar"));
} catch (java.io.IOException e) {
e.printStackTrace();
}
use LWP::UserAgent;
use JSON;
my $whois = decode_json(LWP::UserAgent->new->get('https://www.whatismyip.net/whois/?domain=whatismyip.net')->content);
print "Registrar: " . $whois->{registrar} . "\n";
var json = await new HttpClient().GetStringAsync("https://www.whatismyip.net/whois/?domain=whatismyip.net");
dynamic whois = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
Console.WriteLine($"Registrar: {whois.registrar}");
Dim json As String = Await New System.Net.Http.HttpClient().GetStringAsync("https://www.whatismyip.net/whois/?domain=whatismyip.net")
Dim whois = Newtonsoft.Json.JsonConvert.DeserializeObject(json)
Console.WriteLine($"Registrar: {whois.registrar}")
var https = require('https');
https.get('https://www.whatismyip.net/whois/?domain=whatismyip.net', function(resp) {
var data = '';
resp.on('data', function(c) { data += c; });
resp.on('end', function() {
var whois = JSON.parse(data);
console.log("Registrar: " + whois.registrar);
});
});
All endpoints are CORS-enabled, so browser requests work directly.
GET /ip/
200 OKtext/plain
Loading…
Rate Limiting
50 API requests per minute, per IP address
This is enforced at the server level to ensure fair usage and performance. Abuse may result in temporary or permanent blocks.
If your IP address has been blocked from using our API endpoints because of abuse and you would like the restriction lifted,
please contact us and explain why you think the ban should be removed.
Need higher limits?
We offer a paid version depending on your needs. Send us a message and we’ll get back to you as soon as we can.