Google Places API (for node)
Node client to run the basic google places API requests (using axios). Published on NPM.
Installing
$ npm install dcts-google-places-api
Examples
Initialzation
const apiKey = "INSERT_YOUR_API_KEY";
const GooglePlacesApi = require('dcts-google-places-api');
const googleapi = new GooglePlacesApi(apiKey);
Place Search
const searchQuery = "Pizza New York";
googleapi.runPlaceSearch(searchQuery).then(placeId => {
console.log(placeId);
});
(async () => {
let placeId = await googleapi.runPlaceSearch(searchQuery);
console.log(placeId);
})();;
Place Details
Get place details by place_id
.
const placeId = "ChIJHegKoJUfyUwRjMxaCcviZDA";
googleapi.runPlaceDetails(placeId).then(placeDetails => {
console.log(`place found: ${placeDetails.name}`);
})
(async () => {
let placeDetails = await googleapi.runPlaceDetails(placeId);
console.log(`place found: ${placeDetails.name}`);
})();
Get place details by cid
. This is a deprecated endpoint and not documented in the official google api documentation, but it still works. See also this answer on stackoverflow
const cid = "10056734717913051463";
googleapi.runPlaceDetailsCid(cid).then(placeDetails => {
console.log(`place found: ${placeDetails.name} (${placeDetails.cid})`);
});
(async () => {
let placeDetails = await googleapi.runPlaceDetailsCid(cid);
console.log(`place found: ${placeDetails.name} (${placeDetails.cid})`);
})();
Place Photos
⚠️ Be Aware: this function returns only the photoUrl, not the image itself.
const photoReference = 'CmRaAAAAqYV1efHXXLX3UB1msekeprgOUD362n4-8lxwYI3aSFANLw51oE1_KeNziEgnnbr5WQzJtQo9SbNnZFRfymg594T9h7yRWnLQL8w1n_ekN6BbyJzg1k0hadSJ4N0i63TmEhA3NIzf_JWUEZcW3VgXJ5FqGhRq7ij6D2Vl8DOSF2yHY1iuTYuAKA';
googleapi.runPlacePhotos(photoReference).then(photoUrl => {
console.log(`photo url: ${photoUrl}`);
});
(async () => {
let photoUrl = await googleapi.runPlacePhotos(photoReference);
console.log(`photo url: ${photoUrl}`);
})();
Full Example
- Search for a place by textquery
- get place details from that place
- fetch all photo urls from that place
const textSearch = "Nolita Pizza New York";
googleapi.runPlaceSearch(textSearch).then(placeId => {
console.log(`place id found: ${placeId}`);
return googleapi.runPlaceDetails(placeId);
}).then(placeDetails => {
console.log(`place details fetched for ${placeDetails.name} (${placeDetails.place_id})`);
const promises = [];
placeDetails.photos.map(photo => {
promises.push(googleapi.runPlacePhotos(photo.photo_reference));
});
return Promise.all(promises);
}).then(placePhotoUrls => {
console.log(`${placePhotoUrls.length} photo urls fetched:`);
console.log(placePhotoUrls);
});
(async () => {
let placeId = await googleapi.runPlaceSearch(textSearch)
console.log(`place id found: ${placeId}`);
let placeDetails = await googleapi.runPlaceDetails(placeId);
console.log(`place details fetched for ${placeDetails.name} (${placeDetails.place_id})`);
const placePhotoUrls = [];
for (const photo of placeDetails.photos) {
placePhotoUrls.push(await googleapi.runPlacePhotos(photo.photo_reference));
}
console.log(`${placePhotoUrls.length} photo urls fetched:`);
console.log(placePhotoUrls);
})();
Run Tests (written with AVA js)
npm run test
ToDo's
Credits
Written by dcts for personal use only. Check my portfolio website. Or go play tetris.