Your museum day in Amsterdam starts here.
Have you visited a museum today? museumtickets.nl
Your table, on the museum page
Museum visitors decide where to eat while they're still inside. This is where you reach them: a booking box on the museum's own page, showing your restaurant to people planning breakfast, lunch or dinner four minutes from your door.
Nine placements per museum. Three breakfast, three lunch, three dinner. When they're taken, they're taken — we don't add a tenth, because a page with thirty restaurants on it is a directory.
From €90 to €175 a month depending on the museum. No commission on any booking, ever. The reservation goes straight to your own system and the guest stays yours.
Pick your museum below. The ones nearest you tend to go first.
☀ Breakfast
Average price: €18
A bright canal-side spot for fruit bowls, grains and fresh coffee before the museum opens.
● Museumplein, Amsterdam
🚶 2 min walk from the Stedelijk Museum
How to get thereBook your table+ Add to my Cultural Passport
☀ Breakfast
Average price: €21
A relaxed Jordaan breakfast room with eggs, artisan bread and seasonal produce.
● Museumplein, Amsterdam
🚶 4 min walk from the Van Gogh Museum
How to get thereBook your table+ Add to my Cultural Passport
☀ Breakfast
Average price: €16
A contemporary Amsterdam bakery with croissants, pastries and coffee before a museum visit.
● Museumplein, Amsterdam
🚶 1 min walk from the Rijksmuseum
How to get thereBook your table+ Add to my Cultural Passport
☀ Lunch
Average price: €27
An easy canal-side lunch of seasonal salads and open sandwiches for a relaxed afternoon.
● Museumplein, Amsterdam
🚶 3 min walk from the Van Gogh Museum
How to get thereBook your table+ Add to my Cultural Passport
☀ Lunch
Average price: €29
A light-filled kitchen serving homemade soup and artisan bread for a relaxed museum afternoon.
● Museumplein, Amsterdam
🚶 2 min walk from the Stedelijk Museum
How to get thereBook your table+ Add to my Cultural Passport
☀ Lunch
Average price: €25
A welcoming heritage lunchroom with Mediterranean plates and quick service.
● Museumplein, Amsterdam
🚶 1 min walk from the Rijksmuseum
How to get thereBook your table+ Add to my Cultural Passport
☾ Dinner
Average price: €48
A candlelit modern Dutch dining room presenting seasonal vegetables with careful technique.
● Museumplein, Amsterdam
🚶 2 min walk from the Stedelijk Museum
How to get thereBook your table+ Add to my Cultural Passport
☾ Dinner
Average price: €55
An elegant canal-house dining room focused on refined fish dishes and warm hospitality.
● Museumplein, Amsterdam
🚶 3 min walk from the Van Gogh Museum
How to get thereBook your table+ Add to my Cultural Passport
☾ Dinner
Average price: €46
An intimate orange-lit bistro with handmade pasta, close to the museum district.
● Museumplein, Amsterdam
🚶 1 min walk from the Rijksmuseum
How to get thereBook your table+ Add to my Cultural Passport
.mad{--ink:#202124;--body:#5F6368;--muted:#80868B;--line:#DADCE0;--surf:#F1F3F4;
--paper:#fff;--deep:#C4441C;--museum:#F25727;--eat:#F6D200;--shop:#EA409F;--sleep:#00A7E1;
font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
color:var(--body);font-size:15px;line-height:1.65;max-width:1120px;margin:0 auto}
.mad *{box-sizing:border-box}
.mad__strip{display:flex;height:4px;margin-bottom:20px}
.mad__strip i{flex:1}
.mad__strip i:nth-child(1){background:var(--museum)}
.mad__strip i:nth-child(2){background:var(--eat)}
.mad__strip i:nth-child(3){background:var(--shop)}
.mad__strip i:nth-child(4){background:var(--sleep)}
.mad__steps{display:flex;gap:28px;list-style:none;margin:0 0 22px;padding:0 0 14px;
border-bottom:1px solid var(--line)}
.mad__steps li{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted)}
.mad__steps li span{width:22px;height:22px;border-radius:50%;background:var(--surf);
border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:11px}
.mad__steps li.is-on{color:var(--ink);font-weight:500}
.mad__steps li.is-on span{background:var(--ink);color:#fff;border-color:var(--ink)}
.mad__eyebrow{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin:0 0 6px}
.mad__h2{font-size:26px;font-weight:500;color:var(--ink);margin:0 0 6px;line-height:1.25;letter-spacing:-.01em}
.mad__lead{font-size:15px;color:var(--body);margin:0 0 24px;max-width:640px}
.mad__label{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.mad__hint{font-size:12px;color:var(--muted);margin:0}
.mad__museums-head{display:flex;justify-content:space-between;align-items:baseline}
.mad__grid{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:24px;align-items:start}
.mad__cols{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:16px;align-items:start}
.mad__meals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:22px}
.mad__meal{background:var(--surf);border:1px solid var(--line);border-top:3px solid var(--eat);
border-radius:2px;padding:11px 12px;font:inherit;font-size:13px;color:var(--body);cursor:pointer;text-align:left}
.mad__meal.is-on{outline:2px solid var(--ink);outline-offset:-2px;color:var(--ink);font-weight:500}
.mad__provinces{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:2px;overflow:hidden}
.mad__provinces>li+li{border-top:1px solid var(--line)}
.mad__prov{width:100%;display:flex;justify-content:space-between;gap:8px;align-items:center;
background:var(--paper);border:0;padding:10px 12px;font:inherit;font-size:13px;font-weight:500;
color:var(--ink);cursor:pointer;text-align:left}
.mad__prov em{font-style:normal;font-size:12px;color:var(--muted);font-weight:400}
.mad__prov::before{content:"+";margin-right:8px;color:var(--muted);font-weight:400}
.mad__prov.is-open::before{content:"–"}
.mad__prov.is-open{background:var(--surf)}
.mad__more{width:100%;margin-top:8px;background:var(--paper);border:1px solid var(--line);
border-radius:2px;padding:9px;font:inherit;font-size:13px;color:var(--ink);cursor:pointer}
.mad__more:hover{background:var(--surf)}
.mad__cities{list-style:none;margin:0;padding:0;overflow:hidden}
.mad__city{width:100%;display:flex;justify-content:space-between;gap:8px;align-items:center;
background:var(--surf);border:0;border-top:1px solid var(--line);padding:9px 12px 9px 26px;
font:inherit;font-size:13px;color:var(--body);cursor:pointer;text-align:left}
.mad__city em{font-style:normal;font-size:12px;color:var(--muted)}
.mad__city.is-on{background:var(--ink);color:#fff;font-weight:500}
.mad__city.is-on em{color:rgba(255,255,255,.62)}
.mad__museums{list-style:none;margin:0;padding:0;min-height:60px;
display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.mad__m{display:flex;align-items:center;gap:10px;background:var(--surf);
border:1px solid var(--line);border-radius:2px;padding:11px 13px;cursor:pointer}
.mad__empty{grid-column:1/-1}
.mad__m.is-on{border-color:var(--ink);outline:1px solid var(--ink);outline-offset:-2px}
.mad__m.is-full{opacity:.45;cursor:not-allowed}
.mad__m input{margin:0;flex:0 0 auto;accent-color:var(--ink)}
.mad__m-body{flex:1;min-width:0}
.mad__m-body{display:block}
.mad__m-name{display:block;margin:0;font-size:14px;color:var(--ink);font-weight:500}
.mad__m-sub{display:block;margin:2px 0 0;font-size:12px;color:var(--body)}
.mad__m.is-full .mad__m-sub{color:#B3261E}
.mad__m-price{font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap}
.mad__empty{padding:16px;font-size:13px;color:var(--muted)}
.mad__panel{background:var(--ink);border-radius:2px;padding:22px;position:sticky;top:20px}
.mad__panel-label{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;
color:rgba(255,255,255,.62);margin:0}
.mad__panel-label--rule{border-top:1px solid rgba(255,255,255,.18);padding-top:16px;margin-top:18px}
.mad__price{font-size:40px;font-weight:500;color:#fff;margin:6px 0 2px;line-height:1.05}
.mad__price small{font-size:14px;color:rgba(255,255,255,.62);font-weight:400}
.mad__panel-sub{font-size:12px;color:rgba(255,255,255,.62);margin:0}
.mad__mode{display:block;width:100%;text-align:left;background:transparent;color:#fff;
border:1px solid rgba(255,255,255,.28);border-radius:2px;padding:13px 14px;margin-top:10px;
font:inherit;cursor:pointer}
.mad__mode.is-on{border-color:#fff;background:rgba(255,255,255,.1)}
.mad__mode-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.mad__mode-top strong{font-size:14px;font-weight:500}
.mad__save{font-style:normal;background:#E6F4EA;color:#137333;font-size:11px;font-weight:500;
padding:3px 8px;border-radius:2px;white-space:nowrap}
.mad__mode-price{display:block;font-size:22px;font-weight:500;margin:6px 0 2px}
.mad__mode-note{display:block;font-size:12px;color:rgba(255,255,255,.62);line-height:1.5}
.mad__fields{margin-top:18px}
.mad__fields label{display:block;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;
color:rgba(255,255,255,.62);margin:12px 0 5px}
.mad__fields input{width:100%;font:inherit;font-size:14px;color:var(--ink);background:#fff;
border:1px solid rgba(255,255,255,.28);border-radius:2px;padding:10px 12px}
.mad__go{width:100%;margin-top:16px;background:#fff;color:var(--ink);border:0;border-radius:4px;
padding:12px;font:inherit;font-size:14px;font-weight:500;cursor:pointer}
.mad__go:hover{background:#f1f3f4}
.mad__go[disabled]{opacity:.5;cursor:not-allowed}
.mad__error{background:#FCE8E6;color:#B3261E;font-size:13px;border-radius:2px;padding:10px 12px;margin:14px 0 0}
.mad__fine{font-size:12px;color:rgba(255,255,255,.62);margin:12px 0 0}
@media(max-width:1024px){.mad__grid{grid-template-columns:1fr}.mad__panel{position:static}}
@media(max-width:900px){.mad__museums{grid-template-columns:1fr}}
@media(max-width:640px){.mad__cols{grid-template-columns:1fr}.mad__h2{font-size:22px}
.mad__price{font-size:32px}}
Step 1 · your placement
Pick a meal period, then one museum page. Nine places on every museum: three breakfast, three lunch, three dinner.
Meal period
City
Museums
Choose one
window.MADSell = {"ajaxUrl":"https:\/\/museumtickets.nl\/wp-admin\/admin-ajax.php","nonce":"2e1fd77047","prices":{"flagship":175,"medium":145,"standard":90},"yearly":{"flagship":1925,"medium":1595,"standard":990}};
(function () {
var root = document.querySelector('[data-mad]');
if (!root || !window.MADSell) { return; }
var cfg = window.MADSell,
state = { meal: 'lunch', city: null, museum: null, mode: 'monthly' },
listEl = root.querySelector('[data-mad-museums]'),
priceEl = root.querySelector('[data-mad-price]'),
subEl = root.querySelector('[data-mad-sub]'),
payEl = root.querySelector('[data-mad-pay]'),
monEl = root.querySelector('[data-mad-monthly]'),
yrEl = root.querySelector('[data-mad-yearly]'),
saveEl = root.querySelector('[data-mad-save]'),
errEl = root.querySelector('[data-mad-error]'),
goEl = root.querySelector('[data-mad-go]'),
cityLbl = root.querySelector('[data-mad-city-label]'),
moreEl = root.querySelector('[data-mad-more]'),
PAGE = 20,
all = [],
shown = 0;
function euro(n) {
return '€' + Number(n).toLocaleString('nl-NL', { minimumFractionDigits: 0, maximumFractionDigits: 0 });
}
function post(action, data) {
data = data || {};
data.action = action;
data.nonce = cfg.nonce;
return fetch(cfg.ajaxUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams(data)
}).then(function (r) { return r.json(); });
}
function loadMuseums() {
if (!state.city) { return; }
listEl.innerHTML = '
';
post('museumad_city_museums', { city: state.city, meal: state.meal }).then(function (res) {
if (!res.success) { listEl.innerHTML = '
'; return; }
render(res.data.museums);
}).catch(function () {
listEl.innerHTML = '
';
});
}
function render(museums) {
all = museums;
shown = 0;
listEl.innerHTML = '';
if (!museums.length) {
listEl.innerHTML = '
';
moreEl.hidden = true;
return;
}
more();
}
function more() {
var slice = all.slice(shown, shown + PAGE);
shown += slice.length;
slice.forEach(function (m) {
var full = m.left < 1,
li = document.createElement('li');
li.className = 'mad__m' + (full ? ' is-full' : '');
li.innerHTML =
'' +
'' +
'' + m.name + '' +
'' + m.tier + ' · ' +
(full ? state.meal + ' fully booked'
: m.left + ' ' + state.meal + ' place' + (m.left === 1 ? '' : 's') + ' left') +
'' +
'' +
'' + euro(m.price) + '';
if (!full) {
li.addEventListener('click', function () { choose(m, li); });
}
listEl.appendChild(li);
});
var left = all.length - shown;
moreEl.hidden = left 0) {
moreEl.textContent = 'Show ' + left + ' more museum' + (left === 1 ? '' : 's');
}
}
moreEl.addEventListener('click', more);
function choose(m, li) {
state.museum = m;
Array.prototype.forEach.call(listEl.children, function (el) { el.classList.remove('is-on'); });
li.classList.add('is-on');
var radio = li.querySelector('input');
if (radio) { radio.checked = true; }
var yearly = m.price * 11;
priceEl.innerHTML = euro(m.price) + '/month';
subEl.textContent = m.name + ' · ' + state.meal;
monEl.textContent = euro(m.price) + '/month';
yrEl.textContent = euro(yearly) + '/year';
saveEl.textContent = 'Save ' + euro(m.price);
payEl.hidden = false;
}
root.querySelectorAll('[data-meal]').forEach(function (b) {
b.addEventListener('click', function () {
root.querySelectorAll('[data-meal]').forEach(function (x) {
x.classList.remove('is-on'); x.setAttribute('aria-checked', 'false');
});
b.classList.add('is-on'); b.setAttribute('aria-checked', 'true');
state.meal = b.dataset.meal;
state.museum = null;
payEl.hidden = true;
priceEl.textContent = '—';
subEl.textContent = 'Select a museum';
loadMuseums();
});
});
root.querySelectorAll('[data-prov]').forEach(function (b) {
b.addEventListener('click', function () {
var open = b.classList.contains('is-open');
root.querySelectorAll('[data-prov]').forEach(function (x) {
x.classList.remove('is-open');
x.setAttribute('aria-expanded', 'false');
var ul = x.parentNode.querySelector('.mad__cities');
if (ul) { ul.hidden = true; }
});
if (!open) {
b.classList.add('is-open');
b.setAttribute('aria-expanded', 'true');
var ul = b.parentNode.querySelector('.mad__cities');
if (ul) { ul.hidden = false; }
}
});
});
root.querySelectorAll('[data-city]').forEach(function (b) {
b.addEventListener('click', function () {
root.querySelectorAll('[data-city]').forEach(function (x) {
x.classList.remove('is-on'); x.setAttribute('aria-pressed', 'false');
});
b.classList.add('is-on'); b.setAttribute('aria-pressed', 'true');
state.city = b.dataset.city;
if (cityLbl) { cityLbl.textContent = 'Museums in ' + state.city; }
state.museum = null;
payEl.hidden = true;
priceEl.textContent = '—';
subEl.textContent = 'Select a museum';
loadMuseums();
});
});
root.querySelectorAll('[data-mode]').forEach(function (b) {
b.addEventListener('click', function () {
root.querySelectorAll('[data-mode]').forEach(function (x) {
x.classList.remove('is-on'); x.setAttribute('aria-pressed', 'false');
});
b.classList.add('is-on'); b.setAttribute('aria-pressed', 'true');
state.mode = b.dataset.mode;
});
});
goEl.addEventListener('click', function () {
var name = root.querySelector('[data-mad-name]').value.trim(),
email = root.querySelector('[data-mad-email]').value.trim();
errEl.hidden = true;
if (!state.museum) { return fail('Choose a museum first.'); }
if (!name) { return fail('Enter your business name.'); }
if (!/^\S+@\S+\.\S+$/.test(email)) { return fail('Enter a valid business email.'); }
goEl.disabled = true;
goEl.textContent = 'One moment…';
post('mtrr_start_checkout', {
museum: state.museum.id,
meal: state.meal,
mode: state.mode,
business_name: name,
business_email: email
}).then(function (res) {
if (res.success && res.data.url) { window.location = res.data.url; return; }
fail((res.data && res.data.message) || 'Could not start payment.');
goEl.disabled = false;
goEl.textContent = 'Continue to payment';
}).catch(function () {
fail('Could not reach the server.');
goEl.disabled = false;
goEl.textContent = 'Continue to payment';
});
});
function fail(msg) {
errEl.textContent = msg;
errEl.hidden = false;
}
// Open on the first city.
var first = root.querySelector('[data-city]');
if (first) { state.city = first.dataset.city;
if (cityLbl) { cityLbl.textContent = 'Museums in ' + state.city; }
loadMuseums(); }
})();
Combine your visit: buy your tickets online and plan the rest of your day.