AI Search for Bike Shops in Amsterdam (2026):The cleanest entity-consensus case in the study
TL;DR: Same playbook, new city. 27 prompts, 5 AI engines, English and Dutch, matched against 228 verified Amsterdam bike shops. The three engine personalities from the Paris yoga study recur identically — but bike shops push more traffic to their own sites: Copilot is 97% shop websites (yoga: 96%), Gemini 72% and Perplexity 71% (yoga: 41% and 52%). Google AI Mode cites google.com URLs back to itself 82% of the time, the highest self-referential share we have measured anywhere. Reddit is ChatGPT’s backbone — 198 citations, the single most-cited domain across the entire study. And unlike Paris yoga, where the #4 studio vanished on two engines, the top tier of Amsterdam bike shops wins on every engine: 12 brands appear on all five.
Executive Summary
The three citation strategies from the Paris yoga study survive the switch to Amsterdam bike shops intact — but the engines push more traffic to shops’ own sites here, and the top tier wins everywhere.
The setup is deliberately identical to the yoga study: one fixed set of prompts, five engines, two languages, two proxy countries, all in a single week — except this time the question was where to buy or fix a bike in Amsterdam. Across 27 prompt templates we collected 378 captures and 3,010 citations, pulled out the shops each answer named with a named-entity-recognition pass, and matched them to a 372-row Apify Google Maps seed (228 with websites).
The headline result of the yoga study generalises — but it generalises sharper. Copilot is 97% shop-website citations (a phone-book engine), Gemini 72%, Perplexity 71% — all higher than their yoga equivalents. ChatGPT learns Amsterdam cycling from Reddit (34% social, with reddit.com alone contributing 198 citations — the single most-cited domain in the entire study). And Google AI Mode cites google.com 82% of the time, the highest self-referential share we have ever measured. The Paris-yoga “Modo problem” — a top studio invisible on two engines — does not recur: Amsterdam’s top tier wins on every engine.
Three source strategies, sharper than yoga
For every cited URL we bucketed the source — the shop’s own website, social posts, editorial, a marketplace, a Google SERP, or other. The mix is wildly different per engine, and maps to the same three citation strategies we found in Paris yoga — only here, the entity engines are even more entity-heavy.
Entity engine
Copilot, Gemini, Perplexity. Cite the shop’s own website directly. Copilot is the extreme — 97% pure shop-domain citations. Gemini and Perplexity sit just behind at 72% and 71%. To win these engines, your own site has to be the canonical answer for your shop name.
Social engine
ChatGPT. 34% of cited URLs are social — overwhelmingly Reddit. Across the four platforms that cite it, reddit.com contributes 198 citations, making it the single most-cited domain in the entire study. ChatGPT learns Amsterdam cycling from r/Amsterdam threads, not trade press.
Self-referential engine
Google AI Mode. 82% of its citations are google.com URLs — the highest self-referential share in the study, higher even than Paris yoga’s 52%. Real source diversity is minimal; the answer is essentially a re-presented Google SERP.
The Amsterdam bike-shop AI leaderboard
Aggregating mentions across all five engines (chain locations merged), these are the most-cited Amsterdam bike shops. The “Engines” column is the number of the 5 engines that surfaced the shop at all — the breadth signal.
The bike shops AI recommends most for Amsterdam — scored across ChatGPT, Perplexity, Gemini, Copilot and Google AI Mode combined.
| Rank | Shop | Score | Engines |
|---|---|---|---|
| #1 | Ride Out Amsterdam | 86 | 5 / 5 |
| #2 | Het Zwarte Fietsenplan | 82 | 5 / 5 |
| #3 | Wheelrunner | 70 | 5 / 5 |
| #4 | Kaptein Tweewielers | 69 | 5 / 5 |
| #5 | 020 Amsterdam Bicycles | 63 | 4 / 5 |
| #6 | Amsterdamse Fietswinkel | 54 | 5 / 5 |
Top cited sources, cross-platform
Aggregating across engines, two patterns emerge. Reddit is the volume outlier — 198 citations, the single most-cited domain in the whole study — but it’s a single domain. The shop sites dominate the breadth ranking: 11 shop domains were cited by all 5 engines.
| Engines | Cites | Bucket | Domain |
|---|---|---|---|
| 5 / 5 | 71 | shop website | hetzwartefietsenplan.com |
| 5 / 5 | 60 | shop website | rideout.amsterdam |
| 5 / 5 | 55 | shop website | wheelrunner.cc |
| 5 / 5 | 45 | shop website | kaptein.cc |
| 5 / 5 | 35 | shop website | amsterdamsefietswinkel.nl |
| 4 / 5 | 198 | social | reddit.com |
The five engines, side by side
Copilot
97% shop websitesThe extreme entity engine. Almost every URL is a shop’s own .nl/.cc/.com domain. No Reddit, no editorial, no marketplace. Win Copilot by being the canonical entity for your shop name.
Perplexity
71% shop websitesHeavy entity bias too, with the most diverse long tail (~23% other). Lightly normalises the prompt into one fan-out search and preserves the prompt language.
Gemini
72% shop websitesLooks like Perplexity on paper — 72% entity-website — but cites fewer URLs and concentrates them on a small set of shop sites.
ChatGPT
34% social (Reddit-led)The social engine. 34% of cited URLs are social, overwhelmingly Reddit — r/Amsterdam threads are how ChatGPT learns Amsterdam cycling.
Google AI Mode
82% google.comThe highest self-referential share in the entire study — even higher than Paris yoga’s 52%. The answer is mostly its own SERP, re-presented.
Language & the search mechanism
Asking the same question in Dutch vs English does not just rerank the same shops — it returns a different shop set entirely for generic and use-case queries. Brand and tourist queries converge; everything else diverges. The mechanism is visible in Perplexity’s exposed search query.
| Template | Top-5 overlap (EN vs NL) |
|---|---|
| brand_brompton | 75% — highest |
| persona_tourist | 67% |
| service_fitting | 67% |
| type_vintage | 50% |
| dist_jordaan | 43% |
| dist_oost | 43% |
Brand and tourist queries have a single right answer regardless of language. But a Dutch fietsenmaker (repair), stadsfiets (Dutch city bike) or commuter query returns an almost entirely different shop set than its English equivalent — 0% top-5 overlap on four of the templates. What’s going on?
fanout_count = 1: Perplexity does not expand a prompt into multiple sub-searches the way ChatGPT’s fan-out does. It lightly normalises the prompt — drops filler (“in”), pluralises, reorders — into a single search string, and crucially preserves the prompt language.| Original prompt | Perplexity’s actual search |
|---|---|
| beste traditionele Hollandse fietsenwinkel in Amsterdam | beste traditionele Hollandse fietsenwinkels Amsterdam |
| beste kinderfiets winkels in Amsterdam | beste kinderfiets winkels Amsterdam |
| beste fietsenwinkels voor woon-werkverkeer in Amsterdam | beste fietsenwinkels woon-werkverkeer Amsterdam |
TLD bias: not here
If language drives such a big EN/NL divergence in which shops appear, does it also drive which TLDs are cited? No.
| TLD | Entities | EN cites | NL cites | EN / NL ratio | Reading |
|---|---|---|---|---|---|
| .nl | 31 | 43 | 42 | 0.98× | neutral |
| .com | 6 | 15 | 12 | 0.80× | neutral |
| .cc | 3 | 7 | 5 | 0.71× | EN-biased |
| .amsterdam | 3 | 5 | 5 | 1.00× | neutral |
Geography
The 372-row seed plotted geographically. Density follows the canal belt and Oost; sparse in Noord and the outer rings. These maps are the universe an AI answer can resolve to.


AI search behavior
How do the engines actually fetch their answers? Two windows into the mechanism — ChatGPT’s web-search trigger and Perplexity’s exposed fan-out — show how much grounding is happening behind every answer.
Even more search-dependent than Paris yoga (96%). Not one bike-shop prompt was answered from training memory alone.
Perplexity does not multi-search a single prompt. It lightly normalises and runs one search, in the prompt’s language.
The prompt library
Everything in this article rests on the prompt set. 27 templates, each written once in English and once in Dutch, fired from both a US and an NL proxy on all 5 engines. The matrix probes the dimensions that matter for local discovery: bike type, persona, price, service, brand, district — plus two deliberate entity-bleed controls (scooter, general sports) to measure how cleanly the models separate adjacent verticals.
control | ENbest bike shops in Amsterdam | NLbeste fietsenwinkels in Amsterdam |
type_dutch | ENbest Dutch city bike shops in Amsterdam | NLbeste stadsfietsen winkels in Amsterdam |
type_ebike | ENbest e-bike shops in Amsterdam | NLbeste e-bike winkels in Amsterdam |
type_road | ENbest road bike shops in Amsterdam | NLbeste racefiets winkels in Amsterdam |
type_mtb | ENbest mountain bike shops in Amsterdam | NLbeste mountainbike winkels in Amsterdam |
type_gravel | ENbest gravel bike shops in Amsterdam | NLbeste gravelbike winkels in Amsterdam |
type_cargo | ENbest cargo bike shops in Amsterdam | NLbeste bakfiets winkels in Amsterdam |
type_kids | ENbest kids bike shops in Amsterdam | NLbeste kinderfiets winkels in Amsterdam |
type_vintage | ENbest vintage bike shops in Amsterdam | NLbeste vintage fietsen winkels in Amsterdam |
persona_commuter | ENbest bike shops for commuters in Amsterdam | NLbeste fietsenwinkels voor woon-werkverkeer in Amsterdam |
persona_tourist | ENbest bike shops for tourists in Amsterdam | NLbeste fietsenwinkels voor toeristen in Amsterdam |
price_cheap | ENcheap bike shops in Amsterdam | NLgoedkope fietsenwinkels in Amsterdam |
price_premium | ENpremium bike shops in Amsterdam | NLhigh-end fietsenwinkels in Amsterdam |
service_repair | ENbest bike repair shops in Amsterdam | NLbeste fietsenmakers in Amsterdam |
service_fitting | ENbest bike fitting in Amsterdam | NLbeste bikefitting in Amsterdam |
service_custom | ENcustom bike builders in Amsterdam | NLfietsenbouwers op maat in Amsterdam |
brand_brompton | ENBrompton dealer Amsterdam | NLBrompton dealer Amsterdam |
brand_specialized | ENSpecialized dealer Amsterdam | NLSpecialized dealer Amsterdam |
dist_centrum | ENbest bike shops in Centrum Amsterdam | NLbeste fietsenwinkels in Centrum Amsterdam |
dist_pijp | ENbest bike shops in De Pijp Amsterdam | NLbeste fietsenwinkels in De Pijp Amsterdam |
dist_jordaan | ENbest bike shops in Jordaan Amsterdam | NLbeste fietsenwinkels in Jordaan Amsterdam |
dist_noord | ENbest bike shops in Noord Amsterdam | NLbeste fietsenwinkels in Noord Amsterdam |
dist_oost | ENbest bike shops in Oost Amsterdam | NLbeste fietsenwinkels in Oost Amsterdam |
secondhand | ENbest second hand bike shops in Amsterdam | NLbeste tweedehands fietsenwinkels in Amsterdam |
independent | ENbest independent bike shops in Amsterdam | NLbeste onafhankelijke fietsenwinkels in Amsterdam |
bleed_scooter | ENbest scooter shops in Amsterdam | NLbeste scooterwinkels in Amsterdam |
bleed_generalist | ENbest sports shops in Amsterdam | NLbeste sportwinkels in Amsterdam |
Study design
Data collection
- 27 prompt templates × 2 languages (EN/NL) × 2 proxy countries (US/NL) × 5 AI engines
- Engines: ChatGPT, Perplexity, Gemini, Copilot, Google AI Mode
- 378 captures, 3,010 citations, captured 2026-05-23 → 2026-05-24
- For each answer we logged both the rendered text and every cited URL
What we measured
- Shops named per answer (brand-aggregated leaderboard + per-engine breadth)
- Cited URLs, bucketed into a source taxonomy
- EN/NL top-5 overlap per template (Jaccard)
- .nl vs .com vs .cc citation balance by prompt language
- ChatGPT web-search trigger rate; Perplexity fan-out search query
How we turned answers into shops: the NER pipeline
AI answers are free text — “You could try Wheelrunner in De Pijp, or Het Zwarte Fietsenplan for second-hand bikes…” — not a clean list of businesses. To count anything, we ran each answer (and each citation’s anchor text) through a named-entity-recognition (NER) pass that works in four steps:
- Span detection. A transformer NER model tags candidate spans in the text — organisation/business names and the location phrases attached to them (district names, street addresses). Cycling-specific gazetteer terms (“fietsenwinkel,” “tweewielers,” “bakfiets,” “cycles”) boost recall on names the base model would otherwise miss.
- Normalisation. Each candidate is lower-cased and stripped of boilerplate — “Amsterdam,” district suffixes, trademark glyphs and punctuation — so “Het Zwarte Fietsenplan B.V.” and “Het Zwarte Fietsenplan” collapse toward the same key.
- Entity resolution. Normalised mentions are matched to a 372-row Apify Google Maps seed (228 with websites) using fuzzy string similarity plus a domain match when the answer cited the shop’s own website. A mention only counts if it resolves above a confidence threshold; ambiguous spans are dropped rather than guessed.
- Brand aggregation. Resolved entities that belong to the same brand are merged so a multi-location shop is not double-counted, while per-location coordinates are retained for the maps.
The seed of 228 websitised shops is the universe an answer can resolve to; it is not a list fed to the models. Everything in the leaderboard is a shop an engine surfaced on its own and that the NER pipeline could confidently identify.
Caveats
- The seed is the 372-row Apify Google Maps pull of Amsterdam bicycle shops, repair shops and used / e-bike specialists. Rental services, tour operators and pure e-commerce stores are filtered out (
is_real = false). 228 of the 372 have a website and so are eligible for domain-based citation resolution. - NER resolution is high-precision by design: a mention the pipeline cannot confidently map to the seed is dropped, so counts are conservative lower bounds rather than exhaustive.
- The district-targeting test (Centrum, De Pijp, Jordaan, Noord, Oost) returned 0% across all neighborhoods. This is a measurement artifact, not an AI failure: the seed has no neighborhood-level field, so a returned shop cannot match a Jordaan/Centrum target by construction. The test is null for Amsterdam.
- Only ChatGPT exposes a web-search trigger flag through the capture pipeline; only Perplexity exposes its internal search query. The other engines’ behaviour is unmeasured, not absent.
- Google AI Mode’s 82% self-citation may inflate its raw citation count relative to other engines.
- Grok is excluded from this study; the crawler returned a wait-element timeout for the bike-shop prompt set.