Grocery Price Dashboard: Track Average Prices by State and Category (2027) Get The Full Insight ✕

How to Build a Restaurant Competitor Dashboard in Power BI With Menu Data

How to Build a Restaurant Competitor Dashboard in Power BI With Menu Data

A restaurant competitor dashboard shows how your menu prices, promotions, and delivery fees compare with rivals’, store by store. In Power BI, you can build one from structured menu data, then refresh it automatically.

Prices move fast, too. In fact, US menu prices rose 3.5% in the year to September 2026, according to the National Restaurant Association. So a monthly spreadsheet can’t keep up.

This guide walks through each step of building a restaurant competitor dashboard, from the data you need to the refresh.

StepWhat you build
1. Load menu dataCompetitor menus, prices and promotions by location, from files or an API
2. Clean it in Power QueryStandard item names, sizes and categories, plus an item match table
3. Model itA star schema with one price table and several lookup tables
4. Write DAX measuresPrice index, price change, promo share and delivery markup
5. Design report pagesOverview, item comparison, promotions and locations
6. Publish and refreshScheduled refresh, sharing and alerts in the Power BI service

What a Restaurant Competitor Dashboard Should Show

A good restaurant competitor dashboard answers a few clear questions:

  • Are we priced above or below rivals on our core items?
  • Which competitors changed prices this week, and by how much?
  • Who is running promotions, and how deep are they?
  • How much more do items cost on delivery apps than in-store?
  • Where do prices differ by city, ZIP code, or store?

To answer them, a restaurant competitor dashboard tracks these KPIs:

KPIWhat it tells you
Price indexYour price as a percentage of the competitor average, so 100 means equal
Price change %How much an item’s price moved since the last period
Promo shareThe share of a rival’s items on promotion
Delivery markupApp price against the restaurant’s own price
Menu breadthThe number of items per category
RatingsCustomer sentiment by store, when shown publicly

For example, a price index of 108 means you’re 8% above the competitor average for that item. By contrast, 95 means you’re 5% below it.

The Menu Data You Need for a Restaurant Competitor Dashboard

Any dashboard is only as good as its data. So collect menus in a consistent structure, with these fields:

Field groupExample fields
RestaurantBrand, store ID, address, city, and ZIP code
ItemItem name and category, as well as size and description
PriceMenu price and promo price, as well as currency
PromotionsOffer text and type, along with any minimum order
ChannelSource, such as DoorDash, Uber Eats or the brand’s own site
FeesDelivery and service fees, when shown
TimeCapture date and time

Menu data can come from delivery apps, restaurant websites, and online ordering pages. However, collecting it by hand is slow, and menus change often. So most teams use a scheduled feed, such as our restaurant menu data scraping service or food data API.

Keep the channel field, too. For instance, a November 2025 LendingTree study found that delivery cost 79.5% more than pickup on average. That figure includes fees, tips, and markups, so app and in-store prices must stay separate.

Step 1: Load Menu Data Into Power BI

Start your restaurant competitor dashboard in Power BI Desktop. Then choose Get Data and pick the source that matches your feed:

  • CSV or Excel files: use the Text/CSV or Excel connector, or a SharePoint folder for weekly files.
  • REST API: use the Web connector, along with your API URL and key.
  • Cloud warehouse: connect to Snowflake or Google BigQuery when your feed lands there.

Load the raw table first. Then do all cleaning in Power Query, so each refresh repeats the same steps.

Step 2: Clean and Match Menu Items in Power Query

Competitor menus rarely use the same names. For instance, one chain sells a “Classic Cheeseburger”, while another sells a “Cheese Burger (Single)”. So clean the data before you compare it:

  1. Standardise names: trim spaces, set one case, and remove extra symbols.
  2. Split sizes: move size and pack details into their own columns.
  3. Add categories: map each item to a shared category, such as burgers, sides, or drinks.
  4. Build a match table: link each competitor item to your comparable item.
  5. Use fuzzy merge: Power Query’s fuzzy matching finds similar names, with a default similarity threshold of 0.80.
  6. Review matches: check low-scoring matches by hand, then save the table.
  7. Remove duplicates: keep one price per item, store, channel, and date.

In fact, item matching makes or breaks a restaurant competitor dashboard. So spend time on it, and reuse the match table at every refresh.

Step 3: Build a Star Schema Data Model

Next, shape the data into a star schema. According to Microsoft, this design helps Power BI models perform well and stay easy to use. That’s because dimension tables filter and fact tables summarise.

TableTypeKey columns
Fact_MenuPriceFactItem, store, date and channel keys, as well as price and promo price
Dim_ItemDimensionItem key, clean name and category, along with size and matched item
Dim_RestaurantDimensionStore key, brand and our-brand flag, as well as city, ZIP code and coordinates
Dim_DateDimensionDate, week, month, and year
Dim_ChannelDimensionChannel, such as DoorDash, Uber Eats or own site

Then create one-to-many relationships from each dimension to the fact table. In addition, mark Dim_Date as your date table, so time-based measures work.

Also keep your own menu in the same fact table, with an our-brand flag. That way, every measure in your restaurant competitor dashboard can compare “us” with “them”.

Step 4: Write DAX Measures for Your Restaurant Competitor Dashboard

With the model ready, add a few core measures. Here are simple versions to start from:

