apify-ads-intelligence
Research, spy on, and analyze ads across Meta (Facebook & Instagram), Google (Ads Transparency Center + paid search results),…
Build a local-business lead database from Google Maps in one Apify pipeline: search by target audience + geography, enrich each place with company contacts from its website, leads enrichment (names, emails, phones, LinkedIn), Instagram + Facebook profiles, and optionally reviews
Claude Code
$ npx -y skills add apify/awesome-skills --skill apify-google-maps-leads --agent claude-code
Codex
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a codex -y
Cursor
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a cursor -y
Gemini CLI
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a gemini-cli -y
GitHub Copilot
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a github-copilot -y
OpenCode
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a opencode -y
Windsurf
$ npx skills add apify/awesome-skills --skill apify-google-maps-leads -a windsurf -y
name: apify-google-maps-leads description: Build a local-business lead database from Google Maps in one Apify pipeline: search by target audience + geography, enrich each place with company contacts from its website, leads enrichment (names, emails, phones, LinkedIn), Instagram + Facebook profiles, and optionally reviews for lead scoring. For places with no named contacts, escalate to apify/ai-web-scraper to pull owner / decision-maker names from the business website. Backfill missing phones via scalelist/phone-finder and missing emails via scalelist/email-finder. Use when the user asks to build a lead list from Google Maps, scrape local businesses, generate B2B leads by city/industry, find owner/decision-maker contacts for restaurants / dentists / gyms / hotels / any local vertical, score leads by review volume or rating, or says "Google Maps lead-gen pipeline", "leads from Maps", "prospect local businesses", "scrape Google Maps for outreach", "find companies in <city>", or mentions chaining Google Maps + AI web scraper + Scalelist Actors. author: Fabian Maume author_url: https://github.com/fmaume metadata: keywords: "google-maps, leads, lead-generation, local-business, b2b, prospecting, google-places, lead-scoring, reviews, instagram-enrichment, facebook-enrichment, ai-web-scraper, name-discovery, scalelist, phone-finder, email-finder, contact-enrichment"
Build a lead CSV from Google Maps in one pipeline:
1. **Interview** — ask target audience, target geography, and whether to use reviews for lead scoring. 2. **Scrape** — one `compass/crawler-google-places` run with four add-ons pre-configured (leads enrichment, website contacts, Instagram + Facebook profiles, optional reviews). 3. **Filter & score** — apply a review-based score if scoring is on. 4. **Discover missing names** — for places that came back with zero (or unnamed) leads, call `apify/ai-web-scraper` on the business website to extract owner/decision-maker names. Scalelist can't work without a name. 5. **Backfill contacts** — call `scalelist/phone-finder` for leads with a missing phone, `scalelist/email-finder` for leads with a missing email. 6. **Deliver** — a deduplicated CSV plus a `run_metadata.json` sidecar.
Either the Apify CLI (recommended for portability) or the Apify MCP connector works. Commands below use the CLI; the MCP path is a drop-in via the `call-actor` and `get-dataset-items` tools.
Track progress with this checklist:
Task Progress: - [ ] Step 1: Interview — audience, geography, scoring choice - [ ] Step 2: Build the Google Maps input - [ ] Step 3: Run compass/crawler-google-places - [ ] Step 4: Filter + score (if scoring enabled) - [ ] Step 5: Discover missing names via apify/ai-web-scraper - [ ] Step 6: Backfill missing phones and emails via scalelist Actors - [ ] Step 7: Deduplicate and render the CSV
Ask three questions **as one block** — don't drip them one by one.
1. **Target audience** — the business type(s) to search for. Free text. Examples: `"dentists"`, `"vegan restaurants"`, `"boutique hotels"`, `"dog groomers, pet stores"` (comma-splittable → array). 2. **Target geography** — one location per run. City + country reads best (`"Berlin, Germany"`, `"Austin, TX"`). If the user gives a country only, warn that Maps runs perform best on city-scoped searches. 3. **Use reviews for lead scoring? (y/n)** — if yes, we pull reviews (`maxReviews`) and filter by review volume + star rating post-run. If no, we skip reviews to cut cost.
Follow-ups only if the user asks for more control:
**Cost warning threshold.** Compute `expected_leads = maxCrawledPlacesPerSearch × maximumLeadsEnrichmentRecords`. If it exceeds **200**, restate the number back to the user and confirm before running. Leads enrichment is the dominant cost line; a slip here is what surprises people.
Set every field below on **every** run. Full field reference in [references/actor-inputs.md](references/actor-inputs.md).
| Field | Value | |---|---| | `searchStringsArray` | audience as array (e.g. `["dentists"]`) | | `locationQuery` | geography free text | | `maxCrawledPlacesPerSearch` | user override or default `50` | | `language` | `"en"` unless user specifies | | `scrapePlaceDetailPage` | `true` — needed for phone + hours + address | | `skipClosedPlaces` | `true` — permanent/temporary closures are dead leads | | `scrapeContacts` | `true` — **Add-on: Company contacts enrichment (from website) ($)** | | `scrapeSocialMediaProfiles` | `{"instagrams": true, "facebooks": true, "youtubes": false, "tiktoks": false, "twitters": false}` — Instagram + Facebook profile enrichment | | `maximumLeadsEnrichmentRecords` | user override or default `3` — **Add-on: Business leads enrichment ($)** | | `leadsEnrichmentDepartments` | user override or `[]` | | `verifyLeadsEnrichmentEmails` | `true` — always, never `false` | | `maxReviews` | `10` if scoring is on, `0` otherwise | | `reviewsSort` | `"newest"` if scoring is on |
`scrapeSocialMediaProfiles` auto-enables `scrapeContacts`. Both are billed on top of the base scrap
Research, spy on, and analyze ads across Meta (Facebook & Instagram), Google (Ads Transparency Center + paid search results),…
Track whether a brand and its competitors get cited or mentioned across Google AI Overviews, Google AI Mode, ChatGPT Search,…
Pull structured Apple App Store and Google Play data — app metadata, price, rating, the 1–5★ ratings histogram, version,…
Scrape Ashby jobs or discover companies using Ashby with the Apify Ashby Job Board API Actor (johnvc/ashby-job-board-scraper).…
Diagnose and recover a scrape that is blocked, throttled, or served empty or partial content, in cost order, before paying for a…
Find and enrich B2B leads from Booking.com - hotels, apartments, and vacation rentals - and pull each host's or property…
Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid…
Design and build AI agents for any domain. Use when users: (1) ask to "create an agent", "build an assistant", or "design an AI…