Search Projects Featured Ongoing

City Landing Pages With JSON-LD Case Study

A Django site that builds state, county, and city pages from real data

Client Aquifer Investments

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.