Accurate Geolocation Data
Retrieve accurate and real-time latitude and longitude data for any location globally, ideal for building location-based applications.
Extract data from Google Business listings with the help of our Google Maps API, get data like title, address, hours, operating hours, phone number etc. This API handles proxy management & all corner cases for blockage-free data extraction.
"search_results": [
{
"title": "Gregorys Coffee",
"place_id": "ChIJQTNrM69ZwokR3ggxzgeelqQ",
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"data_cid": "-6586903648621492002",
"gps_coordinates": {
"latitude": 40.7477283,
"longitude": -73.9890454
},
"provider_id": "/g/11xdfwq9f",
"rating": 4.1,
"reviews": 1153,
"price": "££",
"type": "Coffee shop",
"types": ["Coffee shop"],
"address": "874 6th Ave New York, NY 10001 United States",
"open_state": "Open · Closes 7 pm",
"hours": "Open · Closes 7 pm",
"phone": "+1 877-231-7619",
"description": "House-roasted coffee, snacks & free WiFi Outpost of a chain of sleek coffeehouses offering house-roasted coffee, free WiFi & light bites.",
"thumbnail": "https://lh5.googleusercontent.com/p/AF1QipNq-8YRdAjiVW7uFMWDzHarqoK2Pr7bxIqI7t8A=w86-h114-k-no"
}
]"operating_hours": {
"monday": "6:30 am–7 pm",
"tuesday": "6:30 am–7 pm",
"wednesday": "6:30 am–7 pm",
"thursday": "6:30 am–7 pm",
"friday": "6:30 am–7 pm",
"saturday": "7 am–7 pm",
"sunday": "7 am–7 pm"
}{
"reviews_link": "https://api.scrapingdog.com/reviews?api_key=APIKEY&data_id=0x89c259af336b3341:0xa4969e07ce3108de",
"photos_link": "https://api.scrapingdog.com/maps_photos?api_key=APIKEY&data_id=0x89c259af336b3341:0xa4969e07ce3108de",
"posts_link": "https://api.scrapingdog.com/maps_post?api_key=APIKEY&data_id=0x89c259af336b3341:0xa4969e07ce3108de"
}import requests
api_key = "5eaa61a6e562fc52fe763tr516e4653"
url = "https://api.scrapingdog.com/google_maps/"
params = {
"api_key": api_key,
"q": "coffee",
"ll": "@40.7455096,-74.0083012,15.1z"
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Request failed with status code: {response.status_code}")import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
// Set the API key and request parameters
String apiKey = "5eaa61a6e562fc52fe763tr516e4653";
String query = "coffee";
String ll = "@40.7455096,-74.0083012,15.1z";
// Construct the API endpoint URL
String apiUrl = "https://api.scrapingdog.com/google_maps/?api_key=" + apiKey
+ "&q=" + query
+ "&ll=" + ll;
URL url = new URL(apiUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
response.append(inputLine);
}
reader.close();
System.out.println(response.toString());
} else {
System.out.println("HTTP request failed with response code: " + responseCode);
}
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}<?php
// Set the API key and request parameters
$api_key = '5eaa61a6e562fc52fe763tr516e4653';
$query = 'coffee';
$ll = '@40.7455096,-74.0083012,15.1z';
// Set the API endpoint
$url = 'https://api.scrapingdog.com/google_maps/?api_key=' . $api_key . '&q=' . $query . '&ll=' . $ll;
// Initialize cURL session
$ch = curl_init($url);
// Set cURL options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check if the request was successful
if ($response === false) {
echo 'cURL error: ' . curl_error($ch);
} else {
echo $response;
}
// Close the cURL session
curl_close($ch);require 'net/http'
require 'uri'
# Set the API key and request parameters
api_key = '5eaa61a6e562fc52fe763tr516e4653'
query = 'coffee'
ll = '@40.7455096,-74.0083012,15.1z'
# Construct the API endpoint URL
url = URI.parse("https://api.scrapingdog.com/google_maps/?api_key=#{api_key}&q=#{query}&ll=#{ll}")
# Create an HTTP GET request
request = Net::HTTP::Get.new(url)
# Create an HTTP client
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true # Enable SSL (https)
# Send the request and get the response
response = http.request(request)
# Check if the request was successful
if response.is_a?(Net::HTTPSuccess)
puts response.body
else
puts "HTTP request failed with code: #{response.code}, message: #{response.message}"
endconst axios = require('axios');
const api_key = '5eaa61a6e562fc52fe763tr516e4653';
const url = 'https://api.scrapingdog.com/google_maps/';
const params = {
api_key: api_key,
q: 'coffee',
ll: '@40.7455096,-74.0083012,15.1z',
};
axios
.get(url, { params: params })
.then(function (response) {
if (response.status === 200) {
const data = response.data;
console.log(data);
} else {
console.log('Request failed with status code: ' + response.status);
}
})
.catch(function (error) {
console.error('Error making the request: ' + error.message);
});titletypetypesaddressdescriptionpricegps_coordinateslatitudelongitudeplace_idratingreviewsreviews_linkdata_cidphoneopen_statehoursoperating_hoursdata_iddata_cidprovider_idthumbnailphotos_linkposts_linkScraping the Maps pack by hand means decoding place_ids, paging endless results, and rebuilding parsers whenever Google reshuffles a listing.
Each listing hides behind opaque place_id, data_id, and CID tokens you must reverse-engineer before pulling reviews, photos, or hours.
Google returns only a few pins per viewport, so covering a whole city means stitching together hundreds of lat/long tile requests.
Ratings, operating_hours, and price tiers shift layout often, breaking hand-built scrapers and leaving gaps in your data.
Hammering Maps from one region triggers CAPTCHAs and blocks fast, so scraping listings at city scale stalls quickly.
One request with a query and ll coordinates returns clean local results, ready for lead lists and dashboards.
Get titles, addresses, phone numbers, ratings, and operating_hours as structured fields. No place_id decoding required.
Pass any ll viewport to sweep a neighborhood, city, or region, with follow-on links for reviews, photos, and posts.
Built-in geo-rotation queries local packs across thousands of locations without bans, ideal for nationwide lead-gen.
Real-time scrapes return current hours, ratings, and contact details, so your local SEO data never goes stale.
Retrieve accurate and real-time latitude and longitude data for any location globally, ideal for building location-based applications.
Integrate scraped Google Maps data into your existing systems or dashboards with our easy-to-use API.
Expand your operational insights globally with our API's capability to handle localized searches across different domains and languages.
Region-aware proxies and automatic CAPTCHA solving let you query local packs from any location without anti-bot blocks.
Pull ratings, reviews, operating_hours, price tiers, and contact details for every pin, plus links for photos and posts.
Receive structured business listings in a few seconds, fast enough to power live local-search results.
Scrape and aggregate real estate listings, reviews, and ratings from Google Maps to provide comprehensive market analysis tools for real estate professionals.
Extract location-specific data on competitors, customer reviews, and ratings to optimize store performance and customer engagement strategies.
Gather data on event locations, attendance, and public sentiment by scraping event-related information, aiding in superior event planning and marketing.
Get venue reviews, user ratings, and geographic details from Google Maps to offer insights for event organizers and marketers.
Compile detailed reviews and ratings for tourist attractions and local businesses to create enriched content for travel guides and apps.
Tailor your services and products to meet the unique demands of each locale based on real-time data from Google Maps.
Sign up and get 200 free credits to start testing the Google Maps API.
Grab your unique API key from the dashboard to authenticate every request.
Call /google_maps with a search term like q=coffee and an ll viewport.
Get back JSON with title, address, phone, rating, reviews, and operating_hours.
Start your web scraping journey with 200 free credits. Test our service and upgrade to one of the plans below. Cancel anytime.

