Ask what food delivery costs a restaurant and you get two very different kinds of answer. One is a commission percentage, quoted confidently in trade press and rarely sourced. The other is the price gap between the delivery app menu and the restaurant's own ordering page, which anyone can observe.
The first is a private contractual term. The second is public data. This post is about measuring the second properly, and about being honest that the first is not measurable by collection.
Commission is the percentage a platform charges a restaurant on order value, set in a signed agreement. It varies by service tier, negotiated volume, promotional participation and market. It is not published, does not appear in any app response, and cannot be scraped.
Anyone claiming observed commission rates at scale is surveying restaurants, working from aggregated contract data, or inferring. Inference from prices does not work: a restaurant sets its delivery price using commission plus its own pricing judgement, packaging cost and competitive position. You cannot recover one input from the output.
Menu mark-up is the difference between what a restaurant charges for an item on a delivery platform and through its own channel. It is set by the restaurant, visible to any consumer, and measurable at scale.
Actowiz measures mark-up and the consumer-visible fee stack. It does not claim to know commission terms. That boundary is the difference between a dataset an analyst can defend and one they cannot.
| Commission | Menu mark-up | |
|---|---|---|
| Who sets it | Platform, per contract | Restaurant |
| Visibility | Private | Public on both channels |
| Measurable by collection | No | Yes |
| Varies by | Tier, volume, negotiation, market | City, cuisine, chain size, channel strategy |
| What Actowiz provides | Not measured | Matched-pair differential and index |
Mark-up is a pricing decision, not a cost pass-through. A restaurant may price delivery above direct to recover platform economics, hold the two equal to protect brand consistency, or price below direct to win volume.
So mark-up answers a different question than commission: how much more does this restaurant charge a delivery customer than a direct customer, and how does that compare across the market? That is the variable operators actually control.
The unit of measurement is a matched item pair: the same item, at the same restaurant outlet, observed on a delivery platform and on the restaurant's direct channel, within a short time window.
Every word there is load-bearing.
Same item. Not the same item name. Names differ between channels for one dish, and identical names sometimes denote different sizes. Size, quantity and configuration must agree.
Same restaurant outlet. Not the same brand. Chain prices vary by location. Comparing a delivery price at one branch against a national direct menu introduces geographic variance into a figure meant to isolate channel.
Direct channel. The restaurant's own site or first-party ordering system. An outlet with no direct online ordering has no comparable price and drops out. Say so explicitly: the measurable subset is not a random sample of all restaurants.
Short time window. Both prices captured close together, because promotional pricing moves on either channel. Same-day pairing is the working standard.
| Step | What happens | Failure mode if skipped |
|---|---|---|
| 1. Outlet matching | Link delivery-platform outlet to its direct-channel page, keyed on brand, address and geocode | Cross-branch comparisons inflate variance |
| 2. Direct-channel discovery | Identify whether the outlet has first-party ordering, and which system | Silent substitution of a national menu for a local one |
| 3. Menu capture, both channels | Full item, section, price, modifier capture on each | Base-price-only capture misses required-modifier differences |
| 4. Item candidate generation | Normalised name match plus description and size tokens | Different sizes compared as equals |
| 5. Configuration alignment | Compute minimum purchasable price on both sides, including required modifiers | Mark-up attributed to price when it is a bundling difference |
| 6. Promotion exclusion | Flag and exclude items under an active discount on either channel | Discounts read as negative mark-up |
| 7. Confidence scoring | Score each pair; hold mid-confidence pairs for review | Unreviewable aggregates |
| 8. Aggregation | Differential per pair, then roll up | — |
Step 5 is where most published comparisons quietly break. If the delivery listing bundles a side into the base price and the direct menu charges separately, the base prices are not comparable. Computing minimum purchasable price on both sides — base plus cheapest option in every mandatory group — puts them on one footing.
The per-pair metric is a ratio, not a difference: delivery minimum purchasable price over direct. Ratios aggregate sensibly across items at different absolute price levels; differences do not.
Report at outlet level as a median across that outlet's matched pairs, then aggregate outlets. The median protects against one mismatched pair dominating an outlet's figure.
Mark-up is only part of what a delivery customer pays above the direct price. The rest sits in fees, and all of it is visible at checkout.
| Component | What it is | Collection notes |
|---|---|---|
| Delivery fee | Charged per order, distance-linked | Property of the outlet-and-location pair; record the sampling coordinate |
| Service fee | Platform fee, often a percentage of subtotal | Capture as rate and as amount on a reference basket |
| Small-order fee | Applies below a threshold | Record the threshold, not just the fee |
| Minimum order value | Not a fee, but a cost constraint | Affects achievable basket size |
| Surge or busy-area fee | Demand-linked, time-varying | Requires repeated intraday observation to characterise |
| Promotional offsets | Free or reduced delivery, subscription benefits | Flag the promotion; do not net it into base fees |
| Taxes | Jurisdiction-specific | Record separately; never fold into fees |
Two design points.
Several of these are basket-dependent, so they cannot be a single number per outlet. Define a reference basket — a fixed subtotal, or a fixed matched item set — compute the fee stack against it, and publish the basket definition alongside the figures.
Surge requires cadence. A once-daily observation cannot characterise a fee that moves with demand. Sample the same outlets at fixed intraday slots across weekdays and weekends. Observed intraday range of busy-area fee, by city is a real deliverable; a spot reading is not.
Total consumer premium is then menu mark-up, plus the fee stack against the reference basket, plus any tax differential. Report the three separately rather than as one blended percentage: a restaurant can act on mark-up and cannot act on the platform's service fee.
The interesting output is not the headline average. It is the variation.
By chain size. Large chains generally run more deliberate multi-channel pricing than independents, because they have the pricing function to do it. Whether that means higher or lower observed mark-up is an empirical question per market, and should be reported as median mark-up ratio by outlet-count band rather than asserted.
By cuisine. Categories with thin margins and low ticket sizes face different arithmetic than high-ticket categories. Report by cuisine tag class, using the platform's own taxonomy, mapped to a stable internal one.
By city. Competitive intensity, platform mix and delivery cost structures all differ. City-level medians with sample-size disclosure are the right unit.
By platform. Where an outlet lists on several platforms, mark-up can differ per platform for the same outlet. This within-outlet, across-platform comparison is the cleanest read in the whole dataset, because outlet, item and time are all held constant.
Every one of these cuts needs sample size published next to it. A cuisine-by-city cell with few matched outlets is not a finding.
A restaurant operator benchmarks its own mark-up against comparable outlets in its city and cuisine, then asks whether its direct channel is priced attractively enough to shift volume. If direct and delivery prices are identical, the operator offers customers no price incentive to order direct.
A multi-outlet brand checks internal consistency. Divergent mark-up across its own branches usually signals menu-management drift rather than deliberate strategy.
An analyst or consultant builds a menu-price index by city and cuisine, tracked over time. The index measures observed consumer price levels across channels, not platform revenue or margins.
A platform or investor reads the distribution of mark-up as a signal of how restaurants are absorbing delivery economics, and the fee stack as a component of consumer-facing price competitiveness.
A diligence team uses mark-up and fee data as one input to unit-economics modelling alongside what the target supplies directly. Observed prices constrain the model; they do not replace the target's own numbers.
The honest framing is the same throughout. You are measuring prices and fees a consumer can see, at defined outlets, over a defined period, with stated coverage. You are not reporting contract terms, and you say so.
Actowiz Solutions builds matched item-pair datasets across delivery platforms and restaurant direct channels, with configuration-aligned minimum purchasable prices and promotion flags.
The fee stack is captured against a documented reference basket, with intraday cadence where surge pricing is in scope.
No. Commission is a private contractual term between platform and restaurant and does not appear in any public response. Only the restaurant's menu prices and the consumer-visible fee stack are observable.
It is the price difference for the same item at the same outlet between a delivery platform and the restaurant's own ordering channel, measured as a ratio of minimum purchasable prices captured within a short time window.
Because a discount on either channel makes the pair non-comparable for a structural pricing measure. Promotions are captured and reported separately rather than netted into the base differential.
You can also reach us for all your mobile app scraping, data collection, web scraping, and instant data scraper service requirements!
Our web scraping expertise is relied on by 4,000+ global enterprises including Zomato, Tata Consumer, Subway, and Expedia — helping them turn web data into growth.
Watch how businesses like yours are using Actowiz data to drive growth.
From Zomato to Expedia — see why global leaders trust us with their data.
Backed by automation, data volume, and enterprise-grade scale — we help businesses from startups to Fortune 500s extract competitive insights across the USA, UK, UAE, and beyond.
We partner with agencies, system integrators, and technology platforms to deliver end-to-end solutions across the retail and digital shelf ecosystem.
Use this web data RFP checklist to define scope, sources, fields, SLA, QA and pricing models, then score vendors fairly.
Sensitive Skin Skincare Product Data API helps brands track cleansers, serums, moisturizers, and sunscreens with structured product data.
German marketplace data report 2026: online retail size, Amazon.de, Otto, Kaufland and Zalando price signals, PAngV rules and peak seasons.
Whether you're a startup or a Fortune 500 — we have the right plan for your data needs.