See llms.txt for all machine-readable content.
B2B leads without the database subscription. This workflow scrapes Google Maps, writes AI business summaries, and digs contact emails out of websites, all triggered from Telegram on your phone. Four hours of manual hunting becomes 5 minutes per 50 leads.
Last updated: September 2026.
Time Savings: Lead research drops from 4 hours of manual searching to 5 minutes of automated execution per 50 leads.
Cost Reduction: A pay-as-you-go model with Apify and OpenAI replaces expensive monthly lead database subscriptions.
Error Prevention: AI deduplicates results and keeps company summaries professional and CRM-ready.
Scalability: Trigger massive scraping tasks from your phone while the backend does the heavy lifting.
Sector; Limit; MapsURL.| Requirement | Type | Purpose |
|---|---|---|
| n8n instance | Essential | Workflow execution and logic |
| Apify Account | Essential | Scrapes Google Maps data |
| OpenAI API Key | Essential | Generates summaries and extracts emails |
| Google Sheets | Essential | Data storage and lead management |
| Telegram Bot | Essential | User interface for triggering searches |
| Jina AI Key | Essential | Converts websites to LLM-friendly Markdown |
Coffee Shops; 5; https://www.google.com/maps/search/coffee+shops+london to your bot.| Node | Purpose | Key Configuration |
|---|---|---|
| Telegram Trigger | Captures user input | Listens for /message updates |
| Apify Node | Executes Maps Scraper | Uses nwua9Gu5YrADL7ZDj actor ID |
| OpenAI Node | AI Analysis | Configured for JSON output (Summary) and extraction (Email) |
| Jina AI | Web Scraping | Converts HTML to Markdown for AI readability |
| Google Sheets | Database | Uses Append or Update based on the business Title |
The workflow utilizes a Split In Batches loop to ensure stability. It first performs a "shallow" save of business details (name, phone, address) and then attempts a "deep" enrichment only if a website URL is detected. This two-stage approach ensures you don't lose data if a website crawl fails.
Basic Adjustments:
Advanced Enhancements:
Common Issues:
| Problem | Cause | Solution |
|---|---|---|
| Empty Email column | Website protected by bot-blockers | Try a different scraper or use a proxy in Jina AI |
| Apify Timeout | Scraping limit set too high | Lower the "limit" parameter in your Telegram message |
| 429 Errors | Google Sheets rate limits | Increase the duration in the "Wait Rate Limit" node |
Challenge: Finding local contractors with poor reviews but high revenue potential.
Solution: Use the workflow to scrape "Plumbers" in a city, use AI to summarize their online presence, and collect emails.
Result: A curated list of 100 leads with contact info and a "Pitch" summary generated in minutes.
Challenge: Getting the direct email of a business owner for a new booking software.
Solution: Trigger the scraper via Telegram while in the field. The workflow extracts the "authoritative" email (manager/owner) from their site.
Result: Accurate, high-intent lead data delivered directly to a master spreadsheet for the sales team.
What do I send the bot?
Sector; Limit; MapsURL. Example: Coffee Shops; 5; https://www.google.com/maps/search/coffee+shops+london.
Which Apify actor runs?
nwua9Gu5YrADL7ZDj for Maps scraping, configured in the workflow nodes.
Can summaries be non-English?
Yes. Adjust the OpenAI prompt language (English, French, Spanish, etc.).
Made by: khmuhtadin
Category: Marketing | Tags: Lead Gen, AI, Google Maps, Telegram
Need custom workflows? Contact me
Connect with the creator:
Portfolio • Workflows • LinkedIn • Medium • Threads
Built with n8n. Need an assessment on your business? Feel free to reach out at https://khmuhtadin.com/consultation/