The problem with broad local SEO
When AP Mobile Auto Repair came to us, they had no website and no organic search presence. Their competitors — many of them larger shops with bigger budgets — were dominating searches like "auto repair New Jersey."
Fighting for broad terms like that is expensive and slow. But local intent searches — the ones where someone has already decided they want a mechanic nearby — are a completely different game.
The insight: every city × service is a keyword
New Jersey has 82 cities and towns with meaningful search volume. AP Mobile offers roughly 65 services — oil changes, brake repair, battery replacement, tire rotation, and so on.
82 × 65 = 5,330 potential landing pages, each targeting a specific local search query that a real customer is typing into Google right now.
"Mobile mechanic Newark oil change." "Battery replacement Montclair NJ." "Brake repair near Bloomfield." Every one of these has real search volume and low competition compared to broad terms.
The technical architecture
Database structure
We built a MariaDB database with three core tables:
- cities — all 82 NJ cities with their county, coordinates, and population tier
- services — all 65 services with descriptions, typical pricing ranges, and related terms
- pages — a record for every city × service combination with its generated slug and status
The master template
We built a single PHP template that accepts a city slug and service slug, pulls the relevant data, and renders a fully unique page. The template includes:
- H1 with city + service + "NJ" in the exact format Google expects
- Meta title and description dynamically generated per page
- LocalBusiness schema markup with the service area set to the specific city
- A content block that contextualizes the service for that city (using nearby landmarks, neighborhoods, etc.)
- Internal links to related services in the same city and the same service in nearby cities
- A strong CTA with the phone number and contact form
URL structure
Clean, logical URLs: /mobile-mechanic-newark-nj/oil-change/ — the city and service both in the URL, readable by humans and crawlable by Google.
The results
We launched with 5,300+ pages indexed and a sitemap submitted to Google Search Console. Within 90 days, hundreds of pages were ranking for their target queries. AP Mobile started getting leads from towns they had never explicitly marketed to — because we had a page targeting exactly what those people were searching for.
The owner told us they started getting calls from areas they'd never worked in before — and when they asked how the customer found them, the answer was always Google.
The key lessons
- Quality over quantity at the template level — each page needs genuine content, not just keyword stuffing
- Internal linking matters — linking city pages to each other and to service pages helps Google understand the site structure
- Schema markup is non-negotiable — LocalBusiness schema with service area specification helps Google understand what you offer and where
- Page speed still matters — even with 5,300 pages, each one scores 90+ on PageSpeed. A slow programmatic site gets deindexed.
We build programmatic landing page systems for NJ service businesses. If you offer services across multiple cities and don't have pages targeting each one, you're leaving rankings on the table.