$ /tutorials

Unleashing the Power of Free API for Scrape Reverse Geocoding

published · 1 minute read · javascript api scrape nodejs
Unleashing the Power of Free API for Scrape Reverse Geocoding

Simple script using javascript to scrape a list of addresses and get the longitude and latitude for free using Google Maps API or MapDevelopers.

** addresses.csv **

address1
address2
address3
...
addressN

JavaScript file to scrape

Here’s the index file in two shapes, using google maps API or MapDevelopers. ** index.js **

Geocode search using Google Maps API

const axios = require("axios");

const url = "https://maps.googleapis.com/maps/api/geocode/json";

const getLocation = async (address) => {
  const response = await axios.get(url, {
    params: {
      key: "GOOGLE_MAPS_API_KEY",
      address: address,
    },
  });
  // console.log(response)
  const data = response.data;
  return data;
};

async function main() {
  // read the txt file
  const fs = require("fs");
  const path = require("path");
  const filePath = path.join(__dirname, "addresses.csv");
  const addresses = fs.readFileSync(filePath, "utf-8").split("\n");

  // loop over addresses

  for (let index = 0; index < addresses.length; index++) {
    const school = addresses[index];

    const data = await getLocation(school);
    // write to file
    const location = data.results[0];
    fs.appendFileSync(
      "results-google.json",
      JSON.stringify({ name: school, result: location }) + ",\n"
    );

    await new Promise((resolve) => setTimeout(resolve, 2000));
    console.log("finished", index);
  }
}

main();

Geocode search using Mapdevelopers API

Using MapDevelopers, you need first to make a request on https://www.mapdevelopers.com/geocode_tool.php, check developer tools and inspect the request to’https://www.mapdevelopers.com/data.php’, copy and paste below lcode and lid.

const axios = require("axios");

const url = "https://www.mapdevelopers.com/data.php";

const getLocation = async (address) => {
  const response = await axios.get(url, {
    params: {
      address: address,
      operation: "geocode",
      region: "Europe",
      lcode: "HDxDfOJfv2FjA9Yl", // replace here
      lid: "51143627", // replace here
      code: "splitpea",
    },
  });
  // console.log(response)
  const data = response.data;
  return data;
};

async function main() {
  // read the txt file
  const fs = require("fs");
  const path = require("path");
  const filePath = path.join(__dirname, "addresses.csv");
  const addresses = fs.readFileSync(filePath, "utf-8").split("\n");

  // loop over addresses

  for (let index = 0; index < addresses.length; index++) {
    const school = addresses[index];

    const data = await getLocation(school);
    // write to file
    fs.appendFileSync(
      "results-google.csv",
      `${school}, ${data.lat}, ${data.lng}, ${data.country}, ${data.county}, ${data.address}, ${data.postcode}` +
        "\n"
    );

    await new Promise((resolve) => setTimeout(resolve, 2000));
    console.log("finished", index);
  }
}

main();

Run the script

node index.js