This page covers one of the 7 patterns in our 50 programmatic SEO examples: how 12 sites build city pages, and when not to build one. To find the city pages worth building and publish them with checks, see the landing page generator.
The Pattern
People add a place to almost any search: "things to do in Lisbon", "homes for sale Austin", "best internet providers Denver". A location page set has three parts:
- A place list: cities, regions, neighborhoods or routes.
- Data per place: listings, prices, scores, reviews.
- A template that puts that data at the top.
12 Live Examples
| Site | URL pattern | What changes per city |
|---|---|---|
| Tripadvisor | tripadvisor.com/Attractions-g{id}-Activities-{City}.html | Ranked attractions from traveler reviews |
| Airbnb | airbnb.com/{city-region}/stays | Live listings, prices, ratings |
| Zillow | zillow.com/{city-st}/ | Homes for sale and the Zillow Home Value Index |
| Kayak | kayak.com/flight-routes/{Origin}/{Destination} | A real fare in the title ($239 NYC to London when checked) |
| Skyscanner | skyscanner.com/routes/{from}/{to}/... | Fares, airlines, cheapest months |
| Nomads.com | nomads.com/{city} | Member scores for cost, internet, safety |
| Numbeo | numbeo.com/cost-of-living/in/{City} | Crowd-sourced prices (12,883 cities) |
| Data USA | datausa.io/profile/geo/{place-st} | Public government data as charts |
| Walk Score | walkscore.com/{ST}/{City} | Its own walkability score |
| GreatSchools | greatschools.org/{state}/{city}/ | School ratings |
| Speedtest | speedtest.net/performance/united-states/{state}/{city} | Ookla's own speed results by provider |
| Weather Underground | wunderground.com/weather/us/{st}/{city} | Forecasts and station data |
Want the data source and the sibling URLs for each? They are in our 50 programmatic SEO examples guide.
What All 12 Have in Common
- The data is local and hard to fake. Kayak's fare, Speedtest's measured speeds and Numbeo's prices exist only for that place.
- Most of the data is first-party. Speedtest runs the tests. Walk Score computes the score. Nomads.com members write the reviews.
- A second variable adds depth, not copies. Tripadvisor has city pages, then category pages inside each city (parks, free things, with kids). Each still lists different places.
- The numbers refresh. Numbeo puts the month in the title. Zillow shows the date of its last update.
When NOT to Build a Location Page
This is where most location page sets go wrong. Do not build a page for a place where you:
- have no office, staff, stock or service area
- have no local data: no reviews, no prices, no listings
- would write the same paragraph with a new town name
Google's spam policy names "many pages that make little or no sense to a reader but contain search keywords" as scaled content abuse. A "plumber in {town}" page for a town you do not serve fits that.
Worked Example: brightsmile-dental.com (Fictional)
A dental group with six clinics. The weak plan is 300 pages, one per suburb, with the same text. The strong plan is six pages, one per clinic:
| Section | What goes in it |
|---|---|
| Top | Clinic name, address, hours, a "book" button |
| Team | The dentists who work at that clinic, with photos |
| Services | What that clinic offers (not every clinic does implants) |
| Insurance | Plans accepted at that clinic |
| Reviews | That clinic's own patient reviews |
| Getting there | Parking, transit, accessibility |
Six real pages beat 300 thin ones, and each one can rank for "dentist in {city}" because it proves the clinic is there.
How to Launch and Check
- Build the template on one city. Read it as a stranger would.
- Publish a small batch, link it from a "Locations" hub page, and add it to your sitemap.
- After 4 to 8 weeks, check Search Console. In Page indexing, look for "Crawled - currently not indexed". In Performance, filter by the folder and look for impressions on "{service} {city}" queries.
- Fix the template before adding more places.
SEOmatic can build location pages from one of your own pages; each batch waits for your approval.
How to Use This with an AI Assistant
Connect SEOmatic at https://seomatic.ai/mcp and ask: "Use campaign_manage propose_location_pages on mysite.com in enrich mode, modelled on my best clinic page, and show_approval_cards so I can review each page." Staging needs the 14-Day Trial for $1, credited to your first payment, and page batches are not published until you approve them.
Let the Agents Build Your Page Set
SEOmatic's AI agents find the search patterns in your own Search Console data and build the pages from your data, in your CMS:
- Pages for each city, service or product your data covers
- You approve the plan and the pages before anything is published
- Internal links and schema added as the pages go live
Each change can wait for your approval, one click undoes it, and the agents check it against how the rest of your site did. What they can change depends on your platform, and you see the full list before anything runs.
14-Day Trial for $1, credited to your first payment.


