Browse 800+ Public APIs

A Guide to Building a Geo Location API Proxy with Express Node.js and ipstack

a year ago

Introduction

In the realm of web development, understanding user geolocation is a valuable asset for enhancing user experiences, tailoring content, and optimizing services. In this blog post, we'll explore how to create a Geo Location API Proxy using Express.js in Node.js. We'll leverage the ipstack API to retrieve precise geolocation data based on users' IP addresses.

Prerequisites:

Before diving into the code, make sure you have the following set up:

  1. Node.js and npm installed on your machine.
  2. A code editor of your choice.
  3. An account with ipstack to obtain your API key.

Setting Up the Project:

Create a new Node.js project and install the necessary packages:

mkdir geolocation-api-proxy
cd geolocation-api-proxy
npm init -y
npm install express axios

Building the Express App:

Now, let's create an Express app with a route that acts as a proxy to the ipstack API. Create a file named app.js and add the following code:

const express = require('express');
const axios = require('axios');

const app = express();
const PORT = process.env.PORT || 3000;
const IPSTACK_API_KEY = 'YOUR_IPSTACK_API_KEY';

app.get('/geolocation', async (req, res) => {
  try {
    // Extract user IP address from the request
    const userIpAddress = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

    // Make a request to the ipstack API
    const response = await axios.get(`http://api.ipstack.com/${userIpAddress}?access_key=${IPSTACK_API_KEY}`);

    // Extract relevant geolocation data
    const { city, region_name, country_name, latitude, longitude } = response.data;

    // Send the geolocation data in the response
    res.json({
      city,
      region: region_name,
      country: country_name,
      latitude,
      longitude,
    });
  } catch (error) {
    console.error('Error fetching geolocation data:', error.message);
    res.status(500).json({ error: 'Internal Server Error' });
  }
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

Replace 'YOUR_IPSTACK_API_KEY' with the API key you obtained from ipstack.

Testing the API Proxy: Start the server by running:

node app.js

Visit http://localhost:3000/geolocation in your browser or make a request using tools like curl or Postman. You should receive a JSON response containing geolocation data based on your IP address.

Conclusion:

Congratulations! You've successfully built a Geo Location API Proxy using Express Node.js and the ipstack API. This proxy can be integrated into your web applications to enhance user experiences and provide location-based services. Feel free to customize the code to suit your specific requirements and explore additional features offered by the ipstack API for a more comprehensive geolocation solution.