<?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: deep</title>
    <description>The latest articles on DEV Community by deep (@bexdeep_45).</description>
    <link>https://dev.to/bexdeep_45</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%2F579366%2Fa72b4013-f9c2-42b4-9b38-0dda04bf5eab.png</url>
      <title>DEV Community: deep</title>
      <link>https://dev.to/bexdeep_45</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bexdeep_45"/>
    <language>en</language>
    <item>
      <title>Creating email verification function on Google Sheet using GoogleApp Script</title>
      <dc:creator>deep</dc:creator>
      <pubDate>Mon, 06 Dec 2021 04:32:36 +0000</pubDate>
      <link>https://dev.to/bexdeep_45/creating-email-verification-function-on-google-sheet-using-googleapp-script-41np</link>
      <guid>https://dev.to/bexdeep_45/creating-email-verification-function-on-google-sheet-using-googleapp-script-41np</guid>
      <description>&lt;p&gt;Whether you are managing your customer's data or planning to launch your email marketing campaigns, validating and cleaning customer's email address is a tedious task.&lt;/p&gt;

&lt;p&gt;There are many tools available to verify email addresses. But there is nothing as useful as having a 'verify email' function in your Google Sheet. It can save time and make email verification process as easy as using any of the standard Google Sheet's function. &lt;/p&gt;

&lt;p&gt;You can use any email verification API or services, but I will be using BigDataCloud's free email verification API. You can access this API for free by &lt;a href="https://www.bigdatacloud.com/account/" rel="noopener noreferrer"&gt;creating a free account&lt;/a&gt; and can use 1,000 queries per month for free. You can find more details about &lt;a href="https://www.bigdatacloud.com/packages/phone-email-verification" rel="noopener noreferrer"&gt;BigDataCloud's email verification API here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So if you have the API endpoints and the API key, let's get started. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: You need to have a gmail account.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Open a new Google Sheet
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fqhmxo8qd4xt5h6ao74th.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fqhmxo8qd4xt5h6ao74th.png" alt="Screenshot Google Sheet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Click on Apps Script from Extension menu
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Ffw9on8f4z2ve3xj5d6zh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ffw9on8f4z2ve3xj5d6zh.png" alt="Screenshot Google Apps Script"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a console where you will be defining your email verification function. The function defined in this module will be available by default to only this spreadsheet. &lt;/p&gt;

&lt;p&gt;Give the AppsScript a name and define a function.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Define Email Verification Function
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2F7kd4d7xp12yb0gjhukno.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F7kd4d7xp12yb0gjhukno.png" alt="Email Verification Function"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function emailIsValid(input) {

var url = 'https://api.bigdatacloud.net/data/email-verify'
  + '?emailAddress=' + input
  + '&amp;amp;key=APIKEY';

var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});

// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
return data.isValid;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function above takes a single argument called input (email address) and returns a boolean data. &lt;/p&gt;

&lt;p&gt;Inside the function, we are calling BigDataCloud's API and parsing through its output data to return the value. If you are using any other API, please use their endpoints and the data objects to parse the result. &lt;/p&gt;

&lt;p&gt;Below is the standard output data of BigDataCloud's email verification API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"inputData": "email@domain.com",
"isValid": true,
"isSyntaxValid": true,
"isMailServerDefined": true,
"isKnownSpammerDomain": false,
"isDisposable": false
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Run your code
&lt;/h2&gt;

&lt;p&gt;On the toolbar click on Run button.&lt;br&gt;
&lt;a href="https://media.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%2F9jhvh1yg8ur9w448j3mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9jhvh1yg8ur9w448j3mg.png" alt="Run button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for sometime before it starts asking you to provide permission to execute the code. Follow the instruction from the Google and provide necessary permissions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fitavxm6rrel1s55w5wgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fitavxm6rrel1s55w5wgi.png" alt="Google Appscript Authentication"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the execution is complete you should see Execution Log as below:&lt;br&gt;
&lt;a href="https://media.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%2F5ug0pfom8xi0rdluih54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5ug0pfom8xi0rdluih54.png" alt="Execution of GoogleAppscript"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you are ready to test the function.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Test the function
&lt;/h2&gt;

&lt;p&gt;Go back to your Google sheet.&lt;/p&gt;

&lt;p&gt;On the sheet, enter any email address and on different column enter your newly created function as below:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=emailIsValid(B2)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fmdr4unhfaqrr50dusfw0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fmdr4unhfaqrr50dusfw0.png" alt="Email Verification Function"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you can add more email id and simply drag and drop the function to check the email validation. 😎 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fbn1usr888umbpt8j87pd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fbn1usr888umbpt8j87pd.gif" alt="Email Verification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Last step: Add more functions
&lt;/h2&gt;

&lt;p&gt;Now that you have a successfully running email verification function, you can create more functions that provide other important information about the email address. May be you want to check if the email address belongs to a known spammer domain or check if the email address is disposable. &lt;/p&gt;

&lt;p&gt;Check the function definition example below:&lt;br&gt;
 &lt;a href="https://media.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%2Fist49n18y1k67b58nq8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fist49n18y1k67b58nq8t.png" alt="More function"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>emailverification</category>
      <category>googleappscript</category>
      <category>tutorial</category>
      <category>googlesheet</category>
    </item>
    <item>
      <title>How to capture website visitor's IP address on Google Analytics using Google Tag Manager?</title>
      <dc:creator>deep</dc:creator>
      <pubDate>Wed, 04 Aug 2021 02:01:31 +0000</pubDate>
      <link>https://dev.to/bexdeep_45/how-to-capture-website-visitor-s-ip-address-on-google-analytics-using-google-tag-manager-46f</link>
      <guid>https://dev.to/bexdeep_45/how-to-capture-website-visitor-s-ip-address-on-google-analytics-using-google-tag-manager-46f</guid>
      <description>&lt;p&gt;An IP address is more than just an address of your client device, it reveals other important aspect about the connection that can help your business access the authenticity of the end user. Unfortunately, the most popular web analytics tool in the world, Google Analytics, doesn't provide that information due to privacy concern. &lt;/p&gt;

