Programmatic SEO Case Study: 2,600+ Pages, 32 Hubs, No Spam

We turned an Austrian restaurant guide into a data product: one score from four guides, a page per venue and a ranked hub per state and district. Here is the model, and where Google's spam line sits.

Head of Design & Strategy

· 14 min read

Aerial view of rows of shipping containers at a seaport in low golden light

Key takeaways

  • Google has run four spam updates in 2026 and named no site types. Its test is purpose and value: pages made to rank rather than to help are spam, however they are made.
  • Start from a repeating search, not a database. Gastro.News has one page type per search pattern: 2,633 venue pages, 9 state hubs and 23 Vienna district hubs.
  • Give every page a field only you own. The Gastro.News Score turns four restaurant guides into one ranking that no single guide publishes.
  • A location hub is not a doorway when the search ends on it: a ranked local list with breadcrumbs and links to neighboring hubs, not a funnel to one form.
  • Google's crawl budget guide is for 1M+ pages changing weekly, 10,000+ daily, or many “Discovered - currently not indexed” URLs. Otherwise, a current sitemap and the Page Indexing report are enough.

Programmatic SEO, publishing search pages at scale from one template and one dataset, is not spam by itself: Google's spam policies target pages generated "for the primary purpose of manipulating search rankings and not helping users", however they are made. On Gastro.News, one score built from four restaurant guides feeds 2,600+ venue pages and 32 ranked hubs, and 30K+ organic visitors a year reach the guide from search.

This case study is for founders of directories, marketplaces, media sites and multi-location businesses that hold data on hundreds of places or products. It covers the demand model, the data that makes each page worth indexing, the page and hub anatomy, the WordPress stack, and where Google draws the line after four spam updates in 2026.

Gastro.News at a glance: page types and the searches they target. Source: NextGenSoft project data, October 2026.

Page typePagesSearch it targetsExample URL
Venue page2,633A restaurant's name with menu, prices, photos or reviewsgastro.news/restaurant/amador
State hub9Best restaurants in an Austrian federal stategastro.news/restaurants/wien
Vienna district hub23Best restaurants in a district, such as 1070 Viennagastro.news/restaurants/wien/1-bezirk

Nobody searches for a guide: start programmatic SEO from demand

Start from a search that repeats with one variable, not from the database. A page type earns its place only when people type the same question with a different place, product or name in it.

Gastro.News is an Austrian food magazine by Culinarius Digital. Four respected guides rate Austria's restaurants, and they do not agree: Michelin gives stars, Gault&Millau toques, Falstaff forks, A la Carte a scale of its own. Diners don't search by any of those scales. They search for the best restaurants in 1070 Vienna, and the guide needed a page for every search like that, without an editor writing each one.

Gastro.News logo
Case study · Gastro.NewsA restaurant guide that ranks on Google

Nobody searches for a guide. People search for dinner in their district, so we built a page for every district, a hub for every federal state and a page for every restaurant. Each page type maps to one search pattern: a query that repeats with one part swapped, here the district, the state or the restaurant's name.

To find your patterns, list the questions your customers type with a place, a product or a name in them. Then check that the variants are searched and return different results. If "restaurants 1070 Vienna" and "restaurants 1010 Vienna" showed the same lists, one page would serve both. A page type without a search pattern is a page nobody asked for.

One score from four guides: the data that makes each page unique

Each page needs a fact that exists nowhere else in that form. On Gastro.News that fact is the Gastro.News Score, a single number built from four guides that sets the order on every page.

We treated the guide as a data product, built in five steps:

  1. Guide ratings. Michelin, Gault&Millau, Falstaff and A la Carte, each on its own scale.
  2. Points. Every guide rating converts to points.
  3. Score. The points add up to one Gastro.News Score per restaurant.
  4. Ranking. The score sets one order for 2,600+ restaurants across Austria.
  5. Pages. Templates turn the ranking into a page per restaurant and a ranked hub per state and Vienna district.

No guide publishes the Gastro.News Score, so a venue page holds something a reader can't get from any single guide: how a restaurant stands across all four at once. Guest reviews on every venue page add one more layer on top of the guide ratings. Swap the restaurant and every one of those values changes, which is what separates a data page from a template with a name dropped in.

Is programmatic SEO spam? Where Google draws the line

Not by method: Google judges why pages exist and what they give the reader, and its definition says so plainly:

