Local SEO Site Generator for Any Niche + City avatar

Local SEO Site Generator for Any Niche + City

Pricing

from $6,000.00 / 1,000 site package generateds

Go to Apify Store
Local SEO Site Generator for Any Niche + City

Local SEO Site Generator for Any Niche + City

Generates a complete local-SEO static-site package for any niche + city: original home/services/about/FAQ copy, LocalBusiness JSON-LD, meta tags, sitemap.xml and a citations outline — fresh LLM copy per run, no invented business identity. One run = one ready-to-host site.

Pricing

from $6,000.00 / 1,000 site package generateds

Rating

0.0

(0)

Developer

Geo

Geo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Security

Limited permissions

Share

Local Service Site Generator

Generate a complete local-SEO static website for a local service business in one run: original home, services, about and FAQ pages, LocalBusiness JSON-LD, meta/OG tags, sitemap.xml, robots.txt and a citations outline — for any niche and city (plumber in Austin, roofer in Tampa, electrician in Seattle, HVAC in Phoenix…).

Copy is written fresh by an LLM on every run for your exact niche + city + service list — no shared templates, no copied competitor text, and no invented business identity. If you do not supply a business name, phone or address, the package ships clean [PLACEHOLDER] tokens and a completion checklist instead of fabricating one.

What this Actor does

You provide a trade (niche) and a city. The actor returns one dataset item containing a ready-to-host static-site package:

FilePurpose
index.htmlHome page: hero, intro, top services, FAQ preview, LocalBusiness JSON-LD
services.htmlFull service catalog with descriptions and benefit bullets
about.htmlAbout copy + "why choose us" + service-area statement
faq.htmlFive city- and niche-specific Q&As
sitemap.xmlXML sitemap for Google Search Console submission
robots.txtRobots file with sitemap reference
citations-outline.mdLocal-citation checklist (Google Business Profile, Bing Places, Yelp…)
site-setup-notes.mdPlaceholder-completion + hosting + post-publish steps

All pages share a single embedded responsive stylesheet, real meta description/OG tags, and inter-page navigation. No external CSS, no build step, no tracking.

Why use it

  • Launch a local-SEO site for a service business or client in minutes instead of hours.
  • Agencies: white-label starter sites for new local clients — each run produces original, niche- and city-specific copy.
  • Business owners: get a clean, honest foundation site and hand it to any static host (Netlify, Cloudflare Pages, GitHub Pages, cPanel).
  • Test local-keyword variations: run the same niche against different cities for market research.
  • No scraping, no databases, no infrastructure — one API call, one priced event, one site.

Local-SEO compliance: what is (and is not) generated

  • Schema.org type is mapped from your niche — e.g. plumber → Plumber, electrician → Electrician, roofer → RoofingContractor, hvac → HVACBusiness, falling back to LocalBusiness.
  • Identity facts are never invented. Name, phone, email, street address, hours and domain are taken only from your input. Anything missing ships as a [PLACEHOLDER] token and is listed in completionRequired — you fill it before hosting.
  • No fake reviews, ratings, credentials, licenses, awards or "years in business". The generation prompt enforces this and the package stays clean of unsupportable claims.
  • Service-area claims are confined to the city you specify.

Quick start

Default input (already prefilled — one click runs it):

{
"niche": "plumber",
"city": "Austin",
"stateCode": "TX"
}

Start the run. When it finishes, open the dataset — the single item contains files with the complete site package plus siteTitle, completionRequired, jsonLdType and usage metadata.

One key is required: copy is generated by an LLM on your own OpenAI-compatible key. Add llmApiKey to the input (field docs below) before starting — a run without it returns a structured error item that names the missing key, never a package.

Input

FieldRequiredDescription
nicheyesTrade, e.g. plumber, roofer, electrician, hvac, dentist, landscaper
cityyesPrimary service city, e.g. Austin, Tampa, Seattle
stateCodenoState/region code, e.g. TX, FL
serviceListnoExact services to feature (max 25). Empty → the generator proposes 6 typical services
businessNamenoReal business name → placed in headings, JSON-LD, footer
businessPhonenoReal contact phone
businessEmailnoReal contact email
streetAddressnoReal street address → structured into PostalAddress JSON-LD
businessHoursnoReal opening hours
websiteUrlnoLive domain → used for canonical URLs and sitemap
tonenoprofessional (default), friendly, or expert
llmModelnoOpenRouter model slug (default openai/gpt-4o-mini)
llmApiKeyyes (secret)Your own OpenAI-compatible key — required, you pay the provider directly
llmBaseUrlnoOpenAI-compatible base URL used with llmApiKey (default https://api.openai.com/v1)

Output

One dataset item per run = one complete site package:

{
"recordType": "data",
"status": "succeeded",
"niche": "plumber",
"city": "Austin",
"stateCode": "TX",
"siteTitle": "…",
"pages": 4,
"completionRequired": ["[PHONE]", "[EMAIL]", "…"],
"jsonLdType": "Plumber",
"files": { "index.html": "…", "services.html": "…", "…": "…" },
"generatedAt": "…"
}

Invalid input (missing niche/city) or an LLM failure produces a structured error record instead — never a silent empty run.

LLM key: bring your own (required)

Copy generation is billed to you, on your key:

  1. Pass llmApiKey — any OpenAI-compatible key (OpenAI, OpenRouter, Groq, Together, a local gateway…). It is a secret input field: it is never written to the dataset and never logged.
  2. Optionally set llmBaseUrl (default https://api.openai.com/v1) and llmModel (default openai/gpt-4o-mini; the openai/ prefix is stripped for native OpenAI endpoints).
  3. Typical cost is tiny — two calls per package, roughly 1.2k prompt and 4–5k completion tokens, about $0.003 per package at gpt-4o-mini rates.

The Apify-managed OpenRouter proxy fallback is disabled for this Actor (the publishing account does not have public-actor LLM access). A run without llmApiKey therefore returns a structured error dataset item naming the missing key — it never runs silently for free and never ships a half-built package.

Pricing

Pay-per-event: one actor-start event ($0.005) when a run starts and one site-package-generated event ($6.00) per delivered site package — 1 event = 1 complete package (8 files). LLM usage is separate and billed by your own provider (≈$0.003 per package at gpt-4o-mini rates); Apify compute for a typical run is a few seconds at 1 GB.

Limitations

  • The generated copy is original but general trade knowledge — it does not know your licensing, insurance, service radius or pricing. Review the copy and complete all placeholders before publishing.
  • The actor does not register you with Google, Yelp or any directory, and does not host the site. Citations and hosting are buyer actions documented in the package.
  • LLM output is non-deterministic: two runs on the same input produce different (but equivalent-quality) copy. Re-run until you like the result; supply serviceList for control over featured services.
  • The sitemap and robots files reference [YOUR-DOMAIN] until you supply websiteUrl — replace it before submission.
  • Non-US cities work, but citation guidance and schema defaults are US-oriented.

Use with automation

Run it from Apify API, the Apify MCP server, Make/n8n/Zapier webhooks, or schedule it via the Apify Scheduler. Each run returns the full package in the default dataset — fetch it with ?format=json and pipe the files into your storage, CMS or client delivery workflow.