CINXE.COM
Frequently Asked Questions | IP2Location
<!DOCTYPE html> <!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]--> <!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]--> <!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> <head> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PMZ8KTN');</script> <!-- End Google Tag Manager --> <meta charset="utf-8"/> <meta name="msvalidate.01" content="B34A845FC8D9EDD02097289CC012240A" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="author" content="IP2Location"> <meta name="description" content="Frequently asked questions about IP2Location products, general information, technical knowledge and database related topics."> <meta name="keywords" content="FAQ,knowledgebase"> <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.ip2location.com/assets/img/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://cdn.ip2location.com/assets/img/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://cdn.ip2location.com/assets/img/favicon-32x32.png"> <link href="/favicon.ico" type="image/x-icon" rel="icon"> <link href="/favicon.ico" type="image/x-icon" rel="shortcut icon"> <link rel="manifest" href="/site.webmanifest"> <link rel="mask-icon" href="https://cdn.ip2location.com/assets/img/safari-tab.svg" color="#5bbad5"> <meta name="msapplication-TileColor" content="#da532c"> <!-- Experiment on establish early connections to required origins --> <link rel="preconnect" href="https://cdn.ip2location.com"> <link rel="dns-prefetch" href="https://cdn.ip2location.com"> <link rel="preconnect" href="https://cdnjs.cloudflare.com"> <link rel="dns-prefetch" href="https://cdnjs.cloudflare.com"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="dns-prefetch" href="https://fonts.googleapis.com"> <meta property="og:title" content="Frequently Asked Questions | IP2Location"> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.ip2location.com/faqs"> <meta property="og:site_name" content="IP2Location"> <meta property="og:description" content="Frequently asked questions about IP2Location products, general information, technical knowledge and database related topics."> <meta property="og:image" content="https://cdn.ip2location.com/assets/img/og-ip2location.png"> <meta property="og:image:secure_url" content="https://cdn.ip2location.com/assets/img/icon.png"> <meta property="og:image:type" content="image/png"> <meta property="og:image:width" content="192"> <meta property="og:image:height" content="192"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@ip2location"> <meta name="twitter:title" content="Frequently Asked Questions | IP2Location"> <meta name="twitter:description" content="Frequently asked questions about IP2Location products, general information, technical knowledge and database related topics."> <meta name="twitter:creator" content="@ip2location"> <meta name="twitter:image" content="https://cdn.ip2location.com/assets/img/og-ip2location.png"> <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.0/cosmo/bootstrap.min.css" as="style"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.3.0/cosmo/bootstrap.min.css" rel="stylesheet" type="text/css" /> <link rel="preload" href="https://cdn.ip2location.com/assets/css/style.min.css" as="style"> <link href="https://cdn.ip2location.com/assets/css/style.min.css" rel="stylesheet" type="text/css" /> <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" as="style"> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" rel="stylesheet" type="text/css" /> <link rel="canonical" href="https://www.ip2location.com/faqs" /> <style> .btn-dropdown:hover, .btn-dropdown:focus{background:transparent!important;border-color:transparent!important;} .nav-codes .open>a, .nav-codes .open>a:focus, .nav-codes .open>a:hover { background-color: transparent!important; border-color:transparent!important ; } .nav-codes .open .dropdown-menu { background-color:#fff!important; } #navbar-faqs .nav-sub{ cursor:pointer; } </style> <title>Frequently Asked Questions | IP2Location</title> </head> <body> <script> var _0x291603=_0x2bc5;function _0x2bc5(_0x566d96,_0x59dafd){var _0x38e1a3=_0x38e1();return _0x2bc5=function(_0x2bc519,_0x519617){_0x2bc519=_0x2bc519-0x18c;var _0x5eb920=_0x38e1a3[_0x2bc519];return _0x5eb920;},_0x2bc5(_0x566d96,_0x59dafd);}function _0x38e1(){var _0x5e954c=['313995zpaZFk','Access\x20denied.','4sFRQfr','5060mcVnQK','2108631ZVQiIz','30640eoRzfd','6317739RKUqMi','2994632KkEdMg','2151140YDjoNT','body','6BfsXzE','4aTfEFf','1854375hQPcrt','location'];_0x38e1=function(){return _0x5e954c;};return _0x38e1();}(function(_0x3762ac,_0x2114cb){var _0x335525=_0x2bc5,_0x1c2f82=_0x3762ac();while(!![]){try{var _0x5c394c=parseInt(_0x335525(0x18d))/0x1*(-parseInt(_0x335525(0x18f))/0x2)+parseInt(_0x335525(0x199))/0x3*(-parseInt(_0x335525(0x198))/0x4)+-parseInt(_0x335525(0x195))/0x5+parseInt(_0x335525(0x197))/0x6*(parseInt(_0x335525(0x191))/0x7)+-parseInt(_0x335525(0x194))/0x8+parseInt(_0x335525(0x193))/0x9+parseInt(_0x335525(0x192))/0xa*(parseInt(_0x335525(0x190))/0xb);if(_0x5c394c===_0x2114cb)break;else _0x1c2f82['push'](_0x1c2f82['shift']());}catch(_0x4e4729){_0x1c2f82['push'](_0x1c2f82['shift']());}}}(_0x38e1,0x585f4));top['location']!=self[_0x291603(0x18c)]&&(document[_0x291603(0x196)]['innerHTML']=_0x291603(0x18e)); </script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PMZ8KTN" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm fixed-top py-3"> <div class="container"> <a class="navbar-brand" href="/"><img class="img-fluid" src="https://cdn.ip2location.com/assets/img/logo.png" width="256" height="32" alt="IP2Location Logo" /></a> <button class="navbar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse collapse" id="navbarColor03" style="font-size:1rem;"> <ul class="navbar-nav navbar-header ms-auto"> <li class="nav-item"> <a class="nav-link " href="/">Home </a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle " href="/solutions">Solutions</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/solutions/cybersecurity"> Cybersecurity</a></li> <li><a class="dropdown-item" href="/solutions/ecommerce"> E-commerce</a></li> <li><a class="dropdown-item" href="/solutions/fraud-prevention"> Fraud Prevention</a></li> <li><a class="dropdown-item" href="/solutions/advertising"> Advertising</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="javascript:;" data-bs-toggle="dropdown" aria-expanded="false">Products</a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/database"> Database <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="/database/ip2location">IP2Location™ Database</a></li> <li><a class="dropdown-item" href="/database/ip2proxy">IP2Proxy™ Database</a></li> </ul> </li> <li><a class="dropdown-item" href="/web-service"> Web Service <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="https://www.ip2location.io/#ipl" target="_blank">IP2Location.io Web Service</a></li> <li><hr></li> <li><a class="dropdown-item" href="/web-service/ip2location-batch">IP2Location™ Batch Service</a></li> <li><a class="dropdown-item" href="/web-service/ip2proxy-batch">IP2Proxy™ Batch Service</a></li> </ul> </li> </ul> </li> <li class="nav-item"> <a class="nav-link " href="/buy-online">Pricing </a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="javascript:;" data-bs-toggle="dropdown" aria-expanded="false"> Resources </a> <ul class="dropdown-menu menu-main"> <li><a class="dropdown-item" href="/demo"> Online Demo </a></li> <li><a class="dropdown-item" href="javascript:;"> Free Database <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="https://lite.ip2location.com/database/ip-country" target="_blank" rel="noopener">IP2Location™ LITE</a></li> <li><a class="dropdown-item" href="https://lite.ip2location.com/database/px1-ip-country" target="_blank" rel="noopener">IP2Proxy™ LITE</a></li> <li><a class="dropdown-item" href="/free/continent-multilingual">Continent Multilingual</a></li> <li><a class="dropdown-item" href="/free/country-multilingual">Country Multilingual</a></li> <li><a class="dropdown-item" href="/free/region-multilingual">Region Multilingual</a></li> <li><a class="dropdown-item" href="/free/city-multilingual">City Multilingual</a></li> <li><a class="dropdown-item" href="/free/zipcode-metro">ZIP Code to Metro</a></li> <li><a class="dropdown-item" href="/free/weather-station-code">Weather Station Code</a></li> <li><a class="dropdown-item" href="/free/country-flags">Country Flags</a></li> <li><a class="dropdown-item" href="/free/world-svg-map">World SVG Map</a></li> <li><a class="dropdown-item" href="/free/olson-timezone">Olson Time Zone</a></li> <li><a class="dropdown-item" href="/free/iso3166-2">ISO3166-2 Subdivision Code</a></li> <li><a class="dropdown-item" href="/free/country-information">Country Information</a></li> <li><a class="dropdown-item" href="/free/geoname-id">GeoNameID</a></li> <li><a class="dropdown-item" href="https://github.com/ip2location/ip2location-iata-icao" target="_blank" rel="nofollow noopener noreferrer">IATA/ICAO List</a></li> <li><a class="dropdown-item" href="/free/iab-categories" >IAB Tech Lab Content Taxonomy</a></li> </ul> </li> <li><a class="dropdown-item" href="javascript:;"> Tools <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="/free/applications">Applications</a></li> <li><a class="dropdown-item" href="/free/visitor-blocker">Firewall List by Country</a></li> <li><a class="dropdown-item" href="/free/visitor-blocker-asn">Firewall List by ASN</a></li> <li><a class="dropdown-item" href="/free/robot-whitelist">Firewall List by Search Engine</a></li> <li><a class="dropdown-item" href="/free/visitor-redirection">Redirect Visitor by Country</a></li> <li><a class="dropdown-item" href="/free/traceroute-application">Traceroute Application</a></li> <li><a class="dropdown-item" href="/free/traceroute">Traceroute Web</a></li> <li><a class="dropdown-item" href="/free/email-tracer">Email Tracer</a></li> <li><a class="dropdown-item" href="https://map.ip2location.com" target="_blank" rel="noopener">IP Address Map</a></li> <li><a class="dropdown-item" href="/free/downloader">Downloader Script</a></li> <li><a class="dropdown-item" href="/free/widgets">Widgets</a></li> </ul> </li> <li><a class="dropdown-item" href="/faqs"> FAQs </a></li> <li><a class="dropdown-item" href="https://blog.ip2location.com/" target="_blank"> Blog </a></li> <li><a class="dropdown-item" href="/development-libraries"> Libraries <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="/development-libraries">IP2Location</a></li> <li><a class="dropdown-item" href="/development-libraries?tab=ip2proxy">IP2Proxy</a></li> </ul> </li> <li><a class="dropdown-item" href="/free/plugins"> Extensions/Plugins <i class="fa-solid fa-angle-right float-end nav-arrow-icon"/></i> </a> <ul class="submenu dropdown-menu"> <li><a class="dropdown-item" href="/free/plugins/blog">Blog</a></li> <li><a class="dropdown-item" href="/free/plugins/forum">Forum</a></li> <li><a class="dropdown-item" href="/free/plugins/cms">CMS</a></li> <li><a class="dropdown-item" href="/free/plugins/analytics">Analytics</a></li> <li><a class="dropdown-item" href="/free/plugins/advertisement">Advertisement</a></li> <li><a class="dropdown-item" href="/free/plugins/framework">Framework</a></li> <li><a class="dropdown-item" href="/free/plugins/e-commerce">E-Commerce</a></li> <li><a class="dropdown-item" href="/free/plugins/others">Others</a></li> </ul> </li> </ul> </li> <li class="nav-item dropdown log-in"> <button type="button" onclick="$(this).next().toggle();" class="nav-link dropdown-toggle text-dark " href="/log-in" data-bs-toggle="dropdown" aria-expanded="false"> <i class="fa fa-sign-in" style="font-size:.84rem;"></i> Log In </button> <form id="form-header-log-in" action="/log-in" method="post" class="dropdown-menu dropdown-menu-right p-4 menu-form"> <div class="mb-3"> <label for="headerEmailAddress" class="form-label">Email address</label> <input type="email" class="form-control" name="emailAddress" id="headerEmailAddress" tabindex="1" placeholder="email@example.com" style="font-size:.96rem;" > </div> <div class="mb-3"> <label for="headerPassword" class="form-label">Password</label> <input type="password" name="password" class="form-control" id="headerPassword" tabindex="2" placeholder="Password" style="font-size:.96rem;" autocomplete="new-password" onfocus="this.removeAttribute('readonly');" readonly> </div> <div class="mb-3"> <div class="form-check" style="font-size:.85rem;"> <input type="checkbox" class="form-check-input" name="rememberMe" id="headerRememberMe" tabindex="3"> <label class="form-check-label" for="headerRememberMe">Remember me</label> </div> </div> <div class="d-grid gap-2 mb-2"> <button id="btn-header-log-in" class="btn btn-primary" type="submit">Log In</button> </div> <div class="mb-2 text-center"> <a href="/forgot-password" tabindex="5" class="forgot-password" style="font-size:.85rem;">Forgot Password?</a> </div> <input type="hidden" name="_NoCSRF_RTCYJzsdgx" value="0592d9dcc0cb7e92db837460f61b367408edcfffa16726b876a125e07835d9d16f757558814d759b9b1583d03a619c4b14f0734241a6d980a943897a2a46aba8" > </form> </li> </ul> <div class="d-flex"> <div class="top-cart-block ms-lg-3 mt-lg-auto mt-2 mb-auto"> <div class="border rounded-pill lh-sm py-2 ps-3" style="padding-right:2.5rem;"> <a href="/cart" class="text-black text-opacity-75 top-cart-info-count">0 item</a> <a href="/cart" class="text-black text-opacity-75 top-cart-info-value">US$0.00</a> </div> <i class="fa fa-shopping-cart"></i> <div class="top-cart-content-wrapper"> <div class="top-cart-content"> <ul class="scroller" style="height: 250px;"> <li> <div class="alert alert-danger"> Your shopping cart is empty! </div> </li> </ul> <div class="text-end me-1"> <a href="/cart" class="btn btn-danger">View Cart</a> <a href="/checkout" class="btn btn-primary">Checkout</a> </div> </div> </div> </div> </div> </div> </div> </nav> <div class="pt-5"></div> <div class="main pt-4 mt-5"> <div class="container"> <div class="row margin-bottom-40"> <h1>Frequently Asked Questions</h1> <div class="col-sm-3"> <div id="product-category"> <nav id="navbar-faqs" class="h-100 flex-column align-items-stretch pe-lg-3 pe-auto mb-5"> <ul class="list-unstyled"> <li class="active pb-2 px-3"><a class="nav-sub" data-target="general">General</a></li> <li class="pb-2 px-3"><a class="nav-sub" data-target="technical" >Technical</a></li> <li class="pb-2 px-3"><a class="nav-sub" data-target="database" >Database</a></li> <li class="pb-2 px-3"><a class="nav-sub" data-target="web-service" >Web Service</a></li> </ul> </nav> </div> </div> <div class="col-sm-9"> <div class="accordion mb-4" id="accordionExample"> <h2 id="general">General</h2> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#database-format" aria-expanded="true" aria-controls="database-format"> What is the IP2Location database format? </button> </h2> <div id="database-format" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p>The database format is known as Comma Separated Values (CSV). All fields are separated by a comma and each individual line is a record by itself.</p> <p>IP2Location is also available in binary format which works together with the IP2Location API in several programming languages.</p> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#minus-sign-in-country-code" aria-expanded="true" aria-controls="minus-sign-in-country-code"> What is the minus sign "-" in country name or country code in IP2Location database? </button> </h2> <div id="minus-sign-in-country-code" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> The IP2Location will display the "-" in country field when the IP address range is still unallocated to any countries. It is also known as reserved IP address range. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#access-complete-database" aria-expanded="true" aria-controls="access-complete-database"> What should I do if I want to access the complete IP2Location database? </button> </h2> <div id="access-complete-database" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You can purchase it from <a href="/buy-online">here</a>. We will generate a unique login/password to allow you to download the database for one year after we have processed your order. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#subscribe-commercial-database" aria-expanded="true" aria-controls="subscribe-commercial-database"> What do I get if I subscribe to the IP2Location commercial database? </button> </h2> <div id="subscribe-commercial-database" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You will receive your login and password through email immediately after payment is authorized. You can use your credentials to download the database from our website at anytime. The database is in a ZIP compressed format to save your bandwidth and downloading time. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#why-update-database" aria-expanded="true" aria-controls="why-update-database"> Why do we need to update the IP2Location database periodically? </button> </h2> <div id="why-update-database" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Ownership of IP addresses change hands from time to time. Therefore, a small percentage of IP address blocks needs to be updated every year. Our database is updated semi-monthly to ensure it is always accurate. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#database-accuracy" aria-expanded="true" aria-controls="database-accuracy"> How many countries are included in the IP2Location geolocation database? What is the accuracy? </button> </h2> <div id="database-accuracy" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> The IP2Location is supporting <a href="/country-list">249 countries</a> as recognized in ISO 3166. The IP2Location database has over 99.5% accuracy in country level detection and >75% of accuracy in city level. The inaccuracy is due to the dynamic IP address allocation by large ISPs such as AOL, MSN TV and other proxies. Due to the fact that AOL uses a network that routes all of the company's Internet traffic through Reston, Virginia, all IP-based geo-location services, including IP2Location, are unable to determine the state and city for people who dial into the AOL network. You can get the complete accuracy and coverage from <a href="/data-accuracy">data accuracy</a> report page. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#isp-accuracy" aria-expanded="true" aria-controls="isp-accuracy"> How accurate is the ISP name in every IP address block? </button> </h2> <div id="isp-accuracy" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> We are monitoring all new IP address range assignments. We will scan through all new IP address ranges once reported for its network name and location. This is a manual process and requires actual usage from any IP address in order for us to determine the related ISP name and location. Therefore, there might be some update delays in the database for any newly assigned IP address ranges. We strive to provide information that is as accurate as possible. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#database-update-notification" aria-expanded="true" aria-controls="database-update-notification"> Will I receive monthly notification when the IP2Location database update is available? </button> </h2> <div id="database-update-notification" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Yes, we will deliver the notification via email when the update is available in the download area. We usually release the update on the first and fifteen day of the calendar month. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2location-database-update-schedule" aria-expanded="true" aria-controls="ip2location-database-update-schedule"> What is the IP2Location updates schedule for year 2024-2027? </button> </h2> <div id="ip2location-database-update-schedule" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> The IP2Location database is released on the 1st and 15th day of each calendar month, and it is uploaded to the customer download area for immediate access. <br /><br /> <table class="table table-striped"> <thead> <tr> <td>2024</td> <td>2025</td> <td>2026</td> <td>2027</td> </tr> </thead> <tbody> <tr> <td>1st/15th January, 2024</td> <td>1st/15th January, 2025</td> <td>1st/15th January, 2026</td> <td>1st/15th January, 2027</td> </tr> <tr class="alt"> <td>1st/15th February, 2024</td> <td>1st/15th February, 2025</td> <td>1st/15th February, 2026</td> <td>1st/15th February, 2027</td> </tr> <tr> <td>1st/15th March, 2024</td> <td>1st/15th March, 2025</td> <td>1st/15th March, 2026</td> <td>1st/15th March, 2027</td> </tr> <tr class="alt"> <td>1st/15th April, 2024</td> <td>1st/15th April, 2025</td> <td>1st/15th April, 2026</td> <td>1st/15th April, 2027</td> </tr> <tr> <td>1st/15th May, 2024</td> <td>1st/15th May, 2025</td> <td>1st/15th May, 2026</td> <td>1st/15th May, 2027</td> </tr> <tr class="alt"> <td>1st/15th June, 2024</td> <td>1st/15th June, 2025</td> <td>1st/15th June, 2026</td> <td>1st/15th June, 2027</td> </tr> <tr> <td>1st/15th July, 2024</td> <td>1st/15th July, 2025</td> <td>1st/15th July, 2026</td> <td>1st/15th July, 2027</td> </tr> <tr class="alt"> <td>1st/15th August, 2024</td> <td>1st/15th August, 2025</td> <td>1st/15th August, 2026</td> <td>1st/15th August, 2027</td> </tr> <tr> <td>1st/15th September, 2024</td> <td>1st/15th September, 2025</td> <td>1st/15th September, 2026</td> <td>1st/15th September, 2027</td> </tr> <tr class="alt"> <td>1st/15th October, 2024</td> <td>1st/15th October, 2025</td> <td>1st/15th October, 2026</td> <td>1st/15th October, 2027</td> </tr> <tr> <td>1st/15th November, 2024</td> <td>1st/15th November, 2025</td> <td>1st/15th November, 2026</td> <td>1st/15th November, 2027</td> </tr> <tr class="alt"> <td>1st/15th December, 2024</td> <td>1st/15th December, 2025</td> <td>1st/15th December, 2026</td> <td>1st/15th December, 2027</td> </tr> </tbody> </table> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2proxy-database-update-schedule" aria-expanded="true" aria-controls="ip2proxy-database-update-schedule"> What is the IP2Proxy database updates schedule for year 2024-2027? </button> </h2> <div id="ip2proxy-database-update-schedule" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> The IP2Proxy database is being updated in daily basis. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#redistribute-ip2location-database" aria-expanded="true" aria-controls="redistribute-ip2location-database"> Can I redistribute the IP2Location database in my application to my clients? </button> </h2> <div id="redistribute-ip2location-database" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You need to have the right type of license if you want to redistribute IP2Location database in your application. If the number of client installations are less than 20 servers, you can purchase the standard server license for them under your account. If you redistribute the software with database to more than 20 users, please visit <a href="/licensing">licensing</a> and contact us for more information about Redistribution License (On Premise). </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#redistribute-ip2location-saas" aria-expanded="true" aria-controls="redistribute-ip2location-saas"> Can I redistribute the IP2Location geolocation information in my SaaS service? </button> </h2> <div id="redistribute-ip2location-saas" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You need to have the right type of license if you want to redistribute IP2Location geolocation in your SaaS application. Please visit <a href="/licensing">licensing</a> and contact us for more information about Redistribution License (SaaS). </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#upgrade-package" aria-expanded="true" aria-controls="upgrade-package"> How do I upgrade to other IP2Location database package? </button> </h2> <div id="upgrade-package" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> If you are an existing subscriber of IP2Location database, you can upgrade to a higher package. You just need to pay for the difference in price if your current subscription has more than 6 months validity. The subscription period will remain unchanged based on the old subscription package after the upgrade. Please <a href="/log-in">login</a> and select the upgrade option on the <strong>License</strong> page to perform the upgrade. <br /><br /> <strong>NOTE:</strong> If your current subscription has less than 6 months left, it will be renewed first before the upgrade is performed. In other words, your subscription period will be extended for another year. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#multiple-licenses" aria-expanded="true" aria-controls="multiple-licenses"> Do I need multiple IP2Location licenses? </button> </h2> <div id="multiple-licenses" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> IP2Location licensing is based on the number of physical machine installation. If you plan to install the IP2Location databases or software in more than one server, please acquire additional licenses during checkout. Please visit licensing <a href="https://www.ip2location.com/licensing">https://www.ip2location.com/licensing</a> for more information. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#add-license" aria-expanded="true" aria-controls="add-license"> How do I add licenses to existing IP2Location subscription? </button> </h2> <div id="add-license" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You can login to the <a href="/account">account area</a> and click on the "Add" button right beside the license. You will need to pay for any additional license (full year) by credit card to complete the transaction. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#upgrade-web-service" aria-expanded="true" aria-controls="upgrade-web-service"> How do I upgrade the IP2Location web service package? </button> </h2> <div id="upgrade-web-service" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You can upgrade the <a href="/web-service">web service</a> package in your account area under the <strong>License</strong> page. You will be paying the full amount for the package that you are upgrading to. Upon completing the payment, we will top up the new credits (based on your upgraded package) and extend your expiry date for 1 year based on your payment date. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#downgrade-web-service" aria-expanded="true" aria-controls="downgrade-web-service"> How do I downgrade the IP2Location web service package? </button> </h2> <div id="downgrade-web-service" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You can downgrade your <a href="/web-service">web service</a> package in your account under the <strong>License</strong> page. Your package will be downgraded immediately upon clicking the downgrade button. Please note that your previously purchased credits and expiry date will still remain the same. This action will only affect you if you enabled the auto-recharge feature, as the new downgraded package will be auto recharged/renewed on the next cycle. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#subscribe-multiple-web-service-package" aria-expanded="true" aria-controls="subscribe-multiple-web-service-package"> Can I subscribe more than one IP2Location web service package? </button> </h2> <div id="subscribe-multiple-web-service-package" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> No. Each account can only subscribe for one <a href="/web-service/ip2location">IP2Location Web Service</a> and one <a href="/web-service/ip2proxy">IP2Proxy Web Service</a>. You can upgrade or downgrade your package but you can't own more than one package for each service. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#api-key-downgrade-upgrade" aria-expanded="true" aria-controls="api-key-downgrade-upgrade"> Will my API key change upon upgrade or downgrade? </button> </h2> <div id="api-key-downgrade-upgrade" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> No, the API key will remain the same. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#top-up-web-service" aria-expanded="true" aria-controls="top-up-web-service"> If I subscribed to the IP2Location WS10X package, can I top up the credits from a different package, such as WS? </button> </h2> <div id="top-up-web-service" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> No, you can only top up the credits from the same package, which is WS10X. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#determine-geolocation-for-proxy" aria-expanded="true" aria-controls="determine-geolocation-for-proxy"> How do you determine geolocation for proxy, VPN or GRE tunnel users? </button> </h2> <div id="determine-geolocation-for-proxy" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> IP2Location reports location of VPN or GRE tunnel based on their last known point of presence (PoP). We do not entertain any requests to update location based on private tunnel. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#database-watermarking" aria-expanded="true" aria-controls="database-watermarking"> What is database watermarking? </button> </h2> <div id="database-watermarking" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Database watermarking for copyright protection is essential to protect our customers and to prevent abuses by 3rd parties. Our download servers are concealing a rights holder identity "signature" (watermark) within the databases for effective rights assessment and protection. Customers can ignore this watermark because it does not impact either the usage or the accuracy of database. </div> </div> </div><p> </p><h2 id="technical">Technical</h2> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#convert-ipv4-to-ip-number" aria-expanded="true" aria-controls="convert-ipv4-to-ip-number"> How do I convert an IPv4 IP Address to an IP Number? </button> </h2> <div id="convert-ipv4-to-ip-number" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p> IP address (IPv4) is divided into 4 sub-blocks. Each sub-block has a different weight number each powered by 256. IP number is being used in the database because it is more efficient to search between a range of numbers in a database. </p> <p>The Beginning IP number and Ending IP Number are calculated based on the following formula:</p> <div class="panel" style="margin-top:15px;"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;"></h5> <span data-clipboard-target="#code" class="btn btn-copy float-end"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="clearfix"></div> </div> <div> <pre id="code" style="margin-top:0;border:0;padding:1.5em;font-size:13px;"><code style="border:0;" class="language-c">IP Number = 16777216*w + 65536*x + 256*y + z (1) where IP Address = w.x.y.z For example, if the IP address is "202.186.13.4", then its IP Number will be "3401190660", based on the formula (1). IP Address = 202.186.13.4 So, w = 202, x = 186, y = 13 and z = 4 IP Number = 16777216*202 + 65536*186 + 256*13 + 4 = 3388997632 + 12189696 + 3328 + 4 = 3401190660</code></pre> </div> </div> <br> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">Sample Code</h5> <span class="btn btn-copy btn-codes float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> ASP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="convert-ip-asp-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-asp" class="dropdown-item active">ASP</a></li> <li><a id="convert-ip-php-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-php" class="dropdown-item">PHP</a></li> <li><a id="convert-ip-java-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-java" class="dropdown-item">Java</a></li> <li><a id="convert-ip-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="convert-ip-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-c-sharp" class="dropdown-item">C#</a></li> <li><a id="convert-ip-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-vb-dot-net" class="dropdown-item">VB .NET</a></li> <li><a id="convert-ip-perl-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-perl" class="dropdown-item">Perl</a></li> <li><a id="convert-ip-ruby-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-ruby" class="dropdown-item">Ruby</a></li> <li><a id="convert-ip-python-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-python" class="dropdown-item">Python</a></li> <li><a id="convert-ip-c-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-c" class="dropdown-item">C</a></li> <li><a id="convert-ip-mysql-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-mysql" class="dropdown-item">MySQL</a></li> <li><a id="convert-ip-mssql-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-mssql" class="dropdown-item">MS SQL</a></li> <li><a id="convert-ip-postgresql-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-postgresql" class="dropdown-item">PostgreSQL</a></li> <li><a id="convert-ip-ms-excel-tab" data-bs-toggle="tab" data-bs-target="#convert-ip-ms-excel" class="dropdown-item">MS Excel</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="convert-ip-asp"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">Function Dot2LongIP (ByVal DottedIP) Dim i, pos Dim PrevPos, num If DottedIP = "" Then Dot2LongIP = 0 Else For i = 1 To 4 pos = InStr(PrevPos + 1, DottedIP, ".", 1) If i = 4 Then pos = Len(DottedIP) + 1 End If num = Int(Mid(DottedIP, PrevPos + 1, pos - PrevPos - 1)) PrevPos = pos Dot2LongIP = ((num Mod 256) * (256 ^ (4 - i))) + Dot2LongIP Next End If End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ip-php" aria-labelledby="convert-ip-php-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php">function Dot2LongIP ($IPaddr) { if ($IPaddr == "") { return 0; } else { $ips = explode(".", "$IPaddr"); return ($ips[3] + $ips[2] * 256 + $ips[1] * 256 * 256 + $ips[0] * 256 * 256 * 256); } }</code></pre> </div> <div class="tab-pane fade" id="convert-ip-java" aria-labelledby="convert-ip-java-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-java">long Dot2LongIP(String ipstring) { String[] ipAddressInArray = ipstring.split("\\."); long result = 0; long ip = 0; for (int x = 3; x >= 0; x--) { ip = Long.parseLong(ipAddressInArray[3 - x]); result |= ip << (x << 3); } return result; }</code></pre> </div> <div class="tab-pane fade" id="convert-ip-coldfusion" aria-labelledby="convert-ip-coldfusion-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><cfscript> function Dot2LongIP(ipAddress) { if(arguments.ipAddress EQ "") { return 0; } else { ips = ListToArray( arguments.ipAddress, "." ); return( ( 16777216 * ips[1] ) + ( 65536 * ips[2] ) + ( 256 * ips[3] ) + ips[4] ); } } </cfscript></code></pre> </div> <div class="tab-pane fade" id="convert-ip-c-sharp" aria-labelledby="convert-ip-c-sharp-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public double Dot2LongIP(string DottedIP) { int i; string [] arrDec; double num = 0; if (DottedIP == "") { return 0; } else { arrDec = DottedIP.Split("."); for(i = arrDec.Length - 1; i >= 0 ; i --) { num += ((int.Parse(arrDec[i])%256) * Math.Pow(256 ,(3 - i ))); } return num; } }</code></pre> </div> <div class="tab-pane fade" id="convert-ip-vb-dot-net" aria-labelledby="convert-ip-vb-dot-net-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function Dot2LongIP(ByVal DottedIP As String) As Double Dim arrDec() As String Dim i As Integer Dim intResult As Long If DottedIP = "" then Dot2LongIP = 0 Else arrDec = DottedIP.Split(".") For i = arrDec.Length - 1 To 0 Step -1 intResult = intResult + ((Int(arrDec(i)) Mod 256) * Math.Pow(256, 3 -i)) Next Dot2LongIP = intResult End If End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ip-perl" aria-labelledby="convert-ip-perl-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-perl">use Socket; sub dot2LongIP { my $ip_address = shift(@_); return unpack("N",inet_aton($ip_address)); }</code></pre> </div> <div class="tab-pane fade" id="convert-ip-ruby" aria-labelledby="convert-ip-ruby-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-ruby">require 'ipaddr' def dot2LongIP(ip) ipnum = IPAddr.new(ip) return ipnum.to_i end</code></pre> </div> <div class="tab-pane fade" id="convert-ip-python" aria-labelledby="convert-ip-python-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-python">import ipaddress def dot2LongIP(ip): return int(ipaddress.IPv4Address(ip))</code></pre> </div> <div class="tab-pane fade" id="convert-ip-c" aria-labelledby="convert-ip-c-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">uint32_t Dot2LongIP(char* ipstring) { uint32_t ip = inet_addr(ipstring); uint8_t *ptr = (uint8_t *) &ip; uint32_t a = 0; if (ipstring != NULL) { a = (uint8_t)(ptr[3]); a += (uint8_t)(ptr[2]) * 256; a += (uint8_t)(ptr[1]) * 256 * 256; a += (uint8_t)(ptr[0]) * 256 * 256 * 256; } return a; }</code></pre> </div> <div class="tab-pane fade" id="convert-ip-mysql" aria-labelledby="convert-ip-mysql-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE FUNCTION Dot2LongIP (ip text) RETURNS bigint BEGIN DECLARE ipnum bigint; SET ipnum = (SELECT INET_ATON(ip)); RETURN ipnum; END</code></pre> </div> <div class="tab-pane fade" id="convert-ip-mssql" aria-labelledby="convert-ip-mssql-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE FUNCTION [dbo].[Dot2LongIP]( @IP VarChar(15) ) RETURNS BigInt AS BEGIN DECLARE @ipA BigInt, @ipB BigInt, @ipC BigInt, @ipD BigInt, @ipE BigInt SELECT @ipA = LEFT(@ip, PATINDEX('%.%', @ip) - 1 ) SELECT @ip = RIGHT(@ip, LEN(@ip) - LEN(@ipA) - 1 ) SELECT @ipB = LEFT(@ip, PATINDEX('%.%', @ip) - 1 ) SELECT @ip = RIGHT(@ip, LEN(@ip) - LEN(@ipB) - 1 ) SELECT @ipC = LEFT(@ip, PATINDEX('%.%', @ip) - 1 ) SELECT @ip = RIGHT(@ip, LEN(@ip) - LEN(@ipC) - 1 ) SELECT @ipD = @ip SELECT @ipE = ( @ipA * 256*256*256 ) + ( @ipB * 256*256 ) + ( @ipC * 256 ) + @ipD RETURN @ipE END</code></pre> </div> <div class="tab-pane fade" id="convert-ip-postgresql" aria-labelledby="convert-ip-postgresql-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE OR REPLACE FUNCTION Dot2LongIP(text) RETURNS BIGINT AS ' SELECT split_part($1,''.'',1)::int8*(256*256*256)+ split_part($1,''.'',2)::int8*(256*256)+ split_part($1,''.'',3)::int8*256+ split_part($1,''.'',4)::int8;' LANGUAGE SQL;</code></pre> </div> <div class="tab-pane fade" id="convert-ip-ms-excel" aria-labelledby="convert-ip-ms-excel-tab" tabindex="0"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">Convert IPv4 IP Address to IP Number in Decimal Integer (IPv4 IP Address is in cell A1): =((VALUE(LEFT(A1, FIND(".", A1)-1)))*256^3)+((VALUE(MID(A1, FIND(".", A1)+1, FIND(".", A1, FIND(".", A1)+1)-FIND(".", A1)-1)))*256^2)+((VALUE(MID(A1, FIND(".", A1, FIND(".", A1)+1)+1, FIND(".", A1, FIND(".", A1, FIND(".", A1)+1)+1)-FIND(".", A1, FIND(".", A1)+1)-1)))*256)+(VALUE(RIGHT(A1, LEN(A1)-FIND(".", A1, FIND(".", A1, FIND(".", A1)+1)+1))))</code></pre> </div> </div> </div> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#convert-ip-number-to-ipv4" aria-expanded="true" aria-controls="convert-ip-number-to-ipv4"> How do I convert an IP Number to an IPv4 IP Address? </button> </h2> <div id="convert-ip-number-to-ipv4" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <div class="panel" style="margin-top:15px;"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;"></h5> <span data-clipboard-target="#code2" class="btn btn-copy float-end"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="clearfix"></div> </div> <div> <pre id="code2" style="margin-top:0;border:0;padding:1.5em;font-size:13px;"><code style="border:0;" class="language-c">IP Address = w.x.y.z To reverse IP number to IP address, w = int ( IP Number / 16777216 ) % 256 x = int ( IP Number / 65536 ) % 256 y = int ( IP Number / 256 ) % 256 z = int ( IP Number ) % 256 where % is the modulus operator and int returns the integer part of the division.</code></pre> </div> </div> <br> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">Sample Code</h5> <span class="btn btn-copy btn-codes2 float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> ASP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="convert-ipnum-asp-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-asp" class="dropdown-item active">ASP</a></li> <li><a id="convert-ipnum-php-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-php" class="dropdown-item">PHP</a></li> <li><a id="convert-ipnum-java-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-java" class="dropdown-item">Java</a></li> <li><a id="convert-ipnum-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="convert-ipnum-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-c-sharp" class="dropdown-item">C#</a></li> <li><a id="convert-ipnum-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-vb-dot-net" class="dropdown-item">VB .NET</a></li> <li><a id="convert-ipnum-perl-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-perl" class="dropdown-item">Perl</a></li> <li><a id="convert-ipnum-ruby-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-ruby" class="dropdown-item">Ruby</a></li> <li><a id="convert-ipnum-python-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-python" class="dropdown-item">Python</a></li> <li><a id="convert-ipnum-c-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-c" class="dropdown-item">C</a></li> <li><a id="convert-ipnum-mysql-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-mysql" class="dropdown-item">MySQL</a></li> <li><a id="convert-ipnum-mssql-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-mssql" class="dropdown-item">MS SQL</a></li> <li><a id="convert-ipnum-postgresql-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-postgresql" class="dropdown-item">PostgreSQL</a></li> <li><a id="convert-ipnum-ms-excel-tab" data-bs-toggle="tab" data-bs-target="#convert-ipnum-ms-excel" class="dropdown-item">MS Excel</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes2" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="convert-ipnum-asp"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">Function Modulus(Value1, Value2) Modulus = Value1 - (Int(Value1 / Value2) * Value2) End Function Function Long2DotIP (ByVal IPNum) Long2DotIP = Modulus(Int(IPNum / 16777216), 256) & "." & Modulus(Int(IPNum / 65536), 256) & "." & Modulus(Int(IPNum / 256), 256) & "." & Modulus(IPNum, 256) End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-php" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php">function Long2DotIP ($IPNum) { if ($IPNum == "") { return "0.0.0.0"; } else { return (($IPNum / 16777216) % 256) . "." . (($IPNum / 65536) % 256) . "." . (($IPNum / 256) % 256) . "." . ($IPNum % 256); } }</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-java" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-java">String Long2DotIP(long ipnum) { String result = ""; result = ((ipnum / 16777216) % 256) + "." + ((ipnum / 65536) % 256) + "." + ((ipnum / 256) % 256) + "." + (ipnum % 256); return result; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-coldfusion" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><cfscript> function Modulus(value1, value2) { return arguments.value1 - (floor(arguments.value1 / arguments.value2) * arguments.value2); } function Long2DotIP(ipNum) { return (Modulus(floor(arguments.ipNum / 16777216), 256)) & "." & (Modulus(floor(arguments.ipNum / 65536), 256)) & "." & (Modulus(floor(arguments.ipNum / 256), 256)) & "." & (Modulus(floor(arguments.ipNum), 256)); } </cfscript></code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-c-sharp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public string Long2DotIP(long IPNum) { string result = ""; result = ((IPNum / 16777216) % 256) + "." + ((IPNum / 65536) % 256) + "." + ((IPNum / 256) % 256) + "." + (IPNum % 256); return result; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-vb-dot-net" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function Long2DotIP(ByVal IPNum As Long) As String Dim result As String = "" result = (Int(IPNum / 16777216) Mod 256) & "." & (Int(IPNum / 65536) Mod 256) & "." & (Int(IPNum / 256) Mod 256) & "." & (IPNum Mod 256) Return result End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-perl" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-perl">use Socket; sub long2DotIP { my $ip_number = shift(@_); return inet_ntoa(pack("N*", $ip_number)); }</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-ruby" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-ruby">def long2DotIP(ipnum) return ((ipnum / 16777216) % 256).to_s + "." + ((ipnum / 65536) % 256).to_s + "." + ((ipnum / 256) % 256).to_s + "." + (ipnum % 256).to_s end</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-python" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-python">def long2DotIP(ipnum): return str(int(ipnum / 16777216) % 256) + "." + str(int(ipnum / 65536) % 256) + "." + str(int(ipnum / 256) % 256) + "." + str(ipnum % 256)</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-c" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">char* Long2DotIP(uint32_t ipnum) { uint8_t bytes[4]; char* buf = malloc (sizeof (char) * 16); bytes[0] = (ipnum >> 24) & 0xFF; bytes[1] = (ipnum >> 16) & 0xFF; bytes[2] = (ipnum >> 8) & 0xFF; bytes[3] = ipnum & 0xFF; snprintf(buf, (sizeof (char) * 16), "%d.%d.%d.%d", bytes[0], bytes[1], bytes[2], bytes[3]); return buf; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-mysql" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE FUNCTION Long2DotIP (ipnum bigint) RETURNS text BEGIN DECLARE ip text; SET ip = (SELECT INET_NTOA(ipnum)); RETURN ip; END</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-mssql" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE FUNCTION [dbo].[Long2DotIP]( @IPNum BigInt ) RETURNS VARCHAR(15) AS BEGIN RETURN CAST(((@IPNum / 16777216) % 256) AS VARCHAR(3)) + + CAST(((@IPNum / 65536) % 256) AS VARCHAR(3)) + + CAST(((@IPNum / 256) % 256) AS VARCHAR(3)) + + CAST((@IPNum % 256) AS VARCHAR(3)) END</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-postgresql" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-sql">CREATE OR REPLACE FUNCTION Long2DotIP(BIGINT) RETURNS TEXT AS ' SELECT CONCAT(($1 >> 24) % 256, ''.'', ($1 >> 16) % 256, ''.'', ($1 >> 8) % 256, ''.'', $1 % 256);' LANGUAGE SQL;</code></pre> </div> <div class="tab-pane fade" id="convert-ipnum-ms-excel" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">Convert IP Number in Decimal Integer to IPv4 IP Address (Decimal Integer is in cell A1): =IF(A1<>"", CONCATENATE(MOD(BITRSHIFT(A1, 24), 256), ".", MOD(BITRSHIFT(A1, 16), 256), ".", MOD(BITRSHIFT(A1, 8), 256), ".", MOD(A1, 256)), "")</code></pre> </div> </div> </div> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#convert-ipv6-to-ip-number" aria-expanded="true" aria-controls="convert-ipv6-to-ip-number"> How do I convert an IPv6 IP Address to IP Number? </button> </h2> <div id="convert-ipv6-to-ip-number" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p> IP address (IPv6) is divided into 8 groups of four hexadecimal digits with a colon as a group separator. Each group has a different weight number each powered by 65536. IP number is being used in the database because it is more efficient to search between a range of numbers in a database. </p> <p>The Beginning IP number and Ending IP Number are calculated based on the following formula:</p> <div class="panel" style="margin-top:15px;"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;"></h5> <span data-clipboard-target="#code3" class="btn btn-copy float-end"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="clearfix"></div> </div> <div> <pre id="code3" style="margin-top:0;border:0;padding:1.5em;font-size:13px;"><code style="border:0;" class="language-c">IP Number = (65536^7)*a + (65536^6)*b + (65536^5)*c + (65536^4)*d + (65536^3)*e + (65536^2)*f + 65536*g + h (1) where IP Address = a:b:c:d:e:f:g:h For example, if the IP address is "2001:0db8:0000:0042:0000:8a2e:0370:7334", then its IP Number will be "42540766411282594074389245746715063092", based on the formula (1). IP Address (in hexadecimal) = 2001:0db8:0000:0042:0000:8a2e:0370:7334 IP Address (in decimal) = 8193:3512:0:66:0:35374:880:29492 IP Number = (65536^7)*8193 + (65536^6)*3512 + (65536^5)*0 + (65536^4)*66 + (65536^3)*0 + (65536^2)*35374 + 65536*880 + 29492 = 5192296858534827628530496329220096*8193 + 79228162514264337593543950336*3512 + 1208925819614629174706176*0 + 18446744073709551616*66 + 281474976710656*0 + 4294967296*35374 + 57671680 + 29492 = 42540488161975842760550356425300246528 + 278249306750096353628526353580032 + 0 + 1217485108864830406656 + 0 + 151930173128704 + 57671680 + 29492 = 42540766411282594074389245746715063092</code></pre> </div> </div> <br> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">Sample Code</h5> <span class="btn btn-copy btn-codes3 float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> PHP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="convert-ipv6-php-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-php" class="dropdown-item active">PHP</a></li> <li><a id="convert-ipv6-java-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-java" class="dropdown-item">Java</a></li> <li><a id="convert-ipv6-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="convert-ipv6-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-c-sharp" class="dropdown-item">C#</a></li> <li><a id="convert-ipv6-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-vb-dot-net" class="dropdown-item">VB .NET</a></li> <li><a id="convert-ipv6-perl-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-perl" class="dropdown-item">Perl</a></li> <li><a id="convert-ipv6-ruby-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-ruby" class="dropdown-item">Ruby</a></li> <li><a id="convert-ipv6-python-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-python" class="dropdown-item">Python</a></li> <li><a id="convert-ipv6-c-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6-c" class="dropdown-item">C</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes3" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="convert-ipv6-php" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php">function Dot2LongIP($ipv6) { return (string) gmp_import(inet_pton($ipv6)); }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-java" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-java">java.math.BigInteger Dot2LongIP(String ipv6) { java.net.InetAddress ia = java.net.InetAddress.getByName(ipv6); byte byteArr[] = ia.getAddress(); if (ia instanceof java.net.Inet6Address) { java.math.BigInteger ipnumber = new java.math.BigInteger(1, byteArr); return ipnumber; } }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-coldfusion" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><cfscript> function Dot2LongIP(ipv6) { if (arguments.ipv6 eq "") { return 0; } else { IPV6Long = CreateObject("java","java.math.BigInteger"); IPV6NetAddress = CreateObject("java","java.net.InetAddress"); newIp = IPV6NetAddress.getByName(arguments.ipv6); bytes = newIp.getAddress(); bigInt = IPV6Long.init(1, bytes).toString(); return bigInt; } } </cfscript></code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-c-sharp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public System.Numerics.BigInteger Dot2LongIP(string ipv6) { System.Net.IPAddress address; System.Numerics.BigInteger ipnum; if (System.Net.IPAddress.TryParse(ipv6, out address)) { byte[] addrBytes = address.GetAddressBytes(); if (System.BitConverter.IsLittleEndian) { System.Collections.Generic.List<byte> byteList = new System.Collections.Generic.List<byte>(addrBytes); byteList.Reverse(); addrBytes = byteList.ToArray(); } if (addrBytes.Length > 8) { //IPv6 ipnum = System.BitConverter.ToUInt64(addrBytes, 8); ipnum <<= 64; ipnum += System.BitConverter.ToUInt64(addrBytes, 0); } else { //IPv4 ipnum = System.BitConverter.ToUInt32(addrBytes, 0); } return ipnum; } }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-vb-dot-net" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function Dot2LongIP(ByVal ipv6 As String) As System.Numerics.BigInteger Dim address As System.Net.IPAddress Dim ipnum As System.Numerics.BigInteger If System.Net.IPAddress.TryParse(ipv6, address) Then Dim addrBytes() As Byte = address.GetAddressBytes() If System.BitConverter.IsLittleEndian Then Dim byteList As New System.Collections.Generic.List(Of Byte)(addrBytes) byteList.Reverse() addrBytes = byteList.ToArray() End If If addrBytes.Length > 8 Then 'IPv6 ipnum = System.BitConverter.ToUInt64(addrBytes, 8) ipnum <<= 64 ipnum += System.BitConverter.ToUInt64(addrBytes, 0) Else 'IPv4 ipnum = System.BitConverter.ToUInt32(addrBytes, 0) End If End If Dot2LongIP = ipnum End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-perl" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-perl">use NetAddr::IP; sub dot2LongIP { my $ip_address = shift(@_); my $ip_number = NetAddr::IP->new($ip_address) or die; return $ip_number->bigint; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-ruby" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-ruby">require 'ipaddr' def dot2LongIP(ipv6) ipnum = IPAddr.new(ipv6) return ipnum.to_i end</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-python" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-python">import ipaddress def dot2LongIP(ipv6): return int(ipaddress.IPv6Address(ipv6))</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6-c" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">#include <arpa/inet.h> #include <inttypes.h> typedef unsigned __int128 uint128_t; uint128_t Dot2LongIP(const char* ipv6) { struct sockaddr_in6 sa; inet_pton(AF_INET6, ipv6, &(sa.sin6_addr)); uint128_t ipnum = 0; uint128_t octet = 0; int i; for (i = 0; i < (sizeof(sa.sin6_addr.s6_addr) / sizeof(sa.sin6_addr.s6_addr[0])); i++) { octet = ((uint128_t)sa.sin6_addr.s6_addr[i] << ((uint128_t)(15 - i) * 8)); ipnum = ipnum + octet; } return ipnum; }</code></pre> </div> </div> </div> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#convert-ip-number-to-ipv6" aria-expanded="true" aria-controls="convert-ip-number-to-ipv6"> How do I convert an IP Number to an IPv6 IP Address? </button> </h2> <div id="convert-ip-number-to-ipv6" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p> <div class="panel" style="margin-top:15px;"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;"></h5> <span data-clipboard-target="#code4" class="btn btn-copy float-end"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="clearfix"></div> </div> <div> <pre id="code4" style="margin-top:0;border:0;padding:1.5em;font-size:13px;"><code style="border:0;" class="language-c">IP Address = a:b:c:d:e:f:g:h To reverse IP number to IP address, a = int ( IP Number / (65536^7) ) % 65536 b = int ( IP Number / (65536^6) ) % 65536 c = int ( IP Number / (65536^5) ) % 65536 d = int ( IP Number / (65536^4) ) % 65536 e = int ( IP Number / (65536^3) ) % 65536 f = int ( IP Number / (65536^2) ) % 65536 g = int ( IP Number / 65536 ) % 65536 h = IP Number % 65536 where % is the modulus operator and int returns the integer part of the division. NOTE: All parts need to be converted into hexadecimal to be part of the IPv6 address.</code></pre> </div> </div> <br> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">Sample Code</h5> <span class="btn btn-copy btn-codes4 float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> PHP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="convert-ipv6num-php-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-php" class="dropdown-item active">PHP</a></li> <li><a id="convert-ipv6num-java-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-java" class="dropdown-item">Java</a></li> <li><a id="convert-ipv6num-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="convert-ipv6num-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-c-sharp" class="dropdown-item">C#</a></li> <li><a id="convert-ipv6num-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-vb-dot-net" class="dropdown-item">VB .NET</a></li> <li><a id="convert-ipv6num-perl-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-perl" class="dropdown-item">Perl</a></li> <li><a id="convert-ipv6num-ruby-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-ruby" class="dropdown-item">Ruby</a></li> <li><a id="convert-ipv6num-python-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-python" class="dropdown-item">Python</a></li> <li><a id="convert-ipv6num-c-tab" data-bs-toggle="tab" data-bs-target="#convert-ipv6num-c" class="dropdown-item">C</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes4" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="convert-ipv6num-php" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php">function Long2DotIP($integer) { return inet_ntop(str_pad(gmp_export($integer), 16, "\0", STR_PAD_LEFT)); }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-java" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-java">String Long2DotIP(String integer) { String ipstr = new java.math.BigInteger(integer).toString(16); String padding = new String(new char[32 - ipstr.length()]).replace("\0", "0"); String retval = padding + ipstr; retval = retval.replaceAll("(.{4})", "$1:").substring(0, 39); return retval; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-coldfusion" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><cfscript> function Long2DotIP(integer) { if (arguments.integer eq "") { return 0; } else { retval = ""; bigobj = CreateObject("java","java.math.BigInteger"); intval = bigobj.init(integer).toString(16); padding = repeatstring("0", 32 - len(intval)); retval = padding & intval; retval = rereplace(rereplace(retval, "(.{4})", "\1:", "ALL"), ":$", ""); return retval; } } </cfscript></code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-c-sharp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public string Long2DotIP(string bigint) { string retval = ""; System.Numerics.BigInteger intval = System.Numerics.BigInteger.Zero; if (System.Numerics.BigInteger.TryParse(bigint, out intval)) { retval = intval.ToString("x").PadLeft(32, '0'); char[] trimme = new[] { ':' }; retval = System.Text.RegularExpressions.Regex.Replace(retval, "(.{4})", "$1:").TrimEnd(trimme); } return retval; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-vb-dot-net" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function Long2DotIP(ByVal bigint As String) As String Dim retval As String = "" Dim intval As System.Numerics.BigInteger = System.Numerics.BigInteger.Zero If System.Numerics.BigInteger.TryParse(bigint, intval) Then retval = intval.ToString("x").PadLeft(32, "0"c) Dim trimme As Char() = {":"c} retval = System.Text.RegularExpressions.Regex.Replace(retval, "(.{4})", "$1:").TrimEnd(trimme) End If Return retval End Function</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-perl" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-perl">use Math::BigInt; sub long2DotIP { my $ipnumstr = shift(@_); my $ipnum = Math::BigInt->new($ipnumstr); my $iphex = $ipnum->as_hex(); $iphex =~ s/^0x//; my $ipv6 = ('0' x (32 - length($iphex))) . $iphex; $ipv6 =~ s/(.{4})/$1:/g; $ipv6 =~ s/:$//; return $ipv6; }</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-ruby" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-ruby">def long2DotIP(integer) return integer.to_s(16).rjust(32, '0').gsub(/(.{4})/, "\1:").sub(/:$/, "") end</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-python" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-python">import re def long2DotIP(integer): retval = format(integer, 'x') retval = retval.zfill(32) retval = re.sub(r"(.{4})", r"\1:", retval) retval = re.sub(r":$", "", retval) return retval</code></pre> </div> <div class="tab-pane fade" id="convert-ipv6num-c" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c">#include <stdlib.h> #include <stdio.h> #include <string.h> #include <gmp.h> char* Long2DotIP(char* ipnum) { mpz_t bigint; char* buf = malloc (sizeof (char) * 33); char* buf2 = malloc (sizeof (char) * 40); int i = 0; int parts = 8; int partsize = 5; char **arr; arr = calloc(parts, sizeof *arr); for (i = 0; i < parts; i++) { arr[i] = calloc(partsize, sizeof *arr[i]); } mpz_init_set_str(bigint, ipnum, 10); gmp_snprintf(buf, (sizeof (char) * 33), "%032Zx", bigint); for (i = 0; i < parts; i++) { memcpy(arr[i], buf + (i * 4), 4); } snprintf(buf2, (sizeof (char) * 40), "%s:%s:%s:%s:%s:%s:%s:%s", arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]); free(buf); free(arr); return buf2; }</code></pre> </div> </div> </div> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#retrieve-data-using-ip-number" aria-expanded="true" aria-controls="retrieve-data-using-ip-number"> How do I retrieve the IP2Location geolocation data from the IP Number? </button> </h2> <div id="retrieve-data-using-ip-number" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p> Firstly, convert the IP address to IP number format. Search using IP number to match a record that has the IP Number between the Beginning IP Number and the Ending IP Number. </p> <p> For example, IP Address "72.77.138.60" is "1213041212" in IP Number. It matched the following recordset in the database. </p> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#retrieve-data-using-coding" aria-expanded="true" aria-controls="retrieve-data-using-coding"> How do I retrieve visitor's IP address using ASP, ASP.NET, C#, VB.NET, PHP, JSP & ColdFusion? </button> </h2> <div id="retrieve-data-using-coding" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">Without Proxy Detection</h5> <span class="btn btn-copy btn-codes5 float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> ASP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="without-ip-asp-tab" data-bs-toggle="tab" data-bs-target="#without-ip-asp" class="dropdown-item active">ASP</a></li> <li><a id="without-ip-php-tab" data-bs-toggle="tab" data-bs-target="#without-ip-php" class="dropdown-item">PHP</a></li> <li><a id="without-ip-jsp-tab" data-bs-toggle="tab" data-bs-target="#without-ip-jsp" class="dropdown-item">JSP</a></li> <li><a id="without-ip-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#without-ip-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="without-ip-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#without-ip-c-sharp" class="dropdown-item">ASP .NET (C#)</a></li> <li><a id="without-ip-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#without-ip-vb-dot-net" class="dropdown-item">ASP .NET (VB)</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes5" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="without-ip-asp"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c"><% ipaddress = Request.ServerVariables("REMOTE_ADDR") %></code></pre> </div> <div class="tab-pane fade" id="without-ip-php" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><?php $ipaddress = getenv("REMOTE_ADDR"); ?></code></pre> </div> <div class="tab-pane fade" id="without-ip-jsp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><% String ipaddress = request.getRemoteAddr(); %></code></pre> </div> <div class="tab-pane fade" id="without-ip-coldfusion" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><CFCOMPONENT> <CFSET ipaddress="#CGI.Remote_Addr#"> </CFCOMPONENT></code></pre> </div> <div class="tab-pane fade" id="without-ip-c-sharp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public string IpAddress() { return Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; }</code></pre> </div> <div class="tab-pane fade" id="without-ip-vb-dot-net" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function IpAddress() IpAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR") End Function</code></pre> </div> </div> </div> <div class="panel"> <div class="panel-heading" style="background-color:#202020;padding:10px 15px;"> <h5 class="float-start" style="color:#b5b5b5;margin-top:8px;font-weight:550;">With Proxy Detection</h5> <span class="btn btn-copy btn-codes6 float-end" data-bs-toggle="tooltip"><i class="fa fa-copy" style="color:#b5b5b5;"></i></span> <div class="code-menu position-relative float-end"> <button class="btn btn-secondary btn-dropdown border-0 dropdown-toggle" style="background-color:#202020;color:#b5b5b5;" type="button" data-bs-toggle="dropdown" aria-expanded="false"> ASP </button> <ul class="dropdown-menu" role="tablist" style="right:0;left:auto;"> <li><a id="with-ip-asp-tab" data-bs-toggle="tab" data-bs-target="#with-ip-asp" class="dropdown-item active">ASP</a></li> <li><a id="with-ip-php-tab" data-bs-toggle="tab" data-bs-target="#with-ip-php" class="dropdown-item">PHP</a></li> <li><a id="with-ip-jsp-tab" data-bs-toggle="tab" data-bs-target="#with-ip-jsp" class="dropdown-item">JSP</a></li> <li><a id="with-ip-coldfusion-tab" data-bs-toggle="tab" data-bs-target="#with-ip-coldfusion" class="dropdown-item">ColdFusion</a></li> <li><a id="with-ip-c-sharp-tab" data-bs-toggle="tab" data-bs-target="#with-ip-c-sharp" class="dropdown-item">ASP .NET (C#)</a></li> <li><a id="with-ip-vb-dot-net-tab" data-bs-toggle="tab" data-bs-target="#with-ip-vb-dot-net" class="dropdown-item">ASP .NET (VB)</a></li> </ul> </div> <div class="clearfix"></div> </div> <div id="tab-codes6" class="tab-content" style="padding:0;"> <div class="tab-pane fade show active" id="with-ip-asp"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-c"><% ipaddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR") if ipaddress = "" then ipaddress = Request.ServerVariables("REMOTE_ADDR") end if %></code></pre> </div> <div class="tab-pane fade" id="with-ip-php" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><?php if (getenv("HTTP_X_FORWARDED_FOR")) { $ipaddress = getenv("HTTP_X_FORWARDED_FOR"); } else { $ipaddress = getenv("REMOTE_ADDR"); } ?></code></pre> </div> <div class="tab-pane fade" id="with-ip-jsp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><% if (request.getHeader("X_FORWARDED_FOR") == null) { String ipaddress = request.getRemoteAddr(); } else { String ipaddress = request.getHeader("X_FORWARDED_FOR"); } %></code></pre> </div> <div class="tab-pane fade" id="with-ip-coldfusion" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-php"><CFCOMPONENT> <CFIF #CGI.HTTP_X_Forwarded_For# EQ ""> <CFSET ipaddress="#CGI.Remote_Addr#"> <CFELSE> <CFSET ipaddress="#CGI.HTTP_X_Forwarded_For#"> </CFIF> </CFCOMPONENT></code></pre> </div> <div class="tab-pane fade" id="with-ip-c-sharp" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-csharp">public string IpAddress() { string strIp; strIp = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (strIp == null) { strIp = Request.ServerVariables["REMOTE_ADDR"]; } return strIp; }</code></pre> </div> <div class="tab-pane fade" id="with-ip-vb-dot-net" style="background:#2d2d2d;"> <pre id="code" style="margin-top:0;border:0;padding:1.5em;"><code style="border:0;" class="language-vbnet">Public Function IpAddress() Dim strIp As String strIp = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If strIp = "" Then strIp = Request.ServerVariables("REMOTE_ADDR") End If IpAddress = strIp End Function</code></pre> </div> </div> </div> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#perform-monthly-database-update" aria-expanded="true" aria-controls="perform-monthly-database-update"> How do I perform the semi-monthly IP2Location geolocation database update? </button> </h2> <div id="perform-monthly-database-update" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> You need to download the latest semi-monthly database from our server using your subscription account and password. The database is available in complete format. Therefore, you just need to drop the old database and replace it with the new one. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#automate-database-download" aria-expanded="true" aria-controls="automate-database-download"> Can I automate the IP2Location geolocation database update download process? </button> </h2> <div id="automate-database-download" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <p> Our subscribers can automate the download process using the free command-line script written in Perl which can be downloaded from our Web site. Please visit the following Web page for more information such as command syntax.<br /> <a href="/free/downloader" target="_blank">https://www.ip2location.com/free/downloader</a> </p> <p> Since the database is being updated every month at the beginning of the month, please download the database only once a month. </p> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2location-amazon-ami" aria-expanded="true" aria-controls="ip2location-amazon-ami"> Do you provide Amazon AMI for the IP2Location geolocation database set up? </button> </h2> <div id="ip2location-amazon-ami" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Yes. If you already have an AWS account, you can simply set up the database in just a few steps. <ul> <li><a href="https://aws.amazon.com/marketplace/pp/B00K1MWIGG" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location Geolocation MySQL Server</a></li> <li><a href="https://aws.amazon.com/marketplace/pp/B00QJEKQRS" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location Geolocation PostgreSQL Server</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2location-docker" aria-expanded="true" aria-controls="ip2location-docker"> Do you provide Docker image for the IP2Location geolocation database set up? </button> </h2> <div id="ip2location-docker" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Yes. You may download the image at the below link: <ul> <li><a href="https://registry.hub.docker.com/u/ip2location/mysql/" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location MySQL image</a></li> <li><a href="https://registry.hub.docker.com/u/ip2location/postgresql/" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location PostgreSQL image</a></li> <li><a href="https://registry.hub.docker.com/u/ip2location/mongodb/" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location MongoDB image</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2location-vagrant" aria-expanded="true" aria-controls="ip2location-vagrant"> Do you provide Vagrant Box for the IP2Location geolocation database set up? </button> </h2> <div id="ip2location-vagrant" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> Yes. You may refer to the following: <ul> <li><a href="https://vagrantcloud.com/ip2location/boxes/mysql" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location MySQL</a></li> <li><a href="https://vagrantcloud.com/ip2location/boxes/postgresql/" target="_blank" rel="nofollow" style="text-decoration:underline;">IP2Location PostgreSQL</a></li> </ul> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#test-location-using-multiple-ip-address" aria-expanded="true" aria-controls="test-location-using-multiple-ip-address"> How do I test the location with multiple IP address using IP2Location geolocation database? </button> </h2> <div id="test-location-using-multiple-ip-address" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> <a href="https://www.locaproxy.com" target="_blank">LocaProxy.com</a>. It provides multi-location HTTP proxies to help businesses test geolocation applications. This solution reduces the total cost of testing by supplying the Distributed Infrastructure as a Service. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#live-weather-forecast" aria-expanded="true" aria-controls="live-weather-forecast"> How can I use the Weather Station Code to get the live weather data or forecast? </button> </h2> <div id="live-weather-forecast" class="accordion-collapse collapse" data-bs-parent="#accordionExample"> <div class="accordion-body" style="font-size:0.87rem;"> The IP2Location databases supply the nearest Weather Station Codes and Names only. It does NOT provide live weather data or forecast data feed. However, it is possible to collect the weather information by using paid subscription from 3rd-party Web sites such as Weather.com. Please refer to their license agreement and contact them if you have any questions regarding XML weather data feed. <br /><br /> <strong>Weather.com XML Data Feed</strong> (Free for Personal Use or Paid for Commercial use)<br /> For example, if the nearest Weather Station Code for one IP address is AAXX0001 in Aruba. The following are some sample sites with custom URL to retrieve the weather information and forecast. <br /><br /> <strong>Web-based Weather Information from Other Sites</strong><br /> <a href="https://weather.com/weather/today/l/AAXX0001" target="_blank" rel="nofollow">https://weather.com/weather/today/l/AAXX0001</a><br /> <a href="https://www.theweathernetwork.com/aw/weather/-/oranjestad" target="_blank" rel="nofollow">https://www.theweathernetwork.com/aw/weather/-/oranjestad</a> </div> </div> </div><p> </p> <!-- Database section --> <h2 id="database">Database</h2> <div class="accordion mb-4" id="faqs-database"> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2location-database-setup" aria-expanded="true" aria-controls="ip2location-database-setup"> How to setup IP2Location database? </button> </h2> <div id="ip2location-database-setup" class="accordion-collapse collapse" data-bs-parent="#faqs-database"> <div class="accordion-body" style="font-size:0.87rem;"> Please select the package to learn more about the set up information: <form class="form-group col-md-6 mt-2"> <div class="input-group"> <select class="form-select form-control chosen" id="ip2location-package" aria-label="ip2location-package"> <option value="DB1" data-link="/faqs/db1-ip-country"> IP2Location™ DB1 Database</option> <option value="DB2" data-link="/faqs/db2-ip-country-isp"> IP2Location™ DB2 Database</option> <option value="DB3" data-link="/faqs/db3-ip-country-region-city"> IP2Location™ DB3 Database</option> <option value="DB4" data-link="/faqs/db4-ip-country-region-city-isp"> IP2Location™ DB4 Database</option> <option value="DB5" data-link="/faqs/db5-ip-country-region-city-latitude-longitude"> IP2Location™ DB5 Database</option> <option value="DB6" data-link="/faqs/db6-ip-country-region-city-latitude-longitude-isp"> IP2Location™ DB6 Database</option> <option value="DB7" data-link="/faqs/db7-ip-country-region-city-isp-domain"> IP2Location™ DB7 Database</option> <option value="DB8" data-link="/faqs/db8-ip-country-region-city-latitude-longitude-isp-domain"> IP2Location™ DB8 Database</option> <option value="DB9" data-link="/faqs/db9-ip-country-region-city-latitude-longitude-zipcode"> IP2Location™ DB9 Database</option> <option value="DB10" data-link="/faqs/db10-ip-country-region-city-latitude-longitude-zipcode-isp-domain"> IP2Location™ DB10 Database</option> <option value="DB11" data-link="/faqs/db11-ip-country-region-city-latitude-longitude-zipcode-timezone"> IP2Location™ DB11 Database</option> <option value="DB12" data-link="/faqs/db12-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain"> IP2Location™ DB12 Database</option> <option value="DB13" data-link="/faqs/db13-ip-country-region-city-latitude-longitude-timezone-netspeed"> IP2Location™ DB13 Database</option> <option value="DB14" data-link="/faqs/db14-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed"> IP2Location™ DB14 Database</option> <option value="DB15" data-link="/faqs/db15-ip-country-region-city-latitude-longitude-zipcode-timezone-areacode"> IP2Location™ DB15 Database</option> <option value="DB16" data-link="/faqs/db16-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode"> IP2Location™ DB16 Database</option> <option value="DB17" data-link="/faqs/db17-ip-country-region-city-latitude-longitude-timezone-netspeed-weather"> IP2Location™ DB17 Database</option> <option value="DB18" data-link="/faqs/db18-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather"> IP2Location™ DB18 Database</option> <option value="DB19" data-link="/faqs/db19-ip-country-region-city-latitude-longitude-isp-domain-mobile"> IP2Location™ DB19 Database</option> <option value="DB20" data-link="/faqs/db20-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile"> IP2Location™ DB20 Database</option> <option value="DB21" data-link="/faqs/db21-ip-country-region-city-latitude-longitude-zipcode-timezone-areacode-elevation"> IP2Location™ DB21 Database</option> <option value="DB22" data-link="/faqs/db22-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation"> IP2Location™ DB22 Database</option> <option value="DB23" data-link="/faqs/db23-ip-country-region-city-latitude-longitude-isp-domain-mobile-usagetype"> IP2Location™ DB23 Database</option> <option value="DB24" data-link="/faqs/db24-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation-usagetype"> IP2Location™ DB24 Database</option> <option value="DB25" data-link="/faqs/db25-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation-usagetype-addresstype-category"> IP2Location™ DB25 Database</option> <option value="DB26" data-link="/faqs/db26-ip-country-region-city-latitude-longitude-zipcode-timezone-isp-domain-netspeed-areacode-weather-mobile-elevation-usagetype-addresstype-category-district-asn"> IP2Location™ DB26 Database</option> </select> <button class="btn btn-primary" id="show-ip2location-setup">View</button> </div> </form> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#ip2proxy-database-setup" aria-expanded="true" aria-controls="ip2proxy-database-setup"> How to setup IP2Proxy database? </button> </h2> <div id="ip2proxy-database-setup" class="accordion-collapse collapse" data-bs-parent="#faqs-database"> <div class="accordion-body" style="font-size:0.87rem;"> Please select the package to learn more about the set up information: <form class="form-group col-md-6 mt-2"> <div class="input-group"> <select class="form-select form-control chosen" id="ip2proxy-package" aria-label="ip2proxy-package"> <option value="PX1" data-link="/faqs/px1-ip-country"> IP2Proxy™ PX1 Database</option> <option value="PX2" data-link="/faqs/px2-ip-proxytype-country"> IP2Proxy™ PX2 Database</option> <option value="PX3" data-link="/faqs/px3-ip-proxytype-country-region-city"> IP2Proxy™ PX3 Database</option> <option value="PX4" data-link="/faqs/px4-ip-proxytype-country-region-city-isp"> IP2Proxy™ PX4 Database</option> <option value="PX5" data-link="/faqs/px5-ip-proxytype-country-region-city-isp-domain"> IP2Proxy™ PX5 Database</option> <option value="PX6" data-link="/faqs/px6-ip-proxytype-country-region-city-isp-domain-usagetype"> IP2Proxy™ PX6 Database</option> <option value="PX7" data-link="/faqs/px7-ip-proxytype-country-region-city-isp-domain-usagetype-asn"> IP2Proxy™ PX7 Database</option> <option value="PX8" data-link="/faqs/px8-ip-proxytype-country-region-city-isp-domain-usagetype-asn-lastseen"> IP2Proxy™ PX8 Database</option> <option value="PX9" data-link="/faqs/px9-ip-proxytype-country-region-city-isp-domain-usagetype-asn-lastseen-threat"> IP2Proxy™ PX9 Database</option> <option value="PX10" data-link="/faqs/px10-ip-proxytype-country-region-city-isp-domain-usagetype-asn-lastseen-threat-residential"> IP2Proxy™ PX10 Database</option> <option value="PX11" data-link="/faqs/px11-ip-proxytype-country-region-city-isp-domain-usagetype-asn-lastseen-threat-residential-provider"> IP2Proxy™ PX11 Database</option> </select> <button class="btn btn-primary" id="show-ip2proxy-setup">View</button> </div> </form> </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#how-to-import-database" aria-expanded="true" aria-controls="how-to-import-database"> How to import IP2Location or IP2Proxy database? </button> </h2> <div id="how-to-import-database" class="accordion-collapse collapse" data-bs-parent="#faqs-database"> <div class="accordion-body" style="font-size:0.87rem;"> Please refer to the tutorials in <a href="https://blog.ip2location.com/knowledge-base/collection-of-ip2location-ip2proxy-csv-data-import-articles/" target="_blank">https://blog.ip2location.com/knowledge-base/collection-of-ip2location-ip2proxy-csv-data-import-articles/</a> for database import using MySQL, Microsoft SQL Server (MS-SQL), PostgreSQL, Oracle, IBM DB2, SQLite, MongoDB, Redis, Amazon DynamoDB, Amazon SimpleDB and Apache CouchDB. </div> </div> </div> </div> <p> </p> <!-- Web Service section --> <h2 id="web-service">Web Service</h2> <div class="accordion mb-4" id="faqs-webservice"> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-keyless" aria-expanded="true" aria-controls="web-service-keyless"> Do you provide keyless API lookup? </button> </h2> <div id="web-service-keyless" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> We do not provide keyless API lookup in legacy API. If you are looking for keyless API, please visit <a href="https://www.ip2location.io/pricing#ipl" target="_blank">IP2Location.io API</a>. You can perform up to 500 queries daily using the api.ip2location.io endpoint without API key to get IP geolocation information instantly. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-credit-used" aria-expanded="true" aria-controls="web-service-credit-used"> How many credits are used per IP address query? </button> </h2> <div id="web-service-credit-used" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> The number of credits used per query depends on the package parameter. The higher the package, the more credits will be deducted. If you also used the addon parameter, your credits will be deducted further. For legacy API, see <a href="https://www.ip2location.com/web-service/ip2location" target="_blank">IP2Location Web Service</a> or <a href="https://www.ip2location.com/web-service/ip2proxy" target="_blank">IP2Proxy Web Service</a> for the amount of credits that each package and/or addon will incur. <br><br> For the new <a href="https://www.ip2location.io/pricing#ipl" target="_blank">IP2Location.io API</a>, each API query made will result in a reduction of 1 credit. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#check-web-service-credit" aria-expanded="true" aria-controls="check-web-service-credit"> How do I check the number of credits that I currently left? </button> </h2> <div id="check-web-service-credit" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> You can login to your user area on our website to view the credit balance. After login, click on License on the left then click on the Web Service tab. Scroll down to your web service license to view your credit balance. Alternatively, you can call the web service with the check parameter. See example usage at <a href="https://www.ip2location.com/web-service/ip2location" target="_blank">https://www.ip2location.com/web-service/ip2location</a>. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#check-web-service-usage" aria-expanded="true" aria-controls="check-web-service-usage"> Can I see a log of my web service usage? </button> </h2> <div id="check-web-service-usage" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> Yes, just <a href="https://www.ip2location.com/license#!web-service" target="_blank">login to your user area</a> on our website. After login, click on <strong>License</strong> on the left and then click on the <strong>Web Service</strong> tab. Scroll down to your web service license. Choose "<strong>View Usage</strong>" in the action dropdown list and submit. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-enable-auto-recharge" aria-expanded="true" aria-controls="web-service-enable-auto-recharge"> How do I make sure I never run out of credits? </button> </h2> <div id="web-service-enable-auto-recharge" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> You can just enable auto recharge in the user area. <a href="https://www.ip2location.com/license#!web-service" target="_blank">Login to the user area</a>. Click on <strong>License</strong> on the left and then click on the <strong>Web Service</strong> tab. Scroll down to your web service license. Check the "<strong>Enable auto recharge</strong>" option. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-one-time-top-up" aria-expanded="true" aria-controls="web-service-one-time-top-up"> Can I make a one-time topup of credits? </button> </h2> <div id="web-service-one-time-top-up" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> You can just make another purchase of the web service credits. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-support-cors" aria-expanded="true" aria-controls="web-service-support-cors"> Does the web service support Cross-Origin Resource Sharing (CORS)? </button> </h2> <div id="web-service-support-cors" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> In the legacy API, we don't support CORS. You will need to call the web service from your backend (server side) instead of the frontend (client side). <br><br> However, CORS is available in the <a href="https://www.ip2location.io/pricing#ipl" target="_blank">IP2Location.io Starter or higher plan</a>. You can read more at our <a href="https://blog.ip2location.com/knowledge-base/understanding-cors-what-is-it-used-for/" target="_blank">blog</a>. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-sdks-supported" aria-expanded="true" aria-controls="web-service-sdks-supported"> What SDKs are supported? </button> </h2> <div id="web-service-sdks-supported" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> Most of the libraries in <a href="https://www.ip2location.com/development-libraries" target="_blank">https://www.ip2location.com/development-libraries</a> support calling the web service. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-support-zapier" aria-expanded="true" aria-controls="web-service-support-zapier"> Does the web service support Zapier? </button> </h2> <div id="web-service-support-zapier" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> Yes. For the legacy IP2Location API, please visit <a href="https://zapier.com/apps/ip2location/integrations" target="_blank">https://zapier.com/apps/ip2location/integrations</a>. <br><br> For the lates IP2Location.io API, please refer to <a href="https://zapier.com/apps/ip2location-io/integrations" target="_blank">https://zapier.com/apps/ip2location-io/integrations</a>. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-custom-credit" aria-expanded="true" aria-controls="web-service-custom-credit"> Can I purchase a custom number of credits? </button> </h2> <div id="web-service-custom-credit" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, you can only purchase credits in multiples of 100,000 credits. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-multiple-year" aria-expanded="true" aria-controls="web-service-multiple-year"> Can I buy credits with multi-year validity? </button> </h2> <div id="web-service-multiple-year" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, all credits expire 1 year from the last purchase date. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-discount" aria-expanded="true" aria-controls="web-service-discount"> Do you offer any discounts? </button> </h2> <div id="web-service-discount" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, we don't currently offer discounts. If you are doing academic research, we might be able to accomodate your needs subject to some terms & conditions. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-rate-limitation" aria-expanded="true" aria-controls="web-service-rate-limitation"> Are there any rate limitations when calling the web service? </button> </h2> <div id="web-service-rate-limitation" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, we don't have rate limitation but we will not tolerate abuse of any kind on the web service. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-sla-uptime" aria-expanded="true" aria-controls="web-service-sla-uptime"> What is your SLA for the web service uptime? </button> </h2> <div id="web-service-sla-uptime" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> We offer 99.5% of uptime in service-level agreement (SLA). You can view our track record at <a href="https://status.ip2location.com/">https://status.ip2location.com/</a>. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-unsubscribe-service" aria-expanded="true" aria-controls="web-service-unsubscribe-service"> How do I unsubscribe from the web service? </button> </h2> <div id="web-service-unsubscribe-service" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> You just need to make sure you uncheck the "<strong>Enable auto recharge</strong>" option in your user area. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-refund-unuse-credit" aria-expanded="true" aria-controls="web-service-refund-unuse-credit"> Can I get a refund for unused credits? </button> </h2> <div id="web-service-refund-unuse-credit" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, we do not give refunds for unused credits. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-what-are-add-ons" aria-expanded="true" aria-controls="web-service-what-are-add-ons"> What are Add-ons? </button> </h2> <div id="web-service-what-are-add-ons" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> Add-ons are special packages that incur additional credits but return more data for specific categories of information. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-api-key" aria-expanded="true" aria-controls="web-service-api-key"> Where do I find my API key? </button> </h2> <div id="web-service-api-key" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> You can <a href="https://www.ip2location.com/license#!web-service" target="_blank">login to your user area</a> to retrieve your API key. Click on License on the left and then click on the Web Service tab. Scroll down to your web service license to see your API key. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-unlimited-plan" aria-expanded="true" aria-controls="web-service-unlimited-plan"> Do you have an unlimited credits plan? </button> </h2> <div id="web-service-unlimited-plan" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> No, we do not have an unlimited credits plan. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-change-api-key" aria-expanded="true" aria-controls="web-service-change-api-key"> How do I change my API key? </button> </h2> <div id="web-service-change-api-key" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> If your API key has been compromised by someone, you can email us at support@ip2location.com for assistance. </div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed border-top" type="button" data-bs-toggle="collapse" data-bs-target="#web-service-send-notification" aria-expanded="true" aria-controls="web-service-send-notification"> Do you send notifications when my credits are running low? </button> </h2> <div id="web-service-send-notification" class="accordion-collapse collapse" data-bs-parent="#faqs-webservice"> <div class="accordion-body" style="font-size:0.87rem;"> Yes, when your credit balance is less than 10%, you will receive an email notification. </div> </div> </div> </div> </div> </div> </div> <!-- JSON+LD markup generated by Google FAQPage. --> <script type="application/ld+json"> { "@context":"https://schema.org", "@type":"FAQPage", "mainEntity":[{ "@type":"Question", "name":"What is the IP2Location database format?", "acceptedAnswer":[{ "@type":"Answer", "text":"The database format is known as Comma Separated Values (CSV). All fields are separated by a comma and each individual line is a record by itself. IP2Location is also available in binary format which works together with the IP2Location API in several programming languages."}]},{ "@type":"Question", "name":"What is the minus sign \"-\" in country name or country code in IP2Location database?", "acceptedAnswer":[{ "@type":"Answer", "text":"The IP2Location will display the \"-\" in country field when the IP address range is still unallocated to any countries. It is also known as reserved IP address range."}]},{ "@type":"Question", "name":"What should I do if I want to access the complete IP2Location database?", "acceptedAnswer":[{ "@type":"Answer", "text":"You can purchase it from https://www.ip2location.com/buy-online. We will generate an unique login/password to allow you to download the database for one year after we have processed your order."}]},{ "@type":"Question", "name":"What do I get if I subscribe to the IP2Location commercial database?", "acceptedAnswer":[{ "@type":"Answer", "text":"You will receive your login and password through email immediately after payment is authorized. You can use your credentials to download the database from our website at anytime. The database is in a ZIP compressed format to save your bandwidth and downloading time."}]},{ "@type":"Question", "name":"Why do we need to update the IP2Location database periodically?", "acceptedAnswer":[{ "@type":"Answer", "text":"Ownership of IP addresses change hands from time to time. Therefore, a small percentage of IP address blocks needs to be updated every year. Our database is updated semi-monthly to ensure it is always accurate."}]},{ "@type":"Question", "name":"How many countries are included in the IP2Location geolocation database? What is the accuracy?", "acceptedAnswer":[{ "@type":"Answer", "text":"The IP2Location is supporting 249 countries as recognized in ISO 3166. The IP2Location database has over 99.5% accuracy in country level detection and >75% of accuracy in city level. The inaccuracy is due to the dynamic IP address allocation by large ISPs such as AOL, MSN TV and other proxies. Due to the fact that AOL uses a network that routes all of the company's Internet traffic through Reston, Virginia, all IP-based geo-location services, including IP2Location, are unable to determine the state and city for people who dial into the AOL network. You can get the complete accuracy and coverage from data accuracy report page."}]},{ "@type":"Question", "name":"How accurate is the ISP name in every IP address block?", "acceptedAnswer":[{ "@type":"Answer", "text":"We are monitoring all new IP address range assignments. We will scan through all new IP address ranges once reported for its network name and location. This is a manual process and requires actual usage from any IP address in order for us to determine the related ISP name and location. Therefore, there might be some update delays in the database for any newly assigned IP address ranges. We strive to provide information that is as accurate as possible."}]},{ "@type":"Question", "name":"Will I receive monthly notification when the IP2Location database update is available?", "acceptedAnswer":[{ "@type":"Answer", "text":"Yes, we will deliver the notification via email when the update is available in the download area. We usually release the update on the first and fifteen day of the calendar month."}]},{ "@type":"Question", "name":"Can I redistribute the IP2Location database in my application to my clients?", "acceptedAnswer":[{ "@type":"Answer", "text":"You need to have the right type of license if you want to redistribute IP2Location database in your application. If the number of client installations are less than 20 servers, you can purchase the standard server license for them under your account. If you redistribute the software with database to more than 20 users, please visit https://www.ip2location.com/licensing and contact us for more information about Redistribution License (On Premise)."}]},{ "@type":"Question", "name":"Can I redistribute the IP2Location geolocation information in my SaaS service?", "acceptedAnswer":[{ "@type":"Answer", "text":"You need to have the right type of license if you want to redistribute IP2Location geolocation in your SaaS application. Please visit licensing and contact us for more information about Redistribution License (SaaS)."}]},{ "@type":"Question", "name":"How do I upgrade to other IP2Location database package?", "acceptedAnswer":[{ "@type":"Answer", "text":"If you are an existing subscriber of IP2Location database, you can upgrade to a higher package. You just need to pay for the difference in price if your current subscription has more than 6 months validity. The subscription period will remain unchanged based on the old subscription package after the upgrade. Please login and select the upgrade option on the License page to perform the upgrade. If your current subscription has less than 6 months left, it will be renewed first before the upgrade is performed. In other words, your subscription period will be extended for another year."}]},{ "@type":"Question", "name":"Do I need multiple IP2Location licenses?", "acceptedAnswer":[{ "@type":"Answer", "text":"IP2Location licensing is based on the number of physical machine installation. If you plan to install the IP2Location databases or software in more than one server, please acquire additional licenses during checkout. Please visit https://www.ip2location.com/licensing for more information."}]},{ "@type":"Question", "name":"How do I add licenses to existing IP2Location subscription?", "acceptedAnswer":[{ "@type":"Answer", "text":"You can login to the account area and click on the \"Add\" button right beside the license. You will need to pay for any additional license (full year) by credit card to complete the transaction."}]},{ "@type":"Question", "name":"How do I upgrade the IP2Location web service package?", "acceptedAnswer":[{ "@type":"Answer", "text":"You can upgrade the web service package in your account area under the License page. You will be paying the full amount for the package that you are upgrading to. Upon completing the payment, we will top up the new credits (based on your upgraded package) and extend your expiry date for 1 year based on your payment date."}]},{ "@type":"Question", "name":"Do you provide keyless API for IP geolocation lookup?", "acceptedAnswer":[{ "@type":"Answer", "text":"We do not provide keyless API lookup in legacy API. If you are looking for keyless API, please visit https://www.ip2location.io/pricing#ipl IP2Location.io API. You can perform up to 500 queries daily using the api.ip2location.io endpoint without API key to get IP geolocation information instantly."}]},{ "@type":"Question", "name":"How do I downgrade the IP2Location web service package?", "acceptedAnswer":[{ "@type":"Answer", "text":"You can downgrade your web service package in your account under the License page. Your package will be downgraded immediately upon clicking the downgrade button. Please note that your previously purchased credits and expiry date will still remain the same. This action will only affect you if you enabled the auto-recharge feature, as the new downgraded package will be auto recharged/renewed on the next cycle."}]},{ "@type":"Question", "name":"Can I subscribe more than one IP2Location web service package?", "acceptedAnswer":[{ "@type":"Answer", "text":"No. Each account can only subscribe for one IP2Location Web Service and one IP2Proxy Web Service. You can upgrade or downgrade your package but you can't own more than one package for each service."}]},{ "@type":"Question", "name":"Will my API key change upon upgrade or downgrade?", "acceptedAnswer":[{ "@type":"Answer", "text":"No, the API key will remain the same."}]},{ "@type":"Question", "name":"If I subscribed to the IP2Location WS10X package, can I top up the credits from a different package, such as WS?", "acceptedAnswer":[{ "@type":"Answer", "text":"No, you can only top up the credits from the same package, which is WS10X."}]},{ "@type":"Question", "name":"How do I retrieve the IP2Location geolocation data from the IP Number?", "acceptedAnswer":[{ "@type":"Answer", "text":"Firstly, convert the IP address to IP number format. Search using IP number to match a record that has the IP Number between the Beginning IP Number and the Ending IP Number. For example, IP Address \"72.77.138.60\" is \"1213041212\" in IP Number. It matched the following recordset in the database."}]},{ "@type":"Question", "name":"How do I perform the semi-monthly IP2Location geolocation database update?", "acceptedAnswer":[{ "@type":"Answer", "text":"You need to download the latest semi-monthly database from our server using your subscription account and password. The database is available in complete format. Therefore, you just need to drop the old database and replace it with the new one."}]},{ "@type":"Question", "name":"Can I automate the IP2Location geolocation database update download process?", "acceptedAnswer":[{ "@type":"Answer", "text":"Our subscribers can automate the download process using the free command-line script written in Perl which can be downloaded from our Web site. Please visit https://www.ip2location.com/free/downloader for the command syntax. Since the database is being updated every month at the beginning of the month, please download the database only once a month."}]},{ "@type":"Question", "name":"Do you provide Amazon AMI for the IP2Location geolocation database set up?", "acceptedAnswer":[{ "@type":"Answer", "text":"Yes. If you already have an AWS account, you can simply set up the database in just a few steps."}]},{ "@type":"Question", "name":"Do you provide Docker image for the IP2Location geolocation database set up?", "acceptedAnswer":[{ "@type":"Answer", "text":"Yes. You may download the image at https://registry.hub.docker.com/u/ip2location/mysql/, https://registry.hub.docker.com/u/ip2location/postgresql/ and https://registry.hub.docker.com/u/ip2location/mongodb/"}]},{ "@type":"Question", "name":"Do you provide Vagrant Box for the IP2Location geolocation database set up?", "acceptedAnswer":[{ "@type":"Answer", "text":"Yes. You may refer to https://vagrantcloud.com/ip2location/boxes/mysql and https://vagrantcloud.com/ip2location/boxes/postgresql/"}]},{ "@type":"Question", "name":"How do I test the location with multiple IP address using IP2Location geolocation database?", "acceptedAnswer":[{ "@type":"Answer", "text":"LocaProxy.com. It provides multi-location HTTP proxies to help businesses test geolocation applications. This solution reduces the total cost of testing by supplying the Distributed Infrastructure as a Service."}]},{ "@type":"Question", "name":"How can I use the Weather Station Code to get the live weather data or forecast?", "acceptedAnswer":[{ "@type":"Answer", "text":"The IP2Location databases supply the nearest Weather Station Codes and Names only. It does NOT provide live weather data or forecast data feed. However, it is possible to collect the weather information by using paid subscription from 3rd-party Web sites such as Weather.com. Please refer to their license agreement and contact them if you have any questions regarding XML weather data feed."}] }] } </script> </div> </div> <div class="pre-footer bg-dark pt-5 pb-4"> <div class="container"> <div class="row mb-5"> <div class="col-md-3 col-sm-6"> <div class="mb-2"><span style="font-size:1.31rem;font-weight:300;color:#c2c1c1">Our Site</span></div> <ul class="list-unstyled"> <li><a href="/log-in">Client Portal</a></li> <li><a href="/demo">Online Demo</a></li> <li><a href="/solutions">Solutions</a></li> <li><a href="/development-libraries">Developers</a></li> <li><a href="https://blog.ip2location.com">Blog</a></li> <li><a href="/media-kit">Media Kit</a></li> <li><a href="/newsletter">Newsletter</a></li> <li><a href="/careers">Careers</a></li> <li><a href="/feature-request">Feature Request</a></li> <li><a href="/do-not-sell">Do Not Sell My Info</a></li> <li><a href="/contact">Contact</a></li> </ul> </div> <div class="col-md-3 col-sm-6"> <div class="mb-2"><span style="font-size:1.31rem;font-weight:300;color:#c2c1c1">Database</span></div> <ul class="list-unstyled"> <li><a href="/database/ip2location">IP2Location™ Database</a></li> <li><a href="/database/ip2proxy">IP2Proxy™ Database</a></li> </ul> <br><br> <div class="mb-2"><span style="font-size:1.31rem;font-weight:300;color:#c2c1c1">Web Service</span></div> <ul class="list-unstyled"> <li><a href="https://www.ip2location.io/#ipl" target="_blank">IP2Locaton.io Web Service</a></li> <li><a href="/web-service/ip2location-batch">IP2Location™ Batch Service</a></li> <li><a href="/web-service/ip2proxy-batch">IP2Proxy™ Batch Service</a></li> </ul> </div> <div class="col-md-3 col-sm-6"> <div class="mb-2"><span style="font-size:1.31rem;font-weight:300;color:#c2c1c1">Free Tools</span></div> <ul class="list-unstyled"> <li><a href="/free/applications">Applications</a></li> <li><a href="/free/visitor-blocker">Firewall IP List</a></li> <li><a href="/free/robot-whitelist">Search Engine IP List</a></li> <li><a href="/free/visitor-redirection">Visitor Redirection</a></li> <li><a href="/free/traceroute">Traceroute</a></li> <li><a href="/free/email-tracer">Email Tracer</a></li> <li><a href="/free/downloader">Downloader Script</a></li> <li><a href="/free/plugins">Extensions / Plugins</a></li> <li><a href="/free/widgets">Widgets</a></li> <li><a href="/reports">IP Address Report</a></li> <li><a href="/country-list">World Country List</a></li> </ul> </div> <div class="col-md-3 col-sm-6"> <div class="pre-footer-subscribe-box pre-footer-subscribe-box-vertical"> <div class="mb-2"><span style="font-size:1.31rem;font-weight:300;color:#c2c1c1">Newsletter</span></div> <p class="lh-sm" style="font-size:0.9rem;color:#b0b0b0;">Subscribe to our newsletter and stay up to date with the latest news and deals!</p> <form action="/newsletter" method="post"> <div class="input-group mb-3"> <input type="text" name="emailAddress" placeholder="Email Address..." class="form-control text-light" aria-label="Enter Email Address"> <button class="btn btn-primary" type="submit" style="font-size:0.9rem;">Subscribe</button> </div> </form> </div> <a href="https://itunes.apple.com/us/app/ip2location-geolocation/id771597553?ls=1&mt=8" target="_blank" rel="nofollow noopener noreferrer"><img alt="ip2location apple app" src="https://cdn.ip2location.com/assets/img/placeholder-image.png" data-src="https://cdn.ip2location.com/assets/img/app-store.png" width="100" height="30" class="app lazy"></a> <a href="https://play.google.com/store/apps/details?id=com.ip2location.mobile" target="_blank" rel="nofollow noopener noreferrer"><img alt="ip2location android app" src="https://cdn.ip2location.com/assets/img/placeholder-image.png" data-src="https://cdn.ip2location.com/assets/img/google-play.png" width="100" height="30" class="app lazy"></a> </div> </div> <!-- TrustBox widget - Micro Review Count --> <div class="trustpilot-widget mb-2" data-locale="en-US" data-template-id="5419b6a8b0d04a076446a9ad" data-businessunit-id="585506bf0000ff0005994734" data-style-height="24px" data-style-width="100%" data-theme="dark"> <a href="https://www.trustpilot.com/review/ip2location.com" target="_blank" rel="noopener">Trustpilot</a> </div> <!-- End TrustBox widget --> </div> </div> <div class="footer bg-dark"> <div class="container"> <div class="row"> <div class="col-md-9 col-sm-9 my-auto" style="color: #b0b0b0;"> <span class="d-block mb-1" style="font-size:0.8rem;">© 2001 - 2024 <a style="color: #b0b0b0;" href="https://www.ip2location.com">IP2Location.com</a>. All Rights Reserved. <a style="color: #b0b0b0;" href="/terms">Terms of Service</a> | <a style="color: #b0b0b0;" href="/privacy-policy">Privacy Policy</a> | <a style="color: #b0b0b0;" href="/cookie-notice">Cookie Notice</a></span> </div> <div class="col-md-3 col-sm-3"> <ul class="list-unstyled list-inline d-flex align-items-end mt-3 mb-4"> <li class="me-2 me-md-auto"><a href="https://www.facebook.com/ip2location" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location Facebook"><i class="fa-brands fa-facebook" style="color: #b0b0b0;"></i></a></li> <li class="me-2 me-md-auto"><a href="https://x.com/ip2location" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location Twitter"><i class="fa-brands fa-x-twitter" style="color: #b0b0b0;"></i></a></li> <li class="me-2 me-md-auto"><a href="https://www.reddit.com/r/ip2location/" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location Reddit"><i class="fa-brands fa-reddit" style="color: #b0b0b0;"></i></a></li> <li class="me-2 me-md-auto"><a href="https://github.com/ip2location/" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location GitHub"><i class="fa-brands fa-github" style="color: #b0b0b0;"></i></a></li> <li class="me-2 me-md-auto"><a href="https://www.youtube.com/@ip2locationipgeolocation" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location YouTube"><i class="fa-brands fa-youtube" style="color: #b0b0b0;"></i></a></li> <li class="me-2 me-md-auto"><a href="https://www.instagram.com/ip2location.ip/" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location Instagram"><i class="fa-brands fa-instagram" style="color: #b0b0b0;"></i></a></li> <li><a href="https://www.linkedin.com/company/ip2location" target="_blank" rel="nofollow noopener noreferrer" aria-label="IP2Location LinkedIn"><i class="fa-brands fa-linkedin" style="color: #b0b0b0;"></i></a></li> </ul> </div> </div> </div> </div> <!-- JS File --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.1/jquery-migrate.min.js" integrity="sha512-KgffulL3mxrOsDicgQWA11O6q6oKeWcV00VxgfJw4TcM8XRQT8Df9EsrYxDf7tpVpfl3qcYD96BpyPvA4d1FDQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js" integrity="sha512-VK2zcvntEufaimc+efOYi622VN5ZacdnufnmX7zIhCPmjhKnOi9ZDMtg1/ug5l183f19gG1/cBstPO4D8N/Img==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery-slimScroll/1.3.8/jquery.slimscroll.min.js" integrity="sha512-cJMgI2OtiquRH4L9u+WQW+mz828vmdp9ljOcm/vKTQ7+ydQUktrPVewlykMgozPP+NUBbHdeifE6iJ6UVjNw5Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script defer src="https://cdn.ip2location.com/assets/js/metronic.min.js"></script> <script defer src="https://cdn.ip2location.com/assets/js/layout.min.js"></script> <script defer src="https://cdn.ip2location.com/assets/js/cart.min.js"></script> <script defer src="https://cdn.ip2location.com/assets/js/cookie-notice.js"></script> <script defer src="https://cdn.ip2location.com/assets/js/lazy.min.js"></script> <!-- TrustBox script --> <script src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script> <!-- End TrustBox script --> <!-- Google Code for Remarketing Tag --> <script> /* <![CDATA[ */ var google_conversion_id = 1072307919; var google_custom_params = window.google_tag_params; var google_remarketing_only = true; /* ]]> */ </script> <script src="https://www.googleadservices.com/pagead/conversion.js" integrity="sha384-eFBz8H40Y97Ul06uoIYKlyZ0maEseJH/IrwbgcMVxFGtH0OoPOBKsshCQrCj6DWz" crossorigin="anonymous"></script> <noscript><div style="display:inline;"><img height="1" width="1" style="border-style:none;" alt="" src="//googleads.g.doubleclick.net/pagead/viewthroughconversion/1072307919/?value=0&guid=ON&script=0"/></div></noscript> <script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.jquery.min.js" integrity="sha384-f7i3wx95GUaq/1ED3jYQs30oXd4a1nL5q5TIA77QbZdDimOMAqtQte21IkV6Nt6k" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.11/clipboard.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"></script> <script> <!-- $(function() { Layout.init(); $(".dropdown-menu .dropdown-item").click(function(){ $(this).parents(".code-menu").find('.btn-dropdown').html($(this).text()+ ' '); }); //Scroll to div when click on side menu $('#navbar-faqs .nav-sub').click(function() { var target = $(this).attr("data-target"); var id = '#'+ target; if (target){ $('html, body').animate({ scrollTop: $(id).offset().top - 90 }); } }); $('[data-bs-toggle="tooltip"]').tooltip(); var clipboard = new ClipboardJS('.btn-copy'); clipboard.on('success', function(e) { var tooltip = bootstrap.Tooltip.getInstance(e.trigger); tooltip.setContent({'.tooltip-inner': 'Copied!' }); }); $('.btn-copy').on('mouseover', function() { var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copy to clipboard'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); }).tooltip(); //Copy Sample Codes $('.btn-codes').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); //Copy Sample Codes2 $('.btn-codes2').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes2 .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); //Copy Sample Codes3 $('.btn-codes3').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes3 .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); //Copy Sample Codes4 $('.btn-codes4').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes4 .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); //Copy Sample Codes5 $('.btn-codes5').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes5 .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); //Copy Sample Codes6 $('.btn-codes6').click(function(){ if (window.getSelection && document.createRange) { // IE 9 and non-IE var activeTabId = document.querySelector('#tab-codes6 .active pre'); var range = document.createRange(); range.selectNodeContents(activeTabId); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } else if (document.body.createTextRange) { // IE < 9 var textRange = document.body.createTextRange(); textRange.moveToElementText(); textRange.select(); document.execCommand("copy"); if (document.execCommand('copy')){ var tooltip = bootstrap.Tooltip.getInstance(this); tooltip.dispose(); this.setAttribute('title', 'Copied!'); tooltip = bootstrap.Tooltip.getOrCreateInstance(this); tooltip.show(); } } }); $('#search-ip2location').on('input', function(e){ var keyword = $(this).val(); $('#ip2location-faq-list >li').each(function(){ ($(this).html().toUpperCase().indexOf(keyword.toUpperCase()) > -1) ? $(this).show() : $(this).hide(); }); }); $('#search-ip2proxy').on('input', function(e){ var keyword = $(this).val(); $('#ip2proxy-faq-list >li').each(function(){ ($(this).html().toUpperCase().indexOf(keyword.toUpperCase()) > -1) ? $(this).show() : $(this).hide(); }); }); $('#show-ip2location-setup').on('click', function() { window.location.href = $('#ip2location-package option:selected').attr('data-link') + "#database"; return false; }); $('#show-ip2proxy-setup').on('click', function() { window.location.href = $('#ip2proxy-package option:selected').attr('data-link') + "#database"; return false; }); function scrollToElement(ele) { $(window).scrollTop(ele.offset().top).scrollLeft(ele.offset().left); } // var hashv = window.location.hash.substr(1); // if (hashv != null){ // $("html, body").animate({ // scrollTop: $("." + hashv).offset().top + 'px'}, 1000, 'swing'); // $("#" + hashv).addClass("in"); // } }); //--> </script> <link rel="preload" href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&display=swap" as="style"> <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&display=swap" rel="stylesheet" type="text/css" /> <link rel="preload" href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap" as="style"> <link href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap" rel="stylesheet" type="text/css" /> <script type='application/ld+json'>{"@context":"https:\/\/schema.org","@type":"Organization","url":"https:\/\/www.ip2location.com\/","name":"IP2Location","logo":"https:\/\/www.ip2location.com\/assets\/img\/ip2location_logo.png"}</script> <script src="https://www.recaptcha.net/recaptcha/api.js?render=6LdjXpEUAAAAABG9zEnu_48EEQEdUx4hoqoaDio3" async defer></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.min.css" rel="stylesheet" type="text/css" media="screen" /> <link href="https://cdn.ip2location.com/assets/css/chosen-custom.css" rel="stylesheet" type="text/css" media="screen" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet" type="text/css" media="screen" /> </body> </html> <!-- 9c1e499c-971d-5242-84e1-d7d9baa83c40 -->