"Scaled content abuse is when many pages are generated for the primary purpose of manipulating search rankings and not helping users. This abusive practice is typically focused on creating large amounts of unoriginal content that provides little to no value to users, no matter how it's created." — Google Search Central, Spam policies for Google web search, updated August 28, 2026

Google widened this policy in March 2024 to cover content produced at scale "whether automation, humans or a combination are involved". At the same time it released the March 2024 core update, a change to its main ranking systems. Once that update finished rolling out on April 19, Google reported 45% less low-quality, unoriginal content in search results, against the 40% it had expected (update of April 26, 2024). Hand-written pages are not safe by default, and generated pages are not spam by default.

Spam signals from Google's spam policies (updated August 28, 2026) and what we built on Gastro.News instead.

Signal in Google's policyWhat it looks likeWhat we built instead
Pages made "for the primary purpose of manipulating search rankings"One keyword in many variants, only the place name swappedA page type only where a search repeats: venue, state, district
"Stitching or combining content from different web pages without adding value"Listings from other guides copied side by sideFour ratings converted into points and summed into a score no guide publishes
Pages "targeted at specific regions or cities that funnel users to one page"Area pages that all push the visitor to one booking or contact formEach hub is the destination: that area's restaurants, ranked
Content that "makes little or no sense to a reader but contains search keywords"Template filler with the keyword repeatedScore, rank, awards and guest reviews on every venue page

The table is our reading of the policy, not a promise from Google. The test we apply before generating a page type: would a reader miss the page if it were gone?

Hub pages vs doorway pages: location pages that are not spam

A doorway sends the visitor somewhere else; a hub is where the search ends. Google describes doorway abuse as pages that "lead users to intermediate pages that aren't as useful as the final destination", and one of its examples describes careless location pages exactly:

"Creating substantially similar pages that are closer to search results than a clearly defined, browseable hierarchy" — Google Search Central, an example of doorway abuse in Spam policies for Google web search

Gastro.News has that hierarchy: Austria splits into 9 federal states and Vienna into 23 districts. Every hub carries breadcrumbs, the trail of links from the home page down to the current page, and links to its neighbors, so one district leads to the next. The hub itself answers the search: that area's restaurants, sorted by the same score.

Gastro.News hub structure. Source: NextGenSoft project data, October 2026.

LevelPagesExampleWhat the page answersMarkup
Federal state9From Wien, 842 restaurants, to Burgenland, 89Where to eat in a state, rankedItemList, BreadcrumbList
Vienna district23gastro.news/restaurants/wien/1-bezirkWhere to eat in a district, rankedItemList, BreadcrumbList
Venue2,600+gastro.news/restaurant/amadorOne restaurant's score, rank, awards and reviewsRestaurant, AggregateRating, Review

For multi-location businesses the risk sits in city pages. Google's doorway examples include pages "targeted at specific regions or cities that funnel users to one page". Fifty city pages for a business with five branches, all leading to one booking form, fit that example. A page per real branch with its own address and reviews, or a page per area where you have real inventory to rank, is a hierarchy rather than a funnel.

Anatomy of a programmatic page: what changes on each of 2,600+

Every block on a venue page is filled from data, and every block differs from one restaurant to the next. A block that reads the same on two pages is template, not content.

Gastro.News venue page template. Source: NextGenSoft project data, October 2026.

BlockFilled fromWhy it differs per pageQuestion it answers
TitleRestaurant name plus the words people search with: menu, prices, photos, reviewsEvery name is differentIs this the page about that restaurant?
RankPosition in the Gastro.News rankingOne order across 2,600+ restaurantsHow does it compare with the rest?
Gastro.News ScorePoints from four guides, added upEach restaurant holds a different mix of ratingsHow do the guides rate it overall?
AwardsMichelin, Gault&Millau, Falstaff, A la CarteOnly the awards this restaurant holdsWhich guides rate it, and how high?
Guest reviewsDiners' reviewsWritten about this one placeWhat do guests say?
Structured dataRestaurant, AggregateRating and Review markupCarries this venue's address, awards and ratingsWhat can a search engine read without guessing?

Structured data is code in the page, here schema.org JSON-LD, that tells search engines what each fact means. Google's carousel documentation supports ItemList combined with Restaurant, for a summary page whose items point to separate detail pages: the hub and venue pattern. It also warns that "Google does not guarantee that features that consume structured data will show up in search results." Markup makes facts readable to machines; it does not buy a rich result.

