Nomad List has over 24,000 indexed pages. Zapier has 800,000+. Wise has 28,000+ currency conversion pages. None of these were written manually.
Programmatic SEO (pSEO) creates large numbers of pages using templates and structured data. Instead of writing each page individually, you build a system that generates pages automatically—each targeting a specific long-tail keyword.
The approach works because long-tail keywords collectively drive massive traffic. A single page targeting “cost of living in Chiang Mai” might get 500 visits per month. Generate 2,000 city pages and you have a significant traffic engine.
This guide covers the complete pSEO process: from finding keyword patterns to building templates to avoiding penalties.
What Is Programmatic SEO?
Programmatic SEO creates many webpages using three components:
Template + Database = Thousands of Unique Pages
Template: A consistent page structure with placeholders for variable data.
Database: Structured information that fills those placeholders.
Output: Hundreds or thousands of pages, each targeting a specific search query.
This differs from AI-generated content. Programmatic pages display real data in consistent formats. The value comes from the data itself, not from generated prose.
Scale Examples
| Company | Pages | Monthly Organic Traffic |
|---|---|---|
| Zapier | 800,000+ | 300,000+ |
| Nomad List | 24,000+ | 41,000+ |
| Wise | 28,000+ | Millions |
| Yelp | Millions | Massive |
| Airbnb | Millions | Massive |
These numbers aren’t achieved through manual content creation. They’re built through systems.
How Programmatic SEO Works
Component 1: Data Source
Your database of information. This could be:
- City data (population, cost of living, weather)
- Product catalogs (specifications, pricing, availability)
- Integration information (what connects to what)
- Comparison data (features across competitors)
Data requirements:
- Structured with consistent fields across entries
- Accurate—errors multiply at scale
- Complete—missing data creates poor pages
- Updatable—stale information hurts rankings and user trust
Component 2: Page Template
The HTML and design structure that displays your data. Templates include:
- Static elements (navigation, headers, footers)
- Dynamic placeholders (city name, price, features)
- Consistent layout across all generated pages
Component 3: Generation System
Code that combines data with templates to produce pages. Options include:
- Static site generators (Astro, Next.js, Hugo)
- CMS with custom fields (WordPress, Webflow)
- Custom code solutions
Example: Nomad List City Pages
Data: 2,000+ cities with cost of living, internet speed, weather, safety scores, and nomad community size.
Template: City page layout displaying all data points in organized sections with comparisons to similar cities.
Output: 24,000+ unique, indexable pages—each targeting a search pattern like “cost of living in [city]” or “[city] for digital nomads.”1
Programmatic SEO vs Traditional SEO
| Aspect | Traditional SEO | Programmatic SEO |
|---|---|---|
| Content Creation | Manual writing | Automated from data |
| Scale | Tens to hundreds of pages | Thousands to millions |
| Keywords | Head terms and medium-tail | Long-tail at scale |
| Time Investment | Per-page basis | Upfront system building |
| Best For | Unique, opinion-based content | Data-driven, factual content |
| Examples | Blog posts, guides | Location pages, comparison pages |
Neither approach is universally superior. The right choice depends on your content type and available data.
When to Use Programmatic SEO
Good Fit
Large product catalogs: E-commerce sites with thousands of products can generate pages for each product, each category, and each combination.
Location-based businesses: Real estate, travel, and local services can create pages for every city, neighborhood, or region they serve.
Integration/comparison pages: SaaS companies can create pages for every integration (“connect X to Y”) or comparison (“X vs Y”).
Directory-style sites: Any business model based on listing many similar items—restaurants, jobs, properties, events.
Data-rich industries: Finance (currency conversion), weather (forecasts by location), statistics (demographic data by region).
Poor Fit
Opinion and editorial content: Programmatic pages display data, not unique perspectives.
Highly unique topics: If each page requires original research or analysis, templates won’t work.
Small product range: Generating 10 pages isn’t worth building a system. Write them manually.
Content requiring expertise: Medical advice, legal guidance, and technical tutorials require human judgment that templates can’t replicate.
The Decision Test
Ask three questions:
- Do you have structured data that could fill many pages?
- Are there repeatable keyword patterns in your space?
- Can a template genuinely serve user intent?
If yes to all three, pSEO is worth exploring.
Keyword Research for Programmatic SEO
Pattern-Based Keywords
Programmatic SEO targets keyword patterns with variables:
| Pattern | Variables | Example Keywords |
|---|---|---|
| ”[city] cost of living” | City names | ”Tokyo cost of living”, “Austin cost of living" |
| "[tool] vs [tool]“ | Product names | ”Slack vs Teams”, “Notion vs Asana" |
| "best [category] in [location]“ | Category + location | ”best pizza in Chicago”, “best gyms in Denver" |
| "[product] alternatives” | Product names | ”Mailchimp alternatives”, “Zoom alternatives" |
| "[topic] for [audience]“ | Topic + audience | ”investing for beginners”, “coding for kids” |
The pattern remains constant; the variables create unique pages.
Finding Patterns
Method 1: Modifier Analysis
Start with a seed keyword and systematically add modifiers.
Seed: “cost of living” Add location modifiers: “cost of living in [city]” Add comparison modifiers: “cost of living [city] vs [city]” Add audience modifiers: “cost of living for [demographic]”
Method 2: Competitor Template Analysis
Find sites using pSEO in your space. Analyze their URL patterns and page structures. Identify their data sources.
Example: If Zapier has pages like /apps/slack/integrations/trello, the pattern is /apps/[app1]/integrations/[app2].
Method 3: Search Suggest Mining
Type your pattern into Google and note autocomplete variations. These represent actual searches.
Typing “best restaurants in” shows: “best restaurants in NYC”, “best restaurants in LA”, “best restaurants in Chicago”—each a potential page.
Validating Demand
Individual long-tail keywords may have low search volume. The opportunity lies in aggregate.
If “cost of living in Chiang Mai” gets 500 searches/month, and you can create 2,000 city pages, total opportunity is substantial—even if each individual page targets a low-volume term.
Check:
- Search volume per keyword (expect low individually)
- Total opportunity across all variations
- Current ranking difficulty for the pattern
Building Your Data Source
Data Quality Requirements
Structured: Consistent fields across all entries. If some cities have “average rent” and others have “monthly housing cost,” your template can’t work.
Accurate: At scale, errors multiply. One wrong data point becomes one bad page. Verify sources.
Complete: Missing data creates poor user experiences. A city page without cost data is useless. Either fill gaps or don’t create the page.
Updatable: Stale data hurts both rankings and user trust. Plan for regular updates.
Data Source Options
Public data:
- Government databases (census, statistics bureaus)
- Wikipedia and Wikidata
- Open APIs
- Public datasets (Kaggle, data.gov)
Proprietary data:
- Your product database
- Customer data (aggregated and anonymized)
- Original research and surveys
- Scraped and manually cleaned data
Third-party data:
- Paid API providers
- Data marketplaces
- Partner integrations
Example: Nomad List Data Structure
For each city, Nomad List collects:2
| Data Point | Source | Update Frequency |
|---|---|---|
| Cost of living | User reports + external APIs | Monthly |
| Internet speed | User-submitted speed tests | Continuous |
| Weather | Weather APIs | Real-time |
| Safety score | External crime data + user reports | Quarterly |
| Nomad score | Proprietary algorithm | Calculated |
The combination of multiple data sources creates value that’s hard to replicate.
Creating Effective Templates
Template Anatomy
Above the fold:
- Clear H1 with primary keyword (“[City] Cost of Living Guide”)
- Key data points immediately visible
- Answer user intent fast
Body content:
- Data-driven sections with tables and lists
- Comparison elements (vs similar cities/products)
- Relevant statistics with context
- Internal links to related pages
Supporting content:
- FAQ section (can be templated with variables)
- Related pages section
- User-generated content (reviews, comments) if available
Template Quality Requirements
Each page must be genuinely useful. Google explicitly penalizes “thin content”—pages that exist only for SEO without serving user needs.3
Quality signals:
- Real data that users can’t easily find elsewhere
- Useful presentation (not just raw numbers)
- Context and comparisons that add value
- Unique elements per page when possible
Example Template Structure
H1: Cost of Living in [City], [Country]
Quick Stats Box:
├── Monthly budget: $[monthly_cost]
├── Internet: [speed] Mbps
├── Safety: [safety_score]/5
└── Weather: [avg_temp]°C average
Section: Detailed Cost Breakdown
├── Rent: $[rent] (1BR apartment)
├── Food: $[food]/month
├── Transport: $[transport]/month
└── Entertainment: $[entertainment]/month
Section: Compared to Similar Cities
├── Table comparing to 3-5 similar cities
└── Link to full comparison tool
Section: Best For
├── Digital nomads? [yes/no + reasoning]
├── Families? [yes/no + reasoning]
└── Retirees? [yes/no + reasoning]
FAQ Section:
├── Is [City] expensive? [templated answer with data]
├── What's the weather like? [templated answer with data]
└── Is [City] safe? [templated answer with data]
Related Pages:
├── Similar cities (by cost/region)
├── Same country
└── Same continent
Technical Implementation
Technology Options
Static site generators (Astro, Next.js, Hugo):
- Generate pages at build time
- Excellent performance
- Good for tens of thousands of pages
- Requires rebuild for updates
Dynamic CMS (WordPress, Webflow):
- Database-driven generation
- Updates reflect immediately
- More server resources required
- Good for frequently changing data
Custom solutions:
- Maximum flexibility
- Can handle any scale
- Requires development resources
- Good for complex requirements
URL Structure
URLs should be:
- Clean and descriptive
- Include target keyword naturally
- Follow consistent patterns
- Human-readable
Examples:
/cities/bangkok-thailand/cost-of-living//compare/slack-vs-discord//integrations/salesforce-to-mailchimp/
Internal Linking
Programmatic pages need internal linking structures:
Hub pages: Category pages that link to all related template pages.
Cross-links: Related template pages link to each other (similar cities, competing products).
Breadcrumbs: Clear path back to hub pages.
Footer sections: Related pages, popular pages, category navigation.
Technical SEO Requirements
Sitemaps: Large sites may need multiple sitemaps (50,000 URLs per file maximum).
Crawl budget: Google won’t crawl unlimited pages. Prioritize high-value pages and ensure clean crawl paths.
Page speed: Templates should be lightweight. Heavy pages at scale create poor experiences.
Canonical URLs: Prevent duplicate content issues with proper canonicalization.
Avoiding pSEO Pitfalls
Thin Content Penalty
Google penalizes pages that exist only for SEO without providing real value. This is the primary risk with programmatic SEO.
Prevention:
- Minimum content thresholds (don’t generate pages with insufficient data)
- Genuine utility per page (would a human find this useful?)
- Quality data only (better to have fewer good pages than many poor ones)
- noindex pages that don’t meet quality standards
Duplicate Content
Template sameness can create duplication issues. Two city pages with nearly identical text and only numbers changed may be flagged.
Prevention:
- Add dynamic elements that vary meaningfully
- Ensure data differences create substantive page differences
- Use unique descriptions where possible
- Implement canonical tags properly
Keyword Cannibalization
Creating too many similar pages can cause them to compete with each other in search results.
Prevention:
- Clear topic differentiation between pages
- Hub-and-spoke architecture (hub pages target head terms, spoke pages target long-tail)
- Internal linking that signals page hierarchy
Stale Data
Outdated information creates poor user experiences and can hurt rankings.
Prevention:
- Establish update schedules for data sources
- Display “last updated” dates prominently
- Remove or noindex pages with critically stale data
- Monitor for data quality issues
Case Study: Nomad List
The Strategy
Problem: Digital nomads need comprehensive city comparisons—cost of living, internet quality, safety, weather, community.
Solution: Aggregate data for thousands of cities and present it through template pages targeting long-tail searches.
Keyword Patterns Targeted
- “Cost of living in [city]”
- “Best places to live in [country]”
- “[City] for digital nomads”
- “[City] vs [City]” comparisons
- “Internet speed in [city]“
Results
- 24,000+ indexed pages1
- 41,000+ monthly organic visitors
- Authority site status in the digital nomad space
- Foundation for $2M+ ARR membership business
What Made It Work
Proprietary data: Not just scraped information, but curated and verified data with proprietary calculations (Nomad Score).
Community contribution: Users submit and verify data, keeping it fresh and creating engagement.
Genuine utility: People actually use the site to make decisions, not just for information.
Continuous updates: Data stays current through user contributions and API integrations.
Brand building: Pieter Levels’ personal brand and build-in-public approach amplified reach beyond organic search.
Getting Started: Your First pSEO Project
Week 1: Research
Identify keyword patterns:
- What patterns exist in your space?
- What variables can you fill?
- How much search volume exists across variations?
Analyze competitors:
- Who’s doing pSEO in your space?
- What’s their URL structure?
- What data are they using?
Validate opportunity:
- Is aggregate search volume significant?
- Can you compete on data quality?
- Do you have or can you acquire the necessary data?
Week 2: Data
Identify data sources:
- What data do you already have?
- What public data is available?
- What would you need to collect or purchase?
Structure and clean:
- Standardize fields across entries
- Verify accuracy
- Fill gaps or exclude incomplete entries
Plan for updates:
- How often does this data change?
- What’s your update process?
- Can you automate updates?
Week 3: Template
Design page structure:
- What sections serve user intent?
- What data goes where?
- How do related pages link together?
Build template:
- Implement with your chosen technology
- Test with sample data
- Verify SEO best practices (H1, meta tags, schema)
Quality check:
- Does each generated page provide value?
- Would you be satisfied finding this page in search?
- Are there thin pages to exclude?
Week 4: Launch
Generate initial batch:
- Start with 100-500 pages rather than everything
- Test indexing and ranking
- Identify issues before full scale
Submit sitemaps:
- Add to Google Search Console
- Monitor indexing rate
Track performance:
- Which pages get indexed?
- Which pages rank?
- What’s the traffic per page?
Ongoing
Expand coverage:
- Add more data (more cities, more products)
- Add new keyword patterns
- Build supporting hub pages
Maintain quality:
- Update data regularly
- Remove or improve underperforming pages
- Monitor for technical issues
Measure and iterate:
- Which patterns perform best?
- Where are ranking gaps?
- What content additions improve pages?
Conclusion
Programmatic SEO isn’t content generation—it’s building a system that serves user needs at scale. The pages must be genuinely useful. The data must be accurate. The template must answer the query.
When done well, pSEO creates sustainable traffic from thousands of long-tail keywords that competitors can’t easily replicate. Nomad List, Zapier, and Wise built significant businesses on this foundation.
The approach isn’t right for every site. You need structured data, keyword patterns worth targeting, and the technical ability to build and maintain the system. But if those pieces exist, programmatic SEO can be the most efficient content strategy available.
Start small. Build 100 pages. Measure results. Scale what works.
Further Reading
- Related: Bottom of Funnel Keywords Guide
- Related: Complete SEO Guide
- Related: Build In Public Framework
- Practical Programmatic - Nomad List Case Study
- Google Search Central - Thin Content Guidelines
References
Footnotes
-
Practical Programmatic. “Nomad List pSEO Case Study.” https://practicalprogrammatic.com/examples/nomadlist - Analysis showing 24,000+ indexed pages and 41,000+ monthly organic visits. ↩ ↩2
-
Levels, Pieter. Nomad List data methodology discussed in various interviews and the MAKE book. https://nomadlist.com ↩
-
Google Search Central. “Creating helpful, reliable, people-first content.” https://developers.google.com/search/docs/fundamentals/creating-helpful-content ↩