{"id":7913,"date":"2021-01-18T11:56:54","date_gmt":"2021-01-18T06:56:54","guid":{"rendered":"https:\/\/thedevcouple.com\/?p=7913"},"modified":"2021-09-17T12:08:34","modified_gmt":"2021-09-17T07:08:34","slug":"ipstack-1-choice-for-site-visitors-tracking-and-identification","status":"publish","type":"post","link":"https:\/\/thedevcouple.com\/ipstack-1-choice-for-site-visitors-tracking-and-identification\/","title":{"rendered":"IPStack #1 Choice for Site Visitors&#8217; Tracking and Identification"},"content":{"rendered":"<p><span data-preserver-spaces=\"true\">Locating your site\u2019s visitors can come in handy whether you are implementing purchasing power parity for your SASS or customizing content, currencies, and advertisements according to their location. It helps you tailor the content to visitors from different parts of the world. <\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Locating and tracking site visitors is a hassle, but not anymore. <a href=\"https:\/\/ipstack.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPStack<\/a> is super handy when it comes to handling all the geo-related tracking of your audience.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Last year, <a href=\"http:\/\/ahmadawais.com\" target=\"_blank\" rel=\"noopener\">Ahmad Awais<\/a> built an open-source Covid19 tracking tool, <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/ahmadawais.com\/corona-cli\/\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">corona-cli<\/span><\/a><span data-preserver-spaces=\"true\">. It displays the latest stats of the disease throughout the world. If we were to take it further, we could include IP tracking to automatically show information relevant to the visitor\u2019s country so that the users won\u2019t need to specify their country manually. Pretty neat, right? I can think of many more use-cases like these from the top of my head. I am sure you can too.\u00a0<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">To implement site visitors\u2019 tracking and identification, you need a geolocation API. <a href=\"https:\/\/ipapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPAPI<\/a> by <a href=\"https:\/\/ipstack.com\/\" rel=\"nofollow noopener\" target=\"_blank\">ipstack<\/a> is the one I recommend because of its extensive information without compromising performance. Not only that, I went through some user reviews, and it turns out it is pretty accurate as well.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">With that said, let\u2019s jump in and see how we can use IPAPI to get location-related information.\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7601\" src=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1.png\" alt=\"ipstack-cover\" width=\"3543\" height=\"2365\" srcset=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1.png 3543w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-300x200.png 300w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-1024x684.png 1024w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-768x513.png 768w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-1536x1025.png 1536w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-2048x1367.png 2048w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-1920x1282.png 1920w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-1680x1121.png 1680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-1240x828.png 1240w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-860x574.png 860w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-680x454.png 680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-500x334.png 500w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-400x267.png 400w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-250x167.png 250w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-200x134.png 200w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-100x67.png 100w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-76x51.png 76w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1-50x33.png 50w\" sizes=\"(max-width: 3543px) 100vw, 3543px\" \/><\/p>\n<h2><span data-preserver-spaces=\"true\">\u26a1\ufe0f Information provided by IPAPI<\/span><\/h2>\n<p><span data-preserver-spaces=\"true\">The data provided by the API is categorized into <strong>location, currency, timezone, connection, and security modules<\/strong>. For visitor tracking and identification, you only need the first <strong>three<\/strong> modules. These modules provide <strong>information-based features<\/strong> that <a href=\"https:\/\/ipstack.com\/\" rel=\"nofollow noopener\" target=\"_blank\">ipstack<\/a> offers. Here is a brief breakdown:<\/span><\/p>\n<ul>\n<li><span data-preserver-spaces=\"true\">\ud83d\udccc\u00a0<\/span><strong><span data-preserver-spaces=\"true\">Location:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">It includes all the location parameters like region, city, etc.<\/span><\/li>\n<li><span data-preserver-spaces=\"true\">\u23f0\u00a0<\/span><strong><span data-preserver-spaces=\"true\">Timezone:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">It gives the Time zone of the visitors and time-related metadata.<\/span><\/li>\n<li><span data-preserver-spaces=\"true\">\ud83d\udcb5\u00a0<\/span><strong><span data-preserver-spaces=\"true\">Currency:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">Information about<\/span><strong><span data-preserver-spaces=\"true\">\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">Primary currency, code, symbol, and more.\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-preserver-spaces=\"true\">Enough talk. Let\u2019s see the API in action now.\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7546\" src=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple.png\" alt=\"Ipapi Thedevcouple\" width=\"1440\" height=\"811\" srcset=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple.png 1440w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-300x169.png 300w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-1024x577.png 1024w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-768x433.png 768w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-1240x698.png 1240w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-860x484.png 860w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-680x383.png 680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-500x282.png 500w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-400x225.png 400w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-250x141.png 250w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-200x113.png 200w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-100x56.png 100w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-76x43.png 76w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/ipapi-thedevcouple-50x28.png 50w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><\/p>\n<h2><span data-preserver-spaces=\"true\">\ud83d\udcbb Working with IPAPI<\/span><\/h2>\n<p><span data-preserver-spaces=\"true\">First, go ahead on the <a href=\"https:\/\/ipapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPAPI<\/a> or <a href=\"https:\/\/ipstack.com\/\" rel=\"nofollow noopener\" target=\"_blank\">ipstack<\/a> website and sign up using a free or a premium plan as per your requirement. Once you have successfully signed up, you will be redirected to the quick-start guide page.\u00a0<\/span><\/p>\n<h3><b>\u2192 <\/b><span data-preserver-spaces=\"true\">Step 1 &#8211; API Access Key<\/span><\/h3>\n<p><span data-preserver-spaces=\"true\">The first thing you will see is your API access key. Copy it and store it somewhere, as we will use this key to make API calls.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7914\" src=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart.jpg\" alt=\"ipstack Quickstart\" width=\"1080\" height=\"608\" srcset=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart.jpg 1080w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-300x169.jpg 300w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-1024x576.jpg 1024w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-768x432.jpg 768w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-860x484.jpg 860w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-680x383.jpg 680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-500x281.jpg 500w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-400x225.jpg 400w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-250x141.jpg 250w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-200x113.jpg 200w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-100x56.jpg 100w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-76x43.jpg 76w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-50x28.jpg 50w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/p>\n<h3><b>\u2192\u00a0 <\/b><span data-preserver-spaces=\"true\">Step 2 &#8211; Requesting the API<\/span><\/h3>\n<p><span data-preserver-spaces=\"true\">The next step is requesting the API for IP-related information. The API provides you three lookup options:\u00a0<\/span><span data-preserver-spaces=\"true\">\u00a0<\/span><\/p>\n<ul>\n<li><strong><span data-preserver-spaces=\"true\">Standard Lookup:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">Gets data for a single IP Address.<\/span><\/li>\n<li><strong><span data-preserver-spaces=\"true\">Bulk Lookup:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">Gets data for multiple IP Addresses<\/span><\/li>\n<li><strong><span data-preserver-spaces=\"true\">Requester Lookup:\u00a0<\/span><\/strong><span data-preserver-spaces=\"true\">Gets data of the requester.\u00a0\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-preserver-spaces=\"true\">Using any of these endpoints is pretty straightforward. You can find more about them in the <a href=\"https:\/\/ipapi.com\/documentation\" rel=\"nofollow noopener\" target=\"_blank\">documentation<\/a>. For our testing, we will use the <strong>standard lookup method<\/strong>. The quick start guide conveniently creates the <strong>API endpoint<\/strong> using your IP address and your access key.<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7915\" src=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2.jpg\" alt=\"ipstack Quickstart 2\" width=\"1080\" height=\"608\" srcset=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2.jpg 1080w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-300x169.jpg 300w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-1024x576.jpg 1024w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-768x432.jpg 768w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-860x484.jpg 860w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-680x383.jpg 680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-500x281.jpg 500w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-400x225.jpg 400w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-250x141.jpg 250w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-200x113.jpg 200w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-100x56.jpg 100w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-76x43.jpg 76w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-quickstart-2-50x28.jpg 50w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/p>\n<p><span data-preserver-spaces=\"true\"> Now, you can open the API endpoint\/link in a new tab to see the response. If you are using a free plan, you will get a response like this:\u00a0<\/span><\/p>\n<p><code><\/code><\/p>\n<pre class=\"eckosc_syntax eckosc_syntax_theme_dark\"><code data-language=\"json\">{\n\"ip\": \"2400:adc7:901:c900:552c:21b1:----:----\",\n\"type\": \"ipv6\",\n\"continent_code\": \"AS\",\n\"continent_name\": \"Asia\",\n\"country_code\": \"PK\",\n\"country_name\": \"Pakistan\",\n\"region_code\": null,\n\"region_name\": null,\n\"city\": null,\n\"zip\": null,\n\"latitude\": 30,\n\"longitude\": 70,\n\"location\": {\n\"geoname_id\": null,\n\"capital\": \"Islamabad\",\n\"languages\": [\n{\n\"code\": \"en\",\n\"name\": \"English\",\n\"native\": \"English\"\n},\n{\n\"code\": \"ur\",\n\"name\": \"Urdu\",\n\"native\": \"\u0627\u0631\u062f\u0648\",\n\"rtl\": 1\n}\n],\n\"country_flag\": \"http:\/\/assets.ipstack.com\/flags\/pk.svg\",\n\"country_flag_emoji\": \"\ud83c\uddf5\ud83c\uddf0\",\n\"country_flag_emoji_unicode\": \"U+1F1F5 U+1F1F0\",\n\"calling_code\": \"92\",\n\"is_eu\": false\n}\n}<\/code><\/pre>\n<p><code><\/code><\/p>\n<p><span data-preserver-spaces=\"true\">As you can see, the response in the free plan includes the <strong>location module<\/strong> and gives location information according to different parameters. If you are subscribed to their <strong>Basic plan or higher<\/strong>, the response will <strong>additionally include Currency, Timezone, and Connection modules<\/strong>. To give you an idea, it will look like this:\u00a0<\/span><\/p>\n<pre class=\"eckosc_syntax eckosc_syntax_theme_dark\"><code data-language=\"json\">{\n    \"ip\": \"161.185.160.93\",\n    \"hostname\": \"161.185.160.93\",\n    \"type\": \"ipv4\",\n    \"continent_code\": \"NA\",\n    \"continent_name\": \"North America\",\n    \"country_code\": \"US\",\n    \"country_name\": \"United States\",\n    \"region_code\": \"NY\",\n    \"region_name\": \"New York\",\n    \"city\": \"Brooklyn\",\n    \"zip\": \"11238\",\n    \"latitude\": 40.676,\n    \"longitude\": -73.9629,\n    \"location\": {\n        \"geoname_id\": 5110302,\n        \"capital\": \"Washington D.C.\",\n        \"languages\": [\n            {\n                \"code\": \"en\",\n                \"name\": \"English\",\n                \"native\": \"English\"\n            }\n        ],\n        \"country_flag\": \"http:\/\/assets.ipapi.com\/flags\/us.svg\",\n        \"country_flag_emoji\": \"\ud83c\uddfa\ud83c\uddf8\",\n        \"country_flag_emoji_unicode\": \"U+1F1FA U+1F1F8\",\n        \"calling_code\": \"1\",\n        \"is_eu\": false\n    },\n    \"time_zone\": {\n        \"id\": \"America\/New_York\",\n        \"current_time\": \"2018-09-24T05:07:10-04:00\",\n        \"gmt_offset\": -14400,\n        \"code\": \"EDT\",\n        \"is_daylight_saving\": true\n    },\n    \"currency\": {\n        \"code\": \"USD\",\n        \"name\": \"US Dollar\",\n        \"plural\": \"US dollars\",\n        \"symbol\": \"$\",\n        \"symbol_native\": \"$\"\n    },\n    \"connection\": {\n        \"asn\": 22252,\n        \"isp\": \"The City of New York\"\n    },\n    \"security\": {\n        \"is_proxy\": false,\n        \"proxy_type\": null,\n        \"is_crawler\": false,\n        \"crawler_name\": null,\n        \"crawler_type\": null,\n        \"is_tor\": false,\n        \"threat_level\": \"low\",\n        \"threat_types\": null\n    }\n}\n<\/code><\/pre>\n<h2><\/h2>\n<h2><span data-preserver-spaces=\"true\">Step 3 &#8211; Integrate into your application<\/span><\/h2>\n<p><span data-preserver-spaces=\"true\">Now that we have seen what kind of information we can get, we can utilize it in our applications. IPAPI\u2019s JSON and XML API design makes it super easy to integrate into your application. <\/span><\/p>\n<p><span data-preserver-spaces=\"true\">For a fun, quick demo, I coded a simple React application. The idea is to show the user\u2019s country flag emoji alongside their name using <a href=\"https:\/\/ipapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPAPI<\/a>. Your application might differ; therefore, this is the only piece of code you need to worry about. I am sending a GET request through Axios on the API endpoint and then used an IP address and my access key. The response is received and stored in the <em>data<\/em> variable.<\/span><\/p>\n<pre class=\"eckosc_syntax eckosc_syntax_theme_dark\"><code data-language=\"javascript\">\/\/ importing axios in the file\nconst axios = require('axios');\n\n\/\/ function making the api call\n(async () =&gt; {\n    await axios\n        .get('http:\/\/api.ipapi.com\/YOUR_IP_ADDRESS?access_key=YOUR_API_ACCESS_KEY')\n        .then(({ data }) =&gt; console.log(data))\n        .catch((err) =&gt; console.log(err));\n})();<\/code><\/pre>\n<p><span data-preserver-spaces=\"true\">\u00a0<\/span><span data-preserver-spaces=\"true\">As we can see from the previous response, the country emoji resides in the location module. So, I extract the country emoji using <em>data.location.country_flag_emoji<\/em> and then pass it to my front-end code. Here is the result, with the country emoji being shown to the visitor:<\/span><\/p>\n<p><span data-preserver-spaces=\"true\"> <img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7922\" src=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji.jpg\" alt=\"Ipstack Country Emoji\" width=\"1080\" height=\"608\" srcset=\"https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji.jpg 1080w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-300x169.jpg 300w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-1024x576.jpg 1024w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-768x432.jpg 768w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-860x484.jpg 860w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-680x383.jpg 680w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-500x281.jpg 500w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-400x225.jpg 400w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-250x141.jpg 250w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-200x113.jpg 200w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-100x56.jpg 100w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-76x43.jpg 76w, https:\/\/thedevcouple.com\/wp-content\/uploads\/2021\/09\/ipstack-country-emoji-50x28.jpg 50w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Pretty cool. \ud83e\udd29 This was a quick tutorial on implementing visitor tracking and identification on your site using ipstack API. I leave the rest up to you and your imagination to utilize it according to your use case.\u00a0<\/span><\/p>\n<h2><span data-preserver-spaces=\"true\">\ud83d\udd25 Performance<\/span><\/h2>\n<p><span data-preserver-spaces=\"true\">When it comes to integrating APIs like this in your application, performance is the biggest concern. No one wants their site to hold off on content while waiting for the API to respond. I ran a few tests to check the performance of IPAPI.\u00a0<\/span><\/p>\n<div class=\"eckosc eckosc_contrast_block\"><div class=\"eckosc_contrast_block_inner\">\n<p>\u26a1\ufe0f On the first test, I got an awe-inspiring response time of 187ms<\/p>\n<p>\ud83d\ude80 I then tested for different endpoints and the response time never went above 200ms. <\/div><\/div>\n<p><span data-preserver-spaces=\"true\">What do these numbers translate to? Close to zero impact on your page loading speed which is very impressive. \ud83d\udcaf<\/span><\/p>\n<h2><span data-preserver-spaces=\"true\">Wrapping up<\/span><\/h2>\n<p><span data-preserver-spaces=\"true\">With an uptime of\u00a0<\/span><a class=\"editor-rtfLink\" href=\"https:\/\/status.ipapi.com\/\" target=\"_blank\" rel=\"noopener nofollow\"><span data-preserver-spaces=\"true\">99.759 for the last 90 days<\/span><\/a><span data-preserver-spaces=\"true\">, <a href=\"https:\/\/ipapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPAPI<\/a> is a reliable and quick way to introduce location, time zone, and currency-related features in your application.\u00a0<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">It has been my go-to choice for implementing features like these in my projects. So far, my experience with <a href=\"https:\/\/ipapi.com\/\" rel=\"nofollow noopener\" target=\"_blank\">IPAPI<\/a> has been outstanding. So, if you are looking to buy something like this, definitely give it a go.\u00a0<\/span><\/p>\n<p><i>Have you used IPAPI or any similar service to drill user\u2019s information? Which service did you use, and how was your experience? Let us know your thoughts in the comments section below.\u00a0<\/i><\/p>\n<p><em>We&#8217;ve written a whole series of extensive reviews featuring IPStack and its other products. <a href=\"https:\/\/thedevcouple.com\/?s=ipstack\">Feel free to check these out here \u2192<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Locating and tracking site visitors is a hassle but not anymore. IPStack is super handy when it comes to handling all the geo-related tracking of your audience.<\/p>\n","protected":false},"author":3,"featured_media":7601,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":""},"categories":[18],"tags":[224,257,256,225,228,255],"coauthors":[81],"jetpack_featured_media_url":"https:\/\/thedevcouple.com\/wp-content\/uploads\/2020\/06\/cover-1.png","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/7913"}],"collection":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/comments?post=7913"}],"version-history":[{"count":5,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/7913\/revisions"}],"predecessor-version":[{"id":7934,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/posts\/7913\/revisions\/7934"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/media\/7601"}],"wp:attachment":[{"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/media?parent=7913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/categories?post=7913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/tags?post=7913"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/thedevcouple.com\/api\/wp\/v2\/coauthors?post=7913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}