Google Maps scraper API 및 MCP
Google Maps scraper API는 앱이나 에이전트에서 한도가 있는 업체 검색을 실행합니다. 범위가 지정된 워크스페이스 키와 명시적 작업 예산을 사용하고, 모든 재시도에는 같은 멱등 키를 씁니다. 결과는 JSON이며, 없는 필드는 비워 둡니다.
실행 전 · 실시간 리서치는 데이터 소스 설정이 필요합니다. 샘플 데이터는 샘플로 명확히 표시됩니다. 유료 요금제는 아직 제공하지 않습니다.

제한된 작업 생성
Google Maps scraper API를 권한이 제한된 키로 REST나 HTTP MCP 클라이언트에 연결하세요. 작업을 추산하고 예산을 설정하며 구조화된 결과를 받습니다.
curl -X POST https://mapsscraper.dev/api/v1/jobs \
-H "Authorization: Bearer $MAPSSCRAPER_API_KEY" \
-H "Idempotency-Key: dentists-austin-tx-001" \
-H "X-Max-Units: 1" \
-H "Content-Type: application/json" \
-d '{"kind":"search","query":"Dentists in Austin, TX","limit":20,"region":"us"}'
HTTP/1.1 202 Accepted
{"id":"6f1c2b3a-0000-4000-8000-000000000000","status":"queued","reserved":1}같은 멱등성 키로 같은 작업을 다시 시도하세요. 해당 키로 변경된 요청을 보내면 409가 반환됩니다. 작업은 대기 중, 실행 중, 완료, 부분 완료, 실패, 취소 또는 불확실 상태를 거칩니다. 데이터 소스 요청이 불확실하면 자동 유료 재실행 대신 대조가 필요합니다.
Google Maps scraper API란 무엇인가요?
Google Maps scraper API는 업종과 지역을 받아 공개 목록을 JSON으로 반환하고, 요청 전에 작업의 최대 예산을 보여 줍니다. 각 작업은 범위가 제한된 키와 멱등 키를 사용합니다. 리뷰는 별도의 요청입니다.
결과 읽기
완료된 작업과 일부 완료된 작업의 결과는 워크스페이스 보존 기간 동안 유지됩니다. offset과 limit으로 페이지별로 읽을 수 있으며, 저장된 결과를 읽어도 새 조사가 실행되지 않습니다.
응답 예시(일부 생략). 값은 설명용이며 실제 비즈니스 데이터가 아닙니다.
{
"items": [
{
"business_id": "sample-business-id",
"name": "Sample Dental Studio",
"full_address": "100 Example Ave, Austin, TX 78701",
"phone_number": "+1 512-555-0100",
"website": "https://dental.example",
"type": "Dentist",
"rating": 4.8,
"review_count": 214,
"latitude": 30.2672,
"longitude": -97.7431,
"_source": {
"provider": "live_maps",
"fetched_at": "2026-11-01T12:00:00Z",
"website_status": "provided_unverified"
}
}
],
"count": 1,
"offset": 0,
"next_offset": null,
"provider": "live_maps",
"coverage": "bounded_sample",
"fetched_at": "2026-11-01T12:00:00Z"
}Google Maps 리뷰 API
작업당 하나의 비즈니스 ID에 대한 리뷰를 요청하며, 페이지당 최대 100개를 관련성순, 최신순, 평점 높은순 또는 낮은순으로 정렬합니다. 각 리뷰에는 본문, 평점, 날짜, 작성자, 그리고 있는 경우 소유자 답글이 포함됩니다. 다음 페이지에는 별도의 작업과 예산이 필요합니다.
리뷰 수집POST /api/v1/jobs
Idempotency-Key: reviews-sample-business-001
X-Max-Units: 1
{"kind":"reviews","business_id":"sample-business-id","limit":50,"review_options":{"sort_by":"newest"}}Python 예제
requests 라이브러리로 검색 견적을 확인하고, job을 생성하고, 최종 상태를 기다린 뒤 결과를 읽습니다.
import os
import time
import uuid
import requests
API = "https://mapsscraper.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['MAPSSCRAPER_API_KEY']}"}
task = {"kind": "search", "query": "Dentists in Austin, TX", "limit": 20, "region": "us"}
# An estimate reserves nothing.
units = requests.post(f"{API}/estimate", json=task, headers=HEADERS, timeout=30).json()["units"]
# Keep the key: a retry of the same task must send it again.
key = str(uuid.uuid4())
job = requests.post(
f"{API}/jobs",
json=task,
headers={**HEADERS, "Idempotency-Key": key, "X-Max-Units": str(units)},
timeout=30,
)
job.raise_for_status()
job_id = job.json()["id"]
while True:
status = requests.get(f"{API}/jobs/{job_id}", headers=HEADERS, timeout=30).json()["status"]
if status not in ("queued", "running"):
break
time.sleep(5)
if status in ("completed", "partial"):
page = requests.get(
f"{API}/jobs/{job_id}/results",
params={"offset": 0, "limit": 100},
headers=HEADERS,
timeout=30,
).json()
for business in page["items"]: # follow page["next_offset"] for more
print(business.get("name"), business.get("phone_number"), business.get("website"))Google Maps scraper API 자주 묻는 질문
문서이것은 Google Places API인가요?
아니요. MapsScraper.dev는 독립적인 서비스이며 Google과 제휴 관계가 없습니다. 결과는 제3자 비즈니스 데이터 소스에서 제공되며 자체 JSON 형식을 사용합니다.
Google Maps scraper API 요청은 어떻게 과금되나요?
대부분의 작업은 1단위를 사용합니다. 검색 또는 순위 스냅샷의 연락처 보강은 요청한 레코드마다 1단위를 추가로 예약하고 전달된 레코드에 대해서만 청구합니다. 업체 세부 정보는 1단위, 연락처 포함 시 2단위이며 보강은 2단위입니다. X-Max-Units는 견적 이상으로 설정하세요.
이메일과 전화번호를 보장하나요?
아니요. 범위는 출처와 업체에 따라 다릅니다. 선택적 보강에서 공개 연락처를 받을 수 있지만, 누락되거나 오래된 정보는 사용 전에 확인하세요.
