Free IP, GeoIP & Whois API Calls

Your IP: 216.73.216.19 · Your Location:Columbus, Ohio US · ISP: Anthropic, PBC

IP, GeoIP & Whois API

This API suite provides lightweight, real-time access to essential IP address and domain-related data. It is built for developers, network administrators, cybersecurity platforms, and any application that requires accurate and timely information about users, visitors, or assets on the internet.

The suite includes three primary endpoints:
  • /ip/ - Instantly returns the requester’s public IP address in plain text. This is ideal for simple integrations, such as identifying user IPs on the client or server side, diagnosing connectivity issues, or verifying routing configurations.
  • /geoip/ - Accepts an IP address as a query parameter and returns detailed geolocation data in JSON format. This includes city, state or province, country, ISP, and organization. It’s a powerful tool for location-based services, analytics, fraud prevention, and access control.
  • /whois/ - Performs a real-time RDAP (Registration Data Access Protocol) lookup for a given domain name and returns domain registration details in structured JSON format. This includes registrar information, important registration dates (creation, expiration, and last update), nameservers, and related entities. It’s especially useful for domain monitoring, brand protection, abuse detection, and registrar auditing.

Together, these APIs offer a fast, reliable, and easy-to-use interface for working with IP and domain intelligence across a wide range of use cases. Whether you're building a security tool, automating a network utility, or powering a location-aware web service, this suite provides the foundational data you need without unnecessary overhead.

Available Endpoints

  • /ip/
    Returns the visitor’s current IP address in plain text.

    GET https://www.whatismyip.net/ip/

  • /geoip/
    Returns geolocation details for your current IP address in JSON format.

    GET https://www.whatismyip.net/geoip/

  • /geoip/?ip=IP_ADDRESS
    Returns geolocation details for a provided IPv4 address in JSON format.

    GET https://www.whatismyip.net/geoip/?ip=216.73.216.19

  • /whois/?domain=DOMAIN_NAME
    Returns domain registration details using RDAP (with fallback to WHOIS if RDAP is not supported). Data is returned in a normalized JSON format.

    GET https://www.whatismyip.net/whois/?domain=whatismyip.net

Code Samples

#!/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);
  });
});
package main

import (
        "io/ioutil"
        "net/http"
        "os"
)

func main() {
        res, _ := http.Get("https://www.whatismyip.net/ip/")
        ip, _ := ioutil.ReadAll(res.Body)
        os.Stdout.Write(ip)
}
// Note: Direct HTTP requests from browser may be blocked by CORS
fetch('https://www.whatismyip.net/ip/')
  .then(response => response.text())
  .then(ip => {
    console.log("My public IP address is: " + ip);
  })
  .catch(error => console.error('Error:', error));
// Note: May require CORS support or JSONP
$.get("https://www.whatismyip.net/ip/")
  .done(function(data) {
    console.log("My public IP address is: " + data);
  })
  .fail(function() {
    console.log("Error fetching IP");
  });
$ip = Invoke-RestMethod -Uri 'https://www.whatismyip.net/ip/'
"My public IP address is: $ip"
#!/bin/bash

geoip=$(curl -s https://www.whatismyip.net/geoip/)
echo "GeoIP data: $geoip"
# This example requires the requests library be installed.
import requests
import json

response = requests.get('https://www.whatismyip.net/geoip/')
geoip = response.json()
print('IP: {}'.format(geoip['ip']))
print('Country: {}'.format(geoip['country']))
print('City: {}'.format(geoip['city']))
require "net/http"
require "json"

response = Net::HTTP.get(URI("https://www.whatismyip.net/geoip/"))
geoip = JSON.parse(response)
puts "IP: #{geoip['ip']}"
puts "Country: #{geoip['country']}"
puts "City: #{geoip['city']}"
<?php
    $response = file_get_contents('https://www.whatismyip.net/geoip/');
    $geoip = json_decode($response, true);
    echo "IP: " . $geoip['ip'] . "\n";
    echo "Country: " . $geoip['country'] . "\n";
    echo "City: " . $geoip['city'] . "\n";
?>
import com.google.gson.Gson;
import java.util.Scanner;

try (Scanner s = new Scanner(new java.net.URL("https://www.whatismyip.net/geoip/").openStream(), "UTF-8").useDelimiter("\\A")) {
    String json = s.next();
    Gson gson = new Gson();
    java.util.Map geoip = gson.fromJson(json, java.util.Map.class);
    System.out.println("IP: " + geoip.get("ip"));
    System.out.println("Country: " + geoip.get("country"));
} catch (java.io.IOException e) {
    e.printStackTrace();
}
use strict;
use warnings;
use LWP::UserAgent;
use JSON;

my $ua = new LWP::UserAgent();
my $response = $ua->get('https://www.whatismyip.net/geoip/')->content;
my $geoip = decode_json($response);
print "IP: " . $geoip->{ip} . "\n";
print "Country: " . $geoip->{country} . "\n";
using System;
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)
}
// Note: Direct HTTP requests from browser may be blocked by CORS
fetch('https://www.whatismyip.net/geoip/')
  .then(response => response.json())
  .then(geoip => {
    console.log("IP: " + geoip.ip);
    console.log("Country: " + geoip.country);
    console.log("City: " + geoip.city);
  })
  .catch(error => console.error('Error:', error));
// Note: May require CORS support or JSONP
$.getJSON("https://www.whatismyip.net/geoip/")
  .done(function(geoip) {
    console.log("IP: " + geoip.ip);
    console.log("Country: " + geoip.country);
    console.log("City: " + geoip.city);
  })
  .fail(function() {
    console.log("Error fetching GeoIP data");
  });
$geoip = Invoke-RestMethod -Uri 'https://www.whatismyip.net/geoip/'
"IP: $($geoip.ip)"
"Country: $($geoip.country)"
"City: $($geoip.city)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"
$whois = Invoke-RestMethod -Uri 'https://www.whatismyip.net/whois/'
"IP: $($whois.ip)"
"Organization: $($whois.org)"
"ISP: $($whois.isp)"

Output Format

All responses are returned in standard JSON.

Example response from /geoip/:


											
											

											
											
											

Example for /whois/:


											
											

										

Rate Limiting

Each IP address is limited to 50 API requests per minute. This is enforced at the server level to ensure fair usage and performance. Abuse may result in temporary or permanent blocks.

If you need more limits, we do offer a paid version depending on your needs, again please send us a message with your needs through our contact form and we will get back to you as soon as we can.

Use Cases

  • IP logging and audit trails
  • Visitor geolocation for custom experiences
  • Network diagnostics or monitoring dashboards
  • Domain tools, RDAP client integrations, security scanners

Integration Tips

No API key is required. All endpoints support cross-origin requests (CORS enabled), making them suitable for frontend JavaScript applications or AJAX calls.
Ensure you throttle client-side calls appropriately to avoid being rate-limited.

Questions / Comments

Shoot us a message on the contact page.

API Usage Stats Since 07/2025

API EndpointCount
/ip11187 Calls Served
/geoip212 Calls Served
/whois111 Calls Served
Total11510 Calls Served