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" href="/fonts/space-grotesk-700-latin.woff2" as="font" type="font/woff2" crossorigin> 38 39 <link rel="stylesheet" href="/css/shared.css?v=1.40.0"> 40 41
41<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>
41 42</head> 43<body> 44 45 <a href="#swup" class="skip-link">Skip to content</a> 46 47 <div class="toast" id="toast" role="status" aria-live="polite"> 48 <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> 49 <span id="toastMsg">Copied to clipboard</span> 50 </div> 51 52 <header class="header"> 53 <div class="header-bar"> 54 <a href="/" class="logo"> 55 <div class="logo-mark"><img src="/images/logo.svg" alt="IPAddress.to logo" width="22" height="22"></div> 56 <span class="logo-text">IPAddress<span class="logo-suffix">.to</span></span> 57 </a> 58 <div class="header-right"> 59 <nav class="header-nav" aria-label="Primary"> 60 <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> 61 <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> 62 <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> 63 <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> 64 <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> 65 <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> 66 <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> 67 </nav> 68 <div class="header-auth"> 69 <button type="button" class="header-auth-btn auth-when-out" data-auth-open="login"><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> 70 <button type="button" class="header-auth-btn header-auth-primary auth-when-out" data-auth-open="signup"><span>Sign up</span></button> 71 <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> 72 </div> 73 <button class="menu-btn" id="menuBtn" onclick="toggleMobileMenu()" aria-label="Menu"> 74 <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> 75 <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> 76 </button> 77 </div> 78 </div> 79 </header> 80 81 <div class="mobile-overlay" id="mobileOverlay" onclick="toggleMobileMenu()"></div> 82 83 <nav class="mobile-drawer" id="mobileDrawer" aria-label="Mobile"> 84 <div class="mobile-drawer-header">
85 <span class="mobile-drawer-title">Menu</span> 86 <button class="mobile-drawer-close" onclick="toggleMobileMenu()" aria-label="Close menu"> 87 <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> 88 </button> 89 </div> 90 <div class="mobile-drawer-nav"> 91 <a href="/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 92 <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> 93 My IP </a> 94 <a href="/lookup/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 95 <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> 96 Lookup </a> 97 <a href="/dns/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 98 <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> 99 DNS Checker </a> 100 <a href="/email/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 101 <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> 102 Email Check </a> 103 <a href="/whois/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 104 <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> 105 WHOIS </a> 106 <a href="/score/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 107 <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> 108 Fraud Score </a> 109 <a href="/api/docs/" class="mobile-nav-link" data-nav onclick="closeMobileMenu()"> 110 <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> 111 API Docs </a> 112 <a href="/#playground" class="mobile-nav-link" onclick="closeMobileMenu()"> 113 <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> 114 Playground </a> 115 <div class="mobile-auth"> 116 <button type="button" class="mobile-nav-link auth-when-out" data-auth-open="login"> 117 <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> 118 Log in 119 </button> 120 <button type="button" class="mobile-nav-link auth-when-out" data-auth-open="signup"> 121 <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> 122 Sign up â free 123 </button> 124 <a href="/account/" class="mobile-nav-link auth-when-in" data-nav onclick="closeMobileMenu()"> 125 <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> 126 Account & API keys 127 </a> 128 </div> 129 </div> 130 <div class="mobile-drawer-footer">
131 <span>IPAddress.to</span> 132 </div> 133 </nav> 134 135 <div class="auth-backdrop" id="authModal" role="dialog" aria-modal="true" aria-labelledby="authTitle" aria-hidden="true" data-tab="login"> 136 <div class="auth-dialog"> 137 <button type="button" class="auth-close" data-auth-close aria-label="Close"> 138 <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> 139 </button> 140 <div class="auth-tabs" role="tablist"> 141 <button type="button" class="auth-tab on" role="tab" data-auth-tab="login">Log in</button> 142 <button type="button" class="auth-tab" role="tab" data-auth-tab="signup">Sign up</button> 143 </div> 144 <div class="auth-heading"> 145 <h2 id="authTitle"><span class="auth-title-login">Welcome back</span><span class="auth-title-signup">Create your account</span></h2> 146 <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> 147 </div> 148 <div class="contact-error auth-error" id="authError" role="alert" hidden></div> 149 150 <div class="auth-panes"> 151 <form class="contact-form auth-form" data-auth-form="login" method="post" action="/account/" novalidate> 152 <input type="hidden" name="_action" value="login"> 153 <input type="hidden" name="_csrf" value=""> 154 <div class="contact-field"> 155 <label for="am-li-email">Email</label> 156 <input type="email" id="am-li-email" name="email" required maxlength="190" autocomplete="email" placeholder="[email protected]"> 157 </div> 158 <div class="contact-field"> 159 <label for="am-li-pass">Password</label> 160 <input type="password" id="am-li-pass" name="password" required autocomplete="current-password" placeholder="Your password"> 161 </div> 162 <button type="submit" class="btn btn-primary contact-submit auth-submit">Log in</button> 163 <p class="auth-switch">New here? <button type="button" data-auth-tab="signup">Create a free account</button></p> 164 </form> 165 166 <form class="contact-form auth-form" data-auth-form="signup" method="post" action="/account/" novalidate aria-hidden="true" inert> 167 <input type="hidden" name="_action" value="signup"> 168 <input type="hidden" name="_csrf" value=""> 169 <div class="contact-field"> 170 <label for="am-su-email">Email</label> 171 <input type="email" id="am-su-email" name="email" required maxlength="190" autocomplete="email" placeholder="[email protected]"> 172 </div> 173 <div class="contact-field"> 174 <label for="am-su-pass">Password</label> 175 <input type="password" id="am-su-pass" name="password" required minlength="8" autocomplete="new-password" placeholder="At least 8 characters"> 176 </div> 177 <div class="contact-field"> 178 <label for="am-su-pass2">Confirm password</label> 179 <input type="password" id="am-su-pass2" name="password2" required minlength="8" autocomplete="new-password" placeholder="Repeat the password"> 180 </div> 181 <button type="submit" class="btn btn-primary contact-submit auth-submit">Create account</button> 182 <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> 183 <p class="auth-switch">Already have an account? <button type="button" data-auth-tab="login">Log in</button></p> 184 </form> 185 </div> 186 </div> 187 </div> 188 189 <div class="map-tooltip" id="mapTooltip"> 190 <div class="map-tooltip-header">
191 <span class="map-tooltip-flag" id="ttFlag"></span> 192 <div> 193 <div class="map-tooltip-name" id="ttName"></div> 194 <div class="map-tooltip-provider" id="ttProvider"></div> 195 </div> 196 </div> 197 <div class="map-tooltip-result" id="ttResult"></div> 198 </div> 199 200 <!-- Hydrate JS with server-side data --> 201
201<script> 202 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"}; 203 var _protoChecked = false; 204 document.addEventListener('DOMContentLoaded', function() { 205 if (!_protoChecked && typeof checkBothProtocols === 'function' && currentData) { 206 _protoChecked = true; 207 checkBothProtocols(); 208 } 209 (function tickLocalTime(){ 210 var el = document.getElementById('detailLocalTime'); 211 if (!el) return; 212 var tz = el.getAttribute('data-tz'); 213 if (!tz) return; 214 var offsetStr = ''; 215 try { 216 var offsetFmt = new Intl.DateTimeFormat('en-GB', { timeZone: tz, timeZoneName: 'shortOffset' }); 217 var offset = offsetFmt.formatToParts(new Date()).find(function(p){ return p.type === 'timeZoneName'; }); 218 offsetStr = offset ? offset.value.replace('GMT', '') : ''; 219 } catch (e) {} 220 var fmt; 221 try { 222 fmt = new Intl.DateTimeFormat('en-GB', { timeZone: tz, hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false }); 223 } catch (e) { return; } 224 function update(){ 225 el.innerHTML = fmt.format(new Date()) + (offsetStr ? ' <span class="u-muted-medium">(' + offsetStr + ')</span>' : ''); 226 } 227 update(); 228 setInterval(update, 1000); 229 })(); 230 }); 231 </script>
231 232 233 <main id="swup" class="transition-main"> 234 235 <section class="hero landing-v2"> 236 <div class="hero-grid"></div> 237 <div class="hero-glow"></div> 238 <div class="container"> 239 <div class="ip-card-wrapper"> 240 <div class="ip-card ip-deck"> 241 <div class="ip-card-top"> 242 <div class="ip-card-main"> 243 <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"> 244 <i aria-hidden="true"></i> 245 <span>Analysing connection</span> 246 <small>Running live proxy and VPN detectionâ¦</small> 247 <em class="ip-card-status-scores" hidden></em> 248 <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> 249 </button> 250 <div class="ip-protos"> 251 <div class="ip-proto ok" id="boxV4" onclick="copyProtoIP('v4')"> 252 <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> 253 <div class="ip-proto-header"> 254 <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> 255 <span class="ip-proto-label">Your IPv4 address</span> 256 <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> 257 </div> 258 <div class="ip-proto-addr" id="valueV4">181.215.65.77</div> 259 </div> 260 <div class="ip-proto checking" id="boxV6" onclick="copyProtoIP('v6')"> 261 <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> 262 <div class="ip-proto-header"> 263 <span class="ip-proto-icon" id="iconV6"><span class="ip-proto-spinner"></span></span> 264 <span class="ip-proto-label">Your IPv6 address</span> 265 <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> 266 </div> 267 <div class="ip-proto-addr" id="valueV6">Checking...</div> 268 </div> 269 </div> 270 </div> 271 <div class="ip-card-map" id="homeMiniMap" 272 data-lat="41.85" data-lng="-87.65" 273 data-city="Chicago" data-country="United States" data-cc="US"> 274 <div class="ip-card-map-canvas" id="homeMiniMapCanvas" aria-hidden="true"></div> 275 <div class="ip-card-map-caption"><span>Approximate location</span><b id="homeMapCaption">Chicago, Illinois</b></div> 276 </div> 277 </div>
278 <div class="ip-card-details"> 279 <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> 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"><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> 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"><path d="M5 12.55a11 11 0 0 1 14.08 0"/>
281<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> 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"><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> 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"><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> 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"><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> 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"><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> 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="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> 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="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> 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"><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> 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"><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> 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"><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">09:27:49 <span class="u-muted-medium">(-05:00)</span></div></div> 291 </div> 292 <div class="ip-card-actions ip-deck-actions"> 293 <div class="ip-deck-endpoint">
294 <span class="ip-deck-endpoint-label">This lookup as data</span> 295 <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> 296 </div> 297 <div class="ip-deck-btns"> 298 <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> 299 <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> 300 <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> 301 </div> 302 </div> 303 </div> 304 </div> 305 306 <div class="auth-backdrop detect-backdrop" id="detectModal" role="dialog" aria-modal="true" aria-labelledby="pdTitle" aria-hidden="true"> 307 <div class="auth-dialog detect-dialog"> 308 <button type="button" class="auth-close" data-detect-close aria-label="Close"> 309 <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> 310 </button> 311 <div class="pd-card" id="proxyDetectCard" aria-live="polite"> 312 <div class="pd-header"> 313 <div class="pd-eyebrow">Live Detection</div> 314 <h3 class="pd-title" id="pdTitle">Proxy / VPN Check</h3> 315 <p class="pd-subtitle" id="pdSubtitle">Running tests… <span class="pd-spinner"></span></p> 316 </div> 317 <div class="pd-scores"> 318 <div class="pd-score" data-metric="proxy" data-status="pending"> 319 <div class="pd-score-label">Proxy Score</div> 320 <div class="pd-score-value" id="pdProxyScore">—</div> 321 <div class="pd-score-bar"><div class="pd-score-fill" id="pdProxyFill" style="width:0%"></div></div> 322 </div> 323 <div class="pd-score" data-metric="vpn" data-status="pending"> 324 <div class="pd-score-label">VPN Score</div> 325 <div class="pd-score-value" id="pdVpnScore">—</div> 326 <div class="pd-score-bar"><div class="pd-score-fill" id="pdVpnFill" style="width:0%"></div></div> 327 </div> 328 </div> 329 <div class="pd-tests" id="pdTests"></div> 330 <div class="pd-footnote" id="pdFootnote">Powered by live latency probing, TCP/IP fingerprint analysis, and threat-intel cross-check.</div> 331 </div> 332 </div> 333 </div> 334 335 <div class="hero-content">
336 <span class="page-kicker"><i aria-hidden="true"></i><b>Live</b><span class="sep">/</span>Your connection, analysed in-house</span> 337 <h1 class="hero-title">What is <em>my IP</em>?</h1> 338 <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> 339 <div class="hero-actions"> 340 <a href="/score/" class="btn btn-accent">Check Fraud Score</a> 341 <a href="#api" class="btn btn-secondary">View API Docs</a> 342 </div> 343 </div> 344 345 <div class="live-stats" id="liveStats" aria-label="Live usage statistics"> 346 <div class="live-stat"> 347 <div class="live-stat-label"><i aria-hidden="true"></i>Right now</div> 348 <div class="live-stat-value"><span data-stat="per_min">â</span><small>req / min</small></div> 349 <div class="live-stat-sub">API requests in the last 60 seconds, refreshed every 15 s.</div> 350 </div> 351 <div class="live-stat"> 352 <div class="live-stat-label">Last 24 hours</div> 353 <div class="live-stat-value"><span data-stat="req_24h">â</span></div> 354 <div class="live-stat-sub">Lookups across IP, DNS, WHOIS, email and fraud score.</div> 355 </div> 356 <div class="live-stat"> 357 <div class="live-stat-label">Last 30 days</div> 358 <div class="live-stat-value"><span data-stat="req_30d">2,236,062</span></div> 359 <div class="live-stat-sub">Requests served from our own infrastructure, no third-party APIs.</div> 360 </div> 361 <div class="live-stat"> 362 <div class="live-stat-label">Threat intelligence</div> 363 <div class="live-stat-value"><span data-stat="feed_entries">1,375,023</span></div> 364 <div class="live-stat-sub">Flagged addresses across <b data-stat="feeds">96</b> curated feeds.</div> 365 </div> 366 </div> 367 368 </div> 369 </section> 370 371 <!-- âââ Tools bento âââââââââââââââââââââââââââââââââââââââââââ 372 Per-card accent comes from --tc / --tc-rgb set on .tool-n*, 373 the corner numeral is drawn from data-idx, and every 374 .tool-scene is a pure-CSS illustration (no images) that only 375 animates on hover. Card order is load-bearing: the accents 376 and the reveal stagger are assigned by these classes. --> 377 <section class="section v2 tools-section" id="tools"> 378 <div class="container"> 379 <div class="section-header tools-header"> 380 <div class="section-eyebrow">Seven tools, one place</div> 381 <h2 class="section-title">Pick the lookup you need</h2> 382 <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> 383 </div> 384 385 <div class="tools-bento"> 386 387 <a class="tool-card tool-n1 tool-wide" href="/lookup/" data-nav data-idx="01" data-reveal> 388 <span class="tool-text"> 389 <span class="tool-head"> 390 <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> 391 <h3 class="tool-title">IP Lookup</h3> 392 </span>
393 <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> 394 <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> 395 </span> 396 <span class="tool-scene ts-lookup" aria-hidden="true"> 397 <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> 398 <span class="ts-pin"><i class="ts-pin-ring"></i><i class="ts-pin-dot"></i></span> 399 <span class="ts-chip ts-chip-a">Mountain View</span> 400 <span class="ts-chip ts-chip-b">AS15169</span> 401 </span> 402 </a> 403 404 <a class="tool-card tool-n2" href="/" data-nav data-idx="02" data-reveal> 405 <span class="tool-text"> 406 <span class="tool-head"> 407 <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> 408 <h3 class="tool-title">My IP</h3> 409 </span> 410 <span class="tool-desc">Your public address on both stacks at once, with the browser and network we see.</span> 411 <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> 412 </span> 413 <span class="tool-scene ts-myip" aria-hidden="true"> 414 <span class="ts-addr"><i class="ts-tag">IPv4</i><b>203.0.113.42</b><i class="ts-live"></i></span> 415 <span class="ts-addr ts-addr-2"><i class="ts-tag">IPv6</i><b>2001:db8::1</b><i class="ts-live"></i></span> 416 </span> 417 </a> 418 419 <a class="tool-card tool-n3" href="/dns/" data-nav data-idx="03" data-reveal> 420 <span class="tool-text"> 421 <span class="tool-head"> 422 <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> 423 <h3 class="tool-title">DNS Checker</h3> 424 </span> 425 <span class="tool-desc">Watch a record propagate across 32 resolvers worldwide, one row per server.</span> 426 <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> 427 </span> 428 <span class="tool-scene ts-dns" aria-hidden="true"> 429 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot ok"></i></span> 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 wait"></i></span> 432 <span class="ts-srv"><i class="ts-bar"></i><i class="ts-dot ok"></i></span> 433 </span> 434 </a> 435 436 <a class="tool-card tool-n4" href="/whois/" data-nav data-idx="04" data-reveal> 437 <span class="tool-text">
438 <span class="tool-head"> 439 <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> 440 <h3 class="tool-title">WHOIS</h3> 441 </span> 442 <span class="tool-desc">Registrar, owner contacts, network range and the dates a domain or IP was registered.</span> 443 <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> 444 </span> 445 <span class="tool-scene ts-whois" aria-hidden="true"> 446 <span class="ts-doc"> 447 <i class="ts-ln w1"></i><i class="ts-ln w2"></i><i class="ts-ln w3"></i><i class="ts-ln w4"></i> 448 <i class="ts-seal"></i> 449 </span> 450 </span> 451 </a> 452 453 <a class="tool-card tool-n5" href="/score/" data-nav data-idx="05" data-reveal> 454 <span class="tool-text"> 455 <span class="tool-head"> 456 <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> 457 <h3 class="tool-title">Fraud Score</h3> 458 </span> 459 <span class="tool-desc">VPN, proxy, Tor, datacenter and blocklist signals folded into one 0–100 risk value.</span> 460 <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> 461 </span> 462 <span class="tool-scene ts-score" aria-hidden="true"> 463 <span class="ts-dial"><b>87</b></span> 464 <span class="ts-flags"><i></i><i></i><i></i></span> 465 </span> 466 </a> 467 468 <a class="tool-card tool-n6" href="/email/" data-nav data-idx="06" data-reveal> 469 <span class="tool-text"> 470 <span class="tool-head"> 471 <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> 472 <h3 class="tool-title">Email Check</h3> 473 </span> 474 <span class="tool-desc">MX, SPF and DMARC in one pass, plus disposable and role-based mailbox detection.</span> 475 <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> 476 </span> 477 <span class="tool-scene ts-email" aria-hidden="true"> 478 <span class="ts-chk"><i class="ts-tick"></i>MX</span> 479 <span class="ts-chk"><i class="ts-tick"></i>SPF</span> 480 <span class="ts-chk"><i class="ts-tick"></i>DMARC</span> 481 </span> 482 </a> 483 484 <a class="tool-card tool-n7 tool-full" href="/api/docs/" data-nav data-idx="07" data-reveal> 485 <span class="tool-text"> 486 <span class="tool-head"> 487 <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> 488 <h3 class="tool-title">Free JSON API</h3> 489 </span>
490 <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> 491 <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> 492 </span> 493 <span class="tool-scene ts-api" aria-hidden="true"> 494 <span class="ts-term"> 495 <i class="ts-term-bar"><em></em><em></em><em></em></i> 496 <code class="ts-cmd"><span class="ts-verb">GET</span> /api/lookup/8.8.8.8</code> 497 <code class="ts-out"><span class="ts-k">"country"</span>: <span class="ts-s">"United States"</span>,</code> 498 <code class="ts-out"><span class="ts-k">"asn"</span>: <span class="ts-n">15169</span>,</code> 499 <code class="ts-out"><span class="ts-k">"rdns"</span>: <span class="ts-s">"dns.google"</span></code> 500 </span> 501 </span> 502 </a> 503 504 </div> 505 </div> 506 </section> 507 508 <section class="section v2 api-section" id="api"> 509 <div class="container"> 510 <div class="section-header"> 511 <div class="section-eyebrow">REST API</div> 512 <h2 class="section-title">Simple, private API</h2> 513 <p class="section-desc">All lookups are processed locally using our own geolocation database. No data is sent to third parties.</p> 514 <a class="api-ref-link" href="/api/docs/">View full API reference <span class="api-ref-arrow" aria-hidden="true">→</span></a> 515 </div> 516 <div class="endpoints-grid"> 517 518 <!-- GET /api/lookup/my --> 519 <div class="endpoint open"> 520 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 521 <span class="method method-get">GET</span> 522 <span class="endpoint-path">/api/lookup/my</span> 523 <span class="endpoint-desc">Get your own IP info</span> 524 <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> 525 </div> 526 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 527 <div class="code-tabs"> 528 <button class="code-tab active" onclick="switchTab(this,'curl1')">cURL</button> 529 <button class="code-tab" onclick="switchTab(this,'js1')">JavaScript</button> 530 <button class="code-tab" onclick="switchTab(this,'py1')">Python</button> 531 <button class="code-tab" onclick="switchTab(this,'php1')">PHP</button> 532 <button class="code-tab" onclick="switchTab(this,'cs1')">C#</button> 533 <button class="code-tab" onclick="switchTab(this,'go1')">Go</button> 534 <button class="code-tab" onclick="switchTab(this,'rb1')">Ruby</button> 535 <button class="code-tab" onclick="switchTab(this,'java1')">Java</button> 536 <button class="code-tab" onclick="switchTab(this,'perl1')">Perl</button> 537 <button class="code-tab" onclick="switchTab(this,'rust1')">Rust</button> 538 </div> 539 <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> 540 <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>); 541<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 542console.log(data);</pre></div></div></div> 543 <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">
543import</span> requests 544 545data = requests.get(<span class="string">'https://ipaddress.to/api/lookup/my'</span>).json() 546print(data)</pre></div></div></div> 547 <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( 548 file_get_contents(<span class="string">'https://ipaddress.to/api/lookup/my'</span>), 549 <span class="keyword">true</span> 550); 551print_r($data);</pre></div></div></div> 552 <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(); 553<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync(<span class="string">"https://ipaddress.to/api/lookup/my"</span>); 554Console.WriteLine(json);</pre></div></div></div> 555 <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>) 556body, _ := io.ReadAll(resp.Body) 557fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 558 <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> 559<span class="keyword">require</span> <span class="string">'json'</span> 560 561data = JSON.parse(Net::HTTP.get(URI(<span class="string">'https://ipaddress.to/api/lookup/my'</span>))) 562puts data</pre></div></div></div> 563 <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(); 564HttpRequest req = HttpRequest.newBuilder() 565 .uri(URI.create(<span class="string">"https://ipaddress.to/api/lookup/my"</span>)).build(); 566String body = client.send(req, BodyHandlers.ofString()).body(); 567System.out.println(body);</pre></div></div></div> 568 <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">
568use</span> LWP::Simple; 569<span class="keyword">use</span> JSON; 570 571<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/lookup/my'</span>)); 572print $data->{ip};</pre></div></div></div> 573 <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>) 574 .<span class="keyword">await</span>?.text().<span class="keyword">await</span>?; 575println!(<span class="string">"{}"</span>, body);</pre></div></div></div> 576 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 577 <span class="key">"success"</span>: <span class="keyword">true</span>, 578 <span class="key">"ip"</span>: <span class="string">"203.45.167.89"</span>, 579 <span class="key">"type"</span>: <span class="string">"IPv4"</span>, 580 <span class="key">"country"</span>: <span class="string">"United States"</span>, 581 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 582 <span class="key">"region"</span>: <span class="string">"California"</span>, 583 <span class="key">"city"</span>: <span class="string">"San Francisco"</span>, 584 <span class="key">"latitude"</span>: <span class="number">37.7749</span>, 585 <span class="key">"longitude"</span>: <span class="number">-122.4194</span>, 586 <span class="key">"timezone"</span>: <span class="string">"America/Los_Angeles"</span>, 587 <span class="key">"isp"</span>: <span class="string">"Cloudflare, Inc."</span>, 588 <span class="key">"asn"</span>: <span class="string">"AS13335"</span> 589}</pre></div></div> 590 </div></div></div> 591 </div> 592 593 <!-- GET /api/{address} --> 594 <div class="endpoint"> 595 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 596 <span class="method method-get">GET</span> 597 <span class="endpoint-path">/api/lookup/<span class="param">{ip_or_hostname}</span></span> 598 <span class="endpoint-desc">Lookup an IP address or hostname</span> 599 <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> 600 </div> 601 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 602 <div class="params-grid"> 603 <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> 604 </div> 605 <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> 606 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 607 <span class="key">"success"</span>: <span class="keyword">true</span>, 608 <span class="key">"ip"</span>: <span class="string">"8.8.8.8"</span>, 609 <span class="key">"type"</span>: <span class="string">"IPv4"</span>, 610 <span class="key">"rdns"</span>: <span class="string">"dns.google"</span>, 611 <span class="key">"location"</span>: { 612 <span class="key">"continent"</span>: <span class="string">"NA"</span>, 613 <span class="key">"continent_name"</span>: <span class="string">"North America"</span>, 614 <span class="key">"country"</span>: <span class="string">"United States"</span>, 615 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 616 <span class="key">"state"</span>: <span class="string">"California"</span>, 617 <span class="key">"city"</span>: <span class="string">
617"Mountain View"</span>, 618 <span class="key">"latitude"</span>: <span class="number">37.422</span>, 619 <span class="key">"longitude"</span>: <span class="number">-122.085</span>, 620 <span class="key">"timezone"</span>: <span class="string">"America/Los_Angeles"</span>, 621 <span class="key">"is_eu_member"</span>: <span class="keyword">false</span>, 622 <span class="key">"calling_code"</span>: <span class="string">"1"</span>, 623 <span class="key">"capital"</span>: <span class="string">"Washington, D.C."</span>, 624 <span class="key">"languages"</span>: <span class="string">"English"</span>, 625 <span class="key">"country_tld"</span>: <span class="string">".us"</span>, 626 <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> } 627 }, 628 <span class="key">"asn"</span>: { 629 <span class="key">"asn"</span>: <span class="number">15169</span>, 630 <span class="key">"descr"</span>: <span class="string">"Google LLC"</span>, 631 <span class="key">"country"</span>: <span class="string">"US"</span>, 632 <span class="key">"org"</span>: <span class="string">"Google LLC"</span> 633 }, 634 <span class="key">"company"</span>: { <span class="key">"name"</span>: <span class="string">"Google LLC"</span> }, 635 <span class="key">"is_vpn"</span>: <span class="keyword">false</span>, 636 <span class="key">"is_proxy"</span>: <span class="keyword">false</span>, 637 <span class="key">"is_tor"</span>: <span class="keyword">false</span>, 638 <span class="key">"is_hosting"</span>: <span class="keyword">false</span>, 639 <span class="key">"vpn_provider"</span>: <span class="keyword">null</span> 640}</pre></div></div> 641 </div></div></div> 642 </div> 643 644 <!-- GET /api/whois/ --> 645 <div class="endpoint"> 646 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 647 <span class="method method-get">GET</span> 648 <span class="endpoint-path">/api/whois/<span class="param">{ip_or_domain}</span></span> 649 <span class="endpoint-desc">WHOIS lookup (subdomains auto-stripped to root domain)</span> 650 <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> 651 </div> 652 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 653 <div class="params-grid"> 654 <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> 655 </div> 656 <div class="u-mt-16 code-tabs"> 657 <button class="code-tab active" onclick="switchTab(this,'curlW')">cURL</button> 658 <button class="code-tab" onclick="switchTab(this,'jsW')">JavaScript</button> 659 <button class="code-tab" onclick="switchTab(this,'pyW')">Python</button> 660 <button class="code-tab" onclick="switchTab(this,'phpW')">PHP</button> 661 <button class="code-tab" onclick="switchTab(this,'csW')">C#</button> 662 <button class="code-tab" onclick="switchTab(this,'goW')">Go</button> 663 <button class="code-tab" onclick="switchTab(this,'perlW')">Perl</button> 664 </div> 665 <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> 666 <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>); 667<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 668console.log(data.parsed.registrar); <span class="comment">
668// "MarkMonitor Inc."</span></pre></div></div></div> 669 <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 670 671data = requests.get(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>).json() 672print(data[<span class="string">'parsed'</span>][<span class="string">'registrar'</span>])</pre></div></div></div> 673 <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( 674 file_get_contents(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>), 675 <span class="keyword">true</span> 676); 677echo $data[<span class="string">'parsed'</span>][<span class="string">'registrar'</span>];</pre></div></div></div> 678 <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(); 679<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync( 680 <span class="string">"https://ipaddress.to/api/whois/google.com"</span>); 681Console.WriteLine(json);</pre></div></div></div> 682 <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>) 683body, _ := io.ReadAll(resp.Body) 684fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 685 <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">
685use</span> LWP::Simple; 686<span class="keyword">use</span> JSON; 687 688<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/whois/google.com'</span>)); 689print $data->{parsed}{registrar};</pre></div></div></div> 690 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response (domain)</span></div><div class="code-content"><pre>{ 691 <span class="key">"success"</span>: <span class="keyword">true</span>, 692 <span class="key">"query"</span>: <span class="string">"google.com"</span>, 693 <span class="key">"type"</span>: <span class="string">"domain"</span>, 694 <span class="key">"found"</span>: <span class="keyword">true</span>, 695 <span class="key">"parsed"</span>: { 696 <span class="key">"domain_name"</span>: <span class="string">"GOOGLE.COM"</span>, 697 <span class="key">"registrar"</span>: <span class="string">"MarkMonitor Inc."</span>, 698 <span class="key">"registrar_url"</span>: <span class="string">"https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM"</span>, 699 <span class="key">"registrar_iana_id"</span>: <span class="string">"292"</span>, 700 <span class="key">"creation_date"</span>: <span class="string">"1997-09-15T04:00:00Z"</span>, 701 <span class="key">"expiry_date"</span>: <span class="string">"2028-09-14T04:00:00Z"</span>, 702 <span class="key">"updated_date"</span>: <span class="string">"2026-05-11T18:51:14Z"</span>, 703 <span class="key">"status"</span>: [<span class="string">"client delete prohibited"</span>, <span class="string">"client transfer prohibited"</span>], 704 <span class="key">"nameservers"</span>: [<span class="string">"ns1.google.com"</span>, <span class="string">"ns2.google.com"</span>], 705 <span class="key">"dnssec"</span>: <span class="string">"unsigned"</span>, 706 <span class="key">"abuse_email"</span>: <span class="string">"[email protected]"</span>, 707 <span class="key">"abuse_phone"</span>: <span class="string">"tel:+1.2086851750"</span> 708 }, 709 <span class="key">"source"</span>: <span class="string">"registry"</span>, 710 <span class="key">"duration_ms"</span>: <span class="number">342</span> 711}</pre></div></div> 712 </div></div></div> 713 </div> 714 715 <!-- GET /api/dns/{type}/{domain} --> 716 <div class="endpoint"> 717 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 718 <span class="method method-get">GET</span> 719 <span class="endpoint-path">/api/dns/<span class="param">{type}</span>/<span class="param">{domain}</span></span> 720 <span class="endpoint-desc">DNS propagation checker across 32 global servers</span> 721 <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> 722 </div> 723 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 724 <div class="params-grid"> 725 <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> 726 <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> 727 <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> 728 </div> 729 <div class="code-tabs"> 730 <button class="code-tab active" onclick="switchTab(this,'curlD')">cURL</button> 731 <button class="code-tab" onclick="switchTab(this,'jsD')">JavaScript</button> 732 <button class="code-tab" onclick="switchTab(this,'pyD')">Python</button> 733 </div> 734 <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> 735 <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>); 736<span class="keyword">const</span> reader = res.body.getReader(); 737<span class="comment">// Streams NDJSON â one result per line per server</span></pre></div></div></div> 738 <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">
738import</span> requests, json 739r = requests.get(<span class="string">'https://ipaddress.to/api/dns/ns/google.com'</span>, stream=True) 740<span class="keyword">for</span> line <span class="keyword">in</span> r.iter_lines(): 741 print(json.loads(line))</pre></div></div></div> 742 <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> 743 </div></div></div> 744 </div> 745 746 <!-- GET /api/resolve/ --> 747 <div class="endpoint"> 748 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 749 <span class="method method-get">GET</span> 750 <span class="endpoint-path">/api/resolve/<span class="param">{hostname}</span></span> 751 <span class="endpoint-desc">Resolve hostname to IP addresses</span> 752 <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> 753 </div> 754 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 755 <div class="params-grid"> 756 <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> 757 </div> 758 <div class="u-mt-16 code-tabs"> 759 <button class="code-tab active" onclick="switchTab(this,'curlH')">cURL</button> 760 <button class="code-tab" onclick="switchTab(this,'jsH')">JavaScript</button> 761 <button class="code-tab" onclick="switchTab(this,'pyH')">Python</button> 762 <button class="code-tab" onclick="switchTab(this,'phpH')">PHP</button> 763 <button class="code-tab" onclick="switchTab(this,'csH')">C#</button> 764 <button class="code-tab" onclick="switchTab(this,'goH')">Go</button> 765 <button class="code-tab" onclick="switchTab(this,'perlH')">Perl</button> 766 </div> 767 <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> 768 <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>); 769<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 770console.log(data.a); <span class="comment">// ["140.82.121.3"]</span></pre></div></div></div> 771 <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 772 773data = requests.get(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>).json() 774<span class="keyword">for</span> ip <span class="keyword">in</span>
774 data[<span class="string">'a'</span>]: 775 print(ip)</pre></div></div></div> 776 <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( 777 file_get_contents(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>), 778 <span class="keyword">true</span> 779); 780print_r($data[<span class="string">'a'</span>]); <span class="comment">// IPv4 addresses</span></pre></div></div></div> 781 <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(); 782<span class="keyword">var</span> json = <span class="keyword">await</span> client.GetStringAsync( 783 <span class="string">"https://ipaddress.to/api/resolve/github.com"</span>); 784Console.WriteLine(json);</pre></div></div></div> 785 <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>) 786body, _ := io.ReadAll(resp.Body) 787fmt.Println(<span class="keyword">string</span>(body))</pre></div></div></div> 788 <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">
788use</span> LWP::Simple; 789<span class="keyword">use</span> JSON; 790 791<span class="keyword">my</span> $data = decode_json(get(<span class="string">'https://ipaddress.to/api/resolve/github.com'</span>)); 792print join(<span class="string">"\n"</span>, @{$data->{a}});</pre></div></div></div> 793 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 794 <span class="key">"success"</span>: <span class="keyword">true</span>, 795 <span class="key">"hostname"</span>: <span class="string">"github.com"</span>, 796 <span class="key">"a"</span>: [<span class="string">"140.82.121.3"</span>], 797 <span class="key">"aaaa"</span>: [], 798 <span class="key">"cname"</span>: [], 799 <span class="key">"reverse"</span>: { 800 <span class="string">"140.82.121.3"</span>: <span class="string">"lb-140-82-121-3-iad.github.com"</span> 801 }, 802 <span class="key">"total_ips"</span>: <span class="number">1</span>, 803 <span class="key">"has_ipv4"</span>: <span class="keyword">true</span>, 804 <span class="key">"has_ipv6"</span>: <span class="keyword">false</span>, 805 <span class="key">"duration_ms"</span>: <span class="number">87</span> 806}</pre></div></div> 807 </div></div></div> 808 </div> 809 810 <!-- GET /api/score/{ip} --> 811 <div class="endpoint"> 812 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 813 <span class="method method-get">GET</span> 814 <span class="endpoint-path">/api/score/<span class="param">{ip_or_hostname}</span></span> 815 <span class="endpoint-desc">IP fraud risk score with threat indicators</span> 816 <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> 817 </div> 818 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 819 <div class="params-grid"> 820 <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> 821 </div> 822 <div class="u-mt-16 code-tabs"> 823 <button class="code-tab active" onclick="switchTab(this,'curlS')">cURL</button> 824 <button class="code-tab" onclick="switchTab(this,'jsS')">JavaScript</button> 825 <button class="code-tab" onclick="switchTab(this,'pyS')">Python</button> 826 <button class="code-tab" onclick="switchTab(this,'phpS')">PHP</button> 827 </div> 828 <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> 829 <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>); 830<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 831console.log(data.score, data.risk, data.checks.hosting_asn); 832<span class="comment">// 54 "high" true</span></pre></div></div></div> 833 <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">
833import</span> requests 834 835data = requests.get(<span class="string">'https://ipaddress.to/api/score/134.199.214.1'</span>).json() 836print(f<span class="string">"Score: {data['score']}/100 ({data['risk']})"</span>) 837print(f<span class="string">"Hosting: {data['checks']['hosting_asn']}"</span>)</pre></div></div></div> 838 <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( 839 file_get_contents(<span class="string">'https://ipaddress.to/api/score/134.199.214.1'</span>), 840 <span class="keyword">true</span> 841); 842echo $data[<span class="string">'score'</span>] . <span class="string">' â '</span> . $data[<span class="string">'risk'</span>];</pre></div></div></div> 843 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 844 <span class="key">"success"</span>: <span class="keyword">true</span>, 845 <span class="key">"ip"</span>: <span class="string">"134.199.214.1"</span>, 846 <span class="key">"score"</span>: <span class="number">54</span>, 847 <span class="key">"risk"</span>: <span class="string">"high"</span>, 848 <span class="key">"vpn_provider"</span>: <span class="keyword">null</span>, 849 <span class="key">"rdns"</span>: <span class="keyword">null</span>, 850 <span class="key">"location"</span>: { 851 <span class="key">"country"</span>: <span class="string">"United States"</span>, 852 <span class="key">"country_code"</span>: <span class="string">"US"</span>, 853 <span class="key">"city"</span>: <span class="string">"Santa Clara"</span>, 854 <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> } 855 }, 856 <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> }, 857 <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> }, 858 <span class="key">"checks"</span>: { 859 <span class="key">"hosting_asn"</span>: <span class="keyword">true</span>, 860 <span class="key">"datacenter_blocklist"</span>: <span class="keyword">true</span>, 861 <span class="key">"vpn_detected"</span>: <span class="keyword">false</span>, 862 <span class="key">"tor_exit"</span>: <span class="keyword">false</span>, 863 <span class="key">"blocklist_listed"</span>: <span class="keyword">true</span>, 864 <span class="key">"blocklist_count"</span>: <span class="number">3</span>, 865 <span class="key">"has_rdns"</span>: <span class="keyword">false</span> 866 }, 867 <span class="key">"factors"</span>: [ 868 { <span class="key">"name"</span>: <span class="string">"Hosting/Datacenter ASN"</span>, <span class="key">"impact"</span>: <span class="string">"medium"</span> }, 869 { <span class="key">"name"</span>: <span class="string">"No Reverse DNS"</span>, <span class="key">"impact"</span>: <span class="string">"low"</span> }, 870 { <span class="key">"name"</span>: <span class="string">"Datacenter Confirmed"</span>, <span class="key">"impact"</span>: <span class="string">"medium"</span> }, 871 { <span class="key">"name"</span>: <span class="string">"Threat Intelligence"</span>, <span class="key">"impact"</span>: <span class="string">"high"</span> } 872 ], 873 <span class="key">"duration_ms"</span>: <span class="number">45</span> 874}</pre></div></div> 875 </div></div></div> 876 </div> 877 878 <!-- GET /api/email/{email_or_domain} --> 879 <div class="endpoint"> 880 <div class="endpoint-header" onclick="toggleEndpoint(this)" role="button" tabindex="0" aria-expanded="false"> 881 <span class="method method-get">
881GET</span> 882 <span class="endpoint-path">/api/email/<span class="param">{email_or_domain}</span></span> 883 <span class="endpoint-desc">Email auth score (MX, SPF, DMARC, disposable)</span> 884 <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> 885 </div> 886 <div class="endpoint-body"><div class="endpoint-body-inner"><div class="endpoint-body-content"> 887 <div class="params-grid"> 888 <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> 889 </div> 890 <div class="u-mt-16 code-tabs"> 891 <button class="code-tab active" onclick="switchTab(this,'curlE')">cURL</button> 892 <button class="code-tab" onclick="switchTab(this,'jsE')">JavaScript</button> 893 <button class="code-tab" onclick="switchTab(this,'pyE')">Python</button> 894 <button class="code-tab" onclick="switchTab(this,'phpE')">PHP</button> 895 </div> 896 <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> 897 <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>); 898<span class="keyword">const</span> data = <span class="keyword">await</span> res.json(); 899console.log(data.score, data.rating, data.checks.disposable); 900<span class="comment">// 100 "trusted" false</span></pre></div></div></div> 901 <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 902 903data = requests.get(<span class="string">'https://ipaddress.to/api/email/[email protected]'</span>).json() 904print(f<span class="string">"Score: {data['score']}/100 ({data['rating']})"</span>) 905print(f<span class="string">"Disposable: {data['checks']['disposable']}"</span>)</pre></div></div></div> 906 <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( 907 file_get_contents(<span class="string">'https://ipaddress.to/api/email/[email protected]'</span>), 908 <span class="keyword">true</span> 909); 910echo $data[<span class="string">'score'</span>] . <span class="string">' â '</span> . $data[<span class="string">'rating'</span>];</pre></div></div></div> 911 <div class="u-mt-16 code-block"><div class="code-header"><span class="code-lang">Response</span></div><div class="code-content"><pre>{ 912 <span class="key">"success"</span>: <span class="keyword">true</span>, 913 <span class="key">"query"</span>: <span class="string">"[email protected]"</span>, 914 <span class="key">"email"</span>: <span class="string">"[email protected]"</span>, 915 <span class="key">"domain"</span>: <span class="string">"gmail.com"</span>, 916 <span class="key">"target_type"</span>: <span class="string">"email"</span>, 917 <span class="key">"score"</span>: <span class="number">100</span>, 918 <span class="key">"rating"</span>: <span class="string">"trusted"</span>, 919 <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> },
920 <span class="key">"checks"</span>: { 921 <span class="key">"has_mx"</span>: <span class="keyword">true</span>, 922 <span class="key">"spf"</span>: <span class="keyword">true</span>, 923 <span class="key">"dmarc"</span>: <span class="keyword">true</span>, 924 <span class="key">"disposable"</span>: <span class="keyword">false</span>, 925 <span class="key">"role_based"</span>: <span class="keyword">false</span>, 926 <span class="key">"free_provider"</span>: <span class="keyword">true</span> 927 }, 928 <span class="key">"is_disposable"</span>: <span class="keyword">false</span>, 929 <span class="key">"duration_ms"</span>: <span class="number">182</span> 930}</pre></div></div> 931 </div></div></div> 932 </div> 933 </div> 934 <div class="endpoints-footer">Looking for every parameter, error code and response schema? <a href="/api/docs/">View the full API reference →</a></div> 935 </div> 936 </section> 937 938 <section class="section v2 playground-section" id="playground"> 939 <div class="container"> 940 <div class="section-header"> 941 <div class="section-eyebrow">Try it live</div> 942 <h2 class="section-title">API Playground</h2> 943 <p class="section-desc">Test all APIs directly in your browser.</p> 944 </div> 945 <div class="playground"> 946 <div class="playground-header"><div class="playground-title"><div class="live-dot"></div>Live Testing</div></div> 947 <div class="playground-body"> 948 <div class="playground-api-tabs"> 949 <button class="playground-api-tab active" onclick="switchPlayground('ip')" data-pg="ip">Lookup</button> 950 <button class="playground-api-tab" onclick="switchPlayground('whois')" data-pg="whois">WHOIS</button> 951 <button class="playground-api-tab" onclick="switchPlayground('resolve')" data-pg="resolve">Resolve</button> 952 <button class="playground-api-tab" onclick="switchPlayground('score')" data-pg="score">Score</button> 953 <button class="playground-api-tab" onclick="switchPlayground('email')" data-pg="email">Email</button> 954 </div> 955 <div class="playground-input-row"> 956 <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"> 957 <button class="btn btn-accent" onclick="runTest()">Run Test</button> 958 </div> 959 <div class="preset-btns" id="presetsIP"> 960 <button class="preset-btn" onclick="runTest()">My IP</button> 961 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 962 <button class="preset-btn" onclick="runTest('1.1.1.1')">1.1.1.1</button> 963 <button class="preset-btn" onclick="runTest('208.67.222.222')">OpenDNS</button> 964 <button class="preset-btn" onclick="runTest('9.9.9.9')">Quad9</button> 965 </div> 966 <div class="preset-btns" id="presetsWhois" style="display:none"> 967 <button class="preset-btn" onclick="runTest('google.com')">google.com</button> 968 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 969 <button class="preset-btn" onclick="runTest('cloudflare.com')">cloudflare.com</button> 970 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 971 </div> 972 <div class="preset-btns" id="presetsResolve" style="display:none"> 973 <button class="preset-btn" onclick="runTest('google.com')">google.com</button> 974 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 975 <button class="preset-btn" onclick="runTest('cloudflare.com')">cloudflare.com</button> 976 <button class="preset-btn" onclick="runTest('example.com')">example.com</button> 977 </div> 978 <div class="preset-btns" id="presetsScore" style="display:none"> 979 <button class="preset-btn" onclick="runTest('my')">My IP</button> 980 <button class="preset-btn" onclick="runTest('8.8.8.8')">8.8.8.8</button> 981 <button class="preset-btn" onclick="runTest('1.1.1.1')">1.1.1.1</button> 982 <button class="preset-btn" onclick="runTest('104.28.5.100')">104.28.5.100</button> 983 </div> 984 <div class="preset-btns" id="presetsEmail" style="display:none"> 985 <button class="preset-btn" onclick="runTest('[email protected]')">gmail.com</button> 986 <button class="preset-btn" onclick="runTest('github.com')">github.com</button> 987 <button class="preset-btn" onclick="runTest('[email protected]')">mailinator.com</button> 988 <button class="preset-btn" onclick="runTest('[email protected]')">[email protected]</button> 989 </div> 990 <div class="request-info" id="pgRequestInfo" style="display:none"><span class="request-info-method">
990GET</span><span class="request-info-url" id="pgRequestUrl"></span><span class="request-info-time" id="pgRequestTime"></span></div> 991 <div class="response-panel"> 992 <div class="response-header"> 993 <div class="response-status pending" id="status">Ready</div> 994 <div class="response-meta"> 995 <button type="button" class="code-copy" id="pgCopyResponse" onclick="copyPlaygroundResponse()" style="display:none">Copy</button> 996 <div class="response-time" id="time">â</div> 997 </div> 998 </div> 999 <div class="response-body" id="response"><pre><span class="comment">// Click "Run Test" or a preset to make a request</span></pre></div> 1000 </div> 1001 </div> 1002 </div> 1003 </div> 1004 </section> 1005 1006 <section class="section v2 approach-section" id="approach"> 1007 <div class="container"> 1008 <div class="section-header"> 1009 <div class="section-eyebrow">Under the hood</div> 1010 <h2 class="section-title">A fraud score that <em>shows its work.</em></h2> 1011 <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> 1012 </div> 1013 1014 <div class="approach-grid"> 1015 <article class="approach-card"> 1016 <div class="approach-icon" aria-hidden="true"> 1017 <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> 1018 </div> 1019 <h3>Privacy proxies, classified.</h3> 1020 <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> 1021 </article> 1022 1023 <article class="approach-card"> 1024 <div class="approach-icon" aria-hidden="true"> 1025 <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> 1026 </div> 1027 <h3>A signal, not a black box.</h3> 1028 <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> 1029 </article> 1030 1031 <article class="approach-card"> 1032 <div class="approach-icon" aria-hidden="true"> 1033 <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> 1034 </div> 1035 <h3>Real users don't get hit.</h3> 1036 <p>
1036Major 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> 1037 </article> 1038 1039 <article class="approach-card"> 1040 <div class="approach-icon" aria-hidden="true"> 1041 <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> 1042 </div> 1043 <h3>Local-first. No per-query bill.</h3> 1044 <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> 1045 </article> 1046 </div> 1047 1048 <div class="approach-bench"> 1049 <div class="approach-bench-row"> 1050 <div class="approach-bench-stat"> 1051 <strong>14 / 16</strong> 1052 <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> 1053 </div> 1054 <div class="approach-bench-stat"> 1055 <strong>64 ms</strong> 1056 <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> 1057 </div> 1058 <div class="approach-bench-stat"> 1059 <strong>$0</strong> 1060 <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> 1061 </div> 1062 </div> 1063 <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> 1064 </div> 1065 </div> 1066 </section> 1067 1068 <footer class="footer footer-v2"> 1069 <div class="footer-inner"> 1070 <div class="footer-hero"> 1071 <div class="footer-hero-copy"> 1072 <div class="footer-logo"> 1073 <img src="/images/logo.svg" class="footer-logo-img" alt="IPAddress.to logo" width="24" height="24"> 1074 <span>IPAddress<span class="footer-logo-suffix">.to</span></span> 1075 </div> 1076 <p class="footer-statement">Network intelligence, <em>answered in-house.</em></p> 1077 <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> 1078 <div class="footer-actions"> 1079 <a href="/api/docs/" class="btn btn-accent" data-nav>API documentation</a> 1080 <a href="/account/" class="btn btn-secondary" data-nav>Get an API key</a> 1081 </div> 1082 </div> 1083 <div class="footer-live"> 1084 <a href="/status/" class="footer-status is-operational" data-nav data-footer-status> 1085 <i aria-hidden="true"></i>
1086 <span data-footer-status-label>All systems operational</span> 1087 <small>Status →</small> 1088 </a> 1089 <div class="footer-metrics"> 1090 <div><b data-stat="per_min">â</b><span>requests / min</span></div> 1091 <div><b data-stat="req_24h">â</b><span>requests · 24 h</span></div> 1092 <div><b data-stat="feeds">96</b><span>threat feeds</span></div> 1093 </div> 1094 <div class="footer-extensions"> 1095 <a href="https://chromewebstore.google.com/detail/ipaddressto-lookup/jblhckhmjccldbdocmfnhpiggcacjppf" class="footer-ext-card" target="_blank" rel="noopener" aria-label="Install Chrome extension"> 1096 <img src="/svg/chrome.svg?v2" alt="" width="20" height="20" loading="lazy" decoding="async"> 1097 <span class="footer-ext-text"><span class="footer-ext-label">Get the</span><span class="footer-ext-name">Chrome extension</span></span> 1098 </a> 1099 <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"> 1100 <img src="/svg/firefox.svg" alt="" width="20" height="20" loading="lazy" decoding="async"> 1101 <span class="footer-ext-text"><span class="footer-ext-label">Get the</span><span class="footer-ext-name">Firefox addon</span></span> 1102 </a> 1103 </div> 1104 </div> 1105 </div> 1106 1107 <div class="footer-cols"> 1108 <div class="footer-col"> 1109 <h3 class="footer-col-title">Tools</h3> 1110 <a href="/">My IP</a> 1111 <a href="/lookup/">Lookup</a> 1112 <a href="/dns/">DNS</a> 1113 <a href="/hostname/">Hostname</a> 1114 <a href="/email/">Email Check</a> 1115 <a href="/whois/">WHOIS</a> 1116 <a href="/resolve/">Resolve</a> 1117 <a href="/ip/">IP Details</a> 1118 <a href="/score/">Fraud Score</a> 1119 </div> 1120 <div class="footer-col"> 1121 <h3 class="footer-col-title">Developers</h3> 1122 <a href="/api/docs/">API Docs</a> 1123 <a href="/account/">Account & API Keys</a> 1124 <a href="/#playground">Playground</a> 1125 <a href="/status/">System Status</a> 1126 <a href="/#approach">How the score works</a> 1127 </div> 1128 <div class="footer-col"> 1129 <h3 class="footer-col-title">Company</h3> 1130 <a href="/blog/">Blog</a> 1131 <a href="/status/">Status</a> 1132 <a href="/contact/">Contact</a> 1133 <a href="/terms/">Terms of Service</a> 1134 <a href="/privacy/">Privacy Policy</a> 1135 </div> 1136 <div class="footer-col"> 1137 <h3 class="footer-col-title">More Tools</h3> 1138 <a href="https://onlinemicrophonetest.com/" target="_blank" rel="noopener">Online Microphone Test</a> 1139 <a href="https://onlinewebcamtest.com/" target="_blank" rel="noopener">Online Webcam Test</a> 1140 </div> 1141 </div> 1142 1143 <div class="footer-bottom"> 1144 <span class="footer-copy">© 2026 IPAddress.to. All rights reserved.</span> 1145 <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> 1146 </div> 1147 </div> 1148 </footer> 1149 1150 </main><!-- /#swup --> 1151 1152
1152<script src="/js/Swup.umd.js" data-swup-ignore-script></script>
1152 1153
1153<script src="/js/app.js?v=1.40.0" data-swup-ignore-script></script>
vendor: 1 bytes, line 1153
1153
1154<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>
1154 1155</body> 1156</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.