The fact that I can open my phone, press a couple buttons, and — 30 minutes later — have restaurant-quality food show up on my doorstep is pretty incredible.
But it’s also gotten painfully expensive. The $28 burrito isn’t just a meme; it’s a reality.
And here’s the thing: this sure looks like the textbook version of a competitive market. There are lots of firms, and they all sell pretty much the same product. But to really get that competition going, buyers should be able to easily compare prices to find the best deal. And when it comes to food delivery – that’s weirdly hard to do.
First, the prices on an app are usually significantly more expensive than ordering from a restaurant directly. (And they don’t even tell you what that markup is!)
Then you’ve got the fees, which come in different shapes and sizes across every platform, and seem to vary by time, order size, subscription, or whatever strange mood the algorithm woke up in that morning.
And, perhaps the worst bit, these fees don’t show up until you’re nearly done ordering. By that point, you’re dreaming of burritos. Or pizza. Or sushi.
Which makes this a prime example of what happens when you have plenty of competitors, but comparison itself is painful.
Ordering my family’s dinner
Competition is the force that leads markets to deliver better outcomes for consumers. One shop charges five bucks for a soda and a candy bar, and another charges seven — you go with the cheaper one. This provides a pretty sharp incentive for suppliers to keep their prices low, and the quality of their goods high.
At least, that’s how it works in theory. But in food delivery, competition stumbles over one small problem: the price isn’t easy to find. You don’t care about the menu price next to a burrito; you care about the bottom line on actually getting it delivered.
But to get there, you have to login, click all the way through, search through different bits of long menus to find your faves, enter your address, tell them whether to knock on the door or ring the bell, enter your email and a password you’ve definitely forgotten (was it one or two exclamation points?), and finally you do twelve jumping jacks before they agree to show you the final price.
Which means to compare prices, you have to do all of that on multiple apps, rebuilding the same cart over and over again with the same items that are somehow rearranged on every platform. Yes, technically, you can compare prices. But only if you’re willing to do what feels like hours of unpaid clerical work before dinner.
To make this more concrete, I tried it out with my family’s own sushi order. We wanted five pretty basic rolls, and I priced it four ways:
directly with the restaurant,
on Uber Eats,
on DoorDash,
and on Grubhub
What matters here is not just that the totals differed. But that the differences showed up in several different ways, making direct, one-to-one comparisons quite difficult.
What exactly were those differences?
On the three apps, the rolls were about 20% more expensive than on the restaurant’s own website. (With a couple exceptions that honestly looked like typos.)
On Grubhub, the delivery fee, service fee, and tax were each displayed separately. While on Uber Eats and DoorDash, service fees and taxes were combined (until you clicked for more info).
For the tip, Uber Eats and Grubhub defaulted to 20%, while DoorDash suggested a flat $6.
And promos, large order discounts, and optional subscriptions muddied the water even further.
So when trying to find the best price, I got three different answers depending on whether I was looking at the subtotal, the advertised delivery fee, or the bottom line.
And just getting to the point where the prices were genuinely comparable took time. Across these apps, I lost half an hour of my life. If I could earn $30 per hour driving for Uber, that half hour of price comparison cost me $15 worth of time. Maybe I would have saved $10, but at that point — is it worth it?
Search costs matter
In economics, there’s a phrase for what’s going on here: search costs.
Search costs are the time, attention, and effort it takes to figure out what something really costs and whether there’s a better alternative.
Search costs matter because competition is not actually magic. It doesn’t work merely because several firms exist, but because consumers can compare offers easily enough to punish the expensive seller.
But if comparison becomes annoying, slow, or mentally taxing, fewer people do it and firms face less pressure to compete on the true price.
This isn’t quite the absence of competition. But a much weaker, murkier version of it.
More than bad design
Now, you might think all these search costs are just sloppy app design. But the evidence suggests something far more structural. After all, these prices are digital. It ought to be super easy to create a tool that could compare these numbers floating out there in the internet ether.
Instead, the companies make it hard.
The terms of service for Uber’s API say that users may not aggregate Uber’s data with its competitors’ data, or use it in ways that support competitive price comparison. Similarly, the terms for DoorDash and Grubhub prohibit the scraping and systematic retrieval of its data. And Grubhub also forbids the creation of databases from platform content without authorization.
Now, firms are generally allowed to write their own terms of service. But here, they’re writing them explicitly to destroy your ability to comparison shop. The tools that would make cross-app price comparison easier for consumers are nearly impossible to build because the platforms forbid the very actions necessary to do so.
The bad design is there by design.
We can fix this
Now for some good news. Regulators are beginning to take notice.
In December 2024, the Federal Trade Commission settled a case with Grubhub over allegations that it hid the true cost of delivery and used what the agency described as a pricing shell game. Grubhub was forced to pay $25 million and make several changes to the way it does business.
And this past April, the FTC opened a broader inquiry into unfair and deceptive fee practices for online food and grocery delivery. Basically, the regulators are asking: do consumers actually know what they’re paying and why.
Which means this is not merely a story of one grumpy economist getting annoyed while ordering dinner. It’s increasingly a policy debate about whether a market counts as competitive if consumers can’t easily see the real price.
So, what would fix this? Here are a few ideas about where to start:
First: show the full, mandatory price earlier, up front. Not halfway through checkout. Not after I’ve emotionally committed to the spicy tuna.
Second: if the app price is higher than the restaurant’s own price, tell me. Clearly. Right there on the item.
Third: standardize the fees. If there are service and delivery fees, explain what they are, whether they’re mandatory, and who gets it. The fees should follow clear rules that are consistent across orders and customers.
Fourth: and this is the bigger institutional point — don’t make it impossible for independent comparison tools to exist.
And that’s the tell.
If firms really believe they’re offering the best deal, they should welcome easy comparison, not fear it. A genuinely competitive market should not require detective work from the customer.
Look, delivery is a real service. It costs money and convenience is worth something. But if you’re charging for convenience, at least be honest about its price.
What this tells us about capitalism
Here’s the larger point: competition is not simply about whether there are a lot of firms in a market, or colorful apps on your phone. It’s also about whether the market is structured so that ordinary people can make sensible choices. That means clear enough prices that a busy family can tell who’s actually offering the better deal.
From your perspective as a consumer, competition is beautiful – it pushes firms to offer a better deal. But from the side of businesses, competing destroys their pricing power. They might have to sell burritos at reasonable prices. Their profit margins might fall.
So businesses fight to reduce or eliminate competition. In the food delivery industry, they do it by making it hard to compare prices. Other industries use other tricks. This is the inherent tension at the heart of capitalism. It’s a system that delivers extraordinary outcomes, but sellers are always trying to destroy the competitive forces that make it work.
Competition can only thrive and survive if we also have clear rules keeping markets truly competitive.
A lot of people use the rhetoric of economics to say that our policies ought to be pro-business, or we should get the government off of businesses’ backs. But if you let businesses do whatever they want, they’ll destroy competition.
And if you really pay attention, you’ll learn that it’s competition — not business — that delivers the cheap burritos. The point here is that there’s a much stronger case for being pro-market or pro-competition, than pro-business.
So next time you tuck into a burrito, realize you’re holding a foot-long lesson in economics. That lesson: competition is your best chance at getting a good deal.











