City Landing Pages With JSON-LD Case Study
A Django site that builds state, county, and city pages from real data
A business that serves many places needs pages for those places. The risk is building hundreds of near-identical pages that give Google no reason to index them and give visitors nothing useful.
I built a Django site for Aquifer Investments, Casey The Home Buyer, that organizes service areas into a clear hierarchy and gives each page its own identity.
The problem
The business buys houses across several states. Searchers look for it by city, and a single generic page cannot match “sell my house in a specific city” with any precision.
The structure
Pages follow a state, county, and city hierarchy. A city page lives at a path like /where-we-buy/{state}/{county}-county/{city}/, and the site covers Texas, Kentucky, and Indiana.
County and state index pages follow the same pattern. Each city page links to other cities in the same county, which keeps the pages connected.
How pages get created
New pages are added in the Django admin. I can add states, counties, and cities as records. When I make a content page, I can choose to multiply it by city, so a page with 30 cities becomes 31 pages: the base page and one for each city.
Every part of a city page can be customized, and it should be. I have not had time recently to write local detail for each city, and doing it is the same work as adding any regular page.
What every page gets
- A title tag built from the city, county, and state
- A meta description with the place name
- A canonical URL
- An H1 and section headings that carry the city name
- schema.org WebPage JSON-LD with name, description, and publisher Organization
The pages are generated from data in Django, so adding a city means adding a record, not hand-building a page.
Decisions
Data drives the pages
Because the hierarchy lives in the database, titles, headings, and markup stay consistent. I can change a template once and every page updates.
Metadata per page
Duplicate titles and descriptions across hundreds of pages are a common failure. Building the metadata from each place’s own data avoids that.
Links within a county
Linking each city page to its neighbors gives crawlers and visitors a path through the set, and keeps the pages from becoming orphans.
What this project does not show
I do not have ranking, traffic, or lead numbers for this site, so I do not publish any. The project shows structure and implementation, not outcomes.
More pages also mean more maintenance. Content, local facts, and templates need review on a schedule. I explain why in Why SEO Pages Need Refresh Cycles.
Related
The technical SEO services page explains how I apply this structure for clients. Compare it with the World Car Careers site.
Search proof
Verified search figures. Keep the qualifiers.
- Dealerships
- 13
- SEO and ad accounts at World Car Auto Group.
- SEO experience
- Since 2015
- Not a count of years in an SEO-titled role.
- Careers site users
- About 460 per month
- Average over nine months, per GA4.
- Careers applicants
- 451 unique users
- Submitted an application over the same nine months, per GA4.