I got the free trial and in less than a minute I already integrated with their API to scrape Google, matter of fact they had all the plug-and-play codes ready for me, It was seamless. I am about to upgrade as I have used up my trial credits.
United States
I love how you can use it to scrape data from Google.
Oslo, Norway
Scrapingdog is an awesome service. I use it with my Local Leads Sniper system and thanks to it I have been able to land a few clients since it gave me all the info that my client's Google Business Profile was missing. Great service!
Mexico
Amazing service. I am using it for Google Maps reviews and it works perfectly. I have also used Live chat and they were very fast and punctual on responses. 100% recommended.
Italy
The geolocation data provided by the API is highly accurate, typically within a few meters, depending on the device's GPS signal and network conditions.
Yes, Google does offer an official API for Maps. However, going with a third party API would be more economical.
Yes, other than the data from Google Maps, we have dedicated APIs for Google Search, Google Scholar, Google Lens etc. You can check them out in the product section in the header for more info.
The API has specific rate limits depending on your plan. If you exceed these limits, you may experience slower responses or need to purchase additional request credits to continue usage.
Each API request consumes a certain number of credits based on the dedicated API you're using. For example the Google Search API costs 5 credits per request. So, if you make one request to the Google Search API, it will deduct 5 credits from the available credits in your account. The number of credits required per request can vary depending on the specific API you're using. You can find more details about the credit usage for each API in the documentation.
Get 200 free credits to spin the API. No credit card required!