gosom/google-maps-scraper
요약
Google Maps에서 비즈니스 리드, 이메일, 리뷰 등 다양한 데이터를 추출할 수 있는 오픈 소스 CLI 및 API 도구입니다. CLI, Web UI, REST API를 지원하며 높은 성능과 확장성을 갖추고 있습니다.
핵심 포인트
- CLI, Web UI, REST API 등 다양한 인터페이스 제공
- 분당 약 120개 장소 처리가 가능한 고성능 동시성 최적화
- CSV, JSON, PostgreSQL, S3 등 유연한 데이터 출력 지원
- SOCKS5/HTTP/HTTPS 프록시 로테이션 내장 지원
무료 오픈 소스 CLI, Web UI, REST API 및 선택 가능한 셀프 호스팅 플랫폼을 통해 Google Maps 비즈니스 리드(leads), 이메일, 리뷰, 전화번호, 웹사이트, 평점, 좌표 등을 추출하세요.
리드 생성(lead generation), 지역 비즈니스 조사, 영업 잠재 고객 발굴(sales prospecting), 데이터 보강(data enrichment) 또는 개발자 자동화에 사용하세요.
| 목표 | 여기서 시작하세요 |
|---|---|
| CSV/JSON으로 리드 가져오기 | 커맨드 라인 (Command Line) |
| ... | |
| 이 프로젝트가 유용하다면, GitHub star를 눌러 다른 사람들이 발견할 수 있도록 도와주세요. 후원(Sponsorships)은 유지 관리와 새로운 작업을 위한 자금 마련에 도움이 됩니다. |
이 프로젝트는 멋진 후원자들 덕분에 가능했습니다.
기업급 Website Unblocker, SERP API, LLM 스크래퍼(scraper), 이커머스 데이터 수집 및 즉시 사용 가능한 데이터셋을 구동하는 완전 소유의 프리미엄 주거용 프록시(residential proxies) 네트워크 인프라를 기반으로 구축되었습니다.
키워드가 필요 없습니다. 제한도 없습니다. 클릭 2번으로 수백만 개의 비즈니스를 내보내세요. 무료로 체험하기 →
이메일, 소셜 프로필, 전화번호, 리뷰 등을 추출하는 Chrome 확장 프로그램. 1,000개의 무료 리드 받기 →
빠르고 신뢰할 수 있으며 확장 가능합니다. Fortune 500 기업들이 사용 중입니다. 모든 API 보기 →
간편한 통합으로 실시간 Google Maps 데이터를 제공합니다. API 탐색하기 →
150개 이상의 국가에서 제공되는 GB당 $0.49부터 시작하는 스위스 품질의 프록시, 24/7 지원 및 99.9% 가동 시간을 제공합니다. Evomi 방문하기 →
비즈니스 리드, 이메일, 주소, 전화번호, 리뷰 등을 추출하세요. 1,000개의 무료 크레딧 받기 →
전 세계 9,000만 개 이상의 실제 주거용 IP와 만료되지 않는 트래픽, GB당 $0.65부터 시작하는 일관되고 빠른 연결로 글로벌 접속을 잠금 해제하세요. 무료로 체험하기 →
API 또는 AI 에이전트를 통해 리드를 전송하고, 중복을 자동으로 제거하며, 준비되면 내보내세요. 무료로 시작하기 →
195개국 및 8,000만 개 이상의 IP를 아우르는 가장 저렴한 프리미엄 프록시, 신규 사용자를 위한 무료 플랜 제공. 자세히 알아보기
안녕하세요, 저희는 프록시가 복잡하거나 너무 비싸서는 안 된다는 생각에 BirdProxies를 만들었습니다. 195개 이상의 위치에서 제공되는 빠른 주거용 및 ISP 프록시, 합리적인 가격, 그리고 실제 지원을 제공합니다. 랜딩 페이지에서 FlappyBird 게임을 무료로 플레이하고 데이터를 받아보세요!
BirdProxies 방문하기 → | Discord 참여하기
모든 스폰서 보기 | 스폰서 되기
완전 무료 및 오픈 소스 |
MIT 라이선스, 숨겨진 비용이나 사용 제한 없음 |
다양한 인터페이스 |
CLI, Web UI, REST API - 워크플로우에 맞는 방식 사용 |
고성능 |
최적화된 동시성 (concurrency)을 통해 분당 약 120개 장소 처리 |
33개 이상의 데이터 포인트 |
비즈니스 상세 정보, 리뷰, 이메일, 좌표 등 |
프로덕션 준비 완료 |
단일 머신에서 Kubernetes 클러스터까지 확장 가능 |
유연한 출력 |
CSV, JSON, PostgreSQL, S3, LeadsDB 또는 커스텀 플러그인 |
프록시 지원 |
내장된 SOCKS5/HTTP/HTTPS 프록시 로테이션 (rotation) |
데이터를 수집한 후에는 리드 (leads)를 관리, 중복 제거 및 작업해야 합니다. LeadsDB는 바로 이 용도를 위해 설계된 동반 도구입니다:
자동 중복 제거 (Automatic Deduplication)- 중복 걱정 없이 여러 번의 스크래핑 결과물을 가져오기(Import) 할 수 있습니다
AI 에이전트 준비 완료 (AI Agent Ready)- MCP를 통해 자연어로 리드를 쿼리하고 관리할 수 있습니다
고급 필터링 (Advanced Filtering)- 모든 필드에 대해 AND/OR 로직으로 필터를 조합할 수 있습니다
어디로든 내보내기 (Export Anywhere)- CSV, JSON 또는 REST API 사용
이 스크래퍼에는 LeadsDB 통합 기능이 내장되어 있습니다. API 키만 추가하면 리드가 데이터베이스로 직접 흘러 들어갑니다.
- 빠른 시작 (Quick Start)
- AI 에이전트 기술 (AI Agent Skill)
- 레시피 (Recipes)
- 프록시 스폰서 (Proxy Sponsors)
- 설치 (Installation)
- 기능 (Features)
- 추출된 데이터 포인트 (Extracted Data Points)
- 설정 (Configuration)
- LeadsDB로 내보내기 (Export to LeadsDB)
- 고급 사용법 (Advanced Usage)
- 성능 (Performance)
- 프로젝트 후원 (Support the Project)
- 커뮤니티 (Community)
- 기여하기 (Contributing)
- 라이선스 (License)
mkdir -p gmaps-output
docker run \
-v gmaps-playwright-cache:/opt \
...
유용한 옵션:
| 필요 사항 | 플래그 (Flag) |
|---|---|
| 비즈니스 웹사이트에서 이메일 추출 | -email |
| ... | -c |
-c는 얼마나 많은 스크래핑 작업이 병렬로 실행될지를 제어합니다. 동시성 (concurrency)을 높이면 대용량 입력 파일을 더 빠르게 완료할 수 있지만, CPU/RAM 사용량이 늘어나고 특히 프록시가 없는 경우 차단(blocking)이나 실패가 증가할 수 있습니다. 첫 실행 시에는 기본값으로 시작하세요. 성능이 좋은 머신에서 더 큰 작업을 수행할 때는 -c 4, -c 8 또는 -c 16을 시도하고 결과를 측정해 보세요.
CSV 파일을 건너뛰고 싶으신가요? 리드를 LeadsDB로 직접 전송하세요:
docker run \
-v gmaps-playwright-cache:/opt \
-v "$PWD/example-queries.txt:/queries.txt:ro" \
...
단 한 줄의 명령어로 웹 인터페이스 (web interface)를 시작하세요:
mkdir -p gmapsdata
docker run \
-v "$PWD/gmapsdata:/gmapsdata" \
...
그 다음 브라우저에서 http://localhost:8080 을 여세요.
또는 사용 중인 플랫폼에 맞는 바이너리 릴리스 (binary release)를 다운로드하세요.
참고: 결과가 나타나기까지 최소 3분이 소요됩니다 (최소 설정된 실행 시간).
macOS 사용자: Docker 명령어가 작동하지 않을 수 있습니다. MacOS 안내 사항을 참조하세요.
웹 서버를 실행하면 전체 REST API를 사용할 수 있습니다:
| 엔드포인트 (Endpoint) | 메서드 (Method) | 설명 (Description) |
|---|---|---|
/api/v1/jobs | POST | 새로운 스크래핑 작업 (scraping job) 생성 |
/api/v1/jobs | GET | 모든 작업 목록 조회 |
/api/v1/jobs/{id} | GET | 작업 상세 정보 조회 |
/api/v1/jobs/{id} | DELETE | 작업 삭제 |
/api/v1/jobs/{id}/download | GET | 결과를 CSV로 다운로드 |
전체 OpenAPI 3.0.3 문서는 http://localhost:8080/api/docs 에서 확인할 수 있습니다.
API 키, 관리자 UI, 작업 큐 (job queue), 워커 (workers), 그리고 클라우드 프로비저닝 (cloud provisioning)을 갖춘 멀티 유저 플랫폼이 필요하신가요? 선택 사항인 셀프 호스팅 SaaS 에디션 (self-hosted SaaS edition)을 사용하세요:
curl -fsSL https://raw.githubusercontent.com/gosom/google-maps-scraper/main/PROVISION | sh
배포 및 운영에 대한 자세한 내용은 SaaS 문서를 참조하세요. 5분 분량의 배포 워크스루 (walkthrough)와 YouTube 워크스루 영상도 준비되어 있습니다.
더 많은 예시는 레시피 (Recipes)에서 확인할 수 있습니다. 더 큰 규모의 작업을 위해 프록시 (proxies)가 필요한 경우, Proxy Sponsors를 참조하세요.
Claude Code, Cursor, GitHub Copilot 및 20개 이상의 다른 에이전트와 같은 AI 코딩 에이전트 (AI coding agents)에서 Google Maps Scraper를 직접 사용하세요. 에이전트에게 비즈니스를 찾아달라고 말하기만 하면 쿼리 생성, 스크래핑, 결과 분석까지 모든 과정을 처리합니다.
스킬 (skill) 설치:
npx skills add gosom/google-maps-scraper
그 다음 에이전트에게 요청하세요:
베를린에 있는 모든 치과를 이메일 주소와 함께 찾아줘
에이전트가 몇 가지 설정 질문을 던진 후, Docker를 통해 백그라운드에서 스크래퍼를 실행하고, 결과를 저장, 필터링, 분석 또는 내보낼 수 있는 옵션과 함께 제시할 것입니다.
Docker가 설치되어 있고 실행 중이어야 합니다. 자세한 내용은 기술 정의(skill definition)를 참조하세요.
배포된 Docker 이미지는 Playwright를 사용합니다:
docker pull gosom/google-maps-scraper
요구 사항: Go 1.26.3 이상
git clone https://github.com/gosom/google-maps-scraper.git
cd google-maps-scraper
go mod download
...
첫 실행 시 Playwright에 필요한 브라우저 라이브러리를 다운로드합니다.
| 기능 | 설명 |
|---|---|
| 33개 이상의 데이터 포인트 | 비즈니스 이름, 주소, 전화번호, 웹사이트, 리뷰, 좌표 등 |
| 이메일 추출 (Email Extraction) | 비즈니스 웹사이트에서 이메일 주소를 선택적으로 크롤링 |
| 다양한 출력 형식 | CSV, JSON, PostgreSQL, S3, LeadsDB 또는 커스텀 플러그인 |
| 프록시 지원 (Proxy Support) | 인증 기능이 포함된 SOCKS5, HTTP, HTTPS |
| 확장 가능한 아키텍처 (Scalable Architecture) | 단일 머신에서 Kubernetes 클러스터까지 |
| REST API | 자동화를 위한 프로그래밍 방식의 제어 |
| 웹 UI (Web UI) | 사용자 친화적인 브라우저 인터페이스 |
| 빠른 모드 (Fast Mode, 베타) | 쿼리당 최대 21개의 결과를 빠르게 추출 |
| AWS Lambda | 서버리스 실행 지원 (실험적 기능) |
33개 데이터 포인트 모두 펼치기
| # | 필드 (Field) | 설명 (Description) |
|---|---|---|
| 1 | input_id | 입력 쿼리에 대한 내부 식별자 (Internal identifier) |
| 2 | link | Google Maps 리스팅으로 연결되는 직접 URL |
| 3 | title | 업체명 |
| 4 | category | 업체 유형 (예: 식당, 호텔) |
| 5 | address | 도로명 주소 |
| 6 | open_hours | 영업 시간 |
| 7 | popular_times | 방문객 트래픽 패턴 |
| 8 | website | 공식 업체 웹사이트 |
| 9 | phone | 연락처 전화번호 |
| 10 | plus_code | 위치 숏코드 (Plus Code) |
| 11 | review_count | 총 리뷰 개수 |
| 12 | review_rating | 평균 별점 |
| 13 | reviews_per_rating | 별점별 분포 |
| 14 | latitude | GPS 위도 |
| 15 | longitude | GPS 경도 |
| 16 | cid | Google의 고유 고객 ID (Customer ID) |
| 17 | status | 업체 상태 (영업 중/폐업/임시 휴업) |
| 18 | descriptions | 업체 설명 |
| 19 | reviews_link | 리뷰로 연결되는 직접 링크 |
| 20 | thumbnail | 썸네일 이미지 URL |
| 21 | timezone | 업체 시간대 (Timezone) |
| 22 | price_range | 가격대 |
| 23 | data_id | 내부 Google Maps 식별자 |
| 24 | images | 관련 이미지 URL |
| 25 | reservations | 예약 링크 |
| 26 | order_online | 온라인 주문 링크 |
| 27 | menu | 메뉴 링크 |
| 28 | owner | 소유자 인증 상태 |
| 29 | complete_address | 전체 형식 주소 |
| 30 | about | 추가 업체 정보 |
| 31 | user_reviews | 고객 리뷰 (텍스트, 별점, 타임스탬프) |
| 32 | emails | 추출된 이메일 주소 (-email 플래그 필요) |
| 33 | user_reviews_extended | 약 300개까지의 확장된 리뷰 (-extra-reviews 플래그 필요) |
| 34 | place_id | Google의 고유 장소 ID (Place ID) |
사용자 정의 입력 ID (Custom Input IDs): 입력 파일에서 자신만의 ID를 정의할 수 있습니다:
Matsuhisa Athens #!#MyCustomID
직접 Google Maps URL (Direct Google Maps URLs): 입력 라인은 일반 검색 쿼리이거나 직접적인 Google Maps URL일 수 있습니다. 지원되는 URL 형식은 다음과 같습니다:
...
google.com의 URL
서브도메인은 반드시 스킴 (http:// 또는 https://)과 /maps 경로를 포함해야 합니다. 짧은 maps.app.goo.gl 링크 또한 스킴 없이 지원됩니다.
Usage: google-maps-scraper [options]
Core Options:
-input string Path to input file with queries (one per line)
...
전체 목록을 확인하려면 ./google-maps-scraper -h를 실행하세요.
더 큰 규모의 스크래핑 (scraping) 작업을 수행할 때는 프록시 (proxies)를 사용하여 속도 제한 (rate limiting)을 피하는 것이 도움이 됩니다. 설정 방법은 다음과 같습니다:
./google-maps-scraper \
-input queries.txt \
-results results.csv \
...
지원되는 프로토콜 (protocols): socks5, socks5h, http, https
현재 프록시 스폰서 (proxy sponsors)는 Proxy Sponsors에 나열되어 있습니다. 해당 링크를 사용하면 프로젝트 유지 관리 비용을 지원하는 데 도움이 됩니다.
이메일 추출 (Email extraction)은 기본적으로 비활성화 (disabled by default) 되어 있습니다. 활성화하면 스크래퍼가 각 비즈니스 웹사이트를 방문하여 이메일 주소를 찾습니다.
./google-maps-scraper -input queries.txt -results results.csv -email
참고: 이메일 추출은 처리 시간을 크게 증가시킵니다.
빠른 모드 (Fast mode)는 쿼리당 최대 21개의 결과를 거리순으로 반환합니다. 기본 필드를 사용하여 빠르게 데이터를 수집할 때 유용합니다.
./google-maps-scraper \
-input queries.txt \
-results results.csv \
...
경고: 빠른 모드는 베타 (Beta) 버전입니다. 차단 (blocking)을 경험할 수 있습니다.
그리드 모드 (Grid mode)는 경계 상자 (bounding box)를 셀 (cells)로 나누고 셀당 하나의 검색을 실행합니다. 이는 단일 검색으로 충분한 장소가 반환되지 않을 때 유용합니다.
queries.txt 예시:
cafes in Peristeri, Greece
명령어 예시:
./google-maps-scraper \
-input queries.txt \
-results peristeri-cafes.csv \
...
참고 사항:
-grid-bbox는 검색이 시작되는 위치를 안내하지만, 결과가 상자 안에 엄격하게 잘리지는 않습니다. 엄격한 거리 필터링을 원한다면 -fast-mode와 -geo + -radius를 함께 사용하거나 (또는 위도/경도로 사후 필터링하세요).
기본값인 -pages-per-browser 1을 사용할 경우, 각 동시 작업 (-c)은 단일 페이지 탭을 가진 자체 브라우저 프로세스를 효과적으로 사용합니다. 브라우저 페이지는 CPU 및 메모리 사용량이 높을 수 있고, 각 브라우저 프로세스가 오버헤드 (overhead)를 추가하기 때문에 이는 비효율적일 수 있습니다.
-pages-per-browser 플래그를 사용하면 동일한 브라우저 프로세스 내에서 여러 페이지 탭을 실행할 수 있어 오버헤드 (overhead)를 줄일 수 있습니다. -browser-pool-size를 0으로 두면 동시성 (concurrency)과 페이지당 브라우저 수를 기반으로 브라우저 개수를 도출하며, 또는 동시성과 독립적으로 브라우저 프로세스 수를 제한하기 위해 명시적으로 설정할 수 있습니다.
플래그 상호작용 방식:
| 플래그 | 제어 항목 |
|---|---|
-c | 총 동시 스크레이핑 작업 수 |
-browser-pool-size | 실행할 브라우저 프로세스 수 (기본값: 0, -c 및 -pages-per-browser로부터 도출됨) |
-pages-per-browser | 브라우저 프로세스당 페이지 탭 수 (기본값: 1) |
-pages-per-browser가 1보다 크면, 스크레이퍼는 각 브라우저 프로세스 내에서 여러 탭을 열고 공유 페이지 풀 (page pool)을 통해 작업을 라우팅합니다. 이는 동일한 하드웨어에서 작업 처리량 (throughput)을 크게 증가시킬 수 있습니다.
예시 — 2개의 브라우저를 사용하며 각 브라우저에 4개의 탭이 있는 8개의 동시 작업:
./google-maps-scraper \
-c 8 \
-browser-pool-size 2 \
...
튜닝 가이드:
- 4:1의 페이지 대 브라우저 비율을 위해
-c 4 -browser-pool-size 1 -pages-per-browser 4로 시작하세요. htop또는docker stats를 사용하여 CPU 및 RAM 사용량을 모니터링하세요. 브라우저 리소스 사용량은 워크로드 (workload), Chromium 버전 및 페이지 수에 따라 크게 달라집니다.- 메모리가 병목 현상 (bottleneck)인 경우,
-browser-pool-size를 낮게 유지하고-c또는-pages-per-browser를 줄이세요. - CPU가 병목 현상인 경우,
-c또는-pages-per-browser를 낮추어 활성 페이지의 총 수를 줄이세요. - 모든 작업이 계속 수행되도록
-browser-pool-size × -pages-per-browser의 결과값이-c와 대략 같거나 커야 합니다. - 명시적인
-browser-pool-size를 설정하면
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Go (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기