Review markup has a rule of its own. Google's review snippet guidelines allow it for a local business "only for sites that capture reviews about other local businesses". A guide that publishes guest reviews of restaurants fits that rule; a restaurant chain marking up reviews of its own branches does not.

At a few thousand pages, crawl budget is rarely the problem; getting every page found and keeping its dates honest is.

Google defines crawl budget as "the set of URLs that Google can and wants to crawl". Its crawl budget guide (updated July 22, 2026) is written for sites with 1 million+ unique pages that change about weekly, 10,000+ that change daily, or a large portion of URLs that Search Console classifies as "Discovered - currently not indexed", and calls its numbers "not exact thresholds". Gastro.News, with 2,633 venue pages and 32 hubs, sits far below both lines.

For smaller sites, Google says "keeping your sitemap up to date and checking the Page Indexing report regularly is adequate". That Search Console report shows which URLs are indexed and why the rest are not.

What we put in place:

  • Hubs list their area's restaurants by score, with breadcrumbs and links between neighboring hubs.
  • ItemList and BreadcrumbList on every hub; Restaurant, AggregateRating and Review markup on venue pages.
  • XML sitemaps for venues and hubs.
  • Lighthouse SEO 100 on hub pages. Lighthouse is Google's open-source page audit; its SEO score checks technical basics such as titles, meta descriptions and crawlable links.

Google's sitemap rules allow up to 50,000 URLs or 50MB uncompressed per file (updated July 8, 2026), so 2,600+ pages fit in one. Splitting by page type still helps: Google notes that submitting several sitemaps "may be useful if you want to track the search performance of each individual sitemap in Search Console".

Google ignores the priority and changefreq fields and uses lastmod only if it is "consistently and verifiably" accurate. Change lastmod when a score or a review changes, not on every deploy.

Programmatic SEO on WordPress: the stack behind Gastro.News

WordPress can run programmatic SEO at this scale: Gastro.News serves 2,600+ venue pages and 32 hubs from it. The stack, as built:

  • CMS: WordPress, a Gridlove child theme, custom post types
  • Hubs: a custom landing page plugin, ItemList, BreadcrumbList
  • SEO: Yoast SEO, schema.org JSON-LD, XML sitemaps
  • Delivery: BunnyCDN, Varnish cache
  • Analytics: Google Tag Manager

Custom post types are WordPress content types beyond posts and pages, each with fields of its own. They matter more than the theme: a score stored in a field can sort a list, while a score typed into a paragraph can't sort anything. A child theme changes a parent theme, here the Gridlove magazine theme, without editing its files.

Varnish keeps ready copies of pages in memory, so a database-driven page is not rebuilt on every visit, and BunnyCDN, a content delivery network, serves files from servers close to the visitor. Moving an existing directory to a structure like this changes URLs, and URLs carry rankings, so read our guide to redesigning a site without losing SEO before the move.

Did Google's 2026 spam updates hit programmatic sites?

Google hasn't said so. It has run four spam updates in 2026, in March, June, August and September, and its notes name no site types as targets.

The August update ran from August 18 to 21. The September update started on September 24 and was complete as of October 8. For both, the Google Search Status Dashboard says the update "applies globally and to all languages". Reports that programmatic sites were hit come from third-party recaps of traffic swings, not from Google, so treat them as unverified.

We think AI search adds a reason to build a page per question. Google's page on AI features and your website (updated December 10, 2025) says AI Overviews and AI Mode may use a "query fan-out" technique, "issuing multiple related searches across subtopics and data sources", to develop a response. A ranked district hub fits that kind of narrow sub-search. That is our hypothesis, not a measured result; our guide to generative engine optimization (GEO) covers how AI answers pick sources.

Text at scale follows the same rule. For a media publisher under NDA we built a content factory that turns new videos into articles: one AI agent reads the full transcript and returns the angle, title and key points, a second writes the article, and every article is reviewed before it goes live. Quick drafts from a video's title and description had missed what was actually said; the transcript is the data that makes each article worth publishing.

AI Content FactoryClient under NDA

Case study · Under NDARaw video in, published articles out

Checklist: what to prepare before you generate your first 1,000 pages

