<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tal Tarik</title>
    <description>The latest articles on DEV Community by Tal Tarik (@tallytarik).</description>
    <link>https://dev.to/tallytarik</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3013757%2Fe4005967-e4d1-41f2-8831-5cbf993e362a.png</url>
      <title>DEV Community: Tal Tarik</title>
      <link>https://dev.to/tallytarik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tallytarik"/>
    <language>en</language>
    <item>
      <title>Set up country blocking with OPNsense GeoIP aliases</title>
      <dc:creator>Tal Tarik</dc:creator>
      <pubDate>Sat, 05 Jul 2025 05:18:21 +0000</pubDate>
      <link>https://dev.to/tallytarik/set-up-country-blocking-with-opnsense-geoip-aliases-471o</link>
      <guid>https://dev.to/tallytarik/set-up-country-blocking-with-opnsense-geoip-aliases-471o</guid>
      <description>&lt;p&gt;&lt;a href="https://opnsense.org/" rel="noopener noreferrer"&gt;OPNsense&lt;/a&gt; is an open source, feature rich firewall and routing platform used by home users, small businesses, and enterprises around the world. OPNsense features “GeoIP” support, which allows you to block or allow traffic from specific countries using a geolocation database.&lt;/p&gt;

&lt;p&gt;MaxMind’s GeoLite database has long been a popular choice for IP geolocation.&lt;/p&gt;

&lt;p&gt;But IPLocate’s &lt;a href="https://www.iplocate.io/free-databases" rel="noopener noreferrer"&gt;free IP to Country database&lt;/a&gt; is &lt;strong&gt;higher accuracy&lt;/strong&gt;, &lt;strong&gt;updated more often&lt;/strong&gt;, and has a &lt;strong&gt;more permissive&lt;/strong&gt; license.&lt;/p&gt;

&lt;p&gt;Here’s how to use IPLocate’s IP to Country database with OPNsense:&lt;/p&gt;

&lt;h2&gt;
  
  
  Get your database download link
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.iplocate.io/signup" rel="noopener noreferrer"&gt;Sign up for a free IPLocate account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Visit the &lt;a href="https://www.iplocate.io/account/downloads" rel="noopener noreferrer"&gt;downloads page&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Copy the link to the "IP to Country (GeoLite2-Compatible Format)" download (you can click the “Copy” icon, or right click the download link and select “Copy link address”)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foz7l25ior0f3a379vbub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foz7l25ior0f3a379vbub.png" alt=" " width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please note - this is a personal download link that includes your account’s API key. Keep it safe!&lt;/p&gt;

&lt;h2&gt;
  
  
  Set up OPNsense GeoIP to use IPLocate
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to your OPNsense dashboard&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Firewall&lt;/strong&gt; &amp;gt; &lt;strong&gt;Aliases&lt;/strong&gt; &amp;gt; &lt;strong&gt;GeoIP settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste in your personal download link from above into the &lt;strong&gt;URL&lt;/strong&gt; box, and click &lt;strong&gt;Apply&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Create a GeoIP alias in OPNsense
&lt;/h2&gt;

&lt;p&gt;To create a GeoIP alias:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Firewall&lt;/strong&gt; &amp;gt; &lt;strong&gt;Aliases&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create a new alias&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;Type&lt;/strong&gt; to &lt;strong&gt;GeoIP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure your list of countries to include or exclude&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save&lt;/strong&gt; your changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz4zjyixho1mkzb3fyuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz4zjyixho1mkzb3fyuw.png" alt=" " width="800" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! You can now use your GeoIP-based alias to block or allow traffic from specific countries.&lt;/p&gt;

&lt;p&gt;I recommend checking out the &lt;a href="https://docs.opnsense.org/manual/aliases.html#geoip" rel="noopener noreferrer"&gt;OPNsense documentation&lt;/a&gt; for more details.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>opnsense</category>
      <category>geolocation</category>
    </item>
    <item>
      <title>How to detect VPN users on your website/app</title>
      <dc:creator>Tal Tarik</dc:creator>
      <pubDate>Mon, 21 Apr 2025 07:30:41 +0000</pubDate>
      <link>https://dev.to/tallytarik/how-to-detect-vpn-users-on-your-websiteapp-43bh</link>
      <guid>https://dev.to/tallytarik/how-to-detect-vpn-users-on-your-websiteapp-43bh</guid>
      <description>&lt;p&gt;If you’re building a website or web app that needs to detect users connecting through a VPN—whether to prevent fraud, enforce geo-restrictions, or flag suspicious traffic—you can do it in just a few lines of code using &lt;a href="https://www.iplocate.io/" rel="noopener noreferrer"&gt;IPLocate&lt;/a&gt;. IPLocate provides accurate threat detection by IP address, including VPN and proxy detection.&lt;/p&gt;

