AI Icebreaker Generator - Cold-Email Opening Lines
Pricing
from $3.00 / 1,000 result (base)s
AI Icebreaker Generator - Cold-Email Opening Lines
Generate one personalized cold-outreach opening line per Google Maps place record using a BYO LLM key chain (Gemini, Groq, OpenRouter). Base mode uses only fields already on the place record (zero fetch). Enriched mode also fetches the homepage and folds a summary into the prompt. Pay-per-result.
Pricing
from $3.00 / 1,000 result (base)s
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
AI Icebreaker Generator
Turn a batch of Google Maps place records into one hyper-personalized cold-outreach opening line per business. Bring your own LLM key (Gemini has a generous free tier). Two modes: base uses only fields already present on the place, enriched also fetches the homepage and folds a summary into the prompt.
Feed it the output of the Google Maps Scraper and get one ready-to-send opener per business.
What It Does
Given a Google Maps place record, the actor asks an LLM to write ONE sentence that:
- Is at most 200 characters
- References something specific about the business (rating, category + city, tenure, description, homepage detail)
- Matches the requested
tone(friendly, professional, casual, direct) - Is grounded in the input data. Never a generic template, never invented facts.
- Falls back to an empty string when the record has too little signal (no name, or missing category AND reviews AND description)
Modes
Base (default, zero-fetch)
Uses only fields already on the place record:
title/namecategory,categoriescity,country(fromcomplete_address)rating/review_rating,review_countdescriptionphone,website(reference only, not fetched)
Enriched (opt-in)
Set enableEnriched: true. In addition to base mode, the actor fetches the business's homepage, condenses it into a ~1000 character markdown summary (headings + tagline + prose paragraphs), and appends it to the LLM prompt. Falls back silently to base mode when the site returns non-200, redirects strangely, or trips an anti-bot challenge.
Input
Two shapes are accepted, and you can mix them in one run.
Flat places list (natural shape, just pipe the google-maps-scraper output):
{"places": [{"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4","title": "Example Coffee House","category": "Coffee shop","website": "https://example-coffee.example","rating": 4.8,"review_count": 1240,"complete_address": { "city": "Berlin", "country": "Germany" }}],"tone": "friendly","outputLanguage": "en","geminiApiKey": "AIza..."}
Companies shape (with a company_id passthrough for join-back to your CRM):
{"companies": [{ "company_id": "acme-42", "place": { "place_id": "ChIJ...", "title": "Example Company Ltd." } }],"tone": "professional","geminiApiKey": "AIza..."}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
places | array | (none) | Flat places array — pipe directly from Google Maps Scraper output. |
companies | array | (none) | Wrapped shape with company_id per row for CRM join-back. Mix with places in the same run if useful. |
tone | string | "friendly" | Voice of the generated line: friendly (warm and professional), professional (buttoned-up), casual (chatty), direct (punchy, to the point). |
focus | string | (none) | Optional free-text guidance passed to the LLM alongside the place record. Steers every line toward your specific outreach angle. Example: "Focus on their photo count and their newest reviews", or "Mention that we specialize in local SEO for care homes". |
enableEnriched | boolean | false | When true, fetches the business's homepage, condenses it into a short summary, and folds it into the icebreaker prompt. Sharper lines, slightly higher cost. Falls back silently to base mode on 404 / anti-bot. |
outputLanguage | string | "en" | ISO 639-1 language code (en, de, fr, etc.) or auto to detect from the website. |
llmProvider | string | "gemini" | Primary LLM: gemini, groq, or openrouter. |
fallbackProvider | string | (none) | Fallback on auth/quota errors from the primary. |
fallback2Provider | string | (none) | Second-line fallback. |
geminiApiKey / groqApiKey / openrouterApiKey | string | (none) | At least one is required — the actor never makes LLM calls on your behalf, keys go straight to your provider account. |
The focus field — usage tips
Two shapes work well:
- Content-specific: point the model at a signal you care about —
"Focus on their photos and their newest reviews","Mention their recent hiring signal","Reference their tech stack". - Angle-specific: tell the model what YOU sell —
"Mention that we specialize in local SEO for care homes","We are a payments processor pitching lower fees to independent restaurants","We build websites for solo dentists".
Leave it empty when you want the model to pick the sharpest angle itself. focus is a steering signal, not a directive — if the place record has no photos and you asked to reference photo count, the line will pivot to another salient signal rather than fabricating one.
LLM Configuration
You must supply at least one LLM key. All three providers are supported:
| Provider | Free tier | Get a key |
|---|---|---|
| Gemini | Yes (generous) | https://aistudio.google.com/app/apikey |
| Groq | Yes | https://console.groq.com/keys |
| OpenRouter | Pay-as-you-go, cheap | https://openrouter.ai/keys |
Set llmProvider to pick the primary, fallbackProvider and fallback2Provider for the chain. Same-provider transient errors (5xx, timeouts) get one retry; auth/quota errors fall through to the next provider.
Output
One row per input place:
{"company_id": "acme-42","place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4","name": "Example Coffee House","icebreaker_line": "Noticed you are running one of the highest-rated (4.8 stars, 1,240 reviews) coffee shops in Berlin. Curious how you keep that streak going.","icebreaker_enriched": false,"llm_provider": "gemini","llm_model": "gemini-2.0-flash","llm_tokens_input": 340,"llm_tokens_output": 45,"generated_at": "2026-07-17T10:30:00Z"}
icebreaker_line is an empty string when the record had too little signal to produce a specific line. The actor never invents facts to fill the gap.
How To Use It
- Run Google Maps Scraper to collect places for a niche and city.
- Feed the dataset into this actor as
places(or wrap each incompaniesfor join-back). - Pick a tone, set your Gemini key, and (optionally) turn on enriched mode.
- Drop the output into your outbound sequencer.
Pricing
Pay-per-result via Apify Pay-Per-Event billing:
| Event | Price | Description |
|---|---|---|
| Actor start | $0.001 | Charged once per run |
| Icebreaker generated (base) | $0.003 | Charged per row in base mode |
| Icebreaker generated (enriched) | $0.005 | Charged per row when enriched mode succeeded |
Generating 1,000 lines in base mode costs about $3. Empty input rows and rows the model refused to write for (insufficient signal) are still counted as a result. LLM API usage is billed by your provider directly, not by this actor.
Related Actors
Discovery:
- Google Maps Scraper - collect places in bulk
Enrichment:
- GBP Completeness Audit - score Google Business Profiles for lead prioritization
- Website Email Scraper - pull emails and phones from company sites
- Website Contact Extractor - LLM-powered people extraction
Notes
- Empty input is free. No
enrichment-startis billed unless there is at least one valid place. - The proxy configuration is only used by enriched mode's homepage fetch.
- Language: set
outputLanguage: "auto"to have the model match the business's country language.
Issues & Feature Requests
If the model keeps refusing lines for a class of business, or if you would like a new tone, open an issue on the actor's Issues tab and we will take a look.
