Programmatic SEO means generating many pages from a template and a dataset: one page per product category per city, per model, per route, per combination. Done well, it captures thousands of long-tail searches no one would write pages for by hand.
Done badly, it produces 4,000 near-identical pages, none of which get indexed, and a site Google trusts less than before.
When it works
It needs three things:
1. Real, repeated search demand for the pattern
2. Genuinely different data for each page
3. A reason the page is useful beyond existing in the index
Good candidates:
Pattern | Works because |
[Product] price in [city] | Prices genuinely differ |
[Service] in [area] | Each area has different coverage, team, examples |
[Brand A] vs [Brand B] | Each comparison has different facts |
[Material] [product] | Real product differences |
[Course] in [city] | Different batches, fees, locations |
[Vehicle model] service cost | Different parts and prices |
Bad candidates:
• The same service page with the city name swapped and nothing else different
• Combinations nobody searches for
• Pages built from data you do not actually have
• Any pattern where you would have to pad with generic text to fill the page
The honest test
Write out two of the pages fully. Put them side by side.
If 80% of the text is identical and only the city name changes, Google will treat them as duplicates and index none of them. That is not a hypothesis; it is the normal outcome.
If you cannot make each page substantially different, you do not have a programmatic SEO opportunity. You have one page that should mention several cities.
What makes each page different
For a location-based pattern, genuinely differentiating content might include:
• Actual coverage details for that area
• Local prices, if they differ
• Projects or clients in that area, with permission
• Travel time, service hours or delivery timelines for that area
• A local landmark or neighbourhood reference that is accurate
• Area-specific FAQs
• Photographs from that area
• Local regulations or conditions, where they differ
For a product comparison pattern: real specifications, real prices, real pros and cons for each pair.
If you have only two of these, build fewer pages with more in each.
The data is the project
Programmatic SEO is a data exercise with a template attached. Before writing any code:
1. Build the dataset. Spreadsheet or database, one row per page, every variable field populated.
2. Check completeness. Rows with missing data produce thin pages. Either fill them or exclude them.
3. Set a quality threshold. For example: no page generated unless it has a price, at least three specific facts, and one image.
4. Decide the page count. Start with 20–50, not 2,000.
The threshold rule is what separates this from spam. Pages that fail it simply do not get created.
Build it in stages
Stage | Action |
1 | Validate demand: do people search this pattern? Use keyword data, not intuition |
2 | Build the dataset for 20 pages |
3 | Write the template with genuine variation, not just token swaps |
4 | Publish 20 pages |
5 | Wait 6–8 weeks. Check indexing and rankings in Search Console |
6 | If they index and rank, expand. If they do not, fix quality first |
7 | Scale in batches, monitoring indexing each time |
Step 5 is the one everyone skips. Publishing 2,000 pages before knowing whether 20 work is how sites get into trouble.
Technical requirements
• Unique title tag and meta description per page, generated from the data, not a single pattern repeated
• Unique H1
• Self-referencing canonical on each
• Internal linking: a hub page listing all of them, plus links between related pages
• Sitemap inclusion, split into manageable files so you can monitor indexing by batch
• Fast loading, since you are asking Google to crawl a lot of URLs
• No empty pages: if the data is missing, return 404 or do not generate the page
• Breadcrumbs showing where each page sits
See our site architecture guide and crawl budget guide; both matter more at scale.
Monitoring
Track these per batch:
Metric | Healthy sign |
Indexed ratio | Most of the batch indexed within 6–8 weeks |
“Crawled – currently not indexed” | Low and not growing |
Impressions per page | Rising |
Clicks | Some pages earning clicks |
Conversions | At least a few pages generating enquiries |
Site-wide rankings | Unchanged or better, never worse |
That last row is the stop signal. If your existing pages start losing rankings after a programmatic launch, the new pages are diluting site quality. Remove or improve them.
When to stop and prune
• A batch where fewer than half the pages get indexed
• Pages with impressions but zero clicks over months
• Pages generating no value and no enquiries after six months
Remove them, or merge them into fewer, better pages. See our content pruning guide.
Frequently asked questions
How many pages can I safely generate? There is no number. The limit is how many pages you can make genuinely useful and distinct.
Is programmatic SEO against Google’s guidelines? Generating pages is not. Generating thin, near-duplicate pages at scale to manipulate rankings is.
Can AI write the variable content? It can assist, but the differentiating facts must come from your data. AI-padded variation is exactly what fails. See our AI content guide.


