1<!DOCTYPE html> 2<html lang="en" data-theme="dark"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>What Is My IP? â Public IP Address & Geolocation | IPAddress.to</title> 7 8 <!-- The site is dark-only: data-theme="dark" is hardcoded on <html>, so no 9 bootstrap script is needed and there is nothing to flash. --> 10 <meta name="color-scheme" content="dark"> 11 <meta name="theme-color" content="#050d1c"> 12 13 <meta name="description" content="Instantly find your public IP address with geolocation, ISP details, timezone and an interactive map. Free IP API for developers."> 14 <meta name="keywords" content="what is my IP, my IP address, public IP, IP geolocation, IP lookup, ISP lookup, IP location, IP API"> 15 <meta name="robots" content="index, follow"> 16 <link rel="canonical" href="https://ipaddress.to/"> 17 18 <meta property="og:type" content="website"> 19 <meta property="og:site_name" content="IPAddress.to"> 20 <meta property="og:title" content="What Is My IP? â Public IP Address & Geolocation | IPAddress.to"> 21 <meta property="og:description" content="Instantly find your public IP address with geolocation, ISP details, timezone and an interactive map. Free IP API for developers."> 22 <meta property="og:url" content="https://ipaddress.to/"> 23 <meta property="og:image" content="https://ipaddress.to/favicon/web-app-manifest-512x512.png"> 24 25 <meta name="twitter:card" content="summary"> 26 <meta name="twitter:title" content="What Is My IP? â Public IP Address & Geolocation | IPAddress.to"> 27 <meta name="twitter:description" content="Instantly find your public IP address with geolocation, ISP details, timezone and an interactive map. Free IP API for developers."> 28 <meta name="twitter:image" content="https://ipaddress.to/favicon/web-app-manifest-512x512.png"> 29 30 <link rel="icon" type="image/png" href="/favicon/favicon-96x96.png" sizes="96x96" /> 31 <link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg" /> 32 <link rel="shortcut icon" href="/favicon.ico" /> 33 <link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" /> 34 <meta name="apple-mobile-web-app-title" content="IPAddress.to" /> 35 <link rel="manifest" href="/favicon/site.webmanifest" /> 36 37 <link rel="preload" as="fetch" href="https://ipv6.ipaddress.to/" crossorigin> 38 <link rel="preload" href="/fonts/space-grotesk-700-latin.woff2" as="font" type="font/woff2" crossorigin> 39 40 <link rel="stylesheet" href="/css/shared.min.css?v=1.43.1"> 41 42
42<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://ipaddress.to/#organization","name":"IPAddress.to","url":"https://ipaddress.to/","logo":"https://ipaddress.to/favicon/web-app-manifest-512x512.png"},{"@type":"WebSite","@id":"https://ipaddress.to/#website","url":"https://ipaddress.to/","name":"IPAddress.to","description":"Free IP address lookup, geolocation, DNS, WHOIS and network tools.","publisher":{"@id":"https://ipaddress.to/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://ipaddress.to/lookup/{search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"WebApplication","@id":"https://ipaddress.to/#app","name":"IPAddress.to","url":"https://ipaddress.to/","description":"Free IP address lookup with geolocation, ISP, ASN, DNS, WHOIS and a developer API.","applicationCategory":"UtilitiesApplication","operatingSystem":"Any","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"publisher":{"@id":"https://ipaddress.to/#organization"},"featureList":["Public IP detection","IP geolocation","ASN and ISP lookup","DNS propagation checker","WHOIS lookup","DNS resolver","IP fraud scoring","Free developer API"]}]}</script>
42 43</head> 44<body> 45 46 <a href="#swup" class="skip-link">Skip to content</a> 47 48 <div class="toast" id="toast" role="status" aria-live="polite"> 49 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg> 50 <span id="toastMsg">Copied to clipboard</span> 51 </div> 52 53 <header class="header"> 54 <div class="header-bar"> 55 <a href="/" class="logo"> 56 <div class="logo-mark"><svg class="logo-img" width="22" height="22" viewBox="-37 0 512 512" role="img" aria-label="IPAddress.to logo"><path fill="#bddbff" d="M438.86 64c0-35.35-98.24-64-219.43-64S0 28.65 0 64s98.24 64 219.43 64 219.43-28.65 219.43-64z"/><path fill="#9bc9ff" d="M219.43 256c121.14 0 219.43-28.62 219.43-64V64c0 35.38-98.29 64-219.43 64S0 99.38 0 64v128c0 35.38 98.29 64 219.43 64z"/><path fill="#57a4ff" d="M219.43 384c121.14 0 219.43-28.62 219.43-64V192c0 35.38-98.29 64-219.43 64S0 227.38 0 192v128c0 35.38 98.29 64 219.43 64z"/><path fill="#2488ff" d="M438.86 320c0 35.38-98.29 64-219.43 64S0 355.38 0 320v128c0 35.38 98.29 64 219.43 64s219.43-28.62 219.43-64V320z"/></svg></div> 57 <span class="logo-text">IPAddress<span class="logo-suffix">.to</span></span> 58 </a> 59 <div class="header-right"> 60 <nav class="header-nav" aria-label="Primary"> 61 <a href="/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>My IP</a> 62 <a href="/lookup/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>Lookup</a> 63 <a href="/dns/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg>DNS</a> 64 <a href="/email/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/></svg>Email</a> 65 <a href="/whois/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>WHOIS</a> 66 <a href="/score/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>Score</a> 67 <a href="/api/docs/" class="header-link" data-nav><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>API</a> 68 </nav> 69 <div class="header-auth"> 70 <button type="button" class="header-auth-btn auth-when-out" data-auth-open="login" aria-label="Log in"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg><span>Log in</span></button> 71 <button type="button" class="header-auth-btn header-auth-primary auth-when-out" data-auth-open="signup" aria-label="Sign up"><span>Sign up</span></button> 72 <a href="/account/" class="header-auth-btn header-auth-user auth-when-in" data-nav title="Account & API keys"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg><span>Account</span></a> 73 </div> 74 <button class="menu-btn" id="menuBtn" onclick="toggleMobileMenu()" aria-label="Menu"> 75 <svg class="icon-menu" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg> 76 <svg class="icon-close" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 77 </button> 78 </div> 79 </div> 80 </header> 81 82 <div class="mobile-overlay" id="mobileOverlay" onclick="toggleMobileMenu()"></div> 83 84 <nav class="mobile-drawer" id="mobileDrawer" aria-label="Mobile"> 85 <div class="mobile-drawer-header">
86 <span class="mobile-drawer-title">Menu</span> 87 <button class="mobile-drawer-close" onclick="toggleMobileMenu()" aria-label="Close menu"> 88 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 89 </button> 90 </div> 91 <div class="mobile-drawer-nav"> 92 <a href="/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 93 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg> 94 My IP </a> 95 <a href="/lookup/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 96 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 97 Lookup </a> 98 <a href="/dns/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 99 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg> 100 DNS Checker </a> 101 <a href="/email/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 102 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/></svg> 103 Email Check </a> 104 <a href="/whois/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 105 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg> 106 WHOIS </a> 107 <a href="/score/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 108 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg> 109 Fraud Score </a> 110 <a href="/api/docs/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 111 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg> 112 API Docs </a> 113 <a href="/#playground" class="mobile-nav-link" onclick="closeMobileMenu()"> 114 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="5 3 19 12 5 21 5 3"/></svg> 115 Playground </a> 116 <div class="mobile-auth"> 117 <button type="button" class="mobile-nav-link auth-when-out" data-auth-open="login"> 118 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg> 119 Log in 120 </button> 121 <button type="button" class="mobile-nav-link auth-when-out" data-auth-open="signup"> 122 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg> 123 Sign up â free 124 </button> 125 <a href="/account/" class="mobile-nav-link auth-when-in" data-nav onclick="closeMobileMenu()"> 126 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 127 Account & API keys 128 </a> 129 </div> 130 </div> 131 <div class="mobile-drawer-footer">
132 <span>IPAddress.to</span> 133 </div> 134 </nav> 135 136 <div class="auth-backdrop" id="authModal" role="dialog" aria-modal="true" aria-labelledby="authTitle" aria-hidden="true" data-tab="login"> 137 <div class="auth-dialog"> 138 <button type="button" class="auth-close" data-auth-close aria-label="Close"> 139 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 140 </button> 141 <div class="auth-tabs" role="tablist"> 142 <button type="button" class="auth-tab on" role="tab" data-auth-tab="login">Log in</button> 143 <button type="button" class="auth-tab" role="tab" data-auth-tab="signup">Sign up</button> 144 </div> 145 <div class="auth-heading"> 146 <h2 id="authTitle"><span class="auth-title-login">Welcome back</span><span class="auth-title-signup">Create your account</span></h2> 147 <p><span class="auth-title-login">Log in to manage your API keys and see your usage.</span><span class="auth-title-signup">Free. Your first API key is generated instantly.</span></p> 148 </div> 149 <div class="contact-error auth-error" id="authError" role="alert" hidden></div> 150 151 <div class="auth-panes"> 152 <form class="contact-form auth-form" data-auth-form="login" method="post" action="/account/" novalidate> 153 <input type="hidden" name="_action" value="login"> 154 <input type="hidden" name="_csrf" value=""> 155 <div class="contact-field"> 156 <label for="am-li-email">Email</label> 157 <input type="email" id="am-li-email" name="email" required maxlength="190" autocomplete="email" placeholder="[email protected]"> 158 </div> 159 <div class="contact-field"> 160 <label for="am-li-pass">Password</label> 161 <input type="password" id="am-li-pass" name="password" required autocomplete="current-password" placeholder="Your password"> 162 </div> 163 <button type="submit" class="btn btn-primary contact-submit auth-submit">Log in</button> 164 <p class="auth-switch">New here? <button type="button" data-auth-tab="signup">Create a free account</button></p> 165 </form> 166 167 <form class="contact-form auth-form" data-auth-form="signup" method="post" action="/account/" novalidate aria-hidden="true" inert> 168 <input type="hidden" name="_action" value="signup"> 169 <input type="hidden" name="_csrf" value=""> 170 <div class="contact-field"> 171 <label for="am-su-email">Email</label> 172 <input type="email" id="am-su-email" name="email" required maxlength="190" autocomplete="email" placeholder="[email protected]"> 173 </div> 174 <div class="contact-field"> 175 <label for="am-su-pass">Password</label> 176 <input type="password" id="am-su-pass" name="password" required minlength="8" autocomplete="new-password" placeholder="At least 8 characters"> 177 </div> 178 <div class="contact-field"> 179 <label for="am-su-pass2">Confirm password</label> 180 <input type="password" id="am-su-pass2" name="password2" required minlength="8" autocomplete="new-password" placeholder="Repeat the password"> 181 </div> 182 <button type="submit" class="btn btn-primary contact-submit auth-submit">Create account</button> 183 <p class="auth-note">By signing up you agree to the <a href="/terms/">Terms of Service</a> and <a href="/privacy/">Privacy Policy</a>.</p> 184 <p class="auth-switch">Already have an account? <button type="button" data-auth-tab="login">Log in</button></p> 185 </form> 186 </div> 187 </div> 188 </div> 189 190 <div class="map-tooltip" id="mapTooltip"> 191 <div class="map-tooltip-header">
192 <span class="map-tooltip-flag" id="ttFlag"></span> 193 <div> 194 <div class="map-tooltip-name" id="ttName"></div> 195 <div class="map-tooltip-provider" id="ttProvider"></div> 196 </div> 197 </div> 198 <div class="map-tooltip-result" id="ttResult"></div> 199 </div> 200 201 <!-- Hydrate JS with server-side data --> 202
202<script> 203 var currentData = {"ip":"181.215.65.77","success":true,"type":"IPv4","country":"United States","country_code":"US","region":"Illinois","region_code":null,"city":"Chicago","postal":null,"latitude":41.85,"longitude":-87.65,"timezone":"America/Chicago","isp":"Datacamp Limited","org":"Datacamp Limited","asn":"AS212238"}; 204 var _protoChecked = false; 205 document.addEventListener('DOMContentLoaded', function() { 206 if (!_protoChecked && typeof checkBothProtocols === 'function' && currentData) { 207 _protoChecked = true; 208 checkBothProtocols(); 209 } 210 (function tickLocalTime(){ 211 var el = document.getElementById('detailLocalTime'); 212 if (!el) return; 213 var tz = el.getAttribute('data-tz'); 214 if (!tz) return; 215 var offsetStr = ''; 216 try { 217 var offsetFmt = new Intl.DateTimeFormat('en-GB', { timeZone: tz, timeZoneName: 'shortOffset' }); 218 var offset = offsetFmt.formatToParts(new Date()).find(function(p){ return p.type === 'timeZoneName'; }); 219 offsetStr = offset ? offset.value.replace('GMT', '') : ''; 220 } catch (e) {} 221 var fmt; 222 try { 223 fmt = new Intl.DateTimeFormat('en-GB', { timeZone: tz, hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); 224 } catch (e) { return; } 225 function update(){ 226 el.innerHTML = fmt.format(new Date()) + (offsetStr ? ' <span class="u-muted-medium">(' + offsetStr + ')</span>' : ''); 227 } 228 update(); 229 setInterval(update, 1000); 230 })(); 231 }); 232 </script>
232 233 234 <main id="swup" class="transition-main"> 235 236 <section class="hero landing-v2"> 237 <div class="hero-grid"></div> 238 <div class="hero-glow"></div> 239 <div class="container"> 240 <div class="ip-card-wrapper"> 241 <div class="ip-card ip-deck"> 242 <div class="ip-card-top"> 243 <div class="ip-card-main"> 244 <button type="button" class="ip-card-status is-loading" id="ipCardStatus" data-clean="0" data-flags="VPN" aria-live="polite" aria-haspopup="dialog" aria-controls="detectModal" title="Open the live detection details"> 245 <i aria-hidden="true"></i> 246 <span>Analysing connection</span> 247 <small>Running live proxy and VPN detectionâ¦</small> 248 <em class="ip-card-status-scores" hidden></em> 249 <b class="ip-card-status-more" aria-hidden="true">Details<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg></b> 250 </button> 251 <div class="ip-protos"> 252 <div class="ip-proto ok" id="boxV4" onclick="copyProtoIP('v4')"> 253 <button class="ip-proto-copy" type="button" onclick="event.stopPropagation();copyProtoIP('v4')" aria-label="Copy IPv4 address"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button> 254 <div class="ip-proto-header"> 255 <span class="ip-proto-icon" id="iconV4"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><polyline points="20 6 9 17 4 12"/></svg></span> 256 <span class="ip-proto-label">Your IPv4 address</span> 257 <span class="ip-proto-info" role="button" onclick="event.stopPropagation();showProtoInfo('v4')" aria-label="What is IPv4?"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg></span> 258 </div> 259 <div class="ip-proto-addr" id="valueV4">181.215.65.77</div> 260 </div> 261 <div class="ip-proto checking" id="boxV6" onclick="copyProtoIP('v6')"> 262 <button class="ip-proto-copy" type="button" onclick="event.stopPropagation();copyProtoIP('v6')" aria-label="Copy IPv6 address"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg></button> 263 <div class="ip-proto-header"> 264 <span class="ip-proto-icon" id="iconV6"><span class="ip-proto-spinner"></span></span> 265 <span class="ip-proto-label">Your IPv6 address</span> 266 <span class="ip-proto-info" role="button" onclick="event.stopPropagation();showProtoInfo('v6')" aria-label="What is IPv6?"><svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg></span> 267 </div> 268 <div class="ip-proto-addr" id="valueV6">Checking...</div> 269 </div> 270 </div> 271 </div> 272 <div class="ip-card-map is-ready" id="homeMiniMap" 273 data-lat="41.85" data-lng="-87.65" 274 data-city="Chicago" data-country="United States" data-cc="US"> 275 <div class="ip-card-map-canvas" id="homeMiniMapCanvas" aria-hidden="true" data-rendered="41.850,-87.650"><div class="ip-map-wrap"><svg class="ip-map-img" viewBox="0 0 600 340" width="600" height="340" aria-hidden="true" focusable="false">
275<use href="/svg/world-mini.php?v=3#map"/></svg><span class="ip-map-pulse" style="left:27.66%;top:26.12%"></span><span class="ip-map-marker" style="left:27.66%;top:26.12%"></span><div class="ip-map-chip is-in" style="left:27.66%;top:26.12%;transform:translate(14px,-50%)"><div class="ip-map-chip-header"><span class="ip-map-chip-flag">ðºð¸</span><div><div class="ip-map-chip-name">Chicago</div><div class="ip-map-chip-sub">United States</div></div></div><div class="ip-map-chip-coords"><span class="ip-map-chip-dot"></span>41.850, -87.650</div></div></div></div> 276 <div class="ip-card-map-caption"><span>Approximate location</span><b id="homeMapCaption">Chicago, Illinois</b></div> 277 </div> 278 </div> 279 <div class="ip-card-details"> 280 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>Location</div><div class="ip-detail-value" id="detailLocation">Chicago, Illinois</div></div> 281 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>Country</div><div class="ip-detail-value" id="detailCountry">ðºð¸ United States</div></div> 282 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12.55a11 11 0 0 1 14.08 0"/>
282<path d="M1.42 9a16 16 0 0 1 21.16 0"/><path d="M8.53 16.11a6 6 0 0 1 6.95 0"/><line x1="12" y1="20" x2="12.01" y2="20"/></svg>ISP</div><div class="ip-detail-value" id="detailISP">Datacamp Limited</div></div> 283 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>VPN</div><div class="ip-detail-value ip-flag" id="detailVpn" data-flag="yes">NordVPN</div></div> 284 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 12l2 2 4-4"/><path d="M21 12c0 4.97-4.03 9-9 9s-9-4.03-9-9 4.03-9 9-9c2.5 0 4.77 1.02 6.4 2.66"/><polyline points="22 4 12 14 9 11"/></svg>Proxy</div><div class="ip-detail-value ip-flag" id="detailProxy" data-flag="no">No</div></div> 285 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>Tor</div><div class="ip-detail-value ip-flag" id="detailTor" data-flag="no">No</div></div> 286 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg>ASN</div><div class="ip-detail-value" id="detailASN">AS212238</div></div> 287 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="16" rx="2"/><line x1="3" y1="9" x2="21" y2="9"/><circle cx="6.5" cy="6.5" r="0.6" fill="currentColor"/><circle cx="9" cy="6.5" r="0.6" fill="currentColor"/><circle cx="11.5" cy="6.5" r="0.6" fill="currentColor"/></svg>Browser</div><div class="ip-detail-value" id="detailBrowser">Chrome 128</div></div> 288 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>OS</div><div class="ip-detail-value" id="detailOs">â</div></div> 289 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>Timezone</div><div class="ip-detail-value" id="detailTimezone">America/Chicago</div></div> 290 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg>Currency</div><div class="ip-detail-value" id="detailCurrency">USD â US Dollar</div></div> 291 <div class="ip-detail"><div class="ip-detail-label"><svg width="24" height="24" class="ip-detail-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>Local Time</div><div class="ip-detail-value" id="detailLocalTime" data-tz="America/Chicago">20:08:58 <span class="u-muted-medium">(-05:00)</span></div></div> 292 </div> 293 <div class="ip-card-actions ip-deck-actions"> 294 <div class="ip-deck-endpoint">
295 <span class="ip-deck-endpoint-label">This lookup as data</span> 296 <a href="/api/docs/#lookup" class="ip-deck-endpoint-chip" data-nav title="Open the API reference"><b>GET</b><code>/api/lookup/my</code><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></a> 297 </div> 298 <div class="ip-deck-btns"> 299 <button type="button" class="ip-card-action is-primary" onclick="copyIPJSON()" title="Copy this lookup as JSON"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>Copy JSON</button> 300 <button type="button" class="ip-card-action" onclick="copyIPCurl()" title="Copy a cURL command for this lookup"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/></svg>Copy as cURL</button> 301 <button type="button" class="ip-card-action" onclick="exportJSON()" title="Download this lookup as a .json file"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Export JSON</button> 302 </div> 303 </div> 304 </div> 305 </div> 306 307 <div class="auth-backdrop detect-backdrop" id="detectModal" role="dialog" aria-modal="true" aria-labelledby="pdTitle" aria-hidden="true"> 308 <div class="auth-dialog detect-dialog"> 309 <button type="button" class="auth-close" data-detect-close aria-label="Close"> 310 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 311 </button> 312 <div class="pd-card" id="proxyDetectCard" aria-live="polite"> 313 <div class="pd-header"> 314 <div class="pd-eyebrow">Live Detection</div> 315 <h3 class="pd-title" id="pdTitle">Proxy / VPN Check</h3> 316 <p class="pd-subtitle" id="pdSubtitle">Running tests… <span class="pd-spinner"></span></p> 317 </div> 318 <div class="pd-scores"> 319 <div class="pd-score" data-metric="proxy" data-status="pending"> 320 <div class="pd-score-label">Proxy Score</div> 321 <div class="pd-score-value" id="pdProxyScore">—</div> 322 <div class="pd-score-bar"><div class="pd-score-fill" id="pdProxyFill" style="width:0%"></div></div> 323 </div> 324 <div class="pd-score" data-metric="vpn" data-status="pending"> 325 <div class="pd-score-label">VPN Score</div> 326 <div class="pd-score-value" id="pdVpnScore">—</div> 327 <div class="pd-score-bar"><div class="pd-score-fill" id="pdVpnFill" style="width:0%"></div></div> 328 </div> 329 </div> 330 <div class="pd-tests" id="pdTests"></div> 331 <div class="pd-footnote" id="pdFootnote">Powered by live latency probing, TCP/IP fingerprint analysis, and threat-intel cross-check.</div> 332 </div> 333 </div> 334 </div> 335 336 <div class="hero-content">
337 <span class="page-kicker"><i aria-hidden="true"></i><b>Live</b><span class="sep">/</span>Your connection, analysed in-house</span> 338 <h1 class="hero-title">What is <em>my IP</em>?</h1> 339 <p class="hero-desc">Your public IP address is what websites, APIs and online services see when you connect â it reveals your approximate location, ISP and network. IPAddress.to gives you instant lookups for any IP, plus DNS, WHOIS and hostname tools, all processed in-house. Run our <a href="/score/">fraud score</a> to check whether an IP is a VPN, proxy, Tor exit or known-abusive host before you trust it.</p> 340 <div class="hero-actions"> 341 <a href="/score/" class="btn btn-accent">Check Fraud Score</a> 342 <a href="#api" class="btn btn-secondary">View API Docs</a> 343 </div> 344 </div> 345 346 <div class="live-stats" id="liveStats" aria-label="Live usage statistics"> 347 <div class="live-stat"> 348 <div class="live-stat-label"><i aria-hidden="true"></i>Right now</div> 349 <div class="live-stat-value"><span data-stat="per_min">â</span><small>req / min</small></div> 350 <div class="live-stat-sub">API requests in the last 60 seconds, refreshed every 15 s.</div> 351 </div> 352 <div class="live-stat"> 353 <div class="live-stat-label">Last 24 hours</div> 354 <div class="live-stat-value"><span data-stat="req_24h">173,589</span></div> 355 <div class="live-stat-sub">Lookups across IP, DNS, WHOIS, email and fraud score.</div> 356 </div> 357 <div class="live-stat"> 358 <div class="live-stat-label">Last 30 days</div> 359 <div class="live-stat-value"><span data-stat="req_30d">2,646,939</span></div> 360 <div class="live-stat-sub">Requests served from our own infrastructure, no third-party APIs.</div> 361 </div> 362 <div class="live-stat"> 363 <div class="live-stat-label">Threat intelligence</div> 364 <div class="live-stat-value"><span data-stat="feed_entries">1,342,170</span></div> 365 <div class="live-stat-sub">Flagged addresses across <b data-stat="feeds">96</b> curated feeds.</div> 366 </div> 367 </div> 368 369 </div> 370 </section> 371 372 <!-- âââ Tools bento âââââââââââââââââââââââââââââââââââââââââââ 373 Per-card accent comes from --tc / --tc-rgb set on .tool-n*, 374 the corner numeral is drawn from data-idx, and every 375 .tool-scene is a pure-CSS illustration (no images) that only 376 animates on hover. Card order is load-bearing: the accents 377 and the reveal stagger are assigned by these classes. --> 378 <section class="section v2 tools-section" id="tools"> 379 <div class="container"> 380 <div class="section-header tools-header"> 381 <div class="section-eyebrow">Seven tools, one place</div> 382 <h2 class="section-title">Pick the lookup you need</h2> 383 <p class="section-desc">Geolocation, DNS, WHOIS, reputation and email checks — every one answered from our own data, and every one has a free JSON endpoint behind it.</p> 384 </div> 385 386 <div class="tools-bento"> 387 388 <a class="tool-card tool-n1 tool-wide" href="/lookup/" data-nav data-idx="01" data-reveal> 389 <span class="tool-text"> 390 <span class="tool-head"> 391 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></span> 392 <h3 class="tool-title">IP Lookup</h3> 393 </span>
394 <span class="tool-desc">Geolocation, ASN, ISP and reverse DNS for any IPv4, IPv6 or hostname — with a live map of where it lands.</span> 395 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 396 </span> 397 <span class="tool-scene ts-lookup" aria-hidden="true"> 398 <span class="ts-globe"><i class="ts-mer"></i><i class="ts-mer"></i><i class="ts-par"></i><i class="ts-par"></i></span> 399 <span class="ts-pin"><i class="ts-pin-ring"></i><i class="ts-pin-dot"></i></span> 400 <span class="ts-chip ts-chip-a">Mountain View</span> 401 <span class="ts-chip ts-chip-b">AS15169</span> 402 </span> 403 </a> 404 405 <a class="tool-card tool-n2" href="/" data-nav data-idx="02" data-reveal> 406 <span class="tool-text"> 407 <span class="tool-head"> 408 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></span> 409 <h3 class="tool-title">My IP</h3> 410 </span> 411 <span class="tool-desc">Your public address on both stacks at once, with the browser and network we see.</span> 412 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 413 </span> 414 <span class="tool-scene ts-myip" aria-hidden="true"> 415 <span class="ts-addr"><i class="ts-tag">IPv4</i><b>203.0.113.42</b><i class="ts-live"></i></span> 416 <span class="ts-addr ts-addr-2"><i class="ts-tag">IPv6</i><b>2001:db8::1</b><i class="ts-live"></i></span> 417 </span> 418 </a> 419 420 <a class="tool-card tool-n3" href="/dns/" data-nav data-idx="03" data-reveal> 421 <span class="tool-text"> 422 <span class="tool-head"> 423 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="2" width="20" height="8" rx="2"/><rect x="2" y="14" width="20" height="8" rx="2"/><line x1="6" y1="6" x2="6.01" y2="6"/><line x1="6" y1="18" x2="6.01" y2="18"/></svg></span> 424 <h3 class="tool-title">DNS Checker</h3> 425 </span> 426 <span class="tool-desc">Watch a record propagate across 32 resolvers worldwide, one row per server.</span> 427 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 428 </span> 429 <span class="tool-scene ts-dns" aria-hidden="true"> 430 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot ok"></i></span> 431 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot ok"></i></span> 432 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot wait"></i></span> 433 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot ok"></i></span> 434 </span> 435 </a> 436 437 <a class="tool-card tool-n4" href="/whois/" data-nav data-idx="04" data-reveal> 438 <span class="tool-text">
439 <span class="tool-head"> 440 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg></span> 441 <h3 class="tool-title">WHOIS</h3> 442 </span> 443 <span class="tool-desc">Registrar, owner contacts, network range and the dates a domain or IP was registered.</span> 444 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 445 </span> 446 <span class="tool-scene ts-whois" aria-hidden="true"> 447 <span class="ts-doc"> 448 <i class="ts-ln w1"></i><i class="ts-ln w2"></i><i class="ts-ln w3"></i><i class="ts-ln w4"></i> 449 <i class="ts-seal"></i> 450 </span> 451 </span> 452 </a> 453 454 <a class="tool-card tool-n5" href="/score/" data-nav data-idx="05" data-reveal> 455 <span class="tool-text"> 456 <span class="tool-head"> 457 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></span> 458 <h3 class="tool-title">Fraud Score</h3> 459 </span> 460 <span class="tool-desc">VPN, proxy, Tor, datacenter and blocklist signals folded into one 0–100 risk value.</span> 461 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 462 </span> 463 <span class="tool-scene ts-score" aria-hidden="true"> 464 <span class="ts-dial"><b>87</b></span> 465 <span class="ts-flags"><i></i><i></i><i></i></span> 466 </span> 467 </a> 468 469 <a class="tool-card tool-n6" href="/email/" data-nav data-idx="06" data-reveal> 470 <span class="tool-text"> 471 <span class="tool-head"> 472 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/></svg></span> 473 <h3 class="tool-title">Email Check</h3> 474 </span> 475 <span class="tool-desc">MX, SPF and DMARC in one pass, plus disposable and role-based mailbox detection.</span> 476 <span class="tool-go">Try it <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 477 </span> 478 <span class="tool-scene ts-email" aria-hidden="true"> 479 <span class="ts-chk"><i class="ts-tick"></i>MX</span> 480 <span class="ts-chk"><i class="ts-tick"></i>SPF</span> 481 <span class="ts-chk"><i class="ts-tick"></i>DMARC</span> 482 </span> 483 </a> 484 485 <a class="tool-card tool-n7 tool-full" href="/api/docs/" data-nav data-idx="07" data-reveal> 486 <span class="tool-text"> 487 <span class="tool-head"> 488 <span class="tool-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg></span> 489 <h3 class="tool-title">Free JSON API</h3> 490 </span>
491 <span class="tool-desc">Every tool on this page is one GET request away — no key, no signup, CORS open. Same data, same speed, straight into your code.</span> 492 <span class="tool-go">Read the docs <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"/></svg></span> 493 </span> 494 <span class="tool-scene ts-api" aria-hidden="true"> 495 <span class="ts-term"> 496 <i class="ts-term-bar"><em></em><em></em><em></em></i> 497 <code class="ts-cmd"><span class="ts-verb">GET</span> /api/lookup/8.8.8.8</code> 498 <code class="ts-out"><span class="ts-k">"country"</span>: <span class="ts-s">"United States"</span>,</code> 499 <code class="ts-out"><span class="ts-k">"asn"</span>: <span class="ts-n">15169</span>,</code> 500 <code class="ts-out"><span class="ts-k">"rdns"</span>: <span class="ts-s">"dns.google"</span></code> 501 </span> 502 </span> 503 </a> 504 505 </div> 506 </div> 507 </section> 508 509 <section class="section v2 api-section" id="api"> 510 <div class="container"> 511 <div class="section-header"> 512 <div class="section-eyebrow">REST API</div> 513 <h2 class="section-title">Simple, private API</h2> 514 <p class="section-desc">All lookups are processed locally using our own geolocation database. No data is sent to third parties.</p> 515 <a class="api-ref-link" href="/api/docs/">View full API reference <span class="api-ref-arrow" aria-hidden="true">→</span></a> 516 </div> 517 <div class="endpoints-grid"> 518 519 <!-- GET /api/lookup/my --> 520 <div class="endpoint open"> 521 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 522 <span class="method method-get">GET</span> 523 <span class="endpoint-path">/api/lookup/my</span> 524 <span class="endpoint-desc">Get your own IP info</span> 525 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 526 </div> 527 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 528 <div class="code-tabs"> 529 <button class="code-tab active" onclick="switchTab(this,'curl1')">cURL</button> 530 <button class="code-tab" onclick="switchTab(this,'js1')">JavaScript</button> 531 <button class="code-tab" onclick="switchTab(this,'py1')">Python</button> 532 <button class="code-tab" onclick="switchTab(this,'php1')">PHP</button> 533 <button class="code-tab" onclick="switchTab(this,'cs1')">C#</button> 534 <button class="code-tab" onclick="switchTab(this,'go1')">Go</button> 535 <button class="code-tab" onclick="switchTab(this,'rb1')">Ruby</button> 536 <button class="code-tab" onclick="switchTab(this,'java1')">Java</button> 537 <button class="code-tab" onclick="switchTab(this,'perl1')">Perl</button> 538 <button class="code-tab" onclick="switchTab(this,'rust1')">Rust</button> 539 </div> 540 <div id="curl1" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/lookup/my"</pre></div></div></div> 541 <div id="js1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/lookup/my'</span>); 542<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 543console.log(data);</pre></div></div></div> 544 <div id="py1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
544import</span> requests 545 546data = requests.get(<span class="string">'https://ipaddress.to/api/lookup/my'</span>).json() 547print(data)</pre></div></div></div> 548 <div id="php1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">PHP</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>$data = json_decode( 549 file_get_contents(<span class="string">'https://ipaddress.to/api/lookup/my'</span>), 550 <span class="keyword">true</span> 551); 552print_r($data);</pre></div></div></div> 553 <div id="cs1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">C#</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">using</span> var client = <span class="keyword">new</span> HttpClient(); 554<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync(<span class="string">"https://ipaddress.to/api/lookup/my"</span>); 555Console.WriteLine(json);</pre></div></div></div> 556 <div id="go1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Go</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>resp, _ := http.Get(<span class="string">"https://ipaddress.to/api/lookup/my"</span>) 557body, _ := io.ReadAll(resp.Body) 558fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 559 <div id="rb1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Ruby</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">require</span> <span class="string">'net/http'</span> 560<span class="keyword">require</span> <span class="string">'json'</span> 561 562data = JSON.parse(Net::HTTP.get(URI(<span class="string">'https://ipaddress.to/api/lookup/my'</span>))) 563puts data</pre></div></div></div> 564 <div id="java1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Java</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>HttpClient client = HttpClient.newHttpClient(); 565HttpRequest req = HttpRequest.newBuilder() 566 .uri(URI.create(<span class="string">"https://ipaddress.to/api/lookup/my"</span>)).build(); 567String body = client.send(req, BodyHandlers.ofString()).body(); 568System.out.println(body);</pre></div></div></div> 569 <div id="perl1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Perl</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
569use</span> LWP::Simple; 570<span class="keyword">use</span> JSON; 571 572<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/lookup/my'</span>)); 573print $data->{ip};</pre></div></div></div> 574 <div id="rust1" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Rust</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">let</span> body = reqwest::get(<span class="string">"https://ipaddress.to/api/lookup/my"</span>) 575 .<span class="keyword">await</span>?.text().<span class="keyword">await</span>?; 576println!(<span class="string">"{}"</span>, body);</pre></div></div></div> 577 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 578 <span class="key">"success"</span>: <span class="keyword">true</span>, 579 <span class="key">"ip"</span>: <span class="string">"203.45.167.89"</span>, 580 <span class="key">"type"</span>: <span class="string">"IPv4"</span>, 581 <span class="key">"country"</span>: <span class="string">"United States"</span>, 582 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 583 <span class="key">"region"</span>: <span class="string">"California"</span>, 584 <span class="key">"city"</span>: <span class="string">"San Francisco"</span>, 585 <span class="key">"latitude"</span>: <span class="number">37.7749</span>, 586 <span class="key">"longitude"</span>: <span class="number">-122.4194</span>, 587 <span class="key">"timezone"</span>: <span class="string">"America/Los_Angeles"</span>, 588 <span class="key">"isp"</span>: <span class="string">"Cloudflare, Inc."</span>, 589 <span class="key">"asn"</span>: <span class="string">"AS13335"</span> 590}</pre></div></div> 591 </div></div></div> 592 </div> 593 594 <!-- GET /api/{address} --> 595 <div class="endpoint"> 596 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 597 <span class="method method-get">GET</span> 598 <span class="endpoint-path">/api/lookup/<span class="param">{ip_or_hostname}</span></span> 599 <span class="endpoint-desc">Lookup an IP address or hostname</span> 600 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 601 </div> 602 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 603 <div class="params-grid"> 604 <div class="param-row"><div class="param-name">ip_or_hostname <span class="param-tag param-optional">optional</span></div><div class="param-type">string</div><div class="param-desc">IPv4/IPv6 address or hostname. Omit to get your own IP info.</div></div> 605 </div> 606 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Example</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/lookup/8.8.8.8"</pre></div></div> 607 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 608 <span class="key">"success"</span>: <span class="keyword">true</span>, 609 <span class="key">"ip"</span>: <span class="string">"8.8.8.8"</span>, 610 <span class="key">"type"</span>: <span class="string">"IPv4"</span>, 611 <span class="key">"rdns"</span>: <span class="string">"dns.google"</span>, 612 <span class="key">"location"</span>: { 613 <span class="key">"continent"</span>: <span class="string">"NA"</span>, 614 <span class="key">"continent_name"</span>: <span class="string">"North America"</span>, 615 <span class="key">"country"</span>: <span class="string">"United States"</span>, 616 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 617 <span class="key">"state"</span>: <span class="string">"California"</span>, 618 <span class="key">"city"</span>: <span class="string">
618"Mountain View"</span>, 619 <span class="key">"latitude"</span>: <span class="number">37.422</span>, 620 <span class="key">"longitude"</span>: <span class="number">-122.085</span>, 621 <span class="key">"timezone"</span>: <span class="string">"America/Los_Angeles"</span>, 622 <span class="key">"is_eu_member"</span>: <span class="keyword">false</span>, 623 <span class="key">"calling_code"</span>: <span class="string">"1"</span>, 624 <span class="key">"capital"</span>: <span class="string">"Washington, D.C."</span>, 625 <span class="key">"languages"</span>: <span class="string">"English"</span>, 626 <span class="key">"country_tld"</span>: <span class="string">".us"</span>, 627 <span class="key">"currency"</span>: { <span class="key">"code"</span>: <span class="string">"USD"</span>, <span class="key">"name"</span>: <span class="string">"US Dollar"</span> } 628 }, 629 <span class="key">"asn"</span>: { 630 <span class="key">"asn"</span>: <span class="number">15169</span>, 631 <span class="key">"descr"</span>: <span class="string">"Google LLC"</span>, 632 <span class="key">"country"</span>: <span class="string">"US"</span>, 633 <span class="key">"org"</span>: <span class="string">"Google LLC"</span> 634 }, 635 <span class="key">"company"</span>: { <span class="key">"name"</span>: <span class="string">"Google LLC"</span> }, 636 <span class="key">"is_vpn"</span>: <span class="keyword">false</span>, 637 <span class="key">"is_proxy"</span>: <span class="keyword">false</span>, 638 <span class="key">"is_tor"</span>: <span class="keyword">false</span>, 639 <span class="key">"is_hosting"</span>: <span class="keyword">false</span>, 640 <span class="key">"vpn_provider"</span>: <span class="keyword">null</span> 641}</pre></div></div> 642 </div></div></div> 643 </div> 644 645 <!-- GET /api/whois/ --> 646 <div class="endpoint"> 647 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 648 <span class="method method-get">GET</span> 649 <span class="endpoint-path">/api/whois/<span class="param">{ip_or_domain}</span></span> 650 <span class="endpoint-desc">WHOIS lookup (subdomains auto-stripped to root domain)</span> 651 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 652 </div> 653 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 654 <div class="params-grid"> 655 <div class="param-row"><div class="param-name">query <span class="param-tag param-required">required</span></div><div class="param-type">string</div><div class="param-desc">IP address (v4/v6) or domain name to query</div></div> 656 </div> 657 <div class="u-mt-16 code-tabs"> 658 <button class="code-tab active" onclick="switchTab(this,'curlW')">cURL</button> 659 <button class="code-tab" onclick="switchTab(this,'jsW')">JavaScript</button> 660 <button class="code-tab" onclick="switchTab(this,'pyW')">Python</button> 661 <button class="code-tab" onclick="switchTab(this,'phpW')">PHP</button> 662 <button class="code-tab" onclick="switchTab(this,'csW')">C#</button> 663 <button class="code-tab" onclick="switchTab(this,'goW')">Go</button> 664 <button class="code-tab" onclick="switchTab(this,'perlW')">Perl</button> 665 </div> 666 <div id="curlW" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/whois/google.com"</pre></div></div></div> 667 <div id="jsW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>); 668<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 669console.log(data.parsed.registrar); <span class="comment">
669// "MarkMonitor Inc."</span></pre></div></div></div> 670 <div id="pyW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">import</span> requests 671 672data = requests.get(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>).json() 673print(data[<span class="string">'parsed'</span>][<span class="string">'registrar'</span>])</pre></div></div></div> 674 <div id="phpW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">PHP</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>$data = json_decode( 675 file_get_contents(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>), 676 <span class="keyword">true</span> 677); 678echo $data[<span class="string">'parsed'</span>][<span class="string">'registrar'</span>];</pre></div></div></div> 679 <div id="csW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">C#</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">using</span> var client = <span class="keyword">new</span> HttpClient(); 680<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync( 681 <span class="string">"https://ipaddress.to/api/whois/google.com"</span>); 682Console.WriteLine(json);</pre></div></div></div> 683 <div id="goW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Go</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>resp, _ := http.Get(<span class="string">"https://ipaddress.to/api/whois/google.com"</span>) 684body, _ := io.ReadAll(resp.Body) 685fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 686 <div id="perlW" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Perl</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
686use</span> LWP::Simple; 687<span class="keyword">use</span> JSON; 688 689<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>)); 690print $data->{parsed}{registrar};</pre></div></div></div> 691 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response (domain)</span></div><div class="code-content"><pre>{ 692 <span class="key">"success"</span>: <span class="keyword">true</span>, 693 <span class="key">"query"</span>: <span class="string">"google.com"</span>, 694 <span class="key">"type"</span>: <span class="string">"domain"</span>, 695 <span class="key">"found"</span>: <span class="keyword">true</span>, 696 <span class="key">"parsed"</span>: { 697 <span class="key">"domain_name"</span>: <span class="string">"GOOGLE.COM"</span>, 698 <span class="key">"registrar"</span>: <span class="string">"MarkMonitor Inc."</span>, 699 <span class="key">"registrar_url"</span>: <span class="string">"https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM"</span>, 700 <span class="key">"registrar_iana_id"</span>: <span class="string">"292"</span>, 701 <span class="key">"creation_date"</span>: <span class="string">"1997-09-15T04:00:00Z"</span>, 702 <span class="key">"expiry_date"</span>: <span class="string">"2028-09-14T04:00:00Z"</span>, 703 <span class="key">"updated_date"</span>: <span class="string">"2026-05-11T18:51:14Z"</span>, 704 <span class="key">"status"</span>: [<span class="string">"client delete prohibited"</span>, <span class="string">"client transfer prohibited"</span>], 705 <span class="key">"nameservers"</span>: [<span class="string">"ns1.google.com"</span>, <span class="string">"ns2.google.com"</span>], 706 <span class="key">"dnssec"</span>: <span class="string">"unsigned"</span>, 707 <span class="key">"abuse_email"</span>: <span class="string">"[email protected]"</span>, 708 <span class="key">"abuse_phone"</span>: <span class="string">"tel:+1.2086851750"</span> 709 }, 710 <span class="key">"source"</span>: <span class="string">"registry"</span>, 711 <span class="key">"duration_ms"</span>: <span class="number">342</span> 712}</pre></div></div> 713 </div></div></div> 714 </div> 715 716 <!-- GET /api/dns/{type}/{domain} --> 717 <div class="endpoint"> 718 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 719 <span class="method method-get">GET</span> 720 <span class="endpoint-path">/api/dns/<span class="param">{type}</span>/<span class="param">{domain}</span></span> 721 <span class="endpoint-desc">DNS propagation checker across 32 global servers</span> 722 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 723 </div> 724 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 725 <div class="params-grid"> 726 <div class="param-row"><div class="param-name">type <span class="param-tag param-required">required</span></div><div class="param-type">string</div><div class="param-desc">DNS record type: A, AAAA, CNAME, MX, NS, TXT, SOA, PTR, SRV, CAA</div></div> 727 <div class="param-row"><div class="param-name">domain <span class="param-tag param-required">required</span></div><div class="param-type">string</div><div class="param-desc">Domain to query (e.g., google.com)</div></div> 728 <div class="param-row"><div class="param-name">server <span class="param-tag param-optional">optional</span></div><div class="param-type">string</div><div class="param-desc">Query a single DNS server IP instead of all 32. Pass as query param: ?server=8.8.8.8</div></div> 729 </div> 730 <div class="code-tabs"> 731 <button class="code-tab active" onclick="switchTab(this,'curlD')">cURL</button> 732 <button class="code-tab" onclick="switchTab(this,'jsD')">JavaScript</button> 733 <button class="code-tab" onclick="switchTab(this,'pyD')">Python</button> 734 </div> 735 <div id="curlD" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/dns/a/google.com"</pre></div></div></div> 736 <div id="jsD" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/dns/mx/google.com'</span>); 737<span class="keyword">const</span> reader = res.body.getReader(); 738<span class="comment">// Streams NDJSON â one result per line per server</span></pre></div></div></div> 739 <div id="pyD" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
739import</span> requests, json 740r = requests.get(<span class="string">'https://ipaddress.to/api/dns/ns/google.com'</span>, stream=True) 741<span class="keyword">for</span> line <span class="keyword">in</span> r.iter_lines(): 742 print(json.loads(line))</pre></div></div></div> 743 <p class="u-note endpoint-note">Response is NDJSON (streaming). Each line is a JSON object: <code>start</code>, <code>result</code> (Ã32 servers), then <code>done</code> with propagation summary.</p> 744 </div></div></div> 745 </div> 746 747 <!-- GET /api/resolve/ --> 748 <div class="endpoint"> 749 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 750 <span class="method method-get">GET</span> 751 <span class="endpoint-path">/api/resolve/<span class="param">{hostname}</span></span> 752 <span class="endpoint-desc">Resolve hostname to IP addresses</span> 753 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 754 </div> 755 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 756 <div class="params-grid"> 757 <div class="param-row"><div class="param-name">hostname <span class="param-tag param-required">required</span></div><div class="param-type">string</div><div class="param-desc">Hostname to resolve (e.g., github.com)</div></div> 758 </div> 759 <div class="u-mt-16 code-tabs"> 760 <button class="code-tab active" onclick="switchTab(this,'curlH')">cURL</button> 761 <button class="code-tab" onclick="switchTab(this,'jsH')">JavaScript</button> 762 <button class="code-tab" onclick="switchTab(this,'pyH')">Python</button> 763 <button class="code-tab" onclick="switchTab(this,'phpH')">PHP</button> 764 <button class="code-tab" onclick="switchTab(this,'csH')">C#</button> 765 <button class="code-tab" onclick="switchTab(this,'goH')">Go</button> 766 <button class="code-tab" onclick="switchTab(this,'perlH')">Perl</button> 767 </div> 768 <div id="curlH" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/resolve/github.com"</pre></div></div></div> 769 <div id="jsH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>); 770<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 771console.log(data.a); <span class="comment">// ["140.82.121.3"]</span></pre></div></div></div> 772 <div id="pyH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">import</span> requests 773 774data = requests.get(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>).json() 775<span class="keyword">for</span> ip <span class="keyword">in</span>
775 data[<span class="string">'a'</span>]: 776 print(ip)</pre></div></div></div> 777 <div id="phpH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">PHP</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>$data = json_decode( 778 file_get_contents(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>), 779 <span class="keyword">true</span> 780); 781print_r($data[<span class="string">'a'</span>]); <span class="comment">// IPv4 addresses</span></pre></div></div></div> 782 <div id="csH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">C#</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">using</span> var client = <span class="keyword">new</span> HttpClient(); 783<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync( 784 <span class="string">"https://ipaddress.to/api/resolve/github.com"</span>); 785Console.WriteLine(json);</pre></div></div></div> 786 <div id="goH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Go</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>resp, _ := http.Get(<span class="string">"https://ipaddress.to/api/resolve/github.com"</span>) 787body, _ := io.ReadAll(resp.Body) 788fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 789 <div id="perlH" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Perl</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
789use</span> LWP::Simple; 790<span class="keyword">use</span> JSON; 791 792<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>)); 793print join(<span class="string">"\n"</span>, @{$data->{a}});</pre></div></div></div> 794 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 795 <span class="key">"success"</span>: <span class="keyword">true</span>, 796 <span class="key">"hostname"</span>: <span class="string">"github.com"</span>, 797 <span class="key">"a"</span>: [<span class="string">"140.82.121.3"</span>], 798 <span class="key">"aaaa"</span>: [], 799 <span class="key">"cname"</span>: [], 800 <span class="key">"reverse"</span>: { 801 <span class="string">"140.82.121.3"</span>: <span class="string">"lb-140-82-121-3-iad.github.com"</span> 802 }, 803 <span class="key">"total_ips"</span>: <span class="number">1</span>, 804 <span class="key">"has_ipv4"</span>: <span class="keyword">true</span>, 805 <span class="key">"has_ipv6"</span>: <span class="keyword">false</span>, 806 <span class="key">"duration_ms"</span>: <span class="number">87</span> 807}</pre></div></div> 808 </div></div></div> 809 </div> 810 811 <!-- GET /api/score/{ip} --> 812 <div class="endpoint"> 813 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 814 <span class="method method-get">GET</span> 815 <span class="endpoint-path">/api/score/<span class="param">{ip_or_hostname}</span></span> 816 <span class="endpoint-desc">IP fraud risk score with threat indicators</span> 817 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 818 </div> 819 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 820 <div class="params-grid"> 821 <div class="param-row"><div class="param-name">ip_or_hostname <span class="param-tag param-optional">optional</span></div><div class="param-type">string</div><div class="param-desc">IP address or hostname to score. Use "my" or omit for your own IP.</div></div> 822 </div> 823 <div class="u-mt-16 code-tabs"> 824 <button class="code-tab active" onclick="switchTab(this,'curlS')">cURL</button> 825 <button class="code-tab" onclick="switchTab(this,'jsS')">JavaScript</button> 826 <button class="code-tab" onclick="switchTab(this,'pyS')">Python</button> 827 <button class="code-tab" onclick="switchTab(this,'phpS')">PHP</button> 828 </div> 829 <div id="curlS" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/score/134.199.214.1"</pre></div></div></div> 830 <div id="jsS" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/score/134.199.214.1'</span>); 831<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 832console.log(data.score, data.risk, data.checks.hosting_asn); 833<span class="comment">// 54 "high" true</span></pre></div></div></div> 834 <div id="pyS" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">
834import</span> requests 835 836data = requests.get(<span class="string">'https://ipaddress.to/api/score/134.199.214.1'</span>).json() 837print(f<span class="string">"Score: {data['score']}/100 ({data['risk']})"</span>) 838print(f<span class="string">"Hosting: {data['checks']['hosting_asn']}"</span>)</pre></div></div></div> 839 <div id="phpS" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">PHP</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>$data = json_decode( 840 file_get_contents(<span class="string">'https://ipaddress.to/api/score/134.199.214.1'</span>), 841 <span class="keyword">true</span> 842); 843echo $data[<span class="string">'score'</span>] . <span class="string">' â '</span> . $data[<span class="string">'risk'</span>];</pre></div></div></div> 844 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 845 <span class="key">"success"</span>: <span class="keyword">true</span>, 846 <span class="key">"ip"</span>: <span class="string">"134.199.214.1"</span>, 847 <span class="key">"score"</span>: <span class="number">54</span>, 848 <span class="key">"risk"</span>: <span class="string">"high"</span>, 849 <span class="key">"vpn_provider"</span>: <span class="keyword">null</span>, 850 <span class="key">"rdns"</span>: <span class="keyword">null</span>, 851 <span class="key">"location"</span>: { 852 <span class="key">"country"</span>: <span class="string">"United States"</span>, 853 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 854 <span class="key">"city"</span>: <span class="string">"Santa Clara"</span>, 855 <span class="key">"currency"</span>: { <span class="key">"code"</span>: <span class="string">"USD"</span>, <span class="key">"name"</span>: <span class="string">"US Dollar"</span> } 856 }, 857 <span class="key">"asn"</span>: { <span class="key">"asn"</span>: <span class="number">14061</span>, <span class="key">"org"</span>: <span class="string">"DigitalOcean, LLC"</span> }, 858 <span class="key">"company"</span>: { <span class="key">"name"</span>: <span class="string">"DigitalOcean, LLC"</span>, <span class="key">"type"</span>: <span class="string">"hosting"</span> }, 859 <span class="key">"checks"</span>: { 860 <span class="key">"hosting_asn"</span>: <span class="keyword">true</span>, 861 <span class="key">"datacenter_blocklist"</span>: <span class="keyword">true</span>, 862 <span class="key">"vpn_detected"</span>: <span class="keyword">false</span>, 863 <span class="key">"tor_exit"</span>: <span class="keyword">false</span>, 864 <span class="key">"blocklist_listed"</span>: <span class="keyword">true</span>, 865 <span class="key">"blocklist_count"</span>: <span class="number">3</span>, 866 <span class="key">"has_rdns"</span>: <span class="keyword">false</span> 867 }, 868 <span class="key">"factors"</span>: [ 869 { <span class="key">"name"</span>: <span class="string">"Hosting/Datacenter ASN"</span>, <span class="key">"impact"</span>: <span class="string">"medium"</span> }, 870 { <span class="key">"name"</span>: <span class="string">"No Reverse DNS"</span>, <span class="key">"impact"</span>: <span class="string">"low"</span> }, 871 { <span class="key">"name"</span>: <span class="string">"Datacenter Confirmed"</span>, <span class="key">"impact"</span>: <span class="string">"medium"</span> }, 872 { <span class="key">"name"</span>: <span class="string">"Threat Intelligence"</span>, <span class="key">"impact"</span>: <span class="string">"high"</span> } 873 ], 874 <span class="key">"duration_ms"</span>: <span class="number">45</span> 875}</pre></div></div> 876 </div></div></div> 877 </div> 878 879 <!-- GET /api/email/{email_or_domain} --> 880 <div class="endpoint"> 881 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 882 <span class="method method-get">
882GET</span> 883 <span class="endpoint-path">/api/email/<span class="param">{email_or_domain}</span></span> 884 <span class="endpoint-desc">Email auth score (MX, SPF, DMARC, disposable)</span> 885 <span class="endpoint-toggle"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg></span> 886 </div> 887 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 888 <div class="params-grid"> 889 <div class="param-row"><div class="param-name">email_or_domain</div><div class="param-type">string</div><div class="param-desc">Email address or domain to score. Omit for a sample of known disposable domains.</div></div> 890 </div> 891 <div class="u-mt-16 code-tabs"> 892 <button class="code-tab active" onclick="switchTab(this,'curlE')">cURL</button> 893 <button class="code-tab" onclick="switchTab(this,'jsE')">JavaScript</button> 894 <button class="code-tab" onclick="switchTab(this,'pyE')">Python</button> 895 <button class="code-tab" onclick="switchTab(this,'phpE')">PHP</button> 896 </div> 897 <div id="curlE" class="code-example active"><div class="code-block"><div class="code-header"><span class="code-lang">cURL</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>curl "https://ipaddress.to/api/email/[email protected]"</pre></div></div></div> 898 <div id="jsE" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">JavaScript</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">const</span> res = <span class="keyword">await</span> fetch(<span class="string">'https://ipaddress.to/api/email/[email protected]'</span>); 899<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 900console.log(data.score, data.rating, data.checks.disposable); 901<span class="comment">// 100 "trusted" false</span></pre></div></div></div> 902 <div id="pyE" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">Python</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre><span class="keyword">import</span> requests 903 904data = requests.get(<span class="string">'https://ipaddress.to/api/email/[email protected]'</span>).json() 905print(f<span class="string">"Score: {data['score']}/100 ({data['rating']})"</span>) 906print(f<span class="string">"Disposable: {data['checks']['disposable']}"</span>)</pre></div></div></div> 907 <div id="phpE" class="code-example"><div class="code-block"><div class="code-header"><span class="code-lang">PHP</span><button class="code-copy" onclick="copyCode(this)">Copy</button></div><div class="code-content"><pre>$data = json_decode( 908 file_get_contents(<span class="string">'https://ipaddress.to/api/email/[email protected]'</span>), 909 <span class="keyword">true</span> 910); 911echo $data[<span class="string">'score'</span>] . <span class="string">' â '</span> . $data[<span class="string">'rating'</span>];</pre></div></div></div> 912 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 913 <span class="key">"success"</span>: <span class="keyword">true</span>, 914 <span class="key">"query"</span>: <span class="string">"[email protected]"</span>, 915 <span class="key">"email"</span>: <span class="string">"[email protected]"</span>, 916 <span class="key">"domain"</span>: <span class="string">"gmail.com"</span>, 917 <span class="key">"target_type"</span>: <span class="string">"email"</span>, 918 <span class="key">"score"</span>: <span class="number">100</span>, 919 <span class="key">"rating"</span>: <span class="string">"trusted"</span>, 920 <span class="key">"score_breakdown"</span>: { <span class="key">"deliverability"</span>: <span class="number">40</span>, <span class="key">"authentication"</span>: <span class="number">40</span>, <span class="key">"reputation"</span>: <span class="number">20</span> },
921 <span class="key">"checks"</span>: { 922 <span class="key">"has_mx"</span>: <span class="keyword">true</span>, 923 <span class="key">"spf"</span>: <span class="keyword">true</span>, 924 <span class="key">"dmarc"</span>: <span class="keyword">true</span>, 925 <span class="key">"disposable"</span>: <span class="keyword">false</span>, 926 <span class="key">"role_based"</span>: <span class="keyword">false</span>, 927 <span class="key">"free_provider"</span>: <span class="keyword">true</span> 928 }, 929 <span class="key">"is_disposable"</span>: <span class="keyword">false</span>, 930 <span class="key">"duration_ms"</span>: <span class="number">182</span> 931}</pre></div></div> 932 </div></div></div> 933 </div> 934 </div> 935 <div class="endpoints-footer">Looking for every parameter, error code and response schema? <a href="/api/docs/">View the full API reference →</a></div> 936 </div> 937 </section> 938 939 <section class="section v2 playground-section" id="playground"> 940 <div class="container"> 941 <div class="section-header"> 942 <div class="section-eyebrow">Try it live</div> 943 <h2 class="section-title">API Playground</h2> 944 <p class="section-desc">Test all APIs directly in your browser.</p> 945 </div> 946 <div class="playground"> 947 <div class="playground-header"><div class="playground-title"><div class="live-dot"></div>Live Testing</div></div> 948 <div class="playground-body"> 949 <div class="playground-api-tabs"> 950 <button class="playground-api-tab active" onclick="switchPlayground('ip')" data-pg="ip">Lookup</button> 951 <button class="playground-api-tab" onclick="switchPlayground('whois')" data-pg="whois">WHOIS</button> 952 <button class="playground-api-tab" onclick="switchPlayground('resolve')" data-pg="resolve">Resolve</button> 953 <button class="playground-api-tab" onclick="switchPlayground('score')" data-pg="score">Score</button> 954 <button class="playground-api-tab" onclick="switchPlayground('email')" data-pg="email">Email</button> 955 </div> 956 <div class="playground-input-row"> 957 <input type="text" class="input-field" id="testInput" placeholder="Enter IP address (e.g., 8.8.8.8) or leave empty for your IP" aria-label="API playground request input"> 958 <button class="btn btn-accent" onclick="runTest()">Run Test</button> 959 </div> 960 <div class="preset-btns" id="presetsIP"> 961 <button class="preset-btn" onclick="runTest()">My IP</button> 962 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 963 <button class="preset-btn" onclick="runTest('1.1.1.1')">1.1.1.1</button> 964 <button class="preset-btn" onclick="runTest('208.67.222.222')">OpenDNS</button> 965 <button class="preset-btn" onclick="runTest('9.9.9.9')">Quad9</button> 966 </div> 967 <div class="preset-btns" id="presetsWhois" style="display:none"> 968 <button class="preset-btn" onclick="runTest('google.com')">google.com</button> 969 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 970 <button class="preset-btn" onclick="runTest('cloudflare.com')">cloudflare.com</button> 971 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 972 </div> 973 <div class="preset-btns" id="presetsResolve" style="display:none"> 974 <button class="preset-btn" onclick="runTest('google.com')">google.com</button> 975 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 976 <button class="preset-btn" onclick="runTest('cloudflare.com')">cloudflare.com</button> 977 <button class="preset-btn" onclick="runTest('example.com')">example.com</button> 978 </div> 979 <div class="preset-btns" id="presetsScore" style="display:none"> 980 <button class="preset-btn" onclick="runTest('my')">My IP</button> 981 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 982 <button class="preset-btn" onclick="runTest('1.1.1.1')">1.1.1.1</button> 983 <button class="preset-btn" onclick="runTest('104.28.5.100')">104.28.5.100</button> 984 </div> 985 <div class="preset-btns" id="presetsEmail" style="display:none"> 986 <button class="preset-btn" onclick="runTest('[email protected]')">gmail.com</button> 987 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 988 <button class="preset-btn" onclick="runTest('[email protected]')">mailinator.com</button> 989 <button class="preset-btn" onclick="runTest('[email protected]')">[email protected]</button> 990 </div> 991 <div class="request-info" id="pgRequestInfo" style="display:none"><span class="request-info-method">
991GET</span><span class="request-info-url" id="pgRequestUrl"></span><span class="request-info-time" id="pgRequestTime"></span></div> 992 <div class="response-panel"> 993 <div class="response-header"> 994 <div class="response-status pending" id="status">Ready</div> 995 <div class="response-meta"> 996 <button type="button" class="code-copy" id="pgCopyResponse" onclick="copyPlaygroundResponse()" style="display:none">Copy</button> 997 <div class="response-time" id="time">â</div> 998 </div> 999 </div> 1000 <div class="response-body" id="response"><pre><span class="comment">// Click "Run Test" or a preset to make a request</span></pre></div> 1001 </div> 1002 </div> 1003 </div> 1004 </div> 1005 </section> 1006 1007 <section class="section v2 approach-section" id="approach"> 1008 <div class="container"> 1009 <div class="section-header"> 1010 <div class="section-eyebrow">Under the hood</div> 1011 <h2 class="section-title">A fraud score that <em>shows its work.</em></h2> 1012 <p class="section-desc">Most commercial IP-intelligence APIs return one opaque number and ask you to trust it. We surface every signal that contributed to a verdict â datacentre vs residential, hosting vs ISP, why a network raised the risk â so you can debug a flagged user instead of guessing.</p> 1013 </div> 1014 1015 <div class="approach-grid"> 1016 <article class="approach-card"> 1017 <div class="approach-icon" aria-hidden="true"> 1018 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3a14 14 0 0 1 0 18M12 3a14 14 0 0 0 0 18"/></svg> 1019 </div> 1020 <h3>Privacy proxies, classified.</h3> 1021 <p>Consumer privacy relays, commercial VPN networks and residential-proxy infrastructure are each surfaced as their own category â not collapsed into a single "VPN" flag. That distinction matters when a real user behind a privacy proxy isn't a fraudster, but a paid residential-proxy customer almost always is.</p> 1022 </article> 1023 1024 <article class="approach-card"> 1025 <div class="approach-icon" aria-hidden="true"> 1026 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="6" rx="1"/><rect x="3" y="14" width="18" height="6" rx="1"/><path d="M7 7h.01M7 17h.01"/></svg> 1027 </div> 1028 <h3>A signal, not a black box.</h3> 1029 <p>The score draws on dozens of independent threat-intelligence inputs covering active C2 servers, brute-force sources, spam infrastructure, malware hosts, scanning, and abuse reports â refreshed continuously. The response tells you <strong>how many independent signals</strong> agreed on an IP, the severity of each, and the rDNS/ASN reasoning â not just a number you have to take on faith.</p> 1030 </article> 1031 1032 <article class="approach-card"> 1033 <div class="approach-icon" aria-hidden="true"> 1034 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2L3 6v6c0 5 3.8 9.5 9 11 5.2-1.5 9-6 9-11V6l-9-4z"/><path d="M9 12l2 2 4-4"/></svg> 1035 </div> 1036 <h3>Real users don't get hit.</h3> 1037 <p>
1037Major hyperscale and CDN infrastructure is verified by <strong>ASN + reverse-DNS</strong> before any blocklist match is applied, so legitimate traffic from well-known public networks can't be mistaken for fraud. Competing services we benchmarked tag some of the largest public DNS resolvers as "abusers" â that's a real correctness problem if you're gating signups or comments.</p> 1038 </article> 1039 1040 <article class="approach-card"> 1041 <div class="approach-icon" aria-hidden="true"> 1042 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 18 0 9 9 0 0 0-18 0z"/><path d="M12 7v5l3 2"/></svg> 1043 </div> 1044 <h3>Local-first. No per-query bill.</h3> 1045 <p>Every lookup is an indexed query against an in-house database â no external call-out per request, no API key, no rate ladder. The free tier is genuinely unlimited, and a /60-second result cache means repeat lookups of the same IP are sub-100 ms across the board.</p> 1046 </article> 1047 </div> 1048 1049 <div class="approach-bench"> 1050 <div class="approach-bench-row"> 1051 <div class="approach-bench-stat"> 1052 <strong>14 / 16</strong> 1053 <span>correct classifications in a recent benchmark across a curated set of network categories â vs 10–11 for the two leading paid services on the same IPs.</span> 1054 </div> 1055 <div class="approach-bench-stat"> 1056 <strong>64 ms</strong> 1057 <span>median latency on cached lookups (60-second TTL). Cold-cache calls do additional resolution work, so the first hit on a new IP is slower â a trade-off we made for accuracy.</span> 1058 </div> 1059 <div class="approach-bench-stat"> 1060 <strong>$0</strong> 1061 <span>marginal cost per query at any volume. The two paid services we benchmarked charge $7–$25 per month at 100k queries, $30–$200 at a million.</span> 1062 </div> 1063 </div> 1064 <p class="approach-bench-note">Benchmark: 240 live requests across three services, May 2026, spanning trusted infrastructure, datacentres, commercial VPNs, anonymising relays, an active proxy and a multi-feed attacker. <a href="/api/score/8.8.8.8" target="_blank" rel="noopener">Try the API on any IP →</a></p> 1065 </div> 1066 </div> 1067 </section> 1068 1069 <footer class="footer footer-v2"> 1070 <div class="footer-inner"> 1071 <div class="footer-hero"> 1072 <div class="footer-hero-copy"> 1073 <div class="footer-logo"> 1074 <svg class="footer-logo-img" width="24" height="24" viewBox="-37 0 512 512" role="img" aria-label="IPAddress.to logo"><path fill="#bddbff" d="M438.86 64c0-35.35-98.24-64-219.43-64S0 28.65 0 64s98.24 64 219.43 64 219.43-28.65 219.43-64z"/><path fill="#9bc9ff" d="M219.43 256c121.14 0 219.43-28.62 219.43-64V64c0 35.38-98.29 64-219.43 64S0 99.38 0 64v128c0 35.38 98.29 64 219.43 64z"/><path fill="#57a4ff" d="M219.43 384c121.14 0 219.43-28.62 219.43-64V192c0 35.38-98.29 64-219.43 64S0 227.38 0 192v128c0 35.38 98.29 64 219.43 64z"/><path fill="#2488ff" d="M438.86 320c0 35.38-98.29 64-219.43 64S0 355.38 0 320v128c0 35.38 98.29 64 219.43 64s219.43-28.62 219.43-64V320z"/></svg> 1075 <span>IPAddress<span class="footer-logo-suffix">.to</span></span> 1076 </div> 1077 <p class="footer-statement">Network intelligence, <em>answered in-house.</em></p> 1078 <p class="footer-tagline">IP, DNS, WHOIS, email and fraud-score tools with a JSON endpoint behind every one. Our own data, no third-party lookups, no signup, no per-query bill.</p> 1079 <div class="footer-actions"> 1080 <a href="/api/docs/" class="btn btn-accent" data-nav>API documentation</a> 1081 <a href="/account/" class="btn btn-secondary" data-nav>Get an API key</a> 1082 </div> 1083 </div> 1084 <div class="footer-live"> 1085 <a href="/status/" class="footer-status is-degraded" data-nav data-footer-status> 1086 <i aria-hidden="true"></i>
1087 <span data-footer-status-label>Degraded performance</span> 1088 <small>Status →</small> 1089 </a> 1090 <div class="footer-metrics"> 1091 <div><b data-stat="per_min">â</b><span>requests / min</span></div> 1092 <div><b data-stat="req_24h">173,589</b><span>requests · 24 h</span></div> 1093 <div><b data-stat="feeds">96</b><span>threat feeds</span></div> 1094 </div> 1095 <div class="footer-extensions"> 1096 <a href="https://chromewebstore.google.com/detail/ipaddressto-lookup/jblhckhmjccldbdocmfnhpiggcacjppf" class="footer-ext-card" target="_blank" rel="noopener" aria-label="Install Chrome extension"> 1097 <img src="/svg/chrome.svg?v2" alt="" width="20" height="20" loading="lazy" decoding="async"> 1098 <span class="footer-ext-text"><span class="footer-ext-label">Get the</span><span class="footer-ext-name">Chrome extension</span></span> 1099 </a> 1100 <a href="https://addons.mozilla.org/en-US/firefox/addon/what-is-my-ip-tool/" class="footer-ext-card" target="_blank" rel="noopener" aria-label="Install Firefox addon"> 1101 <img src="/svg/firefox.svg" alt="" width="20" height="20" loading="lazy" decoding="async"> 1102 <span class="footer-ext-text"><span class="footer-ext-label">Get the</span><span class="footer-ext-name">Firefox addon</span></span> 1103 </a> 1104 </div> 1105 </div> 1106 </div> 1107 1108 <div class="footer-cols"> 1109 <div class="footer-col"> 1110 <h3 class="footer-col-title">Tools</h3> 1111 <a href="/">My IP</a> 1112 <a href="/lookup/">Lookup</a> 1113 <a href="/dns/">DNS</a> 1114 <a href="/hostname/">Hostname</a> 1115 <a href="/email/">Email Check</a> 1116 <a href="/whois/">WHOIS</a> 1117 <a href="/resolve/">Resolve</a> 1118 <a href="/ip/">IP Details</a> 1119 <a href="/score/">Fraud Score</a> 1120 </div> 1121 <div class="footer-col"> 1122 <h3 class="footer-col-title">Developers</h3> 1123 <a href="/api/docs/">API Docs</a> 1124 <a href="/account/">Account & API Keys</a> 1125 <a href="/#playground">Playground</a> 1126 <a href="/status/">System Status</a> 1127 <a href="/#approach">How the score works</a> 1128 </div> 1129 <div class="footer-col"> 1130 <h3 class="footer-col-title">Company</h3> 1131 <a href="/blog/">Blog</a> 1132 <a href="/status/">Status</a> 1133 <a href="/contact/">Contact</a> 1134 <a href="/terms/">Terms of Service</a> 1135 <a href="/privacy/">Privacy Policy</a> 1136 </div> 1137 <div class="footer-col"> 1138 <h3 class="footer-col-title">More Tools</h3> 1139 <a href="https://onlinemicrophonetest.com/" target="_blank" rel="noopener">Online Microphone Test</a> 1140 <a href="https://onlinewebcamtest.com/" target="_blank" rel="noopener">Online Webcam Test</a> 1141 </div> 1142 </div> 1143 1144 <div class="footer-bottom"> 1145 <span class="footer-copy">© 2026 IPAddress.to. All rights reserved.</span> 1146 <span class="footer-fine">Built and hosted in-house · Own geolocation, network and reputation data · <b data-stat="feeds">96</b> threat-intel feeds</span> 1147 </div> 1148 </div> 1149 </footer> 1150 1151 </main><!-- /#swup --> 1152 1153
1153<script src="/js/Swup.umd.js" data-swup-ignore-script></script>
1153 1154
1154<script data-swup-ignore-script>window.__detectSrc="\/js\/detect.min.js?v=1.43.1";</script>
1154 1155
1155<script src="/js/app.min.js?v=1.43.1" data-swup-ignore-script></script>
vendor: 1 bytes, line 1155
1155
1156<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"e3a8ced6585f46789d4a8c9e02dcc805","r":1,"spa":2}' crossorigin="anonymous"></script>
1156 1157</body> 1158</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.