Local SEO Site Generator for Any Niche + City
Pricing
from $6,000.00 / 1,000 site package generateds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
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:
| File | Purpose |
|---|---|
index.html | Home page: hero, intro, top services, FAQ preview, LocalBusiness JSON-LD |
services.html | Full service catalog with descriptions and benefit bullets |
about.html | About copy + "why choose us" + service-area statement |
faq.html | Five city- and niche-specific Q&As |
sitemap.xml | XML sitemap for Google Search Console submission |
robots.txt | Robots file with sitemap reference |
citations-outline.md | Local-citation checklist (Google Business Profile, Bing Places, Yelp…) |
site-setup-notes.md | Placeholder-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 toLocalBusiness. - 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 incompletionRequired— 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
| Field | Required | Description |
|---|---|---|
niche | yes | Trade, e.g. plumber, roofer, electrician, hvac, dentist, landscaper |
city | yes | Primary service city, e.g. Austin, Tampa, Seattle |
stateCode | no | State/region code, e.g. TX, FL |
serviceList | no | Exact services to feature (max 25). Empty → the generator proposes 6 typical services |
businessName | no | Real business name → placed in headings, JSON-LD, footer |
businessPhone | no | Real contact phone |
businessEmail | no | Real contact email |
streetAddress | no | Real street address → structured into PostalAddress JSON-LD |
businessHours | no | Real opening hours |
websiteUrl | no | Live domain → used for canonical URLs and sitemap |
tone | no | professional (default), friendly, or expert |
llmModel | no | OpenRouter model slug (default openai/gpt-4o-mini) |
llmApiKey | yes (secret) | Your own OpenAI-compatible key — required, you pay the provider directly |
llmBaseUrl | no | OpenAI-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:
- 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. - Optionally set
llmBaseUrl(defaulthttps://api.openai.com/v1) andllmModel(defaultopenai/gpt-4o-mini; theopenai/prefix is stripped for native OpenAI endpoints). - 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
serviceListfor control over featured services. - The sitemap and robots files reference
[YOUR-DOMAIN]until you supplywebsiteUrl— 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.