June 23, 2026 · 7 min read · Use cases
Overtourism is a routing signal, not a complaint.
Venice, Dubrovnik, Santorini, central Barcelona, Kyoto's Arashiyama bamboo grove, Machu Picchu — measured visitor density well above sustainable carrying capacity. Treat the metric as an input to your ranker, not as content for a guilt-trip blog post.
The signal, defined
The /v1/cities response includes overtourism_risk on
paid tiers — a bounded score derived from public visitor-arrival
statistics, accommodation density per resident, and the temporal
concentration of visitor flow. A score near 1 means the destination
is saturated for most of its peak season; a score near 0 means the
destination has substantial absorptive capacity.
The score is not a moral judgment. It is a measurement. A destination can be both wonderful and saturated; many are. The signal is useful precisely because it lets your product surface alternatives without arguing with the user.
The product pattern
The user types "weekend trip to Greek islands in August." Your default ranker returns Santorini and Mykonos at the top. They are saturated. The product can do one of three things:
- Show the saturated results and let the user click through. Default behaviour. Safe but unhelpful.
- Show only the unsaturated alternatives. Aggressive — risks confusing a user who specifically asked for Santorini.
- Show both, with an inline "comparable, less crowded" suggestion next to the saturated options. Best of both.
The third pattern works because most users haven't heard of the alternative and would have picked it if they had. The signal makes the suggestion concrete instead of vague.
Concrete swaps
Bruges → Ghent. Both medieval Flemish cities, both walkable, both with canals and step-gable architecture. Bruges in summer is dense with day-trippers from cruise ships at Zeebrugge; Ghent has comparable architecture, a similar food scene, and meaningfully less foot traffic. The swap rarely disappoints; it usually delights.
Santorini → Naxos. Both Cycladic islands. Naxos is larger, has better beaches than Santorini's volcanic coast, has a substantial inland food culture Santorini lacks, and accommodation runs about 40% less expensive in peak season. The famous Santorini caldera sunset is a real thing — but it's two hours of crowded queueing for a photo, and the equivalent moment in Naxos's Apollo Temple is empty.
Dubrovnik → Kotor. Both walled coastal old towns on the Adriatic. Dubrovnik handles seven-figure annual cruise arrivals; Kotor is a quieter Montenegrin alternative with a bay topology that's arguably more dramatic. Same architectural vocabulary, much less density.
Kyoto's Arashiyama bamboo grove → the bamboo paths around Saga-Toriimoto or the lesser-known groves at Kodaiji. Arashiyama is shoulder-to- shoulder by 9am from April through November. The alternatives are a short walk away.
Central Barcelona's Gothic Quarter → Girona's old town. An hour by train, comparable medieval Catalan core, fraction of the foot traffic.
The query pattern
GET /v1/cities?country=GR&tag=island&tier=growth
[
{
"name": "Santorini",
"overtourism_risk": 0.91,
"lat": 36.4072, "lon": 25.4567
},
{
"name": "Mykonos",
"overtourism_risk": 0.88,
"lat": 37.4467, "lon": 25.3289
},
{
"name": "Naxos",
"overtourism_risk": 0.34,
"lat": 37.1063, "lon": 25.3760
},
{
"name": "Milos",
"overtourism_risk": 0.41,
"lat": 36.7461, "lon": 24.4172
}
]
The re-ranker logic: when the top result has
overtourism_risk > 0.7, fetch the same query with a
similarity filter, find the highest-rated comparable destination
with risk below 0.5, and surface it as "less crowded alternative."
No prose, no moralizing — just a card next to the original.
Why this works commercially
User satisfaction post-trip correlates with crowding levels. A user who got a magic moment at empty Naxos rates the trip higher than a user who got the same magic moment in queueing Santorini. Higher satisfaction means higher retention, more referrals, and more bookings the next year. Re-ranking on overtourism risk is one of the rare alignment cases where the user, the destination, and the travel platform all benefit simultaneously.
What the signal isn't
It isn't a substitute for the user's own preference. If they really want Venice, take them to Venice — overtourism risk is a re-rank input, not a hard filter. It isn't real-time crowd density either; it's structural. For real-time, you'd need ticketing-system data, which we don't ship and which no aggregator has at scale. Use the signal for what it is: a measured property of the destination, not of any particular afternoon.