15CARTS
New Buffalo
ok Sign in

Michigan cannabis-market competitiveness

A statewide read on where dispensary competition is tightest in Michigan — and the data behind 15CARTS.

New Buffalo has 1,823.2 dispensaries per 100,000 residents — 9.1× ahead of Morenci, the next closest market in Michigan. The next four cities behind it are all small towns within twenty miles of the Indiana or Ohio border. On a single chart the gap looks like a typo. It isn't.

New Buffalo 1,823.2 Morenci 200.7 Reading 195.1 White Pigeon 132.1 Quincy 125.6 Buchanan 93.6 Monroe 92.9 Constantine 91.3 River Rouge 67.9 Three Rivers 66.3 Coldwater 65.0 Cassopolis 61.6 Sturgis 55.3 Hazel Park 48.2 Niles 36.1 Dowagiac 35.2 Adrian 33.9 Battle Creek 19.0 Hamtramck 17.6 Kalamazoo 16.3 Ann Arbor 15.3 Lansing 15.1 Grand Rapids 10.1 Detroit 7.0
Shops per 100,000 residents · 2020 Census total population denominator · 24 Michigan markets analyzed.

The top of the table

Every city in the top ten sits within a thirty-mile drive of either the Indiana or Ohio border. The pattern isn't subtle: density follows demand from neighboring populations where adult-use cannabis is either still prohibited or only recently legal. New Buffalo's gap above the rest is driven by the same geography taken to an extreme — the Chicago metro (9.5 million people) is a seventy-five-minute drive away, and Illinois legal cannabis is heavily taxed.

# City Shops 2020 pop. Shops / 100k Why this market
1 New Buffalo 33 1,810 1,823.2 Two miles from Indiana, fifteen from Illinois. Chicago metro (9.5M) is a 75-minute drive on I-94.
2 Morenci 4 1,993 200.7 Three blocks from the Ohio line. Ohio only legalized adult-use in late 2024 — demand has softened but the cluster is mature.
3 Reading 2 1,025 195.1 Tiny Hillsdale-County town a short drive north of the Indiana line, anchored on US-12.
4 White Pigeon 2 1,514 132.1 Sits literally on the Indiana line at US-12. Closest Michigan shops to South Bend and Elkhart.
5 Quincy 2 1,592 125.6 I-69 corridor in Branch County, twenty miles from Indiana. Same Fort Wayne / Indianapolis catchment that drives Coldwater.
6 Buchanan 4 4,272 93.6 Southwest Michigan, twelve miles from the Indiana line; folds into the Niles / South Bend catchment.
7 Monroe 19 20,462 92.9 I-75 corridor, twenty minutes from the Toledo metro (270k). Same Ohio dynamics as Morenci.
8 Constantine 2 2,191 91.3 St Joseph County, ten miles from the Indiana line on US-131.
9 River Rouge 5 7,365 67.9 Detroit-metro industrial pocket that opted in early; absorbs spillover demand from neighborhoods where Detroit licensing got delayed.
10 Three Rivers 5 7,541 66.3 St Joseph County, on US-131 about twenty-five miles from the Indiana line.

A small-denominator effect is real here: a two-shop town of a thousand people scores 200 / 100k on math alone. That's why the methodology section below leans on shop count and shop-floor median together — the second number tells you whether competition is actually pressing prices down.

What that density does to price

