> google-serp-lead-scraper

# Google SERP Lead Scraper Scrapes Google search results for local businesses, fetches their websites, extracts contact information using GPT-5, and stores structured leads in Google Sheets. ## When to Use - Building lead lists for local service businesses (plumbers, electricians, roofers, etc.) - Prospecting for outreach campaigns targeting specific geographic areas - Populating CRM with enriched contact data ## How to Call **Webhook URL (test mode):** ``` GET https://nicksaraev.app.n8n.cl

fetch
$curl "https://skillshub.wtf/Harmeet10000/skills/google-serp-lead-scraper?format=md"
SKILL.mdgoogle-serp-lead-scraper

Google SERP Lead Scraper

Scrapes Google search results for local businesses, fetches their websites, extracts contact information using GPT-5, and stores structured leads in Google Sheets.

When to Use

  • Building lead lists for local service businesses (plumbers, electricians, roofers, etc.)
  • Prospecting for outreach campaigns targeting specific geographic areas
  • Populating CRM with enriched contact data

How to Call

Webhook URL (test mode):

GET https://nicksaraev.app.n8n.cloud/webhook-test/8aee83a4-ae72-4f96-a834-e1c6afd4d080

Production URL: TBD (deploy workflow to get production webhook)

No parameters required currently—query is hardcoded to "calgary plumber".

What It Does

  1. Google Search → Apify's google-search-scraper actor searches with:

    • Query: "calgary plumber" (hardcoded)
    • Country: Canada (ca)
    • Language: English
    • 5 pages × 10 results = up to 50 organic results
  2. Limit → Currently capped at 2 results (for testing). Remove or adjust the Limit node for full runs.

  3. Fetch & Convert → Each result URL is fetched and converted to markdown.

  4. GPT-5 Extraction → Extracts 100+ fields per lead including:

    • Company info (name, tagline, industry, keywords)
    • Owner/decision-maker details
    • Multiple emails with confidence scores and provenance
    • Phones normalized to E.164
    • Full address parsing
    • Social profiles (LinkedIn, Facebook, Instagram, Twitter, etc.)
    • Best contact method recommendation
    • Custom icebreaker line for outreach
  5. Google Sheets → Appends to Google SERP Scraping Database

Output Schema (Key Fields)

FieldDescription
company_nameBusiness name
owner_nameDecision-maker name (if found)
best_email_to_tryHighest-confidence email for outreach
best_phone_to_tryRecommended phone number
email_1, email_2, email_3All extracted emails
email_X_confidence0.0–1.0 confidence score
email_X_provenanceSource location (e.g., `/contact
phone_1_e164Phone in E.164 format
address_fullComplete address string
linkedin_company_urlCompany LinkedIn page
one_liner_for_icebreakerPre-formatted outreach opener

See the full 100+ field schema in the n8n workflow's GPT prompt.

Icebreaker Format

The extraction generates icebreakers in this format:

Hey {FirstName}. I work with a $2M/yr plumber out of Calgary (NE-specific),
pretty similar to {CompanyName}. Not sure if you have exposure to the NE,
but wanted to run something by you.

Confidence Scoring

Extraction uses tiered confidence based on source:

  • 1.0 — Schema.org structured data
  • 0.9 — OpenGraph/meta tags
  • 0.85 — /contact or /about pages
  • 0.8 — Footer/header blocks
  • 0.6 — Visible text near contact labels
  • 0.4 — Inferred/heuristic values

Fields below 0.6 confidence are flagged for manual review.

Current Limitations

  1. Hardcoded query — "calgary plumber" is baked into the workflow. To change:

    • Edit the Apify node's queries parameter in n8n
    • Or parameterize via webhook query string (requires workflow update)
  2. Test limit — Only processes 2 results. Remove the Limit node for production.

  3. No deduplication — Repeated runs may create duplicate rows. Consider adding a check against source_url or domain.

  4. Rate limits — Apify has usage limits; large batches may need pagination or scheduling.

Future Improvements

  • Accept query and location as webhook parameters
  • Add deduplication against existing sheet rows
  • Batch processing with progress tracking
  • Error handling for failed URL fetches
  • Deploy to production webhook URL

Related Files

  • Output: Google SERP Scraping Database
  • Workflow platform: n8n Cloud (nicksaraev.app.n8n.cloud)
  • Scraping service: Apify (google-search-scraper actor)

> related_skills --same-repo

> vibe-ppt

Convert this into a web based slide deck using reveal.js. Use the following brand colour and logo. Primary colour: #EE4822 Theme: Light Logo: https://media.licdn.com/dms/image/v2/D560BAQFeaNrDEATcKQ/company-logo_200_200/company-logo_200_200/0/1709465010800/100xengineers_logo?e=2147483647&v=beta&t=qKncqAfB_j9ckDOxOx1eN9EEPocLTbNqliLnAU3sP6c Slide Content: Vibe Coding with Gemini Canvas Slide 1: Vibe Coding with Gemini Canvas Slide 2: What is Vibe Coding? Vibe Coding: Use natural language pro

> upwork-scrape-apply

# Upwork Job Scrape & Apply Pipeline Scrape Upwork jobs matching AI/automation keywords, generate personalized cover letters and proposals, and output to a Google Sheet with one-click apply links. ## Inputs - **Keywords**: List of search terms (default: automation, ai agent, n8n, gpt, workflow, api integration, scraping, ai consultant) - **Limit**: Max jobs to fetch (default: 50) - **Days**: Only jobs from last N days (default: 1 = last 24 hours) - **Filters**: - `--verified-payment`: Only

> ui-ux-pro-max

UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 9 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: g

> typescript-magician

Designs complex generic types, refactors `any` types to strict alternatives, creates type guards and utility types, and resolves TypeScript compiler errors. Use when the user asks about TypeScript (TS) types, generics, type inference, type guards, removing `any` types, strict typing, type errors, `infer`, `extends`, conditional types, mapped types, template literal types, branded/opaque types, or utility types like `Partial`, `Record`, `ReturnType`, and `Awaited`.

┌ stats

installs/wk0
░░░░░░░░░░
github stars7
░░░░░░░░░
first seenApr 3, 2026
└────────────