Prepare the data and the rules before the template. Eight things to have on paper:

  1. A search pattern per page type, with proof that people use it: Search Console queries, a keyword tool or your own site search.
  2. One field only you own, such as a score, live inventory, prices you collect or first-party reviews.
  3. A minimum-data rule. Decide how many items, reviews or facts a page needs before it goes live; below that, merge it into the parent hub or leave it out.
  4. The hierarchy on paper: country, region, district, item, with breadcrumbs and links between neighbors.
  5. A template spec: every block, the field it reads and what it shows when the field is empty.
  6. Structured data per page type: ItemList and BreadcrumbList on hubs, the item's own type on detail pages, review markup only for reviews about other businesses.
  7. One sitemap per page type, with a lastmod that changes only when the data does.
  8. A data owner: the person who keeps scores, prices or inventory current after launch.

If you are briefing a studio on a build like this, our one-page software brief template shows what to put on the page. Programmatic SEO is part of our SEO and GEO services, as it was for Gastro.News.

Questions we get asked

How many pages should the first batch of programmatic pages have?

Google publishes no number. Start with one page type in one area, enough pages to see a pattern in Search Console, and watch the Page Indexing report. Scale when most of those pages are indexed and get impressions. Around 30 pages, the size of the Gastro.News hub layer, can still be reviewed one by one before you generate thousands of detail pages.

Do programmatic pages need hand-written text?

Not as a rule. Google's spam policies judge value “no matter how it's created”, so hand-written filler doesn't save a thin page and a generated page isn't spam by default. What each page needs is data that differs from the next page. Write by hand only what the data can't say: how the list is ranked, what a score means, local context a reader would ask about.

What should I do with programmatic pages that have too little data?

Don't leave them thin. Google's advice on scaled content is direct: “If you're hosting such content on your site, exclude it from Search.” In practice, add noindex, merge the page into its parent hub or don't generate it at all. Set the threshold before launch, such as a minimum number of reviews or listings, so the template never publishes an empty shell.

Is programmatic SEO worth it for a business with a few locations?

Usually not. With five branches you have five real pages, one per branch with its own address, team and reviews. Generating dozens of city pages around them matches a doorway example in Google's spam policies: pages “targeted at specific regions or cities that funnel users to one page”. Programmatic SEO pays off when you hold data on hundreds of items that people search for one by one.

How do I measure whether programmatic pages are working?

Submit one sitemap per page type and filter the Search Console Performance report by URL pattern, such as /restaurant/ for venues and /restaurants/ for hubs. Track indexed pages, impressions and clicks per type, not the site total. Traffic from AI Overviews and AI Mode is counted in the same report under the “Web” search type. On Gastro.News the result is 30K+ organic visitors a year.

Sources

  1. Spam policies for Google web search · Google Search Central, 2026
  2. History for Ranking · Google Search Status Dashboard, 2026
  3. New ways we're tackling spammy, low-quality content on Search · Google, 2024
  4. AI features and your website · Google Search Central, 2025
  5. Build and submit a sitemap · Google Search Central, 2026
  6. Optimize your crawl budget · Google Crawling Infrastructure, 2026
  7. Carousel (ItemList) structured data · Google Search Central, 2026
  8. Review snippet (Review, AggregateRating) structured data · Google Search Central, 2026

Share this article

About the author

Artsiom Yankovich

Head of Design & Strategy

Leads design and strategy, from product logic to brand. 9+ years, 150+ projects.

Meet the leadership

Keep reading

All posts

SEO & GEO

GEO, AEO and AI Search: A Glossary of 12 Terms for 2026

Twelve AI search terms from agency pitches, each defined in one sentence and checked against Google, OpenAI, Anthropic, Perplexity and Microsoft docs, with what it means for a business site and what to do, if anything.

Artsiom Yankovich

· 14 min read

SEO & GEO

How Much Does SEO Cost in 2026? A Guide for the US and UAE

Market figures for US SEO retainers and hourly rates, each with its source and sample, and what to check in a UAE quote. Why quotes differ tenfold, what moves the price, where GEO fits and the red flags Google lists.

Artsiom Yankovich

· 14 min read

SEO & GEO

SEO & GEO Audit Checklist: What to Check in 2026

Nine areas to check, one tool and one pass mark for each, and an order that fits into a single working day. Built on Google, OpenAI and web.dev documentation, not on guesses about AI.

Artsiom Yankovich

· 14 min read

Let's talk

Got a project? Let’s scope it in 30 minutes.

Tell us what you're building. You'll get a straight answer on timeline, team and approach on the first call.

Reply the same dayTalk to a partnerNo sales pitch