{
Avg Price = AVERAGE ( Fact_MenuPrice[Price] )
Our Price = CALCULATE ( [Avg Price], Dim_Restaurant[IsOurBrand] = TRUE () )
Competitor Price = CALCULATE ( [Avg Price], Dim_Restaurant[IsOurBrand] = FALSE () )
Price Index = DIVIDE ( [Our Price], [Competitor Price] ) * 100

Price Change % =
VAR PriorPrice = CALCULATE ( [Avg Price], DATEADD ( Dim_Date[Date], -7, DAY ) )
RETURN DIVIDE ( [Avg Price] - PriorPrice, PriorPrice )

Promo Share =
DIVIDE (
    CALCULATE ( COUNTROWS ( Fact_MenuPrice ), NOT ISBLANK ( Fact_MenuPrice[PromoPrice] ) ),
    COUNTROWS ( Fact_MenuPrice )
)

Delivery Markup % =
DIVIDE (
    CALCULATE ( [Avg Price], Dim_Channel[Channel] <> "Own site" ),
    CALCULATE ( [Avg Price], Dim_Channel[Channel] = "Own site" )
) - 1

Then format the index as a whole number and the other measures as percentages. Finally, test each one against a few items you know well.

Tips for Accurate Measures

  • Compare like with like: filter to matched items only, so different sizes don’t skew averages.
  • Use the latest price: for snapshots, take the latest price per item and store, rather than a monthly average.
  • Keep channel in context: add a channel slicer to every page, because app prices differ.

Step 5: Design the Report Pages

Now build four pages for your restaurant competitor dashboard, each answering one question:

PageMain visualsQuestion it answers
OverviewKPI cards and price index by brand, as well as a trend lineAre we priced right overall?
Item comparisonA matrix of matched items by brand, with conditional formattingWhere are we too high or too low?
PromotionsA bar chart of promo share, along with a table of live offersWho is discounting, and how deeply?
LocationsA map of stores, plus price index by city or ZIP codeWhere do prices differ?

Add slicers for city, channel, category, and date. In addition, set up drill-through from the overview to item details, so users can explore without extra pages.

Step 6: Publish, Refresh and Share

Finally, publish the report to the Power BI service and set it up to run on its own:

  • Scheduled refresh: shared capacity allows up to eight scheduled refreshes a day. By contrast, Premium, PPU or Fabric capacity allows up to 48.
  • Gateways: cloud sources don’t need a gateway when Power BI can connect directly. However, on-premises sources do.
  • Row-level security: limit regional managers to their own stores and cities.
  • Alerts: pin KPI cards to a dashboard, then set data alerts for big price moves.

Match the refresh to your data feed. For example, if competitor menus update daily, one daily refresh is enough.

How Teams Use a Restaurant Competitor Dashboard

Different teams use the same restaurant competitor dashboard in different ways, for example:

  • Pricing teams: set prices for new items, because they can see what rivals charge locally.
  • Marketing teams: time promotions around competitor deals, rather than guessing.
  • Operations and franchise teams: spot stores priced out of line with local rivals.
  • Digital teams: check delivery app prices and fees against your own ordering site.
  • Strategy teams: compare price levels in new markets before they open.

For a real-world example, see our competitor analysis case study for a restaurant chain. You can also read how restaurants use competitor pricing intelligence.

Common Mistakes to Avoid

Even so, a few mistakes can spoil the results:

  • Comparing unmatched items: a large fries and a small fries aren’t the same product.
  • Mixing channels: app prices and in-store prices need separate views.
  • Using one store per city: prices often vary by location, so sample several stores.
  • Ignoring capture time: promotions can change by day of the week, so record when you collected each price.
  • Crowding pages: keep each page to one question and a handful of visuals.

Get Started

Get Menu Data Ready for Your Power BI Dashboard

Tell us your competitors, cities and channels. Then we’ll send a free 100-row menu data sample, ready to load into Power BI.

Get My Free Sample
cta-bg

Restaurant Competitor Dashboard: FAQs

What is a restaurant competitor dashboard?

It’s a report that compares your menu prices, promotions, and fees with rivals’, by item, store, and channel. Power BI is also a common tool for building one.

Can I build a restaurant competitor dashboard in Power BI without coding?

Mostly, yes. Power Query handles cleaning through menus, although a few short DAX measures make the comparisons clearer.

Where do I get competitor menu data?

Menu data comes from delivery apps, restaurant websites, and ordering pages. Most teams use a provider, because collecting menus by hand is slow.

How often should a restaurant competitor dashboard refresh?

Daily suits most brands. However, weekly can work for slower markets, while shared capacity allows up to eight refreshes a day.

How do I match items across competitors?

Standardise names and sizes first, then use fuzzy merge in Power Query. Finally, review the matches by hand and save them.

Can I compare delivery app prices with in-store prices?

Yes, if your data includes a channel field. Then a delivery markup measure in your restaurant competitor dashboard shows the gap.

How much does menu data for the dashboard cost?

It depends on competitors, locations, channels, and refresh. So start with a free 100-row sample, and then get a custom quote.

Table of Contents

Need Custom Food Data?
  • Custom Food Data Solutions
  • Choose Platforms, Fields, Formats
  • Flexible Data Delivery Formats

How to Build a Restaurant Competitor Dashboard in Power BI With Menu Data

How to Build a Restaurant Competitor Dashboard in Power BI With Menu Data

Table of Contents

Explore Our Latest Insights

Grocery Price Dashboard Track Average Prices by State and Category (2027)

Grocery Price Dashboard: Track Average Prices by State and Category (2027)

How to Build a Restaurant Competitor Dashboard in Power BI With Menu Data

A restaurant competitor dashboard shows how your menu prices, promotions, and delivery fees compare with rivals’, store by store. In...

Read more

Food Delivery Promotions Data: Track Discounts, BOGO, and Free Delivery on DoorDash, Uber Eats, and Grubhub

Food delivery promotions data shows which deals restaurants run on DoorDash, Uber Eats, and Grubhub, and where they run them....

Read more