// SEO

What programmatic SEO actually is.

One template, 774 pages, rebuilt every night. Here is the mechanism, taken from a platform we run — and the line between doing this well and getting penalised for it.

Somebody looking for a flat does not search "flats". They search "flats to rent in Astir". The neighbourhood is the whole query, and a site with one page called Properties has nothing to offer that search — no matter how good that page is.

Programmatic SEO is the answer to that: build one page per real thing, from data you already hold, using one template. Not a thousand articles written by a machine. One page per neighbourhood, per size, per price band — each one answering a question somebody is actually typing.

What it looks like in practice

We run a rental platform in Tirana. These numbers were counted from its live sitemap on 9 September 2026, and you can count them again yourself:

WhatHow manyWritten by hand?
URLs in the sitemap774
Listing pages651No — one per property
Neighbourhood pages28No — one per area
Articles37Yes
Languages3Albanian, English, Italian

Twenty-eight neighbourhood pages and 651 listing pages did not take 679 days of writing. They take one template each and a rebuild that runs every night. The 37 articles are the hand-written part, and they are a different job entirely.

Why the pages are not thin

This is the part that separates the technique from the spam, and it is the reason most attempts at it fail.

A thin page is one where the template is the only thing on it — swap the town name, keep every other word, publish a thousand of them. Google has been demoting exactly that since 2011, and calls them doorway pages. If your generated pages differ only by a place name, you have not done programmatic SEO. You have built a penalty.

What makes a generated page worth having is that the data on it is genuinely different. The Astir page opens with 68 listings, a median rent of €300 a month and a median size of 68 m², all computed from what is in that neighbourhood today. Sampled the same morning, Vilat Gjermane said 35, Fakulteti Ekonomik 15, Zogu i Zi 11, Rruga e Durrësit 6, Spitali Amerikan 5. A visitor comparing two areas gets two real answers.

The test before you build anything: could a person answer this page's question from the data alone, and would their answer differ from the neighbouring page's? If yes, the page deserves to exist. If the only difference is a noun, it does not.

The four things that make it work

1. Data that changes on its own

The rebuild runs nightly, so a neighbourhood page reflects what is available this morning rather than what was available in March. Pages that update on their own get crawled more often; pages that were generated once and abandoned decay quietly, and their numbers slowly become lies.

2. One page per query, not per record

The temptation is to generate every combination — area × bedrooms × price × furnished — and end up with forty thousand URLs, most of which nobody searches for and all of which compete with each other. Generate the combinations people actually type. Everything else can be a filter on a page that already exists, with the filtered version kept out of the index.

3. Titles that read like the search

A generated title should be the sentence a person would type, not a slot-filled label. The Astir page is titled Apartments for rent in Astir, Tirana — 68 listings, and the count in it is the live one. "Property — Astir" is a database column with a hyphen in it.

4. Internal links between the generated pages

The neighbourhood pages link to each other and to the listings inside them; the listings link back up. Without that, a crawler reaches your sitemap, finds 774 orphans, and treats them accordingly. The link graph is what tells a search engine these pages are a structure rather than a pile.

When this is the wrong tool

It only works if you already hold data with real variety in it. Property, jobs, events, stock, locations you genuinely operate in, prices that actually differ.

If you are a plumber covering six towns, you do not need programmatic SEO. You need six pages written properly, each mentioning the areas you cover and the jobs you did there. That is a morning's work and it will beat a generated set every time, because a human wrote six specific things and a template cannot.

The threshold is roughly this: below about twenty pages, write them. Above a couple of hundred, generate them. In between, it depends on how different the pages really are.

What we are not claiming

Not that this guarantees rankings. Positions belong to Google, they move week to week, and a single screenshot of one query on one day proves nothing — which is why there is not one in this article.

What we can show is the mechanism and the count. 774 URLs exist, they are in the sitemap, they carry real numbers, and they rebuild nightly. Whether a given one ranks on a given day is not ours to promise.

Do you have data worth turning into pages?

If you hold a catalogue, a list of locations, or a set of services that genuinely differ, there is probably a set of searches you have no page for. We will tell you whether it is worth building — including when it is not.

SEO & marketing