What is programmatic SEO?
Programmatic SEO is a way to build many pages from one page template and one dataset. Each row in the data becomes a page, and each page targets one search, like "USD to EUR", "things to do in Lisbon" or "Gmail Slack integration".
It works when the data gives every page something real: a live rate, a list of homes, a set of reviews, a spec sheet. It fails when the only thing that changes is a keyword. Google calls that second kind "scaled content abuse" (more on that below).
A programmatic page has three parts:
- A pattern people search. A head term plus a variable: "{city} cost of living", "{app} alternatives".
- A dataset with one row per page. Prices, listings, reviews, specs, scores.
- A template that answers the search. The answer sits at the top, filled from that row.
50 programmatic SEO examples, by pattern
We grouped the 50 by the kind of page they build. For every site we also loaded two more pages from the same template, so you know the page set is real and not a one-off. Some sites (Make, AlternativeTo, Product Hunt, G2, Tripadvisor, Canva) block scripts; for those we read the page with a fetch tool or confirmed it in the search index.
Integration pages (6)
One page per app, or per pair of apps. People search "connect X to Y" and "X Y integration".
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 1 | Zapier | zapier.com/apps/{app-a}/integrations/{app-b} | zapier.com/apps/gmail/integrations/slack |
| 2 | Make | make.com/en/integrations/{app-a}/{app-b} | www.make.com/en/integrations/google-sheets/slack |
| 3 | n8n | n8n.io/integrations/{app-a}/and/{app-b}/ | n8n.io/integrations/slack/and/google-sheets/ |
| 4 | Pipedream | pipedream.com/apps/{app-a}/integrations/{app-b} | pipedream.com/apps/github/integrations/slack-v2 |
| 5 | Shopify App Store | apps.shopify.com/{app-handle} | apps.shopify.com/klaviyo-email-marketing |
| 6 | WordPress.org Plugins | wordpress.org/plugins/{plugin-slug}/ | wordpress.org/plugins/wordpress-seo/ |
Location pages (12)
One page per city, region or route. People add a place to almost any search: "things to do in Lisbon", "homes for sale Austin". How to build them well: programmatic SEO location pages.
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 7 | Tripadvisor | tripadvisor.com/Attractions-g{geo-id}-Activities-{City}.html | www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html |
| 8 | Airbnb | airbnb.com/{city-region}/stays | www.airbnb.com/lisbon-portugal/stays |
| 9 | Zillow | zillow.com/{city-st}/ | www.zillow.com/austin-tx/ |
| 10 | Kayak | kayak.com/flight-routes/{Origin-CODE}/{Destination-CODE} | www.kayak.com/flight-routes/New-York-NYC/London-LON |
| 11 | Skyscanner | skyscanner.com/routes/{from}/{to}/{from-name}-to-{to-name}.html | www.skyscanner.com/routes/nyca/lond/new-york-to-london.html |
| 12 | Nomads.com (formerly Nomad List) | nomads.com/{city} | nomads.com/lisbon |
| 13 | Numbeo | numbeo.com/cost-of-living/in/{City} | www.numbeo.com/cost-of-living/in/Lisbon |
| 14 | Data USA | datausa.io/profile/geo/{place-st} | datausa.io/profile/geo/austin-tx |
| 15 | Walk Score | walkscore.com/{ST}/{City} | www.walkscore.com/TX/Austin |
| 16 | GreatSchools | greatschools.org/{state}/{city}/ | www.greatschools.org/texas/austin/ |
| 17 | Speedtest by Ookla | speedtest.net/performance/united-states/{state}/{city} | www.speedtest.net/performance/united-states/texas/austin |
| 18 | Weather Underground | wunderground.com/weather/us/{st}/{city} | www.wunderground.com/weather/us/tx/austin |
Comparison and alternatives pages (5)
One page per product, or per pair of products. People search "X alternatives" and "X vs Y" right before they choose.
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 19 | G2 | g2.com/products/{product}/competitors/alternatives | www.g2.com/products/asana/competitors/alternatives |
| 20 | AlternativeTo | alternativeto.net/software/{product}/ | alternativeto.net/software/notion/ |
| 21 | Product Hunt | producthunt.com/products/{product}/alternatives | www.producthunt.com/products/notion/alternatives |
| 22 | GSMArena | gsmarena.com/compare.php3?idPhone1={id}&idPhone2={id} | www.gsmarena.com/compare.php3?idPhone1=13317&idPhone2=12773 |
| 23 | npm trends | npmtrends.com/{package-a}-vs-{package-b} | npmtrends.com/react-vs-vue |
Template pages (7)
One page per template, or per template type. People search "{thing} template" when they want to start fast.
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 24 | Atlassian (Confluence) | atlassian.com/software/confluence/templates/{template} | www.atlassian.com/software/confluence/templates/meeting-notes |
| 25 | HubSpot | hubspot.com/resources/templates/{category} | www.hubspot.com/resources/templates/marketing |
| 26 | Webflow | webflow.com/templates/category/{category} | webflow.com/templates/category/blog-and-editorial-websites |
| 27 | Typeform | typeform.com/templates/{template} + typeform.com/templates-category/{category} | www.typeform.com/templates/customer-satisfaction-survey-template |
| 28 | Notion Marketplace | notion.com/templates/category/{category} | www.notion.com/templates/category/habit-tracking |
| 29 | Canva | canva.com/{design-type}/templates/{style-or-topic}/ | www.canva.com/instagram-posts/templates/announcement/ |
| 30 | Miro | miro.com/templates/{template}/ | miro.com/templates/retrospective/ |
Converter and calculator pages (6)
One page per conversion or calculation. The searcher wants a number, now.
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 31 | Wise | wise.com/{country}/currency-converter/{from}-to-{to}-rate | wise.com/us/currency-converter/usd-to-eur-rate |
| 32 | Xe | xe.com/currencyconverter/convert/?Amount=1&From={A}&To={B} | www.xe.com/currencyconverter/convert/?Amount=1&From=USD&To=EUR |
| 33 | RapidTables | rapidtables.com/convert/{category}/{unit-a}-to-{unit-b}.html | www.rapidtables.com/convert/length/cm-to-inch.html |
| 34 | Omni Calculator | omnicalculator.com/{category}/{calculator} | www.omnicalculator.com/finance/compound-interest |
| 35 | Calculator.net | calculator.net/{name}-calculator.html | www.calculator.net/mortgage-calculator.html |
| 36 | World Time Buddy | worldtimebuddy.com/{zone-a}-to-{zone-b}-converter | www.worldtimebuddy.com/est-to-pst-converter |
Directory and data profile pages (10)
One page per thing in a database: a stock, a job, a company, a feature, a book genre.
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 37 | Yahoo Finance | finance.yahoo.com/quote/{TICKER}/ | finance.yahoo.com/quote/AAPL/ |
| 38 | Payscale | payscale.com/research/US/Job={Job_Title}/Salary | www.payscale.com/research/US/Job=Software_Engineer/Salary |
| 39 | Indeed | indeed.com/career/{job-title}/salaries | www.indeed.com/career/software-engineer/salaries |
| 40 | Levels.fyi | levels.fyi/companies/{company}/salaries/{role} | www.levels.fyi/companies/google/salaries/software-engineer |
| 41 | Semrush | semrush.com/website/{domain}/overview/ | www.semrush.com/website/amazon.com/overview/ |
| 42 | Wappalyzer | wappalyzer.com/technologies/{category}/{technology}/ | www.wappalyzer.com/technologies/ecommerce/shopify/ |
| 43 | Can I use | caniuse.com/{feature} | caniuse.com/css-grid |
| 44 | GitHub Topics | github.com/topics/{topic} | github.com/topics/machine-learning |
| 45 | Goodreads | goodreads.com/genres/{genre} | www.goodreads.com/genres/fantasy |
| 46 | Basketball-Reference | basketball-reference.com/players/{letter}/{player-id}.html | www.basketball-reference.com/players/j/jamesle01.html |
Glossary and dictionary pages (4)
One page per word or term. People search "{word} meaning" and "another word for {word}".
| # | Site | URL pattern | Live example |
|---|---|---|---|
| 47 | Thesaurus.com | thesaurus.com/browse/{word} | www.thesaurus.com/browse/happy |
| 48 | Dictionary.com | dictionary.com/browse/{word} | www.dictionary.com/browse/serendipity |
| 49 | Cambridge Dictionary | dictionary.cambridge.org/dictionary/english/{word} | dictionary.cambridge.org/dictionary/english/serendipity |
| 50 | Vocabulary.com | vocabulary.com/dictionary/{word} | www.vocabulary.com/dictionary/serendipity |
The PDF adds, for each of the 50: the data source behind the page, why it works, the two sibling pages we checked, and the public page count when the site states one.
What the best examples have in common
Look at three pages from any site above and you will see the same four traits:
- The changing part is data, not words. Kayak's route titles carry a fare ($239 New York to London when we checked). Thesaurus.com titles carry a count ("HAPPY Synonyms & Antonyms - 164 words"). Numbeo puts the month in the title.
- The data is first-party or user-made. Speedtest uses its own test results. Levels.fyi, Goodreads and AlternativeTo get their data from users, so new pages fill themselves.
- One URL per combination. Pipedream sends
github/integrations/discordtodiscord/integrations/github, so the two orders never compete. - Empty combinations do not get a page. Zapier, Make and n8n only publish pairs that actually connect.
| Pattern | The variable | Every page must show |
|---|---|---|
| Integrations | App, or app pair | Real triggers, actions or setup steps for that pair |
| Locations | City, region, route | Local numbers: prices, listings, scores, providers |
| Comparisons | Product, or product pair | A rating, spec or vote count per product |
| Templates | Template type x topic | A template you can use on the page |
| Converters | Unit pair, currency pair | The answer first, the formula, a table of common values |
| Directories | One entity (job, stock, feature) | Data about that entity people cannot easily get elsewhere |
| Glossary | One term | A clear definition plus real examples |
What Google enforced in March 2026 (and what it did not)
There was no separate March 2026 crackdown on scaled content on record. Here is what Google's Search Status Dashboard shows:
| Date (US Pacific) | Update | What Google said |
|---|---|---|
| Mar 24-25, 2026 | March 2026 spam update, done in under 20 hours | "applies globally and to all languages." No target named. |
| Mar 27 to Apr 8, 2026 | March 2026 core update | "The rollout may take up to 2 weeks." No new guidance. |
| Mar 5, 2024 | New scaled content abuse policy | Scaled content is abuse when made to manipulate rankings, "whether automation or humans are involved." |
The rule that matters is the March 2024 policy. Google's spam policies page (updated August 28, 2026) defines it: "Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users." Its examples include generating many pages with AI "without adding value for users", scraping or rewording other content, and pages that "make little or no sense to a reader but contain search keywords." Google did not publish a list of sites hit in March 2026, and we do not guess at one. More in our page on scaled content abuse.
A quick pass/fail test for your template
Run one finished page through these five checks. The full 17-point version is in the PDF.
- Unique data: the page shows at least one fact that is on no other page of your site.
- Demand: most of 10 random rows show searches in a keyword tool or impressions in Search Console.
- Intent: Google a sample query; the top results are the same kind of page as yours.
- No thin pages: rows with empty data are not published, or are set to noindex.
- Indexing control: one canonical URL per combination, a hub page links to every page, sitemaps list only indexable URLs (each file under 50,000 URLs, per Google).
If you want to build page sets from your own data, see how SEOmatic builds programmatic pages from your own template.
How to use this with an AI assistant
Give your assistant (Claude, ChatGPT, Cursor or any MCP client) the prompt below after you connect SEOmatic at https://seomatic.ai/mcp. It finds the pattern that fits data you already have and stages a small first batch built on one of your own pages.
Nothing goes live until you approve it. Reading your data is free; staging pages needs the 14-day trial.
Updated October 2026. Connect SEOmatic: https://seomatic.ai/mcp
Copy this into Claude, ChatGPT, Cursor or any MCP client after you connect SEOmatic. Replace mysite.com.
Use SEOmatic to find the right programmatic SEO pattern for mysite.com, based on the guide "50 programmatic SEO examples" (patterns: integrations, locations, comparisons, templates, converters, directories, glossary).
1. Run check_site on mysite.com and tell me if Google can index the site. Fix-first items go at the top.
2. Run connect_seomatic so you can read my Google Search Console data.
3. Use site_pages with action inventory [get_site_inventory] to list my pages, and group them by URL folder.
4. Use gsc_performance with action top_pages [get_top_pages] and action folder_rollup to see which page groups already get impressions and clicks.
5. Use gsc_insights with action cannibalization to check that pages in the same group are not competing for the same queries.
6. Use gsc_indexing with action batch_inspect [batch_inspect_urls] on up to 20 pages from my largest page group, and tell me how many are indexed vs "Crawled - currently not indexed".
7. Tell me which one of the 7 patterns fits data I already own, and which one of my own pages is the best model. Explain why in plain words.
8. Use keyword_research with action metrics on 10 sample queries for that pattern, and tell me which have real demand.
9. If I agree, use campaign_manage with action propose_page_scale (or propose_location_pages for city or clinic pages), built on my model page, to stage a small first batch for my approval. Only include rows that have real data.
10. Run show_approval_cards so I can review each page. Do not publish anything without my approval.What each tool does here (and what it does not)
| Step | Tool (MCP name, raw name) | What it does |
|---|---|---|
| 1 | check_site | Free, no sign-in: checks if Google can index the homepage and up to 10 sitemap pages, lists top fixes. No Search Console data. |
| 2 | connect_seomatic | Shows the sign-in prompt. Free. |
| 3 | site_pages, action inventory [get_site_inventory] | Lists the pages of your site as synced from your CMS or a crawl. |
| 4 | gsc_performance, actions top_pages [get_top_pages] and folder_rollup | Top pages by clicks with impressions, CTR and position; performance rolled up by folder. |
| 5 | gsc_insights, action cannibalization | Queries where 2 or more of your pages compete. |
| 6 | gsc_indexing, action batch_inspect [batch_inspect_urls] | URL Inspection for up to 50 URLs per call. Google's inspection quota applies. |
| 8 | keyword_research, action metrics | Search metrics for the queries you give it. |
| 9 | campaign_manage, action propose_page_scale or propose_location_pages | Stages a set of pages built on your own page as the model. Nothing goes live: there are approval gates. |
| 10 | show_approval_cards | Shows Approve and Dismiss cards in the chat. |
Notes:
- Reading and analysis work on the free plan. Staging pages needs the 14-day trial ($1 card check, credited to your first payment).
- No tool reads the Page indexing report's full reason list in bulk. For that, open Search Console > Indexing > Pages; gsc_indexing inspect is the closest per-URL check.
- Every change is recorded and can be undone with task_manage action rollback.
Go deeper
Sources (71)
- alternativeto.net/software/notion/
- apps.shopify.com/
- apps.shopify.com/klaviyo-email-marketing
- blog.google/products-and-platforms/products/search/google-search-update-march-2024/
- caniuse.com/css-grid
- datausa.io/profile/geo/austin-tx
- developers.google.com/search/blog/2024/03/core-update-spam-policies
- developers.google.com/search/docs/crawling-indexing/block-indexing
- developers.google.com/search/docs/crawling-indexing/large-site-managing-crawl-budget
- developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap
- developers.google.com/search/docs/essentials/spam-policies
- developers.google.com/search/docs/fundamentals/using-gen-ai-content
- dictionary.cambridge.org/dictionary/english/serendipity
- finance.yahoo.com/quote/AAPL/
- github.com/topics/machine-learning
- miro.com/templates/retrospective/
- n8n.io/integrations/slack/and/google-sheets/
- nomads.com/lisbon
- npmtrends.com/react-vs-vue
- pipedream.com/apps
- pipedream.com/apps/github/integrations/slack-v2
- status.search.google.com/incidents/7eTbAa2jWdToLkraZj5y
- status.search.google.com/incidents/VbnSXAH4SmEcxPtx4YSD
- status.search.google.com/products/rGHU1u87FJnkP6W2GwMi/history
- webflow.com/templates/category/blog-and-editorial-websites
- wise.com/us/currency-converter/usd-to-eur-rate
- wordpress.org/plugins/
- wordpress.org/plugins/wordpress-seo/
- airbnb.com/lisbon-portugal/stays
- atlassian.com/software/confluence/templates
- atlassian.com/software/confluence/templates/meeting-notes
- basketball-reference.com/players/j/jamesle01.html
- calculator.net/
- calculator.net/mortgage-calculator.html
- canva.com/instagram-posts/templates/announcement/
- dictionary.com/browse/serendipity
- g2.com/products/asana/competitors/alternatives
- goodreads.com/genres/fantasy
- greatschools.org/texas/austin/
- gsmarena.com/compare.php3?idPhone1=13317&idPhone2=12773
- hubspot.com/resources/templates
- hubspot.com/resources/templates/marketing
- indeed.com/career/software-engineer/salaries
- kayak.com/flight-routes/New-York-NYC/London-LON
- levels.fyi/companies/google/salaries/software-engineer
- make.com/en/integrations/google-sheets/slack
- notion.com/templates
- notion.com/templates/category/habit-tracking
- numbeo.com/cost-of-living/
- numbeo.com/cost-of-living/in/Lisbon
- omnicalculator.com/
- omnicalculator.com/finance/compound-interest
- payscale.com/research/US/Job=Software_Engineer/Salary
- producthunt.com/products/notion/alternatives
- rapidtables.com/convert/length/cm-to-inch.html
- semrush.com/website/amazon.com/overview/
- skyscanner.com/routes/nyca/lond/new-york-to-london.html
- speedtest.net/performance/united-states/texas/austin
- thesaurus.com/browse/happy
- tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html
- typeform.com/templates-category/surveys
- typeform.com/templates/customer-satisfaction-survey-template
- vocabulary.com/dictionary/serendipity
- walkscore.com/TX/Austin
- wappalyzer.com/technologies/ecommerce/shopify/
- worldtimebuddy.com/est-to-pst-converter
- wunderground.com/weather/us/tx/austin
- xe.com/currencyconverter/convert/?Amount=1&From=USD&To=EUR
- zillow.com/austin-tx/
- zapier.com/apps
- zapier.com/apps/gmail/integrations/slack


