In the UK, JustEat takes 30% of the order, same as UberEats, with 0 liability - if something goes wrong with the order, including problems with delivery time, driver taking a nibble, the restaurant just doesn't get paid. Deliveroo is a bit greedier and takes 35%.
It's definitely not the lack of competition... it's just that the competition doesn't behave much better compared to them.