&lt;p&gt;Below are some simple examples using Javascript to detect VPN usage via the IPLocate API. All you need is to &lt;a href="https://www.iplocate.io/signup" rel="noopener noreferrer"&gt;sign up for a free API key&lt;/a&gt; (no card needed, free up to 1,000 requests per day).&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Detect VPN client-side with Javascript
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://www.iplocate.io/api/lookup/?apikey=YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privacy&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privacy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;is_vpn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This user is likely using a VPN.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// You can log, flag, or block the user here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;User is not using a VPN.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This fetches IP data for the current user and checks the &lt;code&gt;privacy.is_vpn&lt;/code&gt; field—&lt;code&gt;true&lt;/code&gt; means the IP is known to be part of a VPN network.&lt;/p&gt;

&lt;p&gt;The response also includes other helpful fields like &lt;code&gt;is_proxy&lt;/code&gt;, &lt;code&gt;is_tor&lt;/code&gt;, and &lt;code&gt;is_hosting&lt;/code&gt;, which you can use for additional filtering or analysis. See the &lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;API documentation&lt;/a&gt; for details on all available fields.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Detect VPN server-side with Express.js
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-forwarded-for&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;remoteAddress&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`https://www.iplocate.io/api/lookup/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;?apikey=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privacy&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privacy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;is_vpn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`VPN detected for IP: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="c1"&gt;// Handle VPN logic here&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`No VPN detected for IP: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Request processed.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error checking VPN status:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error checking IP address.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Server running on port 3000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find other code snippets — including Python, PHP, others, and IPLocate’s official client libraries — on their &lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;docs&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;Psst: I also recently wrote about &lt;a href="https://dev.to/tallytarik/what-is-the-best-geolocation-api-in-2025-5clk"&gt;which IP geolocation API is the best in 2025&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Detect hosting providers by IP address</title>
      <dc:creator>Tal Tarik</dc:creator>
      <pubDate>Mon, 21 Apr 2025 07:18:38 +0000</pubDate>
      <link>https://dev.to/tallytarik/detect-hosting-providers-by-ip-address-abn</link>
      <guid>https://dev.to/tallytarik/detect-hosting-providers-by-ip-address-abn</guid>
      <description>&lt;p&gt;If you're running a web service, chances are you’ve asked: &lt;em&gt;“Is this IP a real user, or a server in the cloud?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Knowing whether an IP address belongs to a hosting provider — like AWS, Azure, or Google Cloud — can help you detect bots, scrapers, abuse, or even misclassified traffic.&lt;/p&gt;

&lt;p&gt;In this guide, we’ll explain what hosting providers are, why detecting them matters, and how developers can reliably determine if an IP address belongs to one — both manually and automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a hosting provider?
&lt;/h2&gt;

&lt;p&gt;A hosting provider is a company that offers infrastructure — servers, storage, bandwidth — so that websites and applications can be accessed over the internet. Today, this mostly means cloud services like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://aws.amazon.com" rel="noopener noreferrer"&gt;Amazon Web Services (AWS)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://azure.microsoft.com" rel="noopener noreferrer"&gt;Microsoft Azure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cloud.google.com" rel="noopener noreferrer"&gt;Google Cloud Platform&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These providers control large blocks of IP addresses. Traffic from them often comes from bots, crawlers, scrapers, or backend systems — not regular users browsing your site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why detect hosting providers?
&lt;/h2&gt;

&lt;p&gt;Detecting whether an IP is from a data center or hosting provider can help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  🛡 &lt;strong&gt;Mitigate bots and scrapers&lt;/strong&gt; — Block or throttle IPs that are likely running automated scripts.&lt;/li&gt;
&lt;li&gt;  🔒 &lt;strong&gt;Enhance security&lt;/strong&gt; — Catch suspicious logins or scans from known infrastructure.&lt;/li&gt;
&lt;li&gt;  📊 &lt;strong&gt;Classify and analyze traffic&lt;/strong&gt; — Know how much of your traffic is real users vs automation.&lt;/li&gt;
&lt;li&gt;  🎯 &lt;strong&gt;Target content or ads&lt;/strong&gt; — Serve different experiences based on where traffic comes from.&lt;/li&gt;
&lt;li&gt;  💰 &lt;strong&gt;Prevent abuse or fraud&lt;/strong&gt; — Hosting IPs are often used in credential stuffing, fake signups, or scraping.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Manual detection using public IP data
&lt;/h2&gt;

&lt;p&gt;Some cloud providers publish their IP ranges publicly. Developers can use this to build basic detection logic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-ranges.html" rel="noopener noreferrer"&gt;AWS IP ranges&lt;/a&gt;&lt;/strong&gt; – JSON format&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=56519" rel="noopener noreferrer"&gt;Microsoft Azure IP ranges&lt;/a&gt;&lt;/strong&gt; – CSV/XML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can download and parse these lists to check if an IP falls within a known range. But this approach has downsides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  IP lists change often — you’ll need to update regularly&lt;/li&gt;
&lt;li&gt;  Some providers don’t publish their ranges&lt;/li&gt;
&lt;li&gt;  Many smaller or regional hosts aren’t covered&lt;/li&gt;
&lt;li&gt;  Matching and maintaining CIDR checks at scale is tricky&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Automatically detect hosting providers using IPLocate
&lt;/h2&gt;