Density on its own is just a count. The next question is whether more shops actually translate into tighter prices, and the SKU tables below are the answer. For each of five common SKUs we publish three numbers per market: the absolute floor (the lowest priced in-stock listing anywhere in the market), the typical shop floor (the median across each shop's own cheapest listing), and the dispersion (the interquartile range of those shop-level floors, expressed as a percentage of the median — lower means tighter competition).

What stands out is the depth, not just the floor. Every one of New Buffalo's 33 shops carries a premium 1/8 — that's 33 shops competing on the same SKU. In a smaller market, a single shop running a doorbuster drags the market floor down without affecting what most visitors actually encounter on the shelf. The shop-floor median is the more honest read of the two.

1g flower

Any quality. Anything labeled deli/bulk/shake/trim is excluded; the premium variant below uses an additional name + subcategory filter for the same exclusions.

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $0.50 31 $3.00 58.3%
Morenci $6.00 2 $8.00 25.0%
Reading $3.75 1 $3.75 0.0%
White Pigeon $2.50 2 $3.00 16.7%
Quincy $3.75 1 $3.75 0.0%
Buchanan $3.42 4 $6.50 67.6%
Monroe $2.00 16 $4.00 35.6%
Constantine $8.00 1 $8.00 0.0%
River Rouge $2.00 5 $5.00 40.0%
Three Rivers $2.00 5 $3.75 49.6%
Coldwater $2.00 6 $5.00 5.7%
Cassopolis $3.20 1 $3.20 0.0%
Sturgis $2.00 6 $2.93 14.0%
Hazel Park $1.00 8 $2.14 110.8%
Niles $2.70 4 $4.40 56.8%
Dowagiac $3.00 2 $3.08 2.4%
Adrian $0.43 4 $1.75 51.0%
Battle Creek $1.21 6 $2.12 38.2%
Hamtramck $1.00 5 $5.00 40.0%
Kalamazoo $1.00 11 $4.00 41.0%
Ann Arbor $1.00 16 $4.00 51.2%
Lansing $1.00 16 $4.00 32.5%
Grand Rapids $2.50 14 $3.75 30.7%
Detroit $1.00 40 $3.00 54.2%

Premium 1g flower:

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $1.00 17 $6.00 101.7%
Morenci 0
Reading $3.75 1 $3.75 0.0%
White Pigeon 0
Quincy $3.75 1 $3.75 0.0%
Buchanan 0
Monroe $2.00 8 $4.62 32.5%
Constantine 0
River Rouge $5.00 1 $5.00 0.0%
Three Rivers $2.00 4 $3.88 30.6%
Coldwater $4.00 2 $22.00 81.8%
Cassopolis $10.00 1 $10.00 0.0%
Sturgis $2.00 4 $3.12 70.0%
Hazel Park $1.52 6 $4.00 131.2%
Niles $10.00 3 $10.29 48.6%
Dowagiac 0
Adrian $0.43 1 $0.43 0.0%
Battle Creek $2.00 3 $2.25 157.8%
Hamtramck $1.00 3 $3.00 83.3%
Kalamazoo $3.00 5 $5.00 120.0%
Ann Arbor $1.00 10 $4.15 93.0%
Lansing $3.00 9 $7.00 71.4%
Grand Rapids $7.00 1 $7.00 0.0%
Detroit $1.63 26 $5.00 115.0%

1/8 flower (3.5g)

Any quality:

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $1.75 33 $9.75 61.5%
Morenci $7.50 4 $10.00 9.4%
Reading $4.00 1 $4.00 0.0%
White Pigeon $8.00 2 $9.25 13.5%
Quincy $4.00 2 $7.00 42.9%
Buchanan $7.00 4 $9.28 73.7%
Monroe $5.00 19 $10.00 28.7%
Constantine $6.00 1 $6.00 0.0%
River Rouge $5.00 5 $10.00 76.0%
Three Rivers $4.00 5 $7.50 40.0%
Coldwater $5.00 7 $8.91 39.4%
Cassopolis $10.00 1 $10.00 0.0%
Sturgis $8.00 6 $8.69 9.0%
Hazel Park $3.50 8 $8.50 87.6%
Niles $6.00 4 $9.61 30.0%
Dowagiac $4.29 2 $7.14 40.0%
Adrian $1.50 5 $7.00 100.0%
Battle Creek $4.00 8 $10.00 56.5%
Hamtramck $5.00 5 $15.00 0.1%
Kalamazoo $3.25 12 $9.28 41.8%
Ann Arbor $3.00 18 $10.00 91.0%
Lansing $3.00 16 $8.00 53.1%
Grand Rapids $4.90 20 $10.00 15.0%
Detroit $3.00 45 $8.00 56.2%

Premium 1/8:

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $3.00 33 $11.99 41.7%
Morenci $7.50 4 $10.00 9.4%
Reading $4.00 1 $4.00 0.0%
White Pigeon $9.00 2 $14.50 37.9%
Quincy $4.00 2 $7.00 42.9%
Buchanan $7.00 3 $15.00 30.5%
Monroe $5.00 19 $12.00 50.0%
Constantine $6.00 1 $6.00 0.0%
River Rouge $12.00 4 $13.80 36.6%
Three Rivers $4.00 4 $9.95 15.8%
Coldwater $8.80 7 $16.00 42.2%
Cassopolis $10.00 1 $10.00 0.0%
Sturgis $8.63 6 $9.95 47.4%
Hazel Park $5.00 8 $11.30 68.6%
Niles $6.00 4 $18.00 18.1%
Dowagiac $18.01 2 $24.00 25.0%
Adrian $1.50 4 $12.00 30.2%
Battle Creek $5.00 7 $10.00 38.0%
Hamtramck $5.00 5 $15.00 0.0%
Kalamazoo $4.00 12 $11.90 54.9%
Ann Arbor $3.20 17 $12.00 83.3%
Lansing $4.00 15 $11.99 25.6%
Grand Rapids $8.00 20 $10.00 50.0%
Detroit $3.25 43 $10.00 61.3%

0.5g vape cart

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $12.00 11 $16.50 57.6%
Morenci $9.00 1 $9.00 0.0%
Reading 0
White Pigeon 0
Quincy 0
Buchanan $18.00 3 $25.00 42.0%
Monroe $12.00 8 $25.02 56.0%
Constantine 0
River Rouge $35.00 1 $35.00 0.0%
Three Rivers 0
Coldwater $14.00 3 $15.00 37.7%
Cassopolis 0
Sturgis $8.00 5 $20.00 31.2%
Hazel Park $20.00 2 $23.75 15.8%
Niles 0
Dowagiac $20.00 1 $20.00 0.0%
Adrian $20.00 1 $20.00 0.0%
Battle Creek $35.00 1 $35.00 0.0%
Hamtramck $22.95 2 $26.48 13.3%
Kalamazoo $16.50 6 $20.00 26.2%
Ann Arbor $12.00 7 $21.00 41.7%
Lansing $15.60 5 $19.99 17.5%
Grand Rapids $15.00 7 $25.00 56.0%
Detroit $10.00 6 $18.50 90.8%

1g vape cart

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $2.65 33 $5.00 36.0%
Morenci $3.60 4 $6.50 24.6%
Reading $4.00 1 $4.00 0.0%
White Pigeon $4.00 2 $4.00 0.0%
Quincy $3.75 2 $3.88 3.2%
Buchanan $6.00 4 $7.05 13.8%
Monroe $2.65 19 $5.00 50.0%
Constantine $6.00 1 $6.00 0.0%
River Rouge $5.50 5 $5.75 8.7%
Three Rivers $4.50 5 $6.00 50.0%
Coldwater $4.02 7 $5.86 19.2%
Cassopolis $8.00 1 $8.00 0.0%
Sturgis $2.50 6 $5.50 45.5%
Hazel Park $2.40 8 $5.75 21.7%
Niles $5.15 4 $6.00 7.3%
Dowagiac $4.75 2 $6.38 25.5%
Adrian $3.99 6 $5.01 39.8%
Battle Creek $5.00 9 $5.75 17.4%
Hamtramck $5.00 4 $7.50 55.8%
Kalamazoo $2.00 12 $5.00 20.4%
Ann Arbor $3.60 16 $6.00 35.4%
Lansing $4.50 17 $7.00 21.4%
Grand Rapids $3.60 20 $6.00 16.7%
Detroit $2.00 43 $6.00 34.2%

100mg THC edible

City Market floor Shops carrying Typical shop floor IQR % (dispersion)
New Buffalo $1.20 32 $6.50 93.7%
Morenci $4.00 3 $7.00 78.6%
Reading $9.00 1 $9.00 0.0%
White Pigeon $8.00 2 $10.00 20.0%
Quincy $6.50 2 $9.25 29.7%
Buchanan $7.50 4 $10.00 41.2%
Monroe $2.00 17 $8.00 62.5%
Constantine $11.20 1 $11.20 0.0%
River Rouge $2.00 5 $4.00 175.0%
Three Rivers $3.00 5 $6.50 169.2%
Coldwater $3.00 7 $5.00 65.0%
Cassopolis $5.33 1 $5.33 0.0%
Sturgis $3.00 6 $4.25 69.1%
Hazel Park $3.00 6 $8.00 77.3%
Niles $2.50 4 $11.14 35.1%
Dowagiac $2.50 2 $2.75 9.1%
Adrian $2.50 5 $5.00 20.0%
Battle Creek $1.29 6 $10.00 135.0%
Hamtramck $6.00 3 $12.00 25.0%
Kalamazoo $3.00 12 $6.50 101.9%
Ann Arbor $2.00 17 $9.00 105.6%
Lansing $1.50 16 $6.00 57.0%
Grand Rapids $3.00 16 $5.10 129.8%
Detroit $1.50 34 $6.90 114.1%

Methodology

Shops per 100,000 residents
Verified open-and-licensed dispensary count divided by the 2020 Census total-population denominator for the city, scaled to 100k. We deliberately use total population, not adults 21+. The ACS five-year file would give us a 21+ slice but requires an API key, and even if we shrunk every city by the same plausible adjustment the 9.1× headline gap holds — so the extra precision wasn't worth chasing.
City-level unit, not county
Competition is a drive-time bubble, not a county-level fact. A shop in St Joseph (Berrien County) doesn't compete with a New Buffalo shop the way two New Buffalo shops on the same block do. We score at the Census Place level — what people locally call "the town."
Market floor
The lowest active price across every in-stock listing in the market for that SKU, on the latest scrape per shop. Active price means COALESCE(special_price, list_price) — what a walk-in actually pays. Very sensitive to a single shop's doorbuster.
Typical shop floor (median)
For each shop in the market, take that shop's own cheapest in-stock listing of the SKU. The median across those per-shop floors is the "typical floor a visitor will see." Less sensitive to outliers than the market floor.
IQR % (dispersion)
Interquartile range of the per-shop floors, divided by the median. Captures how tightly shops are clustered around the typical floor — lower means tighter competition, higher means a wide-open mix of cheap and expensive shops.
Two-column flower (any vs premium)
"Any quality" includes everything the shop puts on its flower shelf. "Premium" adds a name- and subcategory-based filter that drops common deli/bulk/shake/trim listings. Same shop, two reads — premium is closer to what most visitors are actually shopping for.
End-use framing
Most of the markets near the top of the table sit on a state line, and the demand-driver populations they feed are out-of-state. We note that pattern because it explains the data, not because we advocate for any particular cross-border behavior. 15CARTS compares Michigan prices at Michigan shops; we recognize the demand for the data regardless of how the visitor uses it.

Why the SW-Michigan corridor was the natural next step

This study didn't start as a public writeup. We ran the numbers privately to decide where 15CARTS should expand from its New Buffalo-only roots — and the result pointed straight at the SW-Michigan / Indiana-border corridor: Reading, Quincy, Coldwater, Sturgis, Three Rivers, Constantine, White Pigeon, Dowagiac, Cassopolis, and Buchanan. A few dozen dispensaries across ten towns, each within a short drive of the same Fort Wayne and Indianapolis catchment that already drives Coldwater's density into the top of the chart.

Those markets are the launch cohort for this page — the pricing tables above already reflect them, and the corresponding shop maps and cross-shop comparisons are rolling out on the rest of the site in parallel.

What didn't make the first expansion: Battle Creek (10 shops on I-94 — bigger than several of the border markets but not a border play; included in this writeup's density ranking, slated for a later regional expansion), the Toledo-adjacent cluster (Monroe / Adrian / Morenci — demand softening since Ohio's late-2024 adult-use legalization), and the in-state metros (Grand Rapids, Ann Arbor, Lansing, Kalamazoo, Detroit — a volume play with no border moat, and Detroit needs a zip-cluster UX before it's useful).

Data sources & caveats

Raw analysis JSON, the per-SKU per-shop computations, and the population denominators all live in this site's repo; the methodology is open enough that anyone with the data can rebuild the tables. Drop us a note at /contact if you spot something off.