We're reader-supported and only partner with brands we trust. When you buy through links on our site we may receive a small commission at no extra cost to you. Learn More. Product prices and availability are accurate as of the date and time indicated and are subject to change.

When you’re trying to figure out where to buy cheap flowers, the biggest tip I can offer you is to skip the local florist. Shop at grocery stores instead. Especially for roses. When I look up my favorite florist in town, I see that red roses are $50 per dozen. That’s $4.17 per stem! If you know how to make your flowers last longer, you can keep them beautiful for at least as long as the florist can.

And when you know where to buy cheap flowers, it can only mean one thing: money saved is money you can spend on wine or chocolate to go along with your flowers. Trust me, your special someone will love that.

Check out these other ways to save on flowers:


Where to Buy Cheap Flowers: Roses

We can all admit that roses are timeless and incredibly popular. Most grocery stores sell roses, and instead of paying upwards of $50 for roses at a local florist, aim to pay more like $0.80 – $1 per stem when you buy from grocery stores. (Yes, that’s like 75% cheaper.)


Costco offers the cheapest roses: two dozen for $18.99 (less than Costco’s bulk price).

Bouquets of roses on display inside Costco

At $0.79 per rose, you’re getting these flowers even cheaper than buying in bulk from Costco.com, where they’re $1 per stem when you buy 50. Of course, there may be other reasons to order online (like convenience or you need so many the store cannot accommodate you), but price shouldn’t be one of them.

See all Costco deals.


Trader Joe’s has a dozen roses for $9.99.

Bouquets of roses for sale at Trader Joe's

At just $0.83 per rose, Trader Joe’s offers Walmart-like prices. Plus, the roses are in good shape, and there’s a vast selection. Trader Joe’s is my pick if you want the classic 1-dozen roses.



Walmart’s roses are $9.97 per dozen.

Bouquets of roses for sale at Walmart

Walmart’s prices are the same as Trader Joe’s at $9.97 per dozen roses. But that’s where the similarities end. Unless it’s a holiday like Valentine’s or Mother’s Day, Walmart’s rose selection is a bit weak and some bouquets are even quite wilty.

You could also go with the mini 5-rose bouquet at Walmart. They’re $4.98, which of course is cheaper than a full dozen, but the price per rose is higher at $1 per rose ($0.996).

See all Walmart deals.


Whole Foods sells a dozen roses for $14.99.

A close up on some Whole Foods rose bouquets

At a higher price point ($1.25 per rose) you’re still only paying a third of the price you’d pay at a florist. Of course, you could go with the cheaper options (Costco, TJ’s), but there’s no shame in buying Whole Foods roses, even if they’re slightly more expensive than say Costco or Trader Joe’s. Think of what you’d be paying FTD!

See all Whole Foods deals.


Buy cheap bulk roses at Sam’s Club.

A close up on a bouquet of roses

Wedding flowers? Just want to surround yourself with roses? Perhaps a bed of them? I get that. Shop at Sam’s Club for the best cheap bulk roses. You’ll have to buy roses in batches of 80 stems to get this price, but they come out to just $0.81 per rose. Certainly cheaper than Costco’s bulk flowers price.

See all Sam’s Club deals.



Where to Buy Cheap Flowers: Non-Rose Bouquets

If you don’t want roses, you still have some affordable options. Lots of grocery stores sell random assortments of flowers, and these are often seasonal. So you’ll see a lot of mums mixed in during the fall, Christmas colors and greenery during winter, and wildflowers in the spring.


Trader Joe’s offers the most variety and the best prices.

Buckets filled with bouquets of flowers for sale at Trader Joe's

You can choose from three different sizes of bouquets at Trader Joe’s. Prices range from $3.99 for the smallest to $6.99 for the medium size to $9.99 for a large bouquet.

If you’re wondering where to buy cheap flowers, generally Trader Joe’s is a safe bet.

See all Trader Joe’s deals.


Or buy a premium bouquet at Costco for $16.99.

A close up on some bouquets of flowers on a shelf in Costco

Costco’s premium bouquets are slightly larger than the biggest one at Trader Joe’s. But honestly? You could put two medium bouquets from Trader Joe’s together into one and it’d be bigger than Costco’s bouquet. Best part? It’s cheaper too. $13.98 instead of $16.99.


Find 20-stem tulips at Whole Foods for $15.99.

Tulips on display in a store

Tulips are an excellent alternative to rose bouquets, and they’re cheaper. Aim to spend about $0.80 per stem when you buy tulips in the off-season (everything but spring). Tulip prices reach as low as $12.99, or $0.54 per stem, for a 24-stem bouquet during early spring (February). Watch for this deal at Trader Joe’s.



Skip Kroger’s big bouquets; they’re the most expensive.

A close up on a bouquet of flowers

Kroger offers nice-sized bouquets, about the same size as Costco’s premium flowers, but they’re $25 each. Yowza!

Good news is Kroger offers smaller bouquets for $5, although again, these aren’t as nice as the smallest bouquet at Trader Joe’s. Or as cheap.


Shop Trader Joe’s for cheap Valentine’s flowers.

assorted bouquets of muti color tulips at trader joes

Trader Joe’s again, folks. Watch for them to knock their dozen-roses price down from $9.99 to $8.99 the week leading up to Valentine’s Day. Only hitch is you need to be ready to buy them early. The deal ends typically by Feb. 10.

If you’re too slow to catch that deal, watch for Trader Joe’s to roll out 2-dozen tulips for $12.99.

Where to Buy Cheap Flowers: Roses, Tulips, and More