&lt;p&gt;Instead of maintaining your own data, &lt;a href="https://www.iplocate.io/" rel="noopener noreferrer"&gt;IPLocate&lt;/a&gt; provides an API that does it for you — with accurate, fast results.&lt;/p&gt;

&lt;p&gt;You can check if an IP belongs to a hosting provider using:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;privacy.is_hosting&lt;/code&gt; flag
&lt;/h3&gt;

&lt;p&gt;A simple boolean (&lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;) that tells you if the IP is from a hosting provider or datacenter.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;hosting&lt;/code&gt; object
&lt;/h3&gt;

&lt;p&gt;For IP addresses that belong to hosting providers, the &lt;code&gt;hosting&lt;/code&gt; object provides more detailed info:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"privacy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_hosting"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"hosting"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Amazon AWS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"amazonaws.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"54.239.16.0 - 54.239.31.255"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lets you not just detect, but &lt;em&gt;identify&lt;/em&gt; the hosting source — useful for dashboards, logs, or dynamic rules.&lt;/p&gt;

&lt;p&gt;You can find more about the response format in IPLocate’s &lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;API docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;IPLocate updates its hosting provider data daily, using a unique algorithm that identifies hundreds of smaller hosting providers as well as the big players.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Detecting a hosting provider with IPLocate
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;curl&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://www.iplocate.io/api/lookup/54.239.28.85?apikey&lt;span class="o"&gt;=&lt;/span&gt;your_api_key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using Node.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iplocate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-iplocate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;iplocate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;54.239.28.85&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;privacy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;is_hosting&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hosting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// "Amazon AWS"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use &lt;code&gt;fetch&lt;/code&gt;, Python, PHP, and other SDKs. See IPLocate’s full client library list in their &lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it into practice
&lt;/h2&gt;

&lt;p&gt;Here are a few ways developers use this in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Blocking hosting IPs from hitting public APIs&lt;/li&gt;
&lt;li&gt;  Flagging suspicious login attempts from cloud networks&lt;/li&gt;
&lt;li&gt;  Scoring traffic risk in fraud detection systems&lt;/li&gt;
&lt;li&gt;  Analyzing visitor types in dashboards&lt;/li&gt;
&lt;li&gt;  Automatically banning scrapers and crawlers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because IPLocate updates its IP intelligence daily — combining public and proprietary data — it stays accurate even as providers shift their allocations.&lt;/p&gt;

&lt;p&gt;Looking to detect cloud or hosting traffic fast? &lt;a href="https://www.iplocate.io/" rel="noopener noreferrer"&gt;Try IPLocate’s API&lt;/a&gt; — no need to parse and maintain giant IP lists. Just one HTTP request gives you everything you need.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What is the best Geolocation API in 2025?</title>
      <dc:creator>Tal Tarik</dc:creator>
      <pubDate>Sat, 19 Apr 2025 04:17:52 +0000</pubDate>
      <link>https://dev.to/tallytarik/what-is-the-best-geolocation-api-in-2025-5clk</link>
      <guid>https://dev.to/tallytarik/what-is-the-best-geolocation-api-in-2025-5clk</guid>
      <description>&lt;p&gt;In today’s digital world, knowing where your users are coming from is more important than ever. Whether you're personalizing content, improving security, or preventing fraud, IP geolocation is a key tool.&lt;/p&gt;

&lt;p&gt;But with so many providers out there, picking the right one can be tough. In this post, we break down some of the top IP geolocation services leading the market in 2025. We'll look at their features, strengths, and how users rate them, so you can make a smart choice for your needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR: Top IP geolocation providers
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;a href="https://www.iplocate.io" rel="noopener noreferrer"&gt;IPLocate&lt;/a&gt; — Great accuracy, generous free tier, downloadable databases, and pricing options for all budgets&lt;/li&gt;
&lt;li&gt; &lt;a href="https://ipinfo.io" rel="noopener noreferrer"&gt;IPinfo&lt;/a&gt; — High-quality data, but expensive&lt;/li&gt;
&lt;li&gt; &lt;a href="https://ipstack.com" rel="noopener noreferrer"&gt;IPstack&lt;/a&gt; — Robust API with scalable infrastructure&lt;/li&gt;
&lt;li&gt; &lt;a href="https://www.maxmind.com" rel="noopener noreferrer"&gt;MaxMind GeoIP&lt;/a&gt; — Long-standing provider with a comprehensive IP database, but low-quality free tier and expensive paid tiers&lt;/li&gt;
&lt;li&gt; &lt;a href="https://ipgeolocation.io" rel="noopener noreferrer"&gt;IPGeolocation.io&lt;/a&gt; — Unique APIs like Astronomy and Timezone&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Best IP geolocation providers reviewed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  IPLocate
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv1usbygarqo5rkcbgen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffv1usbygarqo5rkcbgen.png" alt="IPLocate website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPLocate is a provider committed to delivering &lt;strong&gt;industry-leading accuracy&lt;/strong&gt; in IP geolocation. They mention having proprietary algorithms and sophisticated network analysis techniques to ensure the most precise location data available. IPLocate also has a global network of API servers, so they can provide very fast responses, crucial for real-time applications.&lt;/p&gt;

&lt;p&gt;Beyond geolocation data, IPLocate also offers a range of other data available at no extra cost:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Threat detection data — proxy detection, VPN detection, Tor and iCloud Private Relay detection&lt;/li&gt;
&lt;li&gt;  ASN (IP Whois) data&lt;/li&gt;
&lt;li&gt;  Company data (Company type, domain, name)&lt;/li&gt;
&lt;li&gt;  Abuse contact data&lt;/li&gt;
&lt;li&gt;  Hosting data (Hosting or datacenter provider, service, network)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows businesses to gain a holistic understanding of their users, protect themselves from malicious actors, and more.&lt;/p&gt;

&lt;p&gt;Additionally, IPLocate offers &lt;a href="https://iplocate.io/free-databases" rel="noopener noreferrer"&gt;free downloadable IP to Country and IP to ASN databases&lt;/a&gt; for offline use. These come with no restrictions on usage, and unlike other providers, IPLocate does not artificially reduce the accuracy of these databases — they are the same high-accuracy, daily-updated data we serve with our API.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.g2.com/products/iplocate/reviews" rel="noopener noreferrer"&gt;Users say&lt;/a&gt; these are the best features of IPLocate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Industry-leading accuracy&lt;/li&gt;
&lt;li&gt;  Operating since 2017&lt;/li&gt;
&lt;li&gt;  Daily data updates&lt;/li&gt;
&lt;li&gt;  24/7 customer support&lt;/li&gt;
&lt;li&gt;  Fast API response times thanks to a global server network&lt;/li&gt;
&lt;li&gt;  Comprehensive IP address data (country, city, region, currency, timezone,hosting, spam, threat, company, ASN, abuse, Tor, VPN)&lt;/li&gt;
&lt;li&gt;  All extra IP enrichment &amp;amp; intelligence data at no extra cost&lt;/li&gt;
&lt;li&gt;  Free, high-quality, daily-updated downloadable IP to Country and IP to ASN databases&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IPLocate pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 1,000 requests/day, no credit card required&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  $29/month - 75,000 requests/month&lt;/li&gt;
&lt;li&gt;  $49/month - 300,000 requests/month&lt;/li&gt;
&lt;li&gt;  $149/month - 1 million requests/month&lt;/li&gt;
&lt;li&gt;  $249/month - 2 million requests/month (best price = &lt;strong&gt;$1.25 per 10,000 requests&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Quick start and documentation
&lt;/h4&gt;

&lt;p&gt;IPLocate offers &lt;a href="https://iplocate.io/docs" rel="noopener noreferrer"&gt;comprehensive documentation&lt;/a&gt; to help you get started.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://www.iplocate.io/api/lookup/8.8.8.8?apikey&lt;span class="o"&gt;=&lt;/span&gt;YOUR_API_KEY
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;a href="https://iplocate.io/signup" rel="noopener noreferrer"&gt;Get a free API key to start using IPLocate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://iplocate.io/docs" rel="noopener noreferrer"&gt;View the IPLocate docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Javascript example
&lt;/h4&gt;

&lt;p&gt;Fetching a user's IP address and geolocation data with Javascript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://www.iplocate.io/api/lookup?apikey=YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="cm"&gt;/*
{
  "ip": "123.243.246.200",
  "country": "Australia",
  "country_code": "AU",
  // ... See full response example below
}
*/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Full data sample
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ip"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.243.246.200"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Australia"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AU"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"is_eu"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sydney"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"continent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Oceania"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"latitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;-33.8672&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"longitude"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;151.1997&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"time_zone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Australia/Sydney"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"postal_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2049"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"subdivision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"New South Wales"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"subdivision2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"currency_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AUD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"calling_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"61"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.243.240.0/20"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"asn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"asn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AS7545"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"route"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.243.246.0/24"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"netname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TPG-INTERNET-AP"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TPG Telecom Limited"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"country_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AU"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tpgtelecom.com.au"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"isp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"APNIC"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"privacy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_abuser"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_anonymous"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_bogon"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_datacenter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_icloud_relay"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_proxy"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_tor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_vpn"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TPG Telecom"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"www.tpgtelecom.com.au"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"country_code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AU"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"isp"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"abuse"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"address"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TPG Internet Pty Ltd., (Part of the Total Peripherals Group), 65 Waterloo Road, North Ryde NSW 2113"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"hostmaster@tpgtelecom.com.au"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ABUSE TPGCOMAU"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"123.243.246.192 - 123.243.246.223"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"+000000000"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  IPinfo
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq8flrfuunkgosivlpkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq8flrfuunkgosivlpkh.png" alt="IPinfo website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPinfo (ipinfo.io) markets itself as an "all your IP data in one place" solution. They claim to update their data as frequently as daily, offering APIs and downloadable datasets that include details for ASNs, companies, carriers, IP ranges, domains, abuse contacts, and hosting.&lt;/p&gt;

&lt;p&gt;Users have praised IPinfo for delivering reliable and precise location data, along with enriched metadata encompassing an IP's origin, connections, and circumstances. They highlight the daily data updates and enterprise-grade API with bank-level security. IPinfo emphasizes its &lt;strong&gt;innovative Probe Network&lt;/strong&gt;, which they state informs their geolocation data and sets a standard for IP data excellence.&lt;/p&gt;

&lt;p&gt;That said, pricing is a concern for some users - IPinfo is often &lt;strong&gt;orders of magnitude more expensive&lt;/strong&gt; than other providers, and they &lt;strong&gt;restrict the data available&lt;/strong&gt; on all but their most expensive plans. For example, their $99/month plan only includes geolocation and ASN data. Also, in 2025, IPinfo drastically limited the utility of their free tier, limiting accuracy only to the country level. Some users also mentioned that their multiple APIs were confusing to use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Good IP data coverage&lt;/li&gt;
&lt;li&gt;  Daily data updates&lt;/li&gt;
&lt;li&gt;  Enriched metadata&lt;/li&gt;
&lt;li&gt;  Company information&lt;/li&gt;
&lt;li&gt;  Mobile carrier detection&lt;/li&gt;
&lt;li&gt;  Abuse contact API&lt;/li&gt;
&lt;li&gt;  IP Whois API&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IPinfo pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — unlimited requests, but limited to country-level data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $99/month for 150k requests/month, or &lt;strong&gt;$6.60 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Note: Data is &lt;strong&gt;heavily limited&lt;/strong&gt; on all but the most expensive plans. For all data, $499/month for 500k requests/month (or &lt;strong&gt;$9.90 per 10,000 requests&lt;/strong&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  IPstack
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53tj52g1dk1zcqposbs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F53tj52g1dk1zcqposbs8.png" alt="IPstack website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPstack positions itself as a robust IP geolocation API known for offering real-time location data with high accuracy. They highlight support for both IPv4 and IPv6 addresses, along with security modules and currency detection.&lt;/p&gt;

&lt;p&gt;According to their claims, IPstack provides fast response times and high uptime reliability. They emphasize their world-class API documentation and scalable infrastructure, catering to businesses from startups to large corporations. IPstack also mentions partnerships with large ISPs to ensure accurate and consistent geolocation data.&lt;/p&gt;

&lt;p&gt;Users have praised IPstack for its ease of setup and integration, particularly with platforms like Zapier. IPstack offers a range of pricing options, including a free tier, making it accessible to a broad spectrum of users.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Real-time location data&lt;/li&gt;
&lt;li&gt;  High accuracy&lt;/li&gt;
&lt;li&gt;  Support for both IPv4 and IPv6 addresses&lt;/li&gt;
&lt;li&gt;  Security modules&lt;/li&gt;
&lt;li&gt;  Currency and timezone detection&lt;/li&gt;
&lt;li&gt;  Great API documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IPstack pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 100 requests/month&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $12.99/month for 50k requests/month, or &lt;strong&gt;$2.58 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  MaxMind
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv77p44zqpb0s3gxd007b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv77p44zqpb0s3gxd007b.jpg" alt="MaxMind screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MaxMind is a major name in IP geolocation and fraud detection. They offer IP geolocation and fraud detection services, which use machine learning to identify high-risk IPs and deliver accurate location data.&lt;/p&gt;

&lt;p&gt;With over 20 years in the business, MaxMind claims to cover an extensive 99.9999% of IP addresses currently in use. The company offers its services through both web services and downloadable database. MaxMind also offers a free "GeoLite" product, in both web services and downloadable database format. However, this product offers substantially less data than their paid offerings or other competitors.&lt;/p&gt;

&lt;p&gt;Users have praised MaxMind for its comprehensive IP database. However, they have also criticized the company for its high pricing and limited data on the free tier. The free GeoLite2 databases, although widespread in usage, are widely seen by users to be low-quality. They are also updated less often than other providers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Comprehensive IP database&lt;/li&gt;
&lt;li&gt;  Advanced fraud detection features&lt;/li&gt;
&lt;li&gt;  Machine learning-backed risk assessment&lt;/li&gt;
&lt;li&gt;  Geolocation and anonymizer detection data&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  MaxMind pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 1,000 requests/day, but with a lower quality set of data&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Depends on data. Country-level data starts at $0.0001 per query (&lt;strong&gt;$1 per 10,000 requests&lt;/strong&gt;), up to $0.002 per query for all data (&lt;strong&gt;$20 per 10,000 requests&lt;/strong&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Abstract API
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd90uk0saahnb551m9w4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd90uk0saahnb551m9w4b.png" alt="Abstract API website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abstract API offers a streamlined and lightweight geolocation API specifically designed for developers who require a quick and straightforward method for performing real-time IP address lookups without significant overhead. The API emphasizes its simplicity and the delivery of fast, accurate results, providing essential location data such as the country, region, city, and timezone associated with an IP address.&lt;/p&gt;

&lt;p&gt;In addition to its core geolocation capabilities, Abstract API highlights its security features, which include VPN detection to help users minimize risks and prevent abuse.&lt;/p&gt;

&lt;p&gt;Users have reported that the API is easy to set up and integrate into their applications, and they appreciate its well-documented nature, complete with code snippets for various programming languages. The service is also noted for its reliable uptime.&lt;/p&gt;

&lt;p&gt;However, users have reported that the API is not as accurate as other providers. Some users have also noted the sales tactics used by the company, described by some as "confusing" and "predatory". The service also offers less comprehensive security and threat information than other providers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Simple and lightweight API&lt;/li&gt;
&lt;li&gt;  Easy setup and integration&lt;/li&gt;
&lt;li&gt;  Reliable uptime&lt;/li&gt;
&lt;li&gt;  Offers complementary APIs - timezone, exchange rates, web scraping&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Abstract API pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Non-ongoing — only 100 requests&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $19/month for 400,000 requests/month, or &lt;strong&gt;$0.475 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPGeolocation.io
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog32wd78bu6uqdth5r6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fog32wd78bu6uqdth5r6g.png" alt="IPGeolocation website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A newer player in the IP geolocation space, IPGeolocation.io promotes itself as having the "best free tier" among IP geolocation APIs, offering a substantial limit of up to 30,000 requests per month. The service claims to provide a comprehensive set of data, including geolocation, time zone, currency information, and Autonomous System Number (ASN) details, along with security insights such as proxy detection. This combination of features and a generous free tier makes it an attractive option for users with budget constraints.&lt;/p&gt;

&lt;p&gt;IPGeolocation.io also emphasizes its multi-language support and real-time IP geolocation capabilities. The service also offers interesting additional APIs like Astronomy and Timezone APIs.&lt;/p&gt;

&lt;p&gt;However, some users have reported potential inaccuracies in detecting the location of cloud providers. Some users have also noted that the API is not as fast as other providers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Generous free tier&lt;/li&gt;
&lt;li&gt;  Multi-language support&lt;/li&gt;
&lt;li&gt;  RDNS and domain lookup support&lt;/li&gt;
&lt;li&gt;  Additional APIs - Astronomy, Timezone, Time Conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IPGeolocation.io pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 30,000 requests/month&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $15/month for 150,000 requests/month, or &lt;strong&gt;$1 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Note: Data is limited on the lowest paid plan. Requires $65/month plan for full API data.&lt;/p&gt;

&lt;h3&gt;
  
  
  ipdata.co
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F167e74fzlnk3234v0dqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F167e74fzlnk3234v0dqn.png" alt="ipdata website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ipdata.co emphasizes its comprehensive IP data offerings, including geolocation data, OSINT blocklists for threat intelligence, Autonomous System Number (ASN) information, and company details. Higher-tier plans extend these features by adding commercial blocklists, VPN detection capabilities, and machine learning-powered IP reputation scores. A key aspect of IPData's appeal is its developer-friendly API, which is characterized by well-documented URLs and query parameters, along with official libraries for popular programming languages. The service also boasts fast response times, and operates out of 11 Amazon Web Services (AWS) data centers distributed globally.&lt;/p&gt;

&lt;p&gt;Users have praised the API for its comprehensive data and fast response times.&lt;/p&gt;

&lt;p&gt;However, some users have noted that the documentation and changelogs were last updated several years ago (as of April 2025), and so the data and information may be outdated or stale. Some users also noted that the claim to offer all data features across all subscription tiers is not entirely true, as company data and some threat intelligence blocklist data is only available on higher-tier plans.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Comprehensive IP data (geolocation, threat intelligence, ASN, company)&lt;/li&gt;
&lt;li&gt;  Developer-friendly API&lt;/li&gt;
&lt;li&gt;  Fast response times&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ipdata.co pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 1500 requests/day. ⚠️ Unlike other providers, ipdata.co free tier is restricted to non-commercial use only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $10/month for 2,500 requests/day, or &lt;strong&gt;$1.33 per 10,000 requests/month&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IP2Location
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l4tcr7bsqfv3fi1rdch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2l4tcr7bsqfv3fi1rdch.png" alt="IP2Location website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IP2Location (ip2location.com) has established itself as a leading IP geolocation service provider since its inception in 2002. The company offers a broad spectrum of IP address data, encompassing over 80 distinct data points. IP2Location delivers its services through various methods, including downloadable databases, APIs for real-time lookups, and bulk data processing options, catering to a wide range of user needs and technical infrastructures.&lt;/p&gt;

&lt;p&gt;The company claims high accuracy rates, with over 99.5% accuracy at the country level and more than 75% at the city level. IP2Location also provides proxy and VPN detection capabilities to assist in preventing fraud and mitigating security threats. Additionally, a free LITE version of their database is available, offering basic IP address information.&lt;/p&gt;

&lt;p&gt;Users like the service's VPN detection capabilities and detailed geolocation data. Users have also appreciated the service's free tier, but noted the free tier's lack of CORS support. Some users have commented that the geolocation data is sometimes outdated. Also, users have expressed concern about the complexity of their paid database offerings, which come in 26 different combinations for upwards of $30,000/year.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Generous free tier&lt;/li&gt;
&lt;li&gt;  Over 80 data points&lt;/li&gt;
&lt;li&gt;  Easy to integrate&lt;/li&gt;
&lt;li&gt;  Free and paid database offerings&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IP2Location pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 50,000 requests/month&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $49/month for 150,000 requests/month, or &lt;strong&gt;$3.26 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  BigDataCloud
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l5a686nay4cqm62n3ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6l5a686nay4cqm62n3ai.png" alt="BigDataCloud website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BigDataCloud emphasizes its superior IP Geolocation data, accuracy, and speed, achieved through its patented "Next Generation IP Geolocation" technology. The company provides factual, daily-updated IP Geolocation results delivered via a scalable, globally distributed network of APIs. BigDataCloud claims to offer high-quality, expanded data that goes beyond basic geolocation, including operational area, location point estimation, locality details, demographics, and currency information.&lt;/p&gt;

&lt;p&gt;BigDataCloud's accuracy is assessed using a "confidence area," which represents the geographical area likely served by an IP address. The company also provides daily reports on the accuracy of their data compared to other providers.&lt;/p&gt;

&lt;p&gt;Users reported that the API was fast and accurate, and that BigDataCloud's documentation was clear and easy to understand. Some users noted that the service's multiple APIs were confusing. Although BigDataCloud uses a "patented" technology, users mention it is not clear how this technology is used to achieve the claimed accuracy and speed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Frequent data updates&lt;/li&gt;
&lt;li&gt;  Patented geolocation technology&lt;/li&gt;
&lt;li&gt;  Global API network&lt;/li&gt;
&lt;li&gt;  Reverse geocoding API&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  BigDataCloud pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 10,000 requests/month&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at $29.95/month for 100,000 requests/month, or &lt;strong&gt;$3 per 10,000 requests&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  IP-API
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwdvf4n24yzeycg9njzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwdvf4n24yzeycg9njzs.png" alt="ip-api website screenshot" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IP-API is presented as a simple, fast, accurate, and reliable IP Geolocation API that offers a free tier for non-commercial use, requiring no API key. For users with commercial applications or higher volume needs, paid plans are available that offer unlimited requests, making it a scalable solution for a wide range of use cases.&lt;/p&gt;

&lt;p&gt;The API is designed for easy integration and supports various data formats, including JSON, XML, CSV, Newline, and PHP, providing flexibility for developers working with different technologies. IP-API claims real response times of under 50 milliseconds in most parts of the world, supported by dedicated servers located in the US, EU, and APAC regions.&lt;/p&gt;

&lt;p&gt;While providing less comprehensive data than other offerings, IP-API presents a simple and easy to use API that is suitable for basic IP geolocation requirements. Unlike other providers, IP-API offers unlimited requests in paid plans. However, the free tier's restriction to non-commercial use may present barriers for some use cases.&lt;/p&gt;

&lt;h4&gt;
  
  
  Top features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Multiple data formats&lt;/li&gt;
&lt;li&gt;  Free tier for non-commercial use&lt;/li&gt;
&lt;li&gt;  Paid plan with unlimited requests&lt;/li&gt;
&lt;li&gt;  Low latency (under 50ms)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IP-API pricing
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Yes — 45 requests/minute. ⚠️ Unlike other providers, IP-API free tier is restricted to non-commercial use only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paid plans:&lt;/strong&gt; Starting at US$15/month for &lt;strong&gt;unlimited&lt;/strong&gt; requests. (converted from 13.3 EUR/month)&lt;/p&gt;

&lt;h2&gt;
  
  
  Important considerations when choosing an IP geolocation provider
&lt;/h2&gt;

&lt;p&gt;When selecting an IP geolocation provider, several key aspects should be carefully evaluated to ensure the chosen service meets your specific needs and provides the best value. Here's a breakdown of important functionalities and considerations based on our research:&lt;/p&gt;

&lt;h3&gt;
  
  
  Accurate geolocation data
&lt;/h3&gt;

&lt;p&gt;At the core of any IP geolocation service is the accuracy of its location data. Precise IP location accuracy is fundamental for various applications, from tailoring user experiences with location-specific content to enabling precise ad targeting and playing a vital role in fraud prevention. Regulatory compliance and analytics also rely on accurate location data.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.iplocate.io/products/ip-data-api" rel="noopener noreferrer"&gt;best APIs&lt;/a&gt; offer real-time updates, often with city-level precision, and utilize frequent data refreshes from global data collection networks. Consider the provider's methodology for ensuring accuracy, including their data sources and update frequency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.iplocate.io" rel="noopener noreferrer"&gt;IPLocate&lt;/a&gt; prides itself on industry-leading accuracy achieved through proprietary algorithms and network analysis methods.&lt;/p&gt;

&lt;h3&gt;
  
  
  ISP and connection details
&lt;/h3&gt;

&lt;p&gt;Information about a user's internet connection, such as the Internet Service Provider (ISP) name and Autonomous System Number (ASN), can provide valuable context. This data can be used to detect potentially malicious activities and find abuse contact details, tailor services based on connection type, and aid in compliance efforts.&lt;/p&gt;

&lt;p&gt;IPinfo, for example, highlights the enriched metadata they provide, including ASN details. Consider if your use case could benefit from these additional layers of information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy detection and anonymity insights
&lt;/h3&gt;

&lt;p&gt;Detecting the use of VPNs, proxies, Tor nodes, and other anonymizers is crucial for many applications, especially those focused on security and fraud prevention. While it's often impossible to pinpoint the true location behind a VPN, identifying the use of such tools allows for flagging or blocking suspicious IPs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;Many IP geolocation APIs&lt;/a&gt; offer features to detect these anonymization methods. IPLocate includes VPN and proxy detection as part of its &lt;a href="https://www.iplocate.io/docs#data-privacy-data" rel="noopener noreferrer"&gt;security features&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Custom data fields and enrichment
&lt;/h3&gt;

&lt;p&gt;Depending on your specific requirements, the ability to customize the API response to include only the data points relevant to your needs can be highly beneficial. This streamlines data processing and ensures you receive targeted, actionable insights.&lt;/p&gt;

&lt;p&gt;Consider if the provider offers options for data enrichment beyond basic geolocation, such as company information or threat scores.&lt;/p&gt;

&lt;h3&gt;
  
  
  Global coverage and high availability
&lt;/h3&gt;

&lt;p&gt;For businesses with a global reach, comprehensive coverage across all regions and support for both IPv4 and IPv6 addresses are essential.&lt;/p&gt;

&lt;p&gt;Furthermore, a reliable API with minimal downtime is critical for uninterrupted access to essential geolocation data. IPstack, for instance, claims high uptime reliability. Evaluate the provider's infrastructure and service level agreements (SLAs) if high availability is a priority.&lt;/p&gt;

&lt;h3&gt;
  
  
  Secure and scalable API infrastructure
&lt;/h3&gt;

&lt;p&gt;As your application grows, the IP geolocation API should be able to handle increasing query volumes without performance degradation. Look for providers with the ability to scale to meet your demands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.iplocate.io/products/ip-data-api" rel="noopener noreferrer"&gt;IPLocate's&lt;/a&gt; globally distributed server network is designed for fast lookups and scalability.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer-friendly API documentation and support
&lt;/h3&gt;

&lt;p&gt;Clear, comprehensive, and up-to-date &lt;a href="https://www.iplocate.io/docs" rel="noopener noreferrer"&gt;API documentation&lt;/a&gt; is vital for smooth integration. Features like code samples in multiple languages and interactive documentation can significantly enhance the developer experience. &lt;/p&gt;

&lt;p&gt;Responsive and helpful customer support is also crucial for addressing any implementation challenges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time zone detection
&lt;/h3&gt;

&lt;p&gt;Knowing a user's time zone can be useful for delivering personalized, context-aware experiences, such as scheduling communications or displaying accurate local times. &lt;/p&gt;

&lt;p&gt;Several providers, including IPLocate and IPstack, offer timezone detection as part of their services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Language and currency identification
&lt;/h3&gt;

&lt;p&gt;For e-commerce platforms and content providers, identifying a user's preferred language and local currency can significantly improve user experience by displaying prices and content in a relevant format. IPLocate includes currency detection in its features.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional features
&lt;/h3&gt;

&lt;p&gt;Beyond these core considerations, various providers offer additional features that might be valuable depending on your specific use case. These include hosting detection, which can help identify if an IP address belongs to a hosting provider, and threat detection capabilities to identify potentially malicious IPs. IPLocate offers a comprehensive suite of IP address data, including hosting and spam detection, threat detection, and company and ASN data.&lt;/p&gt;

&lt;p&gt;By carefully considering these factors and comparing the offerings of different providers, you can select the IP geolocation service that best aligns with your technical and business requirements in 2025.&lt;/p&gt;

</description>
      <category>api</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
