[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10906":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},10906,"google-maps-scraper","gosom\u002Fgoogle-maps-scraper","gosom","scrape data  from Google Maps. Extracts data such as the name, address, phone number, website URL, rating,  reviews number, latitude and longitude, reviews,email and more for each place",null,"https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper","Go",4295,643,26,56,0,58,90,291,174,30.43,false,"main",[25,26,27,28,29,30,31,32,33,34],"golang","google-maps-scraping","web-scraper","web-scraping","distributed-scraper","distributed-scraping","google-maps","agent-skills","claude-skills","codex-skills","2026-06-12 02:02:28","# Google Maps Scraper\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fgosom\u002Fgoogle-maps-scraper?style=social\" alt=\"GitHub Stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Fnetwork\u002Fmembers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002Fgosom\u002Fgoogle-maps-scraper?style=social\" alt=\"GitHub Forks\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fintent\u002Ftweet?text=Powerful%20open-source%20Google%20Maps%20scraper%20-%20extract%20business%20data%20at%20scale%20with%20CLI%2C%20Web%20UI%2C%20or%20REST%20API&url=https%3A%2F%2Fgithub.com%2Fgosom%2Fgoogle-maps-scraper&hashtags=golang,webscraping,googlemaps,opensource\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Furl\u002Fhttp\u002Fshields.io.svg?style=social\" alt=\"Tweet\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Factions\u002Fworkflows\u002Fbuild.yml)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper)\n[![GoDoc](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper?status.svg)](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20Chat-7289DA?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FfpaAVhNCCu)\n\nExtract Google Maps business leads, emails, reviews, phone numbers, websites, ratings, coordinates, and more with a free open-source CLI, Web UI, REST API, and optional self-hosted platform.\n\nUse it for lead generation, local business research, sales prospecting, data enrichment, or developer automation.\n\n| Goal | Start here |\n|---|---|\n| Get leads into CSV\u002FJSON | [Command Line](#command-line) |\n| Ask an AI coding agent to run a scrape | [AI Agent Skill](#ai-agent-skill) |\n| Run a browser UI locally | [Web UI](#web-ui) |\n| Automate scraping from your app | [REST API](#rest-api) |\n| Run a multi-user scraping platform | [SaaS Edition](docs\u002Fsaas.md) |\n| Follow common workflows | [Recipes](docs\u002Frecipes.md) |\n\n![Example GIF](img\u002Fexample.gif)\n\nIf this project is useful to you, a GitHub star helps others discover it. Sponsorships help fund maintenance and new work.\n\n---\n\n## Sponsored By\n\n\u003Cp align=\"center\">\u003Ci>This project is made possible by our amazing sponsors\u003C\u002Fi>\u003C\u002Fp>\n\n### [Scrap.io](https:\u002F\u002Fscrap.io?utm_medium=ads&utm_source=github_gosom_gmap_scraper) - Extract ALL Google Maps listings at country-scale\n\n[![Scrap.io - Extract ALL Google Maps Listings](.\u002Fimg\u002Fpremium_scrap_io.png)](https:\u002F\u002Fscrap.io?utm_medium=ads&utm_source=github_gosom_gmap_scraper)\n\nNo keywords needed. No limits. Export millions of businesses in 2 clicks. [**Try it free →**](https:\u002F\u002Fscrap.io?utm_medium=ads&utm_source=github_gosom_gmap_scraper)\n\n---\n\n### [G Maps Extractor](https:\u002F\u002Fgmapsextractor.com?utm_source=github&utm_medium=banner&utm_campaign=gosom) - No-code Google Maps scraper\n\n[![G Maps Extractor](.\u002Fimg\u002Fgmaps-extractor-banner.png)](https:\u002F\u002Fgmapsextractor.com?utm_source=github&utm_medium=banner&utm_campaign=gosom)\n\nChrome extension that extracts emails, social profiles, phone numbers, reviews & more. [**Get 1,000 free leads →**](https:\u002F\u002Fgmapsextractor.com?utm_source=github&utm_medium=banner&utm_campaign=gosom)\n\n---\n\n### [SerpApi](https:\u002F\u002Fserpapi.com\u002F?utm_source=google-maps-scraper) - Google Maps API and 30+ search engine APIs\n\n[![SerpApi](.\u002Fimg\u002FSerpApi-banner.png)](https:\u002F\u002Fserpapi.com\u002F?utm_source=google-maps-scraper)\n\nFast, reliable, and scalable. Used by Fortune 500 companies. [**View all APIs →**](https:\u002F\u002Fserpapi.com\u002Fsearch-api)\n\n---\n\n### [SearchApi](https:\u002F\u002Fwww.searchapi.io\u002Fgoogle-maps?via=gosom&utm_source=github&utm_medium=sponsorship&utm_campaign=gosom) - Google Maps API for SERP scraping\n\n[![SearchApi](.\u002Fimg\u002Fsearchapi_google_maps.png)](https:\u002F\u002Fwww.searchapi.io\u002Fgoogle-maps?via=gosom&utm_source=github&utm_medium=sponsorship&utm_campaign=gosom)\n\nReal-time Google Maps data with a simple integration. [**Explore the API →**](https:\u002F\u002Fwww.searchapi.io\u002Fgoogle-maps?via=gosom&utm_source=github&utm_medium=sponsorship&utm_campaign=gosom)\n\n---\n\n### [Evomi](https:\u002F\u002Fevomi.com?utm_source=github&utm_medium=banner&utm_campaign=gosom-maps) - Swiss quality proxies for scraping\n\n[![Evomi](https:\u002F\u002Fmy.evomi.com\u002Fimages\u002Fbrand\u002Fcta.png)](https:\u002F\u002Fevomi.com?utm_source=github&utm_medium=banner&utm_campaign=gosom-maps)\n\nSwiss quality proxies from $0.49\u002FGB across 150+ countries, with 24\u002F7 support and 99.9% uptime. [**Visit Evomi →**](https:\u002F\u002Fevomi.com?utm_source=github&utm_medium=banner&utm_campaign=gosom-maps)\n\n---\n\n### [HasData](https:\u002F\u002Fhasdata.com\u002Fscrapers\u002Fgoogle-maps?utm_source=github&utm_medium=sponsorship&utm_campaign=gosom) - No-code Google Maps Scraper & Email Extraction\n\n[![HasData Google Maps Scraper](.\u002Fimg\u002Fhd-gm-banner.png)](https:\u002F\u002Fhasdata.com\u002Fscrapers\u002Fgoogle-maps?utm_source=github&utm_medium=sponsorship&utm_campaign=gosom)\n\nExtract business leads, emails, addresses, phones, reviews and more. [**Get 1,000 free credits →**](https:\u002F\u002Fhasdata.com\u002Fscrapers\u002Fgoogle-maps?utm_source=github&utm_medium=sponsorship&utm_campaign=gosom)\n\n---\n\n### [RapidProxy](https:\u002F\u002Fwww.rapidproxy.io\u002F?ref=gosom) - High-Performance Proxy Solution\n\n[![RapidProxy](.\u002Fimg\u002Frapidproxy-banner.png)](https:\u002F\u002Fwww.rapidproxy.io\u002F?ref=gosom)\n\nUnlock global access with consistent, high-speed connections from $0.65\u002FGB, 90M+ real residential IPs worldwide, and traffic that never expires. [**Try it free →**](https:\u002F\u002Fwww.rapidproxy.io\u002F?ref=gosom)\n\n---\n\n### [LeadsDB](https:\u002F\u002Fgetleadsdb.com\u002F) - Your Central Database for Business Leads\n\n[![LeadsDB](.\u002Fimg\u002Fleadsdb-banner.png)](https:\u002F\u002Fgetleadsdb.com\u002F)\n\nPush leads via API or AI agent, remove duplicates automatically, and export when ready. [**Start free →**](https:\u002F\u002Fgetleadsdb.com\u002F)\n\n---\n\n### [Webshare](https:\u002F\u002Fwww.webshare.io\u002F?referral_code=0q3l81eet8mp) - Premium proxies for scraping at scale\n\n[![Webshare](.\u002Fimg\u002Fwebshare-banner.png)](https:\u002F\u002Fwww.webshare.io\u002F?referral_code=0q3l81eet8mp)\n\nThe most affordable premium proxies across 195 countries & 80+ million IPs, plus a FREE plan for new users. [Learn more](webshare.md)\n\n---\n\n### [Legion Proxy](https:\u002F\u002Flegionproxy.io\u002F?utm_source=github&utm_campaign=gmaps) - Residential proxies for Google Maps Scraper\n\n74M+ real residential IPs, HTTP\u002F3 & UDP support, SOCKS5-ready, 195+ countries. Works out of the box with Google Maps Scraper. [**Get 1GB free →**](https:\u002F\u002Flegionproxy.io\u002F?utm_source=github&utm_campaign=gmaps)\n\n[![Legion Proxy](.\u002Fimg\u002Flegion-proxy.png)](https:\u002F\u002Flegionproxy.io\u002F?utm_source=github&utm_campaign=gmaps)\n\n---\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#sponsored-by\">View all sponsors\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fgosom\">Become a sponsor\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Why Use This Scraper?\n\n| | |\n|---|---|\n| **Completely Free & Open Source** | MIT licensed, no hidden costs or usage limits |\n| **Multiple Interfaces** | CLI, Web UI, REST API - use what fits your workflow |\n| **High Performance** | ~120 places\u002Fminute with optimized concurrency |\n| **33+ Data Points** | Business details, reviews, emails, coordinates, and more |\n| **Production Ready** | Scale from a single machine to Kubernetes clusters |\n| **Flexible Output** | CSV, JSON, PostgreSQL, S3, LeadsDB, or custom plugins |\n| **Proxy Support** | Built-in SOCKS5\u002FHTTP\u002FHTTPS proxy rotation |\n\n---\n\n## What's Next After Scraping?\n\nOnce you've collected your data, you'll need to manage, deduplicate, and work with your leads. **[LeadsDB](https:\u002F\u002Fgetleadsdb.com\u002F)** is a companion tool designed exactly for this:\n\n- **Automatic Deduplication** - Import from multiple scrapes without worrying about duplicates\n- **AI Agent Ready** - Query and manage leads with natural language via MCP\n- **Advanced Filtering** - Combine filters with AND\u002FOR logic on any field\n- **Export Anywhere** - CSV, JSON, or use the REST API\n\nThe scraper has [built-in LeadsDB integration](#export-to-leadsdb) - just add your API key and leads flow directly into your database.\n\n**[Start free with 500 leads](https:\u002F\u002Fgetleadsdb.com\u002F)**\n\n---\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n  - [Command Line](#command-line)\n  - [Web UI](#web-ui)\n  - [REST API](#rest-api)\n  - [SaaS Edition](#saas-edition)\n- [AI Agent Skill](#ai-agent-skill)\n- [Recipes](docs\u002Frecipes.md)\n- [Proxy Sponsors](docs\u002Fproxies.md)\n- [Installation](#installation)\n- [Features](#features)\n- [Extracted Data Points](#extracted-data-points)\n- [Configuration](#configuration)\n  - [Command Line Options](#command-line-options)\n  - [Using Proxies](#using-proxies)\n  - [Email Extraction](#email-extraction)\n  - [Fast Mode](#fast-mode)\n- [Export to LeadsDB](#export-to-leadsdb)\n- [Advanced Usage](#advanced-usage)\n  - [PostgreSQL Database Provider](#postgresql-database-provider)\n  - [Kubernetes Deployment](#kubernetes-deployment)\n  - [Custom Writer Plugins](#custom-writer-plugins)\n- [Performance](#performance)\n- [Support the Project](#support-the-project)\n- [Community](#community)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Quick Start\n\n### Command Line\n\n```bash\nmkdir -p gmaps-output\n\ndocker run \\\n  -v gmaps-playwright-cache:\u002Fopt \\\n  -v \"$PWD\u002Fexample-queries.txt:\u002Fqueries.txt:ro\" \\\n  -v \"$PWD\u002Fgmaps-output:\u002Fout\" \\\n  gosom\u002Fgoogle-maps-scraper \\\n  -input \u002Fqueries.txt \\\n  -results \u002Fout\u002Fresults.csv \\\n  -depth 1 \\\n  -exit-on-inactivity 3m\n```\n\nUseful options:\n\n| Need | Flag |\n|---|---|\n| Extract emails from business websites | `-email` |\n| Write JSON instead of CSV | `-json -results \u002Fout\u002Fresults.json` |\n| Collect extra reviews | `-extra-reviews -json -results \u002Fout\u002Fresults.json` |\n| Increase concurrency | `-c 4`, `-c 8`, or `-c 16` |\n| Use proxies | `-proxies \"http:\u002F\u002Fuser:pass@host:port,socks5:\u002F\u002Fhost:port\"` |\n\n`-c` controls how many scrape jobs run in parallel. Higher concurrency can finish large input files faster, but it also uses more CPU\u002FRAM and can increase blocking or failures, especially without proxies. Start with the default for a first run. For larger jobs on a capable machine, try `-c 4`, `-c 8`, or `-c 16` and measure the result.\n\n**Want to skip CSV files?** Send leads directly to [LeadsDB](https:\u002F\u002Fgetleadsdb.com\u002F):\n\n```bash\ndocker run \\\n  -v gmaps-playwright-cache:\u002Fopt \\\n  -v \"$PWD\u002Fexample-queries.txt:\u002Fqueries.txt:ro\" \\\n  gosom\u002Fgoogle-maps-scraper \\\n  -input \u002Fqueries.txt \\\n  -depth 1 \\\n  -leadsdb-api-key \"your-api-key\" \\\n  -exit-on-inactivity 3m\n```\n\n### Web UI\n\nStart the web interface with a single command:\n\n```bash\nmkdir -p gmapsdata\n\ndocker run \\\n  -v \"$PWD\u002Fgmapsdata:\u002Fgmapsdata\" \\\n  -p 8080:8080 \\\n  gosom\u002Fgoogle-maps-scraper \\\n  -data-folder \u002Fgmapsdata\n```\n\nThen open http:\u002F\u002Flocalhost:8080 in your browser.\n\nOr download the [binary release](https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Freleases) for your platform.\n\n> **Note:** Results take at least 3 minutes to appear (minimum configured runtime).\n> \n> **macOS Users:** Docker command may not work. See [MacOS Instructions](MacOS%20instructions.md).\n\n### REST API\n\nWhen running the web server, a full REST API is available:\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `\u002Fapi\u002Fv1\u002Fjobs` | POST | Create a new scraping job |\n| `\u002Fapi\u002Fv1\u002Fjobs` | GET | List all jobs |\n| `\u002Fapi\u002Fv1\u002Fjobs\u002F{id}` | GET | Get job details |\n| `\u002Fapi\u002Fv1\u002Fjobs\u002F{id}` | DELETE | Delete a job |\n| `\u002Fapi\u002Fv1\u002Fjobs\u002F{id}\u002Fdownload` | GET | Download results as CSV |\n\nFull OpenAPI 3.0.3 documentation available at http:\u002F\u002Flocalhost:8080\u002Fapi\u002Fdocs\n\n### SaaS Edition\n\nNeed a multi-user platform with API keys, admin UI, job queue, workers, and cloud provisioning? Use the optional self-hosted SaaS edition:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fgosom\u002Fgoogle-maps-scraper\u002Fmain\u002FPROVISION | sh\n```\n\nSee [SaaS documentation](docs\u002Fsaas.md) for deployment and operations details.\nThere is also a [5-minute deployment walkthrough](https:\u002F\u002Fgosom.dev\u002Fdeploy-your-own-maps-scraping-api-in-5-minutes\u002F) and a [YouTube video walkthrough](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=STG9mZw_nac).\n\nMore examples are available in [Recipes](docs\u002Frecipes.md). If you need proxies for larger jobs, see [Proxy Sponsors](docs\u002Fproxies.md).\n\n---\n\n## AI Agent Skill\n\nUse Google Maps Scraper directly from AI coding agents like [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code), Cursor, GitHub Copilot, and [20+ other agents](https:\u002F\u002Fagentskills.io). Just tell your agent to find businesses and it handles everything — query creation, scraping, and result analysis.\n\n**Install the skill:**\n\n```bash\nnpx skills add gosom\u002Fgoogle-maps-scraper\n```\n\n**Then just ask your agent:**\n\n> Find me all dentists in Berlin with their emails\n\nThe agent will ask you a few setup questions, run the scraper in the background via Docker, and present the results with options to save, filter, analyze, or export.\n\nRequires Docker installed and running. See the [skill definition](skills\u002Fgoogle-maps-scraper\u002FSKILL.md) for details.\n\n---\n\n## Installation\n\n### Using Docker (Recommended)\n\nThe published Docker image uses Playwright:\n\n```bash\ndocker pull gosom\u002Fgoogle-maps-scraper\n```\n\n### Build from Source\n\nRequirements: Go 1.25.6+\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper.git\ncd google-maps-scraper\ngo mod download\n\ngo build\n.\u002Fgoogle-maps-scraper -input example-queries.txt -results results.csv -exit-on-inactivity 3m\n```\n\n> First run downloads required browser libraries for Playwright.\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **33+ Data Points** | Business name, address, phone, website, reviews, coordinates, and more |\n| **Email Extraction** | Optional crawling of business websites for email addresses |\n| **Multiple Output Formats** | CSV, JSON, PostgreSQL, S3, LeadsDB, or custom plugins |\n| **Proxy Support** | SOCKS5, HTTP, HTTPS with authentication |\n| **Scalable Architecture** | Single machine to Kubernetes cluster |\n| **REST API** | Programmatic control for automation |\n| **Web UI** | User-friendly browser interface |\n| **Fast Mode (Beta)** | Quick extraction of up to 21 results per query |\n| **AWS Lambda** | Serverless execution support (experimental) |\n\n---\n\n## Extracted Data Points\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Click to expand all 33 data points\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| # | Field | Description |\n|---|-------|-------------|\n| 1 | `input_id` | Internal identifier for the input query |\n| 2 | `link` | Direct URL to the Google Maps listing |\n| 3 | `title` | Business name |\n| 4 | `category` | Business type (e.g., Restaurant, Hotel) |\n| 5 | `address` | Street address |\n| 6 | `open_hours` | Operating hours |\n| 7 | `popular_times` | Visitor traffic patterns |\n| 8 | `website` | Official business website |\n| 9 | `phone` | Contact phone number |\n| 10 | `plus_code` | Location shortcode |\n| 11 | `review_count` | Total number of reviews |\n| 12 | `review_rating` | Average star rating |\n| 13 | `reviews_per_rating` | Breakdown by star rating |\n| 14 | `latitude` | GPS latitude |\n| 15 | `longitude` | GPS longitude |\n| 16 | `cid` | Google's unique Customer ID |\n| 17 | `status` | Business status (open\u002Fclosed\u002Ftemporary) |\n| 18 | `descriptions` | Business description |\n| 19 | `reviews_link` | Direct link to reviews |\n| 20 | `thumbnail` | Thumbnail image URL |\n| 21 | `timezone` | Business timezone |\n| 22 | `price_range` | Price level ($, $$, $$$) |\n| 23 | `data_id` | Internal Google Maps identifier |\n| 24 | `images` | Associated image URLs |\n| 25 | `reservations` | Reservation booking link |\n| 26 | `order_online` | Online ordering link |\n| 27 | `menu` | Menu link |\n| 28 | `owner` | Owner-claimed status |\n| 29 | `complete_address` | Full formatted address |\n| 30 | `about` | Additional business info |\n| 31 | `user_reviews` | Customer reviews (text, rating, timestamp) |\n| 32 | `emails` | Extracted email addresses (requires `-email` flag) |\n| 33 | `user_reviews_extended` | Extended reviews up to ~300 (requires `-extra-reviews`) |\n| 34 | `place_id` | Google's unique place id |\n\n\u003C\u002Fdetails>\n\n**Custom Input IDs:** Define your own IDs in the input file:\n```\nMatsuhisa Athens #!#MyCustomID\n```\n\n---\n\n## Configuration\n\n### Command Line Options\n\n```\nUsage: google-maps-scraper [options]\n\nCore Options:\n  -input string       Path to input file with queries (one per line)\n  -results string     Output file path (default: stdout)\n  -json              Output JSON instead of CSV\n  -depth int         Max scroll depth in results (default: 10)\n  -c int             Concurrency level (default: half of CPU cores)\n\nEmail & Reviews:\n  -email             Extract emails from business websites\n  -extra-reviews     Collect extended reviews (up to ~300)\n\nLocation Settings:\n  -lang string       Language code, e.g., 'de' for German (default: \"en\")\n  -geo string        Coordinates for search, e.g., '37.7749,-122.4194'\n  -zoom int          Zoom level 0-21 (default: 15)\n  -radius float      Search radius in meters (default: 10000)\n  -grid-bbox string  Bounding box for grid scraping, format: \"minLat,minLon,maxLat,maxLon\"\n  -grid-cell float   Grid cell size in km (default: 1.0, used with -grid-bbox)\n\nWeb Server:\n  -web               Run web server mode\n  -addr string       Server address (default: \":8080\")\n  -data-folder       Data folder for web runner (default: \"webdata\")\n\nDatabase:\n  -dsn string        PostgreSQL connection string\n  -produce           Produce seed jobs only (requires -dsn)\n\nProxy:\n  -proxies string    Comma-separated proxy list\n                     Format: protocol:\u002F\u002Fuser:pass@host:port\n\nExport:\n  -leadsdb-api-key   Export directly to LeadsDB (get key at getleadsdb.com)\n\nAdvanced:\n  -exit-on-inactivity duration    Exit after inactivity (e.g., '5m')\n  -fast-mode                      Quick mode with reduced data\n  -debug                          Show browser window\n  -writer string                  Custom writer plugin (format: 'dir:pluginName')\n\nNotes:\n  -grid-bbox requires a valid zoom level (1-21)\n  -fast-mode cannot be used together with -grid-bbox\n```\n\nRun `.\u002Fgoogle-maps-scraper -h` for the complete list.\n\n### Using Proxies\n\nFor larger scraping jobs, proxies help avoid rate limiting. Here's how to configure them:\n\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -input queries.txt \\\n  -results results.csv \\\n  -proxies 'socks5:\u002F\u002Fuser:pass@host:port,http:\u002F\u002Fhost2:port2' \\\n  -depth 1 -c 2\n```\n\n**Supported protocols:** `socks5`, `socks5h`, `http`, `https`\n\nCurrent proxy sponsors are listed in [Proxy Sponsors](docs\u002Fproxies.md). Using those links helps fund project maintenance.\n\n### Email Extraction\n\nEmail extraction is **disabled by default**. When enabled, the scraper visits each business website to find email addresses.\n\n```bash\n.\u002Fgoogle-maps-scraper -input queries.txt -results results.csv -email\n```\n\n> **Note:** Email extraction increases processing time significantly.\n\n### Fast Mode\n\nFast mode returns up to 21 results per query, ordered by distance. Useful for quick data collection with basic fields.\n\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -input queries.txt \\\n  -results results.csv \\\n  -fast-mode \\\n  -zoom 15 \\\n  -radius 5000 \\\n  -geo '37.7749,-122.4194'\n```\n\n> **Warning:** Fast mode is in Beta. You may experience blocking.\n\n### Grid Scraping (BBox)\n\nGrid mode splits a bounding box into cells and runs one search per cell. This is useful when a single search does not return enough places.\n\n`queries.txt` example:\n\n```text\ncafes in Peristeri, Greece\n```\n\nCommand example:\n\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -input queries.txt \\\n  -results peristeri-cafes.csv \\\n  -grid-bbox \"38.0077,23.6719,38.0257,23.6947\" \\\n  -grid-cell 0.5 \\\n  -zoom 16 \\\n  -depth 1 \\\n  -c 4\n```\n\nNotes:\n- `-grid-bbox` guides where searches are launched from, but results are not strictly clipped to the box.\n- For strict distance filtering, use `-fast-mode` with `-geo` + `-radius` (or post-filter by latitude\u002Flongitude).\n\n---\n\n## Export to LeadsDB\n\nSkip the CSV files and send leads directly to a managed database. [LeadsDB](https:\u002F\u002Fgetleadsdb.com\u002F) handles deduplication, filtering, and provides an API for your applications.\n\n**Using Docker:**\n```bash\ndocker run \\\n  -v gmaps-playwright-cache:\u002Fopt \\\n  -v \"$PWD\u002Fexample-queries.txt:\u002Fqueries.txt:ro\" \\\n  gosom\u002Fgoogle-maps-scraper \\\n  -input \u002Fqueries.txt \\\n  -depth 1 \\\n  -leadsdb-api-key \"your-api-key\" \\\n  -exit-on-inactivity 3m\n```\n\n**Using binary:**\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -input queries.txt \\\n  -leadsdb-api-key \"your-api-key\" \\\n  -exit-on-inactivity 3m\n```\n\nOr via environment variable:\n```bash\nexport LEADSDB_API_KEY=\"your-api-key\"\n.\u002Fgoogle-maps-scraper -input queries.txt -exit-on-inactivity 3m\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>Field Mapping\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| Google Maps | LeadsDB |\n|-------------|---------|\n| Title | Name |\n| Category | Category |\n| Categories | Tags |\n| Phone | Phone |\n| Website | Website |\n| Address | Address, City, State, Country, PostalCode |\n| Latitude\u002FLongitude | Coordinates |\n| Review Rating | Rating |\n| Review Count | ReviewCount |\n| Emails | Email |\n| Thumbnail | LogoURL |\n| CID | SourceID |\n\nAdditional fields (Google Maps link, plus code, price range, etc.) are stored as custom attributes.\n\n\u003C\u002Fdetails>\n\nGet your API key at [getleadsdb.com\u002Fsettings](https:\u002F\u002Fgetleadsdb.com\u002Fsettings) after signing up.\n\n---\n\n## Advanced Usage\n\n### PostgreSQL Database Provider\n\nFor distributed scraping across multiple machines:\n\n**1. Start PostgreSQL:**\n```bash\ndocker-compose -f docker-compose.dev.yaml up -d\n```\n\n**2. Seed the jobs:**\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -dsn \"postgres:\u002F\u002Fpostgres:postgres@localhost:5432\u002Fpostgres\" \\\n  -produce \\\n  -input example-queries.txt \\\n  -lang en\n```\n\n**3. Run scrapers (on multiple machines):**\n```bash\n.\u002Fgoogle-maps-scraper \\\n  -c 2 \\\n  -depth 1 \\\n  -dsn \"postgres:\u002F\u002Fpostgres:postgres@localhost:5432\u002Fpostgres\"\n```\n\n### Kubernetes Deployment\n\n```yaml\napiVersion: apps\u002Fv1\nkind: Deployment\nmetadata:\n  name: google-maps-scraper\nspec:\n  replicas: 3  # Adjust based on needs\n  selector:\n    matchLabels:\n      app: google-maps-scraper\n  template:\n    metadata:\n      labels:\n        app: google-maps-scraper\n    spec:\n      containers:\n      - name: google-maps-scraper\n        image: gosom\u002Fgoogle-maps-scraper:latest\n        args: [\"-c\", \"1\", \"-depth\", \"10\", \"-dsn\", \"postgres:\u002F\u002Fuser:pass@host:5432\u002Fdb\"]\n        resources:\n          requests:\n            memory: \"512Mi\"\n            cpu: \"500m\"\n```\n\n> **Note:** The headless browser requires significant CPU\u002Fmemory resources.\n\n### Custom Writer Plugins\n\nCreate custom output handlers using Go plugins:\n\n**1. Write the plugin** (see `examples\u002Fplugins\u002Fexample_writer.go`)\n\n**2. Build:**\n```bash\ngo build -buildmode=plugin -tags=plugin -o myplugin.so myplugin.go\n```\n\n**3. Run:**\n```bash\n.\u002Fgoogle-maps-scraper -writer ~\u002Fplugins:MyWriter -input queries.txt\n```\n\n---\n\n## Performance\n\n**Expected throughput:** ~120 places\u002Fminute (with `-c 8 -depth 1`)\n\n| Keywords | Results\u002FKeyword | Total Jobs | Estimated Time |\n|----------|-----------------|------------|----------------|\n| 100 | 16 | 1,600 | ~13 minutes |\n| 1,000 | 16 | 16,000 | ~2.5 hours |\n| 10,000 | 16 | 160,000 | ~22 hours |\n\nFor large-scale scraping, use the PostgreSQL provider with Kubernetes.\n\n### Telemetry\n\nAnonymous usage statistics are collected for improvement purposes. Opt out:\n```bash\nexport DISABLE_TELEMETRY=1\n```\n\n---\n\n## Support the Project\n\nThis project is free and open source. Stars, sponsorships, and sponsor referrals help fund maintenance.\n\n- Star the repository: [github.com\u002Fgosom\u002Fgoogle-maps-scraper](https:\u002F\u002Fgithub.com\u002Fgosom\u002Fgoogle-maps-scraper)\n- Sponsor development: [GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fgosom)\n- Need proxies? See [Proxy Sponsors](docs\u002Fproxies.md)\n- Deploying the self-hosted platform? See [SaaS deployment options](docs\u002Fsaas.md)\n- Managing scraped leads? See [LeadsDB](https:\u002F\u002Fgetleadsdb.com\u002F)\n\n---\n\n## Community\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20Our%20Server-7289DA?logo=discord&logoColor=white&style=for-the-badge)](https:\u002F\u002Fdiscord.gg\u002FfpaAVhNCCu)\n\nJoin our Discord to:\n- Get help with setup and configuration\n- Share your use cases and success stories\n- Request features and report bugs\n- Connect with other users\n\n---\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Open an issue to discuss your idea\n2. Fork the repository\n3. Create a pull request\n\nSee [AGENTS.md](AGENTS.md) for development guidelines.\n\n---\n\n## References\n\n- [How to Extract Data from Google Maps Using Golang](https:\u002F\u002Fblog.gkomninos.com\u002Fhow-to-extract-data-from-google-maps-using-golang)\n- [Distributed Google Maps Scraping](https:\u002F\u002Fblog.gkomninos.com\u002Fdistributed-google-maps-scraping)\n- [Deploy your own Maps scraping API in 5 minutes (includes video walkthrough)](https:\u002F\u002Fgosom.dev\u002Fdeploy-your-own-maps-scraping-api-in-5-minutes\u002F)\n- [Video walkthrough (YouTube)](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=STG9mZw_nac)\n- [scrapemate](https:\u002F\u002Fgithub.com\u002Fgosom\u002Fscrapemate) - The underlying web crawling framework\n- [omkarcloud\u002Fgoogle-maps-scraper](https:\u002F\u002Fgithub.com\u002Fomkarcloud\u002Fgoogle-maps-scraper) - Inspiration for JS data extraction\n\n---\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#gosom\u002Fgoogle-maps-scraper&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gosom\u002Fgoogle-maps-scraper&type=Date&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gosom\u002Fgoogle-maps-scraper&type=Date\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=gosom\u002Fgoogle-maps-scraper&type=Date\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n---\n\n## Legal Notice\n\nPlease use this scraper responsibly and in accordance with applicable laws and regulations. Unauthorized scraping may violate terms of service.\n\n---\n\n\u003Cp align=\"center\">\n  \u003Csub>Banner generated using OpenAI's DALL-E\u003C\u002Fsub>\n\u003C\u002Fp>\n","该项目是一个用于从Google地图抓取数据的工具，能够提取地点名称、地址、电话号码、网站URL、评分、评论数量、经纬度、电子邮件等信息。它采用Go语言开发，具备命令行界面、Web UI和REST API等多种使用方式，支持分布式抓取，适合大规模数据收集。适用于潜在客户挖掘、本地商业研究、销售线索寻找、数据补充以及开发者自动化等场景。",2,"2026-06-11 03:30:44","trending"]