In short
- In Limburg, city pages with 74 to 99% identical text are ranking. Google calls that doorway abuse.
- A city page needs a local case, a named review, a concrete meeting model and less than 40% overlap.
- We fill one template with real data per municipality, and set pages without their own text to noindex.
In this article (6)
Search for “online marketing agency Roermond” and you get a row of agencies promising they are just around the corner. Click through, scroll to the footer, and the address is on the other side of the country.
Our bakery is in Roermond, so we notice. On 2 October 2026 we therefore picked apart the search results in Dutch Limburg. Who is ranking with local landing pages, how are those pages built, and what does it take to get there yourself without tricks?
Spoiler: the bar is not high. But the way some agencies jump over it is not something I would copy.
What we saw in Limburg
We looked at twelve core keywords: “online marketing agency” and “web design”, combined with Roermond, Venlo, Maastricht, Sittard, Weert, Heerlen and Limburg, among others. We pulled the text from the pages at the top, and compared the city pages of the same agency with each other.
How do you measure whether two pages are the same? We chopped every page into runs of five words, made the city name identical everywhere, and counted how many runs two city pages share. Navigation and footer count too, so almost every site has 30 to 40% overlap. Above 70%, the body text is largely the same as well.
And then it got interesting.
- At agencies from outside Limburg we found city pages with 90% and even 99% overlap. In that last case, the city name was literally the only difference.
- An agency inside the province runs on a template too, with 74% overlap between two cities.
- And they rank. All three show up in several city search results.
- In the top nine for “online marketing agency Roermond” there was not a single agency with an address in Roermond.
An honest footnote: we looked through a search tool, not through Google on a laptop in Roermond. The positions are an approximation, and we did not see the map pack with local businesses.
Still, the pattern is clear. The fact that templates rank says more about how thin the competition is than about how good the approach is.
What Google makes of it
Google is fairly clear on this. In its spam policies it is called doorway abuse: pages that mainly exist to rank for similar searches. One of the examples Google itself gives: “pages targeted at specific regions or cities that funnel users to one page” (Google Search Central, Spam policies).
The same page also lists scaled content abuse: creating lots of pages with the main goal of influencing rankings. A template you fill 31 times with a different city name fits that exactly.
The fact that something ranks today does not mean it is within the policy. It means it has not been noticed yet. Surviving until the next update is not a strategy.
We also saw tricks that go a step further. A keyword in the address field of the structured data. Star ratings in the code of a service page. “The number 1 agency in [city]” without an office in that city. Don’t. The first two also clash with Google’s guidelines for structured data.
Who really writes per city
There are agencies that do it differently. Their city pages are often shorter, but genuinely written per city.
The template
74 to 99% overlap. The same cases on every city page, a site-wide star rating, and "we come to you on location too".
Written per city
6 to 37% overlap. A case from the region, a real address, and text you cannot simply paste into another city.
Something else that stood out: whoever is actually based in a city often ranks there with the homepage alone. We saw that in Sittard, Weert and Heerlen. A real office cannot be rebuilt with a template.
And in smaller municipalities, directories and Facebook pages float to the top. That points to little competition. But it is no reason to put a page there if you have nothing to say about the place.
What a city page needs to rank
A local case
At least one client from that city or region, with what the work delivered. Not the same three cases on every city page.
A named review
From a client in that town, with name and company. A site-wide star rating is nice, but says nothing about that one city.
A meeting model
Everyone says "we come to you". Make it concrete: how far it is, where you meet and how you plan the first conversation.
Local context
What is going on in that municipality: the villages, the neighbouring municipalities, the sectors. Only what you can back up.
Honest structured data
A Service with the area you serve. No fake address per city, no stars in the code of a service page.
Less than 40% overlap
Compare your city pages with each other, including navigation and footer. The pages that are genuinely written per city sit well below that.
And then the simplest test of all. Remove the city name. Is the page still just as usable for another city? Then it is a doorway.
How we do it on our own site
Talk is cheap. So this is how we handle it ourselves.
We work with one template, but fill it per municipality with real data. The villages in the municipality and the distance as the crow flies from our bakery on the Noordhoven come from the PDOK Locatieserver, the Dutch government’s geocoder. The region comes from the COROP classification by Statistics Netherlands (CBS). That is how the page for Beesel says the municipality also includes Reuver, and that it is 8.6 km away as the crow flies.
But real data is not yet content of your own. Villages and kilometres make a page correct, not valuable. That is why every city page without its own text is set to noindex and kept out of the sitemap. It exists for whoever finds it, but we do not ask Google to include it.
Only when we have something to say about a place does the page open up. In Roermond, our home base, those are the sites we built for MS Wedding Films and Dost Market. For Venlo and Weert it is Emmfloow, for whom we made separate pages per city for burnout coaching. A local case about local pages: it does not get better than that.
Our meeting model is simple: a baker’s chat of one hour, which you put in our calendar with one click. What we are still missing are reviews that name the town. Honestly: we do not have those yet. In the same boat? Then just ask for them, from clients in that town, with one extra line: feel free to mention your town or location. And until they come in, put nothing there. A made-up review is worse than no review.
Curious what that looks like? Take a look at our page for online marketing agency in Roermond, the hub for online marketing agency in Limburg, or the one for web design in Limburg.
How many city pages do you need?
Fewer than you think.
Limburg has 31 municipalities. With two services you would quickly be at 62 pages. For us that would be 62 times the same promise, with a different name on top.
Our research produced a more realistic number: one hub for the province, plus four or five cities per service where you genuinely have something to say. Smaller municipalities you include as a paragraph on the page of the nearest city. When a client comes along in a place, that place gets its own page. Not before.
Rather five city pages that are true than 31 that pretend.
A city name in the heading does not make a local loaf. What’s on it makes the difference.