&lt;p&gt;However, there are many ways to retrieve an IP address of your website visitor by implementing IP geolocation APIs or other native functions to access an IP address of the client. &lt;/p&gt;

&lt;p&gt;But it could be so much better, if you could see an IP address on Google Analytics and tie that with your events so that you can check if the event was triggered from an authentic connection or not. &lt;/p&gt;

&lt;p&gt;For example, I often receive a newsletter submission on my website and its difficult to access if the subscription was a spam or a genuine user. If I could use some advance IP geolocation to detect if the connection was proxy/VPN then it would add a lot of value to my web analytics. &lt;/p&gt;

&lt;p&gt;In this article, I will only try to address the first aspect of problem - how to push IP address of website visitors to your Google Analytics dashboard. You need to have some understanding of how Google Tags work.&lt;/p&gt;

&lt;h1&gt;
  
  
  Creating a Tag on Google Tag Manager
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1
&lt;/h2&gt;

&lt;p&gt;Login to your Google Tag Manager and create a new Tag. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fbdqa5wk0q2bzr1w4v1y8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fbdqa5wk0q2bzr1w4v1y8.png" alt="Screen Shot 2021-08-04 at 10.32.19 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2
&lt;/h2&gt;

&lt;p&gt;Change the Tag Type to &lt;strong&gt;Custom HTML Tag&lt;/strong&gt; and set the Triggering option to &lt;strong&gt;All Pages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F02lqapwbg93cmw4v90s7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F02lqapwbg93cmw4v90s7.png" alt="Screen Shot 2021-08-04 at 10.34.42 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set the Tag firing options to Once per event.&lt;br&gt;
&lt;a href="https://media.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%2Fe9c9hcavog309b2599k1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fe9c9hcavog309b2599k1.png" alt="Screen Shot 2021-08-04 at 10.42.20 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3
&lt;/h2&gt;

&lt;p&gt;In the HTML Section, paste the following Javascript Code.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

&amp;lt;script id="bdc-ipaddress-push" type="text/javascript"&amp;gt;

  var hBDC = new XMLHttpRequest();
  var bdcApi = "https://api.bigdatacloud.net/data/client-ip";
  var outputBDC = {};
  hBDC.open("GET", bdcApi);
  hBDC.send();
  hBDC.onreadystatechange = function () {
    if (this.readyState == 4 &amp;amp;&amp;amp; this.status == 200) {
    outputBDC = JSON.parse(this.responseText);
  console.log(outputBDC.ipString);
      dataLayer.push({'bdc-ipaddress': outputBDC.ipString});
    }
  };

&amp;lt;/script&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The following code uses free Client-IP api from BigDataCloud. It is a simple API to retrieve your website visitor's IP address. The API also detects if the connection is proxy or note and return other values. For now, we will only focus on IP address. &lt;/p&gt;

&lt;p&gt;More about the API here:&lt;br&gt;
&lt;a href="https://www.bigdatacloud.com/docs/api/client-info-api" rel="noopener noreferrer"&gt;BigDataCloud's free Client Info API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample of the output of the API:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
"ipString": "⬛⬛⬛⬛⬛⬛⬛⬛",
"ipNumeric": ⬛⬛⬛⬛⬛⬛⬛⬛,
"ipType": "IPv4",
"isBehindProxy": true,
"device": "Mac",
"os": "Mac OS X 10.15.7",
"userAgent": "Chrome 92.0.4515",
"family": "Chrome",
"versionMajor": "92",
"versionMinor": "0",
"versionPatch": "4515",
"isSpider": false,
"isMobile": false,
"userAgentDisplay": "Mac OS X 10.15.7 Mac Chrome 92.0.4515",
"userAgentRaw": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36",
-"userLanguages": [
"en-GB",
"en-US",
"en"
]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The javascript code simply calls the API and pushes the IP address to Google Tag's internal dataLayer using the function:&lt;br&gt;
&lt;code&gt;dataLayer.push({'bdc-ipaddress': outputBDC.ipString});&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This Tag will now fire on every pages and will push the website visitor's IP address to Google Tag's dataLayer. The name of the variable will be - bdc-ipaddress&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Retrieving the IP address value from the dataLayer
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1
&lt;/h2&gt;

&lt;p&gt;Create a new Variable under variable Tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fqshdltuc17qt4nchgk01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fqshdltuc17qt4nchgk01.png" alt="Screen Shot 2021-08-04 at 10.43.48 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2
&lt;/h2&gt;

&lt;p&gt;Set the Variable Type to Data Layer Variable and the Data Layer Variable Name to &lt;strong&gt;bdc-ipaddress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then give a name to your variable - &lt;strong&gt;IP Address&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F7lv5c7tc0h7w39if3dks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F7lv5c7tc0h7w39if3dks.png" alt="Screen Shot 2021-08-04 at 10.45.12 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3
&lt;/h2&gt;

&lt;p&gt;Once you have saved your variable, now you should be able to see your variable under customer variables.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fz1quo63sbw8lljj7jbey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fz1quo63sbw8lljj7jbey.png" alt="Screen Shot 2021-08-04 at 10.47.30 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Pushing the Variable data to Google Analytics.
&lt;/h1&gt;

&lt;p&gt;In my Google Tag, I have created a trigger that fires when someone submits a form on my website. You could have a different triggers. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a Form Submission Tag
&lt;/h2&gt;

&lt;p&gt;Now create a new Tag which is going to register a new event and push to your Event dashboard on Google Analytics.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Name of tag : GA Newsletter Form (You can put any other name)
Tag Type: Google Analytics: Universal Analytics
Track Type: Event
Category: Sign_Up (You can put any other name)
Action: Sign_Up (You can put any other name)
Label: {{IP Address}} 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;In the label we put the variable which we defined earlier. Please note that you could have put this variable in Category and Action too. I prefer to put on Label.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F4v3ehq443wowfmukd3l9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F4v3ehq443wowfmukd3l9.png" alt="Screen Shot 2021-08-04 at 10.56.45 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The other settings are:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Value : {{Form Classes}}
Non-Interaction Hit : False
Google Analytics Settings : {{Google Analytics UA}} 


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The above settings are standard. Please refer to Google Tag Manager's document for more. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Form Classess&lt;/strong&gt; is a standard variable available on Google Tags. This allows Tags to access to CSS classes used on the Form element on your website. Useful for triggering form submission trigger. I believe, this is optional and can be ignored. Please test and let me know. &lt;/p&gt;

&lt;p&gt;The Google Analytics Settings UA variable is another customer variable that holds the Google Analytics tracking ID.&lt;/p&gt;

&lt;p&gt;For Reference:&lt;br&gt;
&lt;a href="https://media.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%2Fy5d3vqas4aiw6mzom8pq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fy5d3vqas4aiw6mzom8pq.png" alt="Screen Shot 2021-08-04 at 11.07.04 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then on the Triggering Section, choose the trigger which you have created. In my case, I will use Newsletter Form trigger.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fotpm1srvlae9rf2aff07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fotpm1srvlae9rf2aff07.png" alt="Screen Shot 2021-08-04 at 11.22.47 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And it is done. Now test your Tag and take it live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Result of the Implementation
&lt;/h2&gt;

&lt;p&gt;After running this on my website, I captured few form submission events. And yes, now I can see an IP address of the user who have submitted the form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1vkx6xubz43jpaa35jrc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1vkx6xubz43jpaa35jrc.png" alt="Screen Shot 2021-08-04 at 11.11.38 am"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When when I check this IP address against BigDataCloud's Ip geolocation tool, I can see that this form was submitted by the user using Tor server, therefore it is very likely that the information shared by the user on form is highly unreliable. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bigdatacloud.com/ip-geolocation/192.42.116.17" rel="noopener noreferrer"&gt;IP Geolocation Data for 192.42.116.17&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;Now you can use this steps to further enhance your data on your Google Analytics and get a better insights into who is visiting your website and their authenticity by connecting with a more advanced IP geolocation APIs.&lt;/p&gt;

</description>
      <category>googleanalytics</category>
      <category>ipgeolocation</category>
      <category>googletagmanager</category>
    </item>
    <item>
      <title>Best IP Geolocation APIs in 2023 for developers &amp; marketers</title>
      <dc:creator>deep</dc:creator>
      <pubDate>Wed, 12 May 2021 23:52:43 +0000</pubDate>
      <link>https://dev.to/bexdeep_45/best-ip-geolocation-apis-in-2021-for-developers-2dgk</link>
      <guid>https://dev.to/bexdeep_45/best-ip-geolocation-apis-in-2021-for-developers-2dgk</guid>
      <description>&lt;p&gt;The concept of geolocating devices with their IP address is as old as the Internet. But, today, with 4.66 billion active internet users and more than 20 billion IoT devices, the landscape of the internet has drastically changed. Similarly, the IP geolocation technology has also evolved the way they resolve the location of an IP address and deliver the data. &lt;/p&gt;

&lt;p&gt;Traditionally, IP geolocation services were being delivered in the form of databases that one can purchase and use. This would mean building your own lookup services and ensuring that the database is up-to-date with the latest version. Not to mention maintaining the server's uptime. As a result, IP geolocation wasn't just everyone's cup of tea. A substantial effort was required and even today, some companies still prefer to use this method. But this is changing and more and more Ip geolocation API services are available in the market that can drastically reduce your build time and deliver at a submillisecond speed.&lt;/p&gt;

&lt;p&gt;In this post, I will share some of the popular IP geolocation API providers in the market. The list is generated using various third-party articles, google searches, and ranking tools. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Only API services with public pricing page is considered and listed based on their alphabetical order. This post is&lt;/em&gt; &lt;strong&gt;not a comparison list&lt;/strong&gt; &lt;em&gt;but instead can be used as a reference to discover various IP geolocation services available for developers. I would highly encourage you to create a free account and test yourself before implementing them. Some of the services have been left out because either their website wasn't working or the service had been discontinued.&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the right IP geolocation API service for your project?
&lt;/h2&gt;

&lt;p&gt;You need to understand how well the API fits into your web development requirements. Some of the most important criteria are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Accuracy &lt;/li&gt;
&lt;li&gt;Speed&lt;/li&gt;
&lt;li&gt;Coverage&lt;/li&gt;
&lt;li&gt;Datapoints&lt;/li&gt;
&lt;li&gt;Scalability &lt;/li&gt;
&lt;li&gt;Pricing&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;List of IP geolocation API services ordered alphabetically?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Abstractapi
&lt;/h3&gt;

&lt;p&gt;Abstractapi provides a suite of APIs for web development like image processing, IBAN validation, and so on. IP geolocation is one of its API offerings. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F0xuwg3h6tqoznd4eye19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0xuwg3h6tqoznd4eye19.png" alt="Screen Shot 2021-05-11 at 1.36.49 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;20,000 requests (1 request/second)&lt;/li&gt;
&lt;li&gt;Not allowed for commercial&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$9 USD per month&lt;/li&gt;
&lt;li&gt;200,000 request/month (50 requests/second)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location 

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country related

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;VPN detect
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "ip_address": "72.229.28.185",
  "city": "New York",
  "city_geoname_id": 5128581,
  "region": "New York",
  "region_iso_code": "NY",
  "region_geoname_id": 5128638,
  "postal_code": "10116",
  "country": "United States",
  "country_code": "US",
  "country_geoname_id": 6252001,
  "country_is_eu": false,
  "continent": "North America",
  "continent_code": "NA",
  "continent_geoname_id": 6255149,
  "longitude": -73.9726,
  "latitude": 40.7768,
  "security": {
    "is_vpn": false
  },
  "timezone": {
    "name": "America/New_York",
    "abbreviation": "EDT",
    "gmt_offset": -4,
    "current_time": "00:15:25",
    "is_dst": true
  },
  "flag": {
    "emoji": "🇺🇸",
    "unicode": "U+1F1FA U+1F1F8",
    "png": "https://static.abstractapi.com/country-flags/US_flag.png",
    "svg": "https://static.abstractapi.com/country-flags/US_flag.svg"
  },
  "currency": {
    "currency_name": "USD",
    "currency_code": "USD"
  },
  "connection": {
    "autonomous_system_number": 12271,
    "autonomous_system_organization": "TWC-12271-NYC",
    "connection_type": "Corporate",
    "isp_name": "Charter Communications",
    "organization_name": "Spectrum"
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://www.abstractapi.com/" rel="noopener noreferrer"&gt;https://www.abstractapi.com/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;BigDataCloud is an Australian-based next-generation IP geolocation API provider, started in the year 2018. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F0vqn3mtneutuz9zvxitb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0vqn3mtneutuz9zvxitb.png" alt="BigDataCloud's IP Geolocation API Package"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free Plan&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10K queries per month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Plan&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$29.95 per month, 100K queries per month.&lt;/li&gt;
&lt;li&gt;Pay As You Go option ($2.995 per additional 10K monthly request)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Adminstrative Level Locality Details&lt;/li&gt;

&lt;li&gt;Country related 

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;li&gt;phone&lt;/li&gt;
&lt;li&gt;language&lt;/li&gt;
&lt;li&gt;income&lt;/li&gt;
&lt;li&gt;wikidataID, geonameID&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;li&gt;Carrier Name and Network&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Confidence Area&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;TOR&lt;/li&gt;
&lt;li&gt;VPN&lt;/li&gt;
&lt;li&gt;Proxy&lt;/li&gt;
&lt;li&gt;SpamhausDrop, SpamhausEdrop, SpamhausAsnDrop&lt;/li&gt;
&lt;li&gt;BlacklistedUceprotect, BlacklistedBlocklistDe&lt;/li&gt;
&lt;li&gt;KnownAsMailServer&lt;/li&gt;
&lt;li&gt;KnownAsPublicRouter&lt;/li&gt;
&lt;li&gt;Bogon and Unreachable&lt;/li&gt;
&lt;li&gt;Hosting and Hosting ASN&lt;/li&gt;
&lt;li&gt;Cellular&lt;/li&gt;
&lt;li&gt;Threat level
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ip": "72.229.28.185",
    "localityLanguageRequested": "en",
    "isReachableGlobally": true,
    "country": {
        "isoAlpha2": "US",
        "isoAlpha3": "USA",
        "m49Code": 840,
        "name": "United States of America",
        "isoName": "United States of America (the)",
        "isoNameFull": "the United States of America",
        "isoAdminLanguages": [
            {
                "isoAlpha3": "eng",
                "isoAlpha2": "en",
                "isoName": "English",
                "nativeName": "English"
            }
        ],
        "unRegion": "Americas/Northern America",
        "currency": {
            "numericCode": 840,
            "code": "USD",
            "name": "US Dollar",
            "minorUnits": 2
        },
        "wbRegion": {
            "id": "NAC",
            "iso2Code": "XU",
            "value": "North America"
        },
        "wbIncomeLevel": {
            "id": "HIC",
            "iso2Code": "XD",
            "value": "High income"
        },
        "callingCode": "1",
        "countryFlagEmoji": "🇺🇸",
        "wikidataId": "Q30",
        "geonameId": 6252001,
        "continents": [
            {
                "continent": "North America",
                "continentCode": "NA"
            },
            {
                "continent": "Oceania",
                "continentCode": "OC"
            },
            {
                "continent": "Asia",
                "continentCode": "AS"
            }
        ]
    },
    "location": {
        "continent": "North America",
        "continentCode": "NA",
        "isoPrincipalSubdivision": "New York",
        "isoPrincipalSubdivisionCode": "US-NY",
        "city": "New York City",
        "localityName": "Alphabet City",
        "postcode": "10009",
        "latitude": 40.73,
        "longitude": -73.98,
        "plusCode": "87G8P2H9+XX",
        "timeZone": {
            "ianaTimeId": "America/New_York",
            "displayName": "(UTC-05:00) Eastern Standard Time",
            "effectiveTimeZoneFull": "Eastern Daylight Time",
            "effectiveTimeZoneShort": "EDT",
            "utcOffsetSeconds": -14400,
            "utcOffset": "-04",
            "isDaylightSavingTime": true,
            "localTime": "2021-05-12T02:01:47.7236865"
        },
        "localityInfo": {
            "administrative": [
                {
                    "order": 3,
                    "adminLevel": 2,
                    "name": "United States of America",
                    "description": "country in North America",
                    "isoName": "United States of America (the)",
                    "isoCode": "US",
                    "wikidataId": "Q30",
                    "geonameId": 6252001
                },
                .........
            ]
        }
    },
    "lastUpdated": "2021-05-11T22:18:37.5251770Z",
    "network": {
        "registry": "ARIN",
        "registryStatus": "assigned",
        "registeredCountry": "US",
        "registeredCountryName": "United States of America",
        "organisation": "Charter Communications Inc",
        "isReachableGlobally": true,
        "isBogon": false,
        "bgpPrefix": "72.229.0.0/16",
        "bgpPrefixNetworkAddress": "72.229.0.0",
        "bgpPrefixLastAddress": "72.229.255.255",
        "totalAddresses": 65536,
        "carriers": [
            {
                "asn": "AS12271",
                "asnNumeric": 12271,
                "organisation": "Charter Communications Inc",
                "name": "TWC-12271-NYC",
                "registry": "ARIN",
                "registeredCountry": "US",
                "registeredCountryName": "United States of America",
                "registrationDate": "2000-06-09",
                "registrationLastChange": "2018-11-28",
                "totalIpv4Addresses": 2922487,
                "totalIpv4Prefixes": 204,
                "totalIpv4BogonPrefixes": 0,
                "rank": 162,
                "rankText": "#162 out of 71,428"
            }
        ],
        "viaCarriers": [
            {
                "asn": "AS7843",
                "asnNumeric": 7843,
                "organisation": "Charter Communications Inc",
                "registeredCountry": "US",
                "registeredCountryName": "United States of America",
                "totalIpv4Addresses": 355584,
                "rank": 731
            }
        ]
    },
    "confidence": "moderate",
    "confidenceArea": [
 ....       
{
            "latitude": 40.73086,
            "longitude": -74.32992
        }.....
    ],
    "securityThreat": "unknown",
    "hazardReport": {
        "isKnownAsTorServer": false,
        "isKnownAsVpn": false,
        "isKnownAsProxy": false,
        "isSpamhausDrop": false,
        "isSpamhausEdrop": false,
        "isSpamhausAsnDrop": false,
        "isBlacklistedUceprotect": false,
        "isBlacklistedBlocklistDe": false,
        "isKnownAsMailServer": false,
        "isKnownAsPublicRouter": false,
        "isBogon": false,
        "isUnreachable": false,
        "hostingLikelihood": 0,
        "isHostingAsn": false,
        "isCellular": false
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://www.bigdatacloud.com/packages/ip-geolocation" rel="noopener noreferrer"&gt;https://www.bigdatacloud.com/packages/ip-geolocation&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Disclaimer: I work at BigDataCloud&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;DB-IP is a France-based IP geolocation database provider. They have three tiers of IP geolocation API services:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Basic&lt;/li&gt;
&lt;li&gt;Core&lt;/li&gt;
&lt;li&gt;Extended&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fp8estr3zpu0c84531v1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fp8estr3zpu0c84531v1d.png" alt="Screen Shot 2021-05-11 at 4.34.57 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doesn't have a free plan.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The extended API starts at 16.41€/month.&lt;/li&gt;
&lt;li&gt;2K-50K requests per day&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country related 

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;li&gt;phone&lt;/li&gt;
&lt;li&gt;language&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;Bot detection&lt;/li&gt;
&lt;li&gt;Proxy detection&lt;/li&gt;
&lt;li&gt;Threat level
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "ipAddress": "123.45.67.89",
    "continentCode": "NA",
    "continentName": "North America",
    "countryCode": "US",
    "countryName": "United States",
    "isEuMember": false,
    "currencyCode": "USD",
    "currencyName": "Dollar",
    "phonePrefix": "1",
    "languages": [
        "en-US",
        "es-US",
        "haw",
        "fr"
    ],
    "stateProv": "California",
    "stateProvCode": "CA",
    "district": "Santa Clara County",
    "city": "Mountain View",
    "geonameId": 5375480,
    "zipCode": "94043",
    "latitude": 37.3861,
    "longitude": -122.084,
    "gmtOffset": -7,
    "timeZone": "America\/Los_Angeles",
    "weatherCode": "USCA0746",
    "asNumber": 16591,
    "asName": "GOOGLE-FIBER",
    "isp": "Google Fiber Inc.",
    "linkType": "fttx",
    "usageType": "consumer",
    "organization": "Google Fiber Inc.",
    "isCrawler": false,
    "isProxy": true,
    "proxyType": "vpn",
    "threatLevel": "high",
    "threatDetails": [
        "anonymous-proxy",
        "attack-source",
        "attack-target:web"
        "bot-name:gherran",
        "bot-type:spam"
    ],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://db-ip.com/" rel="noopener noreferrer"&gt;https://db-ip.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ip2location
&lt;/h3&gt;

&lt;p&gt;Ip2location is one of the popular IP geolocation API service providers based in Malaysia. &lt;/p&gt;

&lt;p&gt;In addition to API, it also sells databases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fla5ob3vocvwvvzd9a63k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fla5ob3vocvwvvzd9a63k.png" alt="Screen Shot 2021-05-12 at 12.27.57 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;200 queries per day&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$49 for 10,000 credits&lt;/li&gt;
&lt;li&gt;1 query can range from 1 credit to 18 credits based on a number of data points.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*The company provides separate pricing and endpoint for using its proxy detection API service. &lt;/p&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country related 

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;li&gt;language&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;Proxy detection&lt;/li&gt;
&lt;li&gt;Threat level
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "country_code": "US",
    "country_name": "United States",
    "region_name": "California",
    "city_name": "Mountain View",
    "latitude": "37.405992",
    "longitude": "-122.078515",
    "zip_code": "94043",
    "time_zone": "-07:00",
    "isp": "Google LLC",
    "domain": "google.com",
    "net_speed": "T1",
    "idd_code": "1",
    "area_code": "650",
    "weather_station_code": "USCA0746",
    "weather_station_name": "Mountain View",
    "mcc": "-",
    "mnc": "-",
    "mobile_brand": "-",
    "elevation": "32",
    "usage_type": "DCH",
    "continent": {
        "name": "North america",
        "code": "NA",
        "hemisphere": [
            "north",
            "east"
        ],
        "translations": {
            "zh-cn": "北美洲"
        }
    },
    "country": {
        "name": "United States",
        "alpha3_code": "USA",
        "numeric_code": "840",
        "demonym": "Americans",
        "flag": "https://www.ip2location.com/assets/img/flags/us.png",
        "capital": "Washington, D.C.",
        "total_area": "9826675",
        "population": "326766748",
        "currency": {
            "code": "USD",
            "name": "United States Dollar",
            "symbol": "$"
        },
        "language": {
            "code": "EN",
            "name": "English"
        },
        "idd_code": "1",
        "tld": "us",
        "translations": {
            "zh-cn": "美国"
        }
    },
    "region": {
        "name": "California",
        "code": "06",
        "translations": {
            "zh-cn": "加利福尼亚"
        }
    },
    "city": {
        "name": "Mountain View",
        "translations": []
    },
    "geotargeting": {
        "metro": "807"
    },
    "country_groupings": [
        {
            "acronym": "Americas",
            "name": "Americas"
        },
        {
            "acronym": "APEC",
            "name": "Asia-Pacific Economic Cooperation"
        },
        {
            "acronym": "DAC",
            "name": "Development Assistance Committee"
        },
        {
            "acronym": "G2",
            "name": "Group of Two"
        },
        {
            "acronym": "G20",
            "name": "Group of Twenty"
        },
        {
            "acronym": "G7",
            "name": "Group of Seven"
        },
        {
            "acronym": "G8+5",
            "name": "G8+5"
        },
        {
            "acronym": "NAFTA",
            "name": "North American Free Trade Agreement"
        },
        {
            "acronym": "NALA",
            "name": "NALA"
        },
        {
            "acronym": "OAS",
            "name": "Organization of American States"
        },
        {
            "acronym": "OECD",
            "name": "Organisation for Economic Co-operation and Development"
        },
        {
            "acronym": "P5",
            "name": "P5"
        },
        {
            "acronym": "UN",
            "name": "United Nations"
        }
    ],
    "time_zone_info": {
        "olson": "America\/Los_Angeles",
        "current_time": "2019-03-03T23:06:07-08:00",
        "gmt_offset": -28800,
        "is_dst": "no",
        "sunrise": "06:50",
        "sunset": "19:32"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://www.ip2location.com/" rel="noopener noreferrer"&gt;https://www.ip2location.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ipdata
&lt;/h3&gt;

&lt;p&gt;Ipdata is a US-based Ip geolocation API provider founded in the year 2017. The company provides aggregated Open Source threat intelligence data, IP to company lookups, and other location-based data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F3c4x8std6g8x447wv7sh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F3c4x8std6g8x447wv7sh.png" alt="Screen Shot 2021-05-12 at 1.20.25 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1500 free requests per day&lt;/li&gt;
&lt;li&gt;Restricted to non-commercial use only.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$10 per month for 2,500 daily requests.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;postal codes&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country related 

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;li&gt;language&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;Proxy detection&lt;/li&gt;
&lt;li&gt;Tor Detect&lt;/li&gt;
&lt;li&gt;Anonymous IP detect&lt;/li&gt;
&lt;li&gt;Known Attacker detect&lt;/li&gt;
&lt;li&gt;Bogon Detect&lt;/li&gt;
&lt;li&gt;Threat level
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    ip: "72.229.28.185",
    is_eu: false,
    city: "New York",
    region: "New York",
    region_code: "NY",
    country_name: "United States",
    country_code: "US",
    continent_name: "North America",
    continent_code: "NA",
    latitude: 40.7768,
    longitude: -73.9726,
    postal: "10116",
    calling_code: "1",
    flag: "https://ipdata.co/flags/us.png",
    emoji_flag: "🇺🇸",
    emoji_unicode: "U+1F1FA U+1F1F8",
    asn: {
        asn: "AS12271",
        name: "Charter Communications Inc",
        domain: "spectrum.com",
        route: "72.229.0.0/17",
        type: "isp"
    },
    languages: [
        {
            name: "English",
            native: "English"
        }
    ],
    currency: {
        name: "US Dollar",
        code: "USD",
        symbol: "$",
        native: "$",
        plural: "US dollars"
    },
    time_zone: {
        name: "America/New_York",
        abbr: "EDT",
        offset: "-0400",
        is_dst: true,
        current_time: "2021-05-11T23:55:34.840149-04:00"
    },
    threat: {
        is_tor: false,
        is_proxy: false,
        is_anonymous: false,
        is_known_attacker: false,
        is_known_abuser: false,
        is_threat: false,
        is_bogon: false
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://ipdata.co/" rel="noopener noreferrer"&gt;https://ipdata.co/&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;IPinfo.io is a US-based IP intelligence data provider established in the year 2013. &lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50k lookups.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$49 per month for limited data points for 250K lookups. &lt;/li&gt;
&lt;li&gt;Additional 50K queries for $10. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;In order to access all the data points, the price begins at $1499 per month for 2.5M lookups. You can purchase additional 200K lookups are $100.&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;postal code&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;VPN&lt;/li&gt;
&lt;li&gt;Proxy&lt;/li&gt;
&lt;li&gt;Tor&lt;/li&gt;
&lt;li&gt;Hosting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Domain
&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
 ip: "72.229.28.185",
 hostname: "cpe-72-229-28-185.nyc.res.rr.com",
 city: "New York City",
 region: "New York",
 country: "US",
 loc: "40.7143,-74.0060",
 org: "AS12271 Charter Communications Inc",
 postal: "10004",
 timezone: "America/New_York",
 asn: {
 asn: "AS12271",
 name: "Charter Communications Inc",
 domain: "charter.com",
 route: "72.229.0.0/17",
 type: "isp"},
 company: {
 name: "Charter Communications Inc",
 domain: "spectrum.com",
 type: "isp"},
 privacy:{
 vpn: false,
 proxy: false,
 tor: false,
 hosting: false},
 abuse: {
 address: "US, CO, Greenwood Village, 6399 S Fiddlers Green Circle, 80111",
 country: "US",
 email: "ipaddressing@chartercom.com",
 name: "IPAddressing",
 network: "72.224.0.0/13",
 phone: "+1-720-536-1278"},
 domains: {
 ip: "72.229.28.185",
 total: 1,
 domains: Array,
 0: "advertisa.tk"}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://ipinfo.io/" rel="noopener noreferrer"&gt;https://ipinfo.io/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ipstack
&lt;/h3&gt;

&lt;p&gt;Ipstack is an IP geolocation API service provided by an Austrian tech company called APILayer. Along with IP geolocation services, it also provides various other business APIs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fl4qfb3jwu8n3yx7qz4d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fl4qfb3jwu8n3yx7qz4d4.png" alt="Screen Shot 2021-05-12 at 2.10.39 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5,000 requests per month for limited data objects. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$9.99 per month for 50,000 requests per month.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country related 

&lt;ul&gt;
&lt;li&gt;flag&lt;/li&gt;
&lt;li&gt;currency&lt;/li&gt;
&lt;li&gt;language&lt;/li&gt;
&lt;li&gt;phone&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;Proxy&lt;/li&gt;
&lt;li&gt;Bot&lt;/li&gt;
&lt;li&gt;Tor&lt;/li&gt;
&lt;li&gt;Threat level
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "ip": "134.201.250.155",
  "hostname": "134.201.250.155",
  "type": "ipv4",
  "continent_code": "NA",
  "continent_name": "North America",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "CA",
  "region_name": "California",
  "city": "Los Angeles",
  "zip": "90013",
  "latitude": 34.0453,
  "longitude": -118.2413,
  "location": {
    "geoname_id": 5368361,
    "capital": "Washington D.C.",
    "languages": [
        {
          "code": "en",
          "name": "English",
          "native": "English"
        }
    ],
    "country_flag": "https://assets.ipstack.com/images/assets/flags_svg/us.svg",
    "country_flag_emoji": "🇺🇸",
    "country_flag_emoji_unicode": "U+1F1FA U+1F1F8",
    "calling_code": "1",
    "is_eu": false
  },
  "time_zone": {
    "id": "America/Los_Angeles",
    "current_time": "2018-03-29T07:35:08-07:00",
    "gmt_offset": -25200,
    "code": "PDT",
    "is_daylight_saving": true
  },
  "currency": {
    "code": "USD",
    "name": "US Dollar",
    "plural": "US dollars",
    "symbol": "$",
    "symbol_native": "$"
  },
  "connection": {
    "asn": 25876,
    "isp": "Los Angeles Department of Water &amp;amp; Power"
  },
  "security": {
    "is_proxy": false,
    "proxy_type": null,
    "is_crawler": false,
    "crawler_name": null,
    "crawler_type": null,
    "is_tor": false,
    "threat_level": "low",
    "threat_types": null
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Link: &lt;a href="https://ipstack.com/" rel="noopener noreferrer"&gt;https://ipstack.com/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Maxmind
&lt;/h3&gt;

&lt;p&gt;Maxmind is one of the oldest IP geolocation service providers based in the US, established in the year 2002.&lt;/p&gt;

&lt;p&gt;The company is widely recognized as the provider of a free GeoIP database. However, it also provides paid API services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Furngxprtz084tlg9n2hj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Furngxprtz084tlg9n2hj.png" alt="Screen Shot 2021-05-12 at 2.37.38 pm"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pricing
&lt;/h4&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can download a free version of the GeoIP database. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Starting Price&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$25 for 12,500 queries&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Objects
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Standard Location

&lt;ul&gt;
&lt;li&gt;zipcode&lt;/li&gt;
&lt;li&gt;city&lt;/li&gt;
&lt;li&gt;state&lt;/li&gt;
&lt;li&gt;country&lt;/li&gt;
&lt;li&gt;continent&lt;/li&gt;
&lt;li&gt;Point geocoordinates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Country Related

&lt;ul&gt;
&lt;li&gt;Average Income (US only)&lt;/li&gt;
&lt;li&gt;Population Density (US only)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Time Zone&lt;/li&gt;

&lt;li&gt;Network

&lt;ul&gt;
&lt;li&gt;ISP name&lt;/li&gt;
&lt;li&gt;ASN&lt;/li&gt;
&lt;li&gt;Organisation name&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Security

&lt;ul&gt;
&lt;li&gt;Proxy&lt;/li&gt;
&lt;li&gt;Residential Proxy&lt;/li&gt;
&lt;li&gt;Tor Exit Node&lt;/li&gt;
&lt;li&gt;Anonymous IP&lt;/li&gt;
&lt;li&gt;Hosting&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Domain&lt;/li&gt;

&lt;li&gt;Accuracy Radius&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Link: &lt;a href="https://www.maxmind.com/en/home" rel="noopener noreferrer"&gt;https://www.maxmind.com/en/home&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ipgeolocation</category>
      <category>geolocation</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How accurate can IP Geolocation get?</title>
      <dc:creator>deep</dc:creator>
      <pubDate>Mon, 12 Apr 2021 01:01:58 +0000</pubDate>
      <link>https://dev.to/bexdeep_45/how-accurate-can-ip-geolocation-get-4c0j</link>
      <guid>https://dev.to/bexdeep_45/how-accurate-can-ip-geolocation-get-4c0j</guid>
      <description>&lt;p&gt;Since I started working at an IP geolocation startup company, I have come to realise just how misunderstood IP geolocation technology is. In my previous startup, we use to derive location data of a website using an IP address with freely available databases. We would often get inaccurate data which we would ignore as an outlier in the data.&lt;/p&gt;

&lt;p&gt;Even now many developers use a free database or an API to detect the IP address of a website visitor and redirect them to different web pages. If you have developed an eCommerce site using WordPress + woo-commerce plugins, it is likely that you are using an IP address to detect the location and change the currency format and other content of your website.&lt;/p&gt;

&lt;p&gt;I was talking to one of my developer friend about IP geolocation APIs and he simply stated that it was nothing but a simple database lookup on whois database and it isn’t that accurate. However, it is more complex than a simple data lookup.&lt;/p&gt;

&lt;p&gt;I am curious to understand what the dev community think about IP geolocation technology and how do you go about implementing an API or a process to identify a user’s location with an IP address.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How do I find the location of a website user?</title>
      <dc:creator>deep</dc:creator>
      <pubDate>Tue, 02 Mar 2021 06:50:31 +0000</pubDate>
      <link>https://dev.to/bexdeep_45/how-do-i-find-the-location-of-a-website-user-3iai</link>
      <guid>https://dev.to/bexdeep_45/how-do-i-find-the-location-of-a-website-user-3iai</guid>
      <description>&lt;p&gt;Understanding your website visitors is key to building a successful online business. If you don’t know where your customers are coming from, you will end up delivering a poor customer experience.&lt;/p&gt;

&lt;p&gt;Modern online businesses use sophisticated technology to dynamically change their content, product offerings, messaging and campaigns to suit the target audience. This strategy allows businesses to increase their website conversion.&lt;/p&gt;

&lt;p&gt;There are various methods of finding the location of a website user. You can use a simple contact form, prompt the user to share his/her geo-coordinates or use IP geolocation API to identify the location automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xfcolxdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwsq51gchx7dn4lgcymi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xfcolxdC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwsq51gchx7dn4lgcymi.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contact Form method&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most common method of capturing visitor information on a website and it is quite easy and simple to implement.&lt;/p&gt;

&lt;p&gt;Based on which CMS you are using, you will have various options to embed a simple user form, along with a captcha to avoid bot submission.&lt;/p&gt;

&lt;p&gt;A standard contact form contains user information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Email Address&lt;/li&gt;
&lt;li&gt;Phone&lt;/li&gt;
&lt;li&gt;City&lt;/li&gt;
&lt;li&gt;Country&lt;/li&gt;
&lt;li&gt;Message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a great way to capture online leads however it cannot be used to deliver dynamic web content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Geo-coordinates sharing method&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HTML5 Geolocation API is a permission-based approach that returns the geographical coordinates of a visitor's current position. &lt;/p&gt;

&lt;p&gt;In this method, users need to opt-in to share their location with the browser or mobile app. Once the permission is provided, the browser will return geographical coordinates (latitude and longitude) of the user’s current location. The browser depends on third-party software like that of Google, Apple, Baidu or Bing to provide WiFi or GPS based location in case of mobile devices. &lt;/p&gt;

&lt;p&gt;This geocoordinate can then be converted into a readable address with the help of reverse geocoding API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP Geolocation Services&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unlike the other two methods, IP geolocation based location detection doesn’t require any input from users. You can unobtrusively estimate your visitor’s location by using their IP address. However, this method is not as accurate as others, but it is good enough to provide city or country-level location data based on which you can make the decision on your website. &lt;/p&gt;

&lt;p&gt;This is helpful to know because you do not need the exact street address of a visitor to target them with customised messages or campaigns. In many cases, city-level information is enough. &lt;/p&gt;

&lt;p&gt;The common way in which you can implement IP geolocation is via free or paid API. The most common IP geolocation API provides country code or city data in a JSON format. &lt;/p&gt;

&lt;p&gt;Because you can identify a visitor’s location without asking them, you can use it in many ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delivering localised and personalised content&lt;/li&gt;
&lt;li&gt;Routing users to location-based pages automatically&lt;/li&gt;
&lt;li&gt;Automatically changing the language and currency on your website&lt;/li&gt;
&lt;li&gt;Using country code to automatically change the phone number format&lt;/li&gt;
&lt;li&gt;Geoblocking content for digital content rights management&lt;/li&gt;
&lt;li&gt;It can also be used for mission-critical tasks like validating user’s authenticity to prevent spam or fraud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the popular IP geolocation services which are accurate and frequently updated are &lt;strong&gt;Maxmind, Digital Element, BigDataCloud, IP2Location, IPstack and IP-DB&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can check their individual websites for implementation examples. &lt;/p&gt;

</description>
      <category>ipgeolocation</category>
      <category>reversegeocoding</category>
      <category>iplookup</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
