Kalau kamu seorang developer atau sudah familiar dengan Python, scraping Google Maps menggunakan script sendiri memberikan fleksibilitas yang tidak bisa ditawarkan tools no-code manapun: kamu bisa atur sepenuhnya logika filtering, format output, dan integrasi ke sistem yang sudah ada.
Tapi ada tantangan teknis yang perlu dipahami dulu. Kalau tujuannya hanya mengumpulkan leads bisnis untuk outreach, cara scraping Google Maps tanpa coding hampir selalu lebih efisien untuk non-developer. Panduan ini untuk yang memang butuh pendekatan programatik.
Mengapa Scraping Google Maps dengan Python Lebih Kompleks dari yang Terlihat
- JavaScript rendering. Konten Maps di-render secara dinamis β requests biasa hanya mendapat HTML kosong. Butuh browser automation seperti Selenium atau Playwright.
- Anti-bot detection. Google mendeteksi pola akses tidak natural dan memblokir IP atau menampilkan CAPTCHA setelah beberapa request berturut-turut.
- Lazy loading. Hasil Maps di-load bertahap saat di-scroll β butuh logika scroll otomatis untuk dapat lebih dari 20 hasil pertama.
- Struktur yang berubah. Google update interface Maps berkala, selector CSS di script kamu bisa break kapan saja tanpa peringatan.
Opsi 1: Selenium + Python (Browser Automation)
Selenium mengotomasi browser Chrome untuk berinteraksi dengan Maps seperti yang dilakukan manusia.
Install Dependencies
pip install selenium webdriver-manager
Contoh Script Dasar
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import time, csv
def scrape_maps(query, max_scroll=10):
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64)')
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
url = f"https://www.google.com/maps/search/{query.replace(' ', '+')}"
driver.get(url)
time.sleep(3)
results = []
try:
feed = driver.find_element(By.CSS_SELECTOR, 'div[role="feed"]')
for _ in range(max_scroll):
cards = driver.find_elements(By.CSS_SELECTOR, 'div.Nv2PK')
for card in cards:
try:
name = card.find_element(By.CSS_SELECTOR, '.qBF1Pd').text
results.append({'name': name})
except:
pass
driver.execute_script(
"arguments[0].scrollTop = arguments[0].scrollHeight", feed
)
time.sleep(2)
finally:
driver.quit()
return results
# Contoh penggunaan
data = scrape_maps("klinik gigi Surabaya", max_scroll=15)
print(f"Terkumpul: {len(data)} listing")
Catatan: CSS selector seperti .qBF1Pd dan .Nv2PK akan berubah saat Google update Maps. Ini adalah maintenance overhead utama metode ini.
Opsi 2: Playwright (Lebih Modern dari Selenium)
Playwright adalah alternatif yang lebih stabil dengan async support yang lebih baik.
pip install playwright
playwright install chromium
from playwright.sync_api import sync_playwright
import time
def scrape_playwright(query):
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto(f"https://www.google.com/maps/search/{query.replace(' ', '+')}")
page.wait_for_load_state('networkidle')
results = []
# Scroll dan extract listing...
# Logika serupa dengan Selenium
browser.close()
return results
Opsi 3: Google Places API (Resmi, Paling Reliable)
Cara paling reliable: menggunakan API resmi Google. Data terstruktur, tidak akan break, tapi ada biaya per request.
pip install googlemaps
import googlemaps, time
gmaps = googlemaps.Client(key='YOUR_API_KEY')
def search_places(kw, loc, max_results=60):
geo = gmaps.geocode(loc)
if not geo:
return []
lat = geo[0]['geometry']['location']['lat']
lng = geo[0]['geometry']['location']['lng']
resp = gmaps.places_nearby(
location=(lat, lng),
keyword=kw,
radius=10000
)
results = list(resp.get('results', []))
while 'next_page_token' in resp and len(results) < max_results:
time.sleep(2) # Wajib delay sebelum pakai page token
resp = gmaps.places_nearby(page_token=resp['next_page_token'])
results.extend(resp.get('results', []))
return results
data = search_places("dokter gigi", "Bandung")
print(f"Total: {len(data)} hasil")
Biaya: Nearby Search $0.032/request, maks 20 hasil per request. Untuk 1.000 data estimasi $1.6β5 USD.
Opsi 4: SerpAPI (Paling Mudah, Berbayar)
SerpAPI menangani semua kompleksitas di server mereka dan mengembalikan data terstruktur.
pip install google-search-results
from serpapi import GoogleSearch
params = {
"engine": "google_maps",
"q": "klinik gigi",
"location": "Surabaya, Indonesia",
"api_key": "YOUR_KEY"
}
search = GoogleSearch(params)
results = search.get_dict().get('local_results', [])
print(f"Hasil: {len(results)}")
Harga: mulai $50/bulan untuk 5.000 pencarian.
Perbandingan Semua Metode
| Metode | Biaya | Reliability | Maintenance | Setup Time |
|---|---|---|---|---|
| Selenium / Playwright | Gratis | Rendah (sering break) | Tinggi | 1β2 hari |
| Google Places API | Per request | Sangat tinggi | Hampir nol | Beberapa jam |
| SerpAPI | $50+/bulan | Tinggi | Nol | 1 jam |
| Alanova (no-code) | Free plan tersedia | Tinggi | Nol | 15 menit |
Python vs No-Code: Kapan Pilih Mana?
Pilih Python kalau:
- Butuh integrasi langsung ke database atau pipeline internal
- Ada transformasi data custom yang sangat spesifik
- Volume sangat besar dengan kebutuhan real-time
- Tim ada developer yang bisa handle maintenance
Pilih Alanova (no-code) kalau:
- Tidak punya background teknis atau tidak mau urusan coding
- Butuh hasil cepat β setup 15 menit langsung jalan
- Tujuan utamanya leads untuk outreach sales
- Butuh ekstraksi email dari website bisnis (Alanova lakukan ini otomatis)
- Tidak mau maintenance saat Google update interface Maps
Pro tip: Sebelum investasi waktu untuk setup script Python, hitung total cost of ownership: waktu setup awal, waktu maintenance setiap kali script break, waktu debugging. Untuk sebagian besar kebutuhan sales leads, angka ini hampir selalu lebih besar dari biaya berlangganan tools yang sudah production-ready.
Butuh jasa scraping data Google Maps? Lihat perbandingan semua opsi di panduan jasa scraping data Google Maps Indonesia.
[…] Data paling reliable dan bisa diintegrasikan langsung ke pipeline atau database internal. Tidak perlu maintenance saat Google update. Lihat panduan: cara scraping Google Maps dengan Python. […]