Apify Competitor Intelligence
aAAaqwq/AGI-Super-Team
Analyze competitor strategies, content, pricing, ads, and market positioning across Google Maps, Booking.com, Facebook, Instagram, YouTube, and TikTok.
Scrape Google Maps business listings (name, address, phone, website, rating, reviews, lat/lng, hours, emails) via the local gosom google-maps-scraper REST API.
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraper --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/google-maps-scraper .claude/skills/google-maps-scraper && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .claude/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraperType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraper --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/google-maps-scraper .agents/skills/google-maps-scraper && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .agents/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraper --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/google-maps-scraper .cursor/skills/google-maps-scraper && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .cursor/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Mahanaicoach/google-maps-scraper-kit.git --path .claude/skills/google-maps-scraper--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraper --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/google-maps-scraper .gemini/skills/google-maps-scraper && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .gemini/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraperInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/google-maps-scraper .github/skills/google-maps-scraper && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .github/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Mahanaicoach/google-maps-scraper-kit google-maps-scraper --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Mahanaicoach/google-maps-scraper-kit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/google-maps-scraper .opencode/skills/google-maps-scraper && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "google-maps-scraper" agent skill from https://github.com/Mahanaicoach/google-maps-scraper-kit/tree/master/.claude/skills/google-maps-scraper into .opencode/skills/google-maps-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-maps-scraper", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
google-maps-scraperScrape Google Maps business listings (name, address, phone, website, rating, reviews, lat/lng, hours, emails) via the local gosom google-maps-scraper REST API.
Google Maps Scraper is an agent skill from Mahanaicoach/google-maps-scraper-kit. Scrape Google Maps business listings (name, address, phone, website, rating, reviews, lat/lng, hours, emails) via the local gosom google-maps-scraper REST API. Use when the user wants local-business / lead-gen data, "a list of [businesses] in [place]", or to enrich places with contact info. NOT for Instagram/TikTok/YouTube or any social-media scraping.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering Web scraping. It works with Google Maps Platform, Instagram, TikTok and YouTube. The repository describes itself as: Google Maps scraper for lead generation, run by Claude Code. Exports clean CSVs with phones, emails, websites and socials. Local, free, no API keys. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b4141a2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
curlpython3dockerFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl and docker, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Google Maps Scraper loads about 2.8k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 1,399 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Mahanaicoach/google-maps-scraper-kit at commit b4141a2, republished under its MIT licence (© Mahanaicoach). 1,399 words, ~2,830 tokens.
.claude/skills/google-maps-scraper/SKILL.md (or your agent's skills folder).Drive the local Google Maps scraper API to turn a business-type + location into clean, structured rows.
The scraper runs as a local Docker container exposing a REST API at http://localhost:8080 (no auth —
localhost only). A "scrape" is an async job: you create it, poll until it's done, then download a CSV.
One job can run many keywords. Each result has up to 34 fields.
curl -s http://localhost:8080/api/v1/jobs >/dev/null 2>&1 && echo UP || echo DOWNIf DOWN: docker compose up -d (from the kit root), wait ~10s, retry. If Docker isn't installed, point
the user to SETUP.md.
POST /api/v1/jobs)Required fields — the API returns 422 without them:
keywords — array of search strings. Bake the location into each term: "plumbers in Denver CO".lat, lon — strings, the city's coordinates: "39.7392", "-104.9903".max_time — integer seconds (max wall-clock for the job), e.g. 300. (Sent as seconds; the API stores it as nanoseconds internally — just send seconds.)Recommended fields:
depth (default 10) — how far to scroll → roughly how many listings per keyword. Start at 5.lang "en", zoom 15 (city level), radius 10000 (meters), fast_mode false.email true — ON by default in this kit. Emails are the #1 lead field; the scraper visits each
business website to find them (a bit slower). Only set false for a deliberately fast, no-email run.curl -s -X POST http://localhost:8080/api/v1/jobs \
-H "Content-Type: application/json" \
-d '{"name":"job","keywords":["coffee shops in Austin TX"],"lang":"en","zoom":15,
"lat":"30.2672","lon":"-97.7431","fast_mode":false,"radius":10000,
"depth":5,"email":true,"max_time":300}'
# → {"id":"<uuid>"} (HTTP 201; note: lowercase "id")Two things to handle on every scrape:
- Emails: on by default (
email:true). Don't turn them off unless the user wants a fast run.- Socials: ASK first. Before creating the job, ask the user once whether they also want Instagram/Facebook/LinkedIn (see "Social profiles" below). Don't silently skip it.
GET /api/v1/jobs/{id})The response field is "Status" (capital S): working → ok (success) or failed.
⚠️ Claude harness rule: the Bash tool blocks foreground
sleep. Run the poll loop as a background Bash command (run_in_background: true) and read its output file when notified. Do NOT poll with a foregroundsleep.
Background poll snippet (parses the value safely — match up to the closing quote, don't anchor on $):
ID="<uuid>"
for i in $(seq 1 40); do
S=$(curl -s "http://localhost:8080/api/v1/jobs/$ID" | grep -oE '"Status":"[^"]*"' | head -1 | cut -d'"' -f4)
echo "status=$S"
[ "$S" = ok ] && { echo DONE; break; }
[ "$S" = failed ] && { echo FAILED; break; }
sleep 15
doneGET /api/v1/jobs/{id}/download)curl -s "http://localhost:8080/api/v1/jobs/$ID/download" -o results.csvCSV columns (34): input_id, link, title, category, address, open_hours, popular_times, website, phone, plus_code, review_count, review_rating, reviews_per_rating, latitude, longitude, cid, status, descriptions, reviews_link, thumbnail, timezone, price_range, data_id, place_id, images, reservations, order_online, menu, owner, complete_address, about, user_reviews, user_reviews_extended, emails.
The raw CSV has 34 columns and most are noise. By default, return ONLY these lead fields — the data you actually use to contact and qualify a lead — and drop everything else:
title(name),phone,emails,website,category,address,review_rating,review_count
DROP by default (do not show these unless the user explicitly asks): latitude/longitude (no use for
outreach), link, plus_code, cid, data_id, place_id, open_hours, popular_times,
reviews_per_rating, reviews_link, thumbnail, images, timezone, price_range, status,
input_id, complete_address, reservations, order_online, menu, owner, about, descriptions,
user_reviews, user_reviews_extended.
scripts/scrape.py already returns exactly this lead set (use --full to keep all columns, or
--fields "a,b,c" to customize) and saves a CSV file by default (results-<id>.csv; pass --json for
JSON). If you call the API directly, strip to the lead fields yourself before presenting — never dump the
full 34-column row at the user.
Google Maps has no social links, so this is an enrichment: visit each business's website and regex out its
IG/FB/LinkedIn URLs. Before scraping, ask the user once whether they want socials too (unless they already
said). If yes → use the script: python3 scripts/scrape.py … --socials.
--socials.Shortcuts (prefer these for common cases):
scripts/scrape.sh "<keyword>" <lat> <lon> [depth] (bash) — create→poll→download in one go.python3 scripts/scrape.py "<keyword>" --city "<City, ST>" [--depth N] — resolves
lat/lon via OpenStreetMap Nominatim. You can also geocode the city yourself and pass coords.
Emails come back by default (use --no-email to skip); add --socials if the user asked for socials.python3 scripts/scrape.py --keywords-file <file> --city "<City, ST>".
The API takes a keywords array, so put all terms in a single job rather than firing many jobs.
Do the manual curl flow only for custom job bodies (e.g. setting proxies).GET /api/v1/jobs — list jobs. DELETE /api/v1/jobs/{id} — delete a job + free disk.http://localhost:8080 and http://localhost:8080/api/docs.depth = more results but slower and more block-prone. Start low (5), raise as needed.email:true) visits each business's website → slower, but it's on by default here
because emails are the key lead field. Pass --no-email (script) or email:false (raw API) for a fast run.fast_mode:true returns reduced data, up to ~21 results/query, faster — good for quick lookups."proxies" (array of socks5:///http:///https:// URLs,
auth supported). The scraper has built-in rotation. This is the main defense against rate-limiting.zoom/radius control the search area around lat/lon. Widen radius if results are too few.This hits Google Maps for real. The upstream project's only formal note is a disclaimer:
"Please use this scraper responsibly and in accordance with applicable laws and regulations. Unauthorized scraping may violate terms of service."
There is no published hard threshold for bans, so be conservative:
failed, empty or unusually short results, or a sudden drop
in row counts vs. a prior identical run. If you see these, back off (pause, lower depth) or add proxies.-c 8 -depth 1. Locally, run one job at a time and start at depth 5.When to add proxies (upstream: "For larger scraping jobs, proxies help avoid rate limiting"): large jobs, many keywords, repeated/scheduled runs, or after you see block signals.
"proxies" array in the job body. Types: socks5, socks5h, http, https.protocol://user:pass@host:port (auth optional), e.g.
"proxies": ["socks5://user:pass@host:port", "http://host2:port2"]. The scraper rotates them automatically.depth, many keywords, repeated runs,
or email:true), proceed with it but first print ONE short warning about temporary IP-block risk and
suggest proxies. Do not gate, force-stop, or demand confirmation just because a normal scrape is big.
Refuse outright only for clearly abusive/illegal use (surveilling individuals, spam/harassment).localhost without an auth proxy; never print any API key if one exists.place_id/cid before storing.DELETE old jobs periodically.422 missing max time → add max_time (seconds). 422 missing geo coordinates → add string lat/lon.working → lower depth / raise max_time / IP throttled (add proxies or wait).radius, fix coordinates.docker compose up -d.© Mahanaicoach, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/google-maps-scraper of Mahanaicoach/google-maps-scraper-kit.
Open the folder on GitHubat commit b4141a2
Google Maps Scraper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Google Maps Scraper this skillMahanaicoach/google-maps-scraper-kit | 1.3k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Apify Competitor IntelligenceaAAaqwq/AGI-Super-Team | 105 | 3 repos | ~1.3k | Automated safety check: Notes | MIT | |
| Content Ideasbradautomates/content-ideas | 133 | — | ~5.4k | Automated safety check: Notes | MIT | |
| Data Feedsbrightdata/skills | 264 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Apify Audience Analysissickn33/agentic-awesome-skills | 47k | 2 repos | ~1.3k | Automated safety check: Notes | MIT | |
| Apify Content Analyticssickn33/agentic-awesome-skills | 47k | 2 repos | ~1.2k | Automated safety check: Notes | MIT |
aAAaqwq/AGI-Super-Team
Analyze competitor strategies, content, pricing, ads, and market positioning across Google Maps, Booking.com, Facebook, Instagram, YouTube, and TikTok.
bradautomates/content-ideas
Your For You page for content creators. An agent skill from bradautomates/content-ideas.
brightdata/skills
Extract structured data from 40+ supported platforms (Amazon, LinkedIn, Instagram, TikTok, Facebook, YouTube, Reddit, and more) via the Bright Data CLI (bdata pipelines).
sickn33/agentic-awesome-skills
Understand audience demographics, preferences, behavior patterns, and engagement quality across Facebook, Instagram, YouTube, and TikTok.
sickn33/agentic-awesome-skills
Track engagement metrics, measure campaign ROI, and analyze content performance across Instagram, Facebook, YouTube, and TikTok.
sickn33/agentic-awesome-skills
Discover and track emerging trends across Google Trends, Instagram, Facebook, YouTube, and TikTok to inform content strategy.
Categories
Scrape Google Maps business listings (name, address, phone, website, rating, reviews, lat/lng, hours, emails) via the local gosom google-maps-scraper REST API. Google Maps Scraper is an agent skill from Mahanaicoach/google-maps-scraper-kit. Scrape Google Maps business listings (name, address, phone, website, rating, reviews, lat/lng, hours, emails) via the local gosom google-maps-scraper REST API.
Google Maps Scraper fits situations like: the user wants local-business / lead-gen data; A list of [businesses] in [place]; enrich places with contact info.
Run `npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a claude-code`. Or copy the skill folder (.claude/skills/google-maps-scraper in Mahanaicoach/google-maps-scraper-kit) into .claude/skills/google-maps-scraper in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a codex`. Or copy the skill folder (.claude/skills/google-maps-scraper in Mahanaicoach/google-maps-scraper-kit) into .agents/skills/google-maps-scraper in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mahanaicoach/google-maps-scraper-kit --skill google-maps-scraper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/google-maps-scraper, .gemini/skills/google-maps-scraper, .github/skills/google-maps-scraper and .opencode/skills/google-maps-scraper in your project.
Going by SKILL.md and its folder, Google Maps Scraper needs the command-line tools its instructions call (curl, python3 and docker). Our summary lists: Python 3; Docker.
SKILL.md contains no URLs. Its commands use curl and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Google Maps Scraper is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Google Maps Scraper: Apify Competitor Intelligence (aAAaqwq/AGI-Super-Team, 105 stars), Content Ideas (bradautomates/content-ideas, 133 stars), Data Feeds (brightdata/skills, 264 stars) and Apify Audience Analysis (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Mahanaicoach (a GitHub user) maintains it in Mahanaicoach/google-maps-scraper-kit, which has 1,346 GitHub stars. The repository was last updated on October 5, 2026.
Source: Mahanaicoach/google-maps-scraper-kit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.