Home · Prices · About & legal
How this site works
Amsterdam Coffeeshop Menus is an archive of menu prices printed by Amsterdam coffeeshops. Every price on the site was written on a menu that carries a date, and that date travels with the price everywhere it appears.
This page explains how a menu becomes a price record, how two prices are compared, and where the data stops. It is the shortest honest description of what the archive can and cannot answer. Snapshot: 2026-11-03.
Where the data comes from
The source. The archive is built from a public menu archive on the web. Every shop has a page listing its menus, and every menu entry carries a date. A read-only crawler visits those pages and keeps the prices and the date written on the page. The date is always read from the page text, never from a file name.
From menu to price record. The menu image is read by OCR into a small table: product name, price, format, and the date of the menu. The name is then normalised (lower case, trimmed, plus a short alias list for spelling variants). A price per gram is computed only when the menu prints the weight: price ÷ grams. When the weight is not on the menu, the line stays a unit price and never enters a per-gram comparison.
What we do not publish. We do not republish the menu images, and we do not link to a shop's menu from a page that sells something. The archive is a list of dated prices, nothing more.
The date is the menu date. It is not the date of the crawl, not the date the archive was rebuilt, and not the date the product is on the shelf.
No human check. Nothing is confirmed by a visit or a phone call. A doubtful line stays in the archive with a flag instead of being silently deleted.
One price record, field by field
Two real records from the archive. Every field below is copied from the menu, and nothing is filled in when the menu does not print it.
| Field | Record A | Record B |
|---|---|---|
| Shop | Bagheera | Freedom |
| Date printed on the menu | 2026-10-20 | 2026-10-21 |
| Product name (as normalised) | cbd candy runtz | amnesia |
| Format printed on the menu | 1g | 1g |
| Price printed on the menu | € 6.00 | € 10.00 |
| Price per gram (price ÷ grams) | € 6.00/g | € 10.00/g |
| Genetics | not printed on the menu | sativa |
| THC printed on the menu | 0.2 % | not printed on the menu |
What is in the archive
| What | Count | How it is counted |
|---|---|---|
| Shops in the directory | 251 | every shop in the shop file |
| Shops with a dated menu | 212 | at least one menu with a date on the menu |
| Shops with no menu in the archive | 39 | tracked, but no menu was found |
| Menus listed by the source for those shops | 4,369 | menus the source directory lists, of which the archive keeps the most recent one per shop |
| Shops with a menu from the last 30 days | 20 | menu date within 30 days of 2026-11-03 |
| Shops with an older menu only | 192 | prices kept and labelled as last known |
| Price records | 9,542 | one row per product line read from a menu |
| Product series | 8,988 | product name + format, per shop |
| Distinct product names | 3,754 | names after normalisation (lower case, trimmed), never estimated |
| Shops with at least one price record | 185 | of the 212 shops with a menu, 27 have no price record in the archive |
| Records with a price per gram | 6,414 | 67.2% of all records: only where the menu prints the weight |
| Records sold by piece or per joint | 3,128 | compared as unit prices, never as per-gram prices |
| Ranked entries | 4,021 | one entry per product and variant |
| Earliest menu date | 2007-04-17 | oldest dated price record in the archive |
| Latest menu date | 2026-10-28 | newest dated price record in the archive |
How a price is compared
Per gram against per gram. For weed, hash and extracts the comparison unit is the gram, and it is used only when the menu prints the weight. Joints and edibles are compared per joint and per piece. A unit price never enters a per-gram median.
One price per shop per product. Inside a group the archive keeps the cheapest price each shop printed, so a shop that lists a 1 g and a 5 g line counts once, not twice.
Variants are not mixed. A cali product and a dutch product with the same name are two separate groups. Hash is split by method (sift, ice, import) and by origin. A product is never averaged with its variant.
Packs stay separate. A 5 g pack keeps its own line and is flagged as a pack. The price pages list single grams and packs in two blocks, so a pack price is never read as a per-gram price.
Median, not average. The median published on the price pages is the middle value of the sorted prices; with an even number of prices it is the average of the two middle values. One expensive menu cannot move it, and one cheap menu cannot either.
The median is computed on fresh menus only. Only prices written on menus from the last 30 days enter the median. Older menus keep their own entry, marked as last known, and their difference to the median is shown as indicative rather than as a current discount.
The range is printed next to the median. Lowest and highest price of the same group, so a median is never shown without its context.
A worked example
Fresh entries, per gram, with the median recomputed from the same rows. For the 379 fresh groups that publish a median, recomputing the median from the raw records reproduces the published value in 379 of 379 cases.
| # | Product | Variant | Best price | Shop and menu date | Median | Range | Shops counted |
|---|---|---|---|---|---|---|---|
| 1 | amnesia | standard | € 6.00/g | Amnesia · 2026-10-06 | € 9.00 | € 6.00 – € 10.00 | 5 |
| 2 | lemon cherry gelato | standard | € 10.00/g | 7th Heaven · 2026-10-14 | € 13.50 | € 10.00 – € 13.50 | 5 |
| 3 | bluzzi | standard | € 14.00/g | Loft · 2026-10-16 | € 14.00 | € 14.00 – € 14.00 | 4 |
| 4 | candy fumez | standard | € 12.00/g | Loft · 2026-10-16 | € 12.00 | € 12.00 – € 12.00 | 4 |
| 5 | champagne | sift | € 11.00/g | Loft · 2026-10-16 | € 11.00 | € 11.00 – € 11.00 | 4 |
| 6 | donkey butter | standard | € 11.00/g | Loft · 2026-10-16 | € 11.00 | € 11.00 – € 11.00 | 4 |
| 7 | gouda berry | standard | € 10.00/g | Loft · 2026-10-16 | € 10.00 | € 10.00 – € 10.00 | 4 |
| 8 | lemon zkittlez | standard | € 13.00/g | Loft · 2026-10-16 | € 13.00 | € 13.00 – € 13.00 | 4 |
The shop behind each best price and the menu date behind it are on the price pages: all prices, cheapest entries, products.
What this site does not know
- A price is not today's price. A price is dated to the menu it was written on. The newest menu in the archive is dated 2026-10-28; the snapshot of this page is 2026-11-03. A shop may have changed its prices the day after the menu was printed.
- Availability is not checked. Nobody calls a shop to ask whether the product is on the shelf. A menu line proves that the product was on a menu on that date, nothing more.
- 39 of the 251 tracked shops have no menu in the archive. That is missing data, not a statement about their stock. A further 27 shops have a menu in the directory but no price record in the archive. In total, 185 shops carry price records.
- Genetics and THC exist only where the menu prints them. 710 of 9,542 records (7.4%) carry a THC percentage and 2,133 (22.4%) carry a genetics label. The rest are unknown, not zero. A THC figure here means "printed on that menu", nothing more.
- OCR can be wrong. 1,171 records carry at least one flag. Among them 50 are marked hard to read, 53 have an unusual format and 105 are outside the normal price range. Lines with an unusual format are kept out of the rankings; the others stay visible with the flag attached.
- Names are not canonical. The same product can appear under more than one spelling, and 313 records are packs rather than single grams. A short alias list merges the obvious spelling variants and nothing else.
- The site sells nothing. It is information only, 18+, and it does not arrange purchases, take orders or take payment. See the legal pages and the how to read the data note.
Price history
Every price carries the date of the menu it was written on, and the archive runs from 2007-04-17 to 2026-10-28. Nothing in it is extrapolated forward: a price from 2007-04-17 is still a price from 2007-04-17.
The archive keeps the most recent menu it found for each shop, so a year page is not a monthly index of one shop. A year page is the median of the per-gram prices printed on the menus dated in that year, across all shops, and it uses every record of that year, not only the last 30 days.
A shop that has not published a menu for years still shows its old prices, labelled as last known and never mixed into the current median. The older years are therefore built from fewer menus, and the number of records is printed next to each median.
| Year | Median €/g weed | Median €/g hash | Per-gram records | Year pages |
|---|---|---|---|---|
| 2007 | € 10.50 | — | 10 | weed |
| 2008 | € 9.00 | € 11.25 | 34 | weed · hash |
| 2009 | € 8.33 | € 8.00 | 30 | weed · hash |
| 2011 | € 8.50 | € 9.00 | 35 | weed · hash |
| 2012 | € 8.33 | € 7.50 | 18 | weed · hash |
| 2013 | € 9.00 | € 10.00 | 50 | weed · hash |
| 2014 | € 9.09 | € 6.94 | 66 | weed · hash |
| 2015 | € 12.00 | € 11.00 | 64 | weed · hash |
| 2016 | € 11.36 | € 9.58 | 84 | weed · hash |
| 2019 | € 14.00 | € 13.60 | 148 | weed · hash |
| 2020 | € 11.00 | € 10.00 | 77 | weed · hash |
| 2021 | € 10.00 | € 10.00 | 49 | weed · hash |
| 2022 | € 14.00 | € 11.00 | 143 | weed · hash |
| 2023 | € 12.50 | € 12.00 | 180 | weed · hash |
| 2024 | € 12.00 | € 10.00 | 513 | weed · hash |
| 2025 | € 12.82 | € 11.00 | 789 | weed · hash |
| 2026 | € 12.50 | € 12.00 | 3776 | weed · hash |
Full year list for weed: /prices/weed/2026/ · all categories: /prices/. The medians above are the ones published on the year pages: the middle value of the sorted per-gram prices of that year, taking the upper middle value when the count is even.
Questions
Are these live prices?
No. Every price on this site was written on a menu that carries a date, and that date is printed next to the price. A menu price is what a shop wrote on a specific day. It is not a live availability check, and it is not a human-verified visit.
How do you calculate the median?
Prices are grouped by product name and variant, so a cali product and a dutch product with the same name stay apart. Inside a group only one price per shop is kept, the cheapest one that shop printed. The median is the middle value of those prices, computed on menus from the last 30 days; with an even number of prices it is the average of the two middle values. The lowest and the highest price of the group are printed next to it.
Where do the menus come from?
From a public menu archive on the web that lists the dated menus of each shop. The pages are read without logging in and without buying anything. The menu images are read by OCR into prices, and the date is taken from the text of the page, never from a file name. We publish the prices and the dates, not the images. No member of the team checks a menu by hand.
How fresh is the data?
This page is a snapshot dated 2026-11-03. 20 of the 251 tracked shops have a menu from the last 30 days. 192 shops have an older menu only, and their prices are shown as last known rather than as current. 39 shops have no menu in the archive at all.
Why does the same product appear under different names?
Two reasons. Menus print the same product with different spellings and different variants, and OCR can read a name slightly wrong. A short alias list merges the obvious spelling variants and nothing else: a cali product and a dutch product with the same name are never merged into one average.
Can I use your data?
Yes, as long as you show the menu date. The read-only JSON API is documented on the API docs page, and the terms are on the legal page. Prices are indicative, they can be old, and they are not an offer by any shop. Always print the date of the menu a price came from.
Where to go next
- Prices — median per gram by category, with ranges and menu dates.
- Products — every product name in the archive, with its price history.
- Cheapest — entries below the Amsterdam median, on fresh menus.
- Shops — the 251 tracked shops and the date of their last menu.
- Brands — makers as printed on the menus, never estimated.
- API docs — the read-only JSON endpoints over the same records.
- Legal — terms, privacy, and how to read the data.
