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