AI Icebreaker Generator - Cold-Email Opening Lines avatar

AI Icebreaker Generator - Cold-Email Opening Lines

Pricing

from $3.00 / 1,000 result (base)s

Go to Apify Store
AI Icebreaker Generator - Cold-Email Opening Lines

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

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 / name
  • category, categories
  • city, country (from complete_address)
  • rating / review_rating, review_count
  • description
  • phone, 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

ParameterTypeDefaultDescription
placesarray(none)Flat places array — pipe directly from Google Maps Scraper output.
companiesarray(none)Wrapped shape with company_id per row for CRM join-back. Mix with places in the same run if useful.
tonestring"friendly"Voice of the generated line: friendly (warm and professional), professional (buttoned-up), casual (chatty), direct (punchy, to the point).
focusstring(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".
enableEnrichedbooleanfalseWhen 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.
outputLanguagestring"en"ISO 639-1 language code (en, de, fr, etc.) or auto to detect from the website.
llmProviderstring"gemini"Primary LLM: gemini, groq, or openrouter.
fallbackProviderstring(none)Fallback on auth/quota errors from the primary.
fallback2Providerstring(none)Second-line fallback.
geminiApiKey / groqApiKey / openrouterApiKeystring(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:

  1. 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".
  2. 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:

ProviderFree tierGet a key
GeminiYes (generous)https://aistudio.google.com/app/apikey
GroqYeshttps://console.groq.com/keys
OpenRouterPay-as-you-go, cheaphttps://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

  1. Run Google Maps Scraper to collect places for a niche and city.
  2. Feed the dataset into this actor as places (or wrap each in companies for join-back).
  3. Pick a tone, set your Gemini key, and (optionally) turn on enriched mode.
  4. Drop the output into your outbound sequencer.

Pricing

Pay-per-result via Apify Pay-Per-Event billing:

EventPriceDescription
Actor start$0.001Charged once per run
Icebreaker generated (base)$0.003Charged per row in base mode
Icebreaker generated (enriched)$0.005Charged 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.

Discovery:

Enrichment:

Notes

  • Empty input is free. No enrichment-start is 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.