Retail Drugstore Market Analysis

A data-driven analysis into the drugstore duopoly

Technologies Used: Python, JavaScript

Overview

The drugstore retail market in Germany is dominated by three players: dm ("dm-drogerie-markt", ), Rossmann and Müller. Collectively, these chains operate over 9,000 stores across the country. According to the website store finder of each chain, here is the total store count per brand:


Brand Store Count Founding Year Revenue (2023) Market Share (Germany)
DM 2,149 1973 €11.4 billion ~24%
Rossmann 2,311 1972 €9.3 billion ~22%
Müller 582 1953 €4.6 billion ~8%

According to Statista (Link), DM and Rossmann have over 80% of market share combined in 2023. The two chains, founded only a year apart, deployed extensive growth strategies, focusing initally around their "base" and later regionally & nationwide. The third competitor, Müller, has significantly less stores and a more regional focus; thus, in this analysis I will focus only on DM and Rossmann.

DM
DM is the dominant player in terms of revenue and market share, despite fewer stores than Rossmann. Geography, of course, plays a key role in its market dominance. By looking at opening date by store, it's possible to observe expansion waves, market entry strategy by region and urban vs. rural penetration. This analysis demonstrates the store expansion from 1973 to present across Germany:



This highlights some interesting expansion patterns regionally: the gradual expansion into the GDR in the 1990s, a significant saturation strategy to consolidate foothold in its strongest markets (North Rhine-Westphalia, Bayern, Baden-Württenburg, Rhineland-Pfalz) and nationwide expansion from 2005 onwards. This total expansion effort can be summarized by looking at total store openings by year, with the peak number of stores opened being 156 at 2014:



Next, let's take a look at Rossmann.

Rossmann
No opening date is available for Rossmann store locations. However, we can still visualize the stores as they are today, and compare them to DM's footprint in the map below. Optional: use keyboard buttons to move around the map (←, →, ↑, ↓) and + and - to zoom: We can already see how the locations overlap heavily, particularly around the major cities. Let's deep dive into the division of territory within major cities.

THE DRUGSTORE DUOPOLY
Unique Territory Share: We begin by creating Voronoi Polygons around each store location for each brand. With this approach, each store is assumed to "own" the closest surrounding area, and thus each zone is a theoretical potential market. Keeping that in mind, DM covers 37% of Germany, whilst Rossmann covers 63%. In cities, the share is heavily fragmented and divided, as can be seen in Berlin:



This suggests a few things:
  • Rossmann has more stores in rural or spatially isolated regions than DM, suggesting a broader market approach
  • DM is more urban-centric and is more present in the contested areas
Let's include population now (using Landscan 2023 data) for each brand's total territory:

Brand Population
Rossmann 44,029,086
dm 40,157,416

So despite Rossmann having significantly higher footprint, its population share is only slightly larger - 52% vs. 48%. This confirms DM's concentration in dense, urbanized areas, and potentially higher efficiency and/or customers per km². Let's take a deep dive into what's going on in cities.

City Analysis: We create a 5-km hexagon grid for Germany, counting of DM and Rossmann locations per cell, and classifying into 4 categories (see Legend in top-right):



This allows us to identify precisely the main duopoly "battlegrounds", where both brands are heavily present. Based on the hexagon classification, these are predominantly located in NRW, but essentially present in all major cities. Another way to visualize this is using a pie chart, detailing the number of locations present for each location (DM in yellow and Rossmann in red):
Munich
Berlin
Hamburg
Cologne
To summarize the duopoly competition by city, we can compute a few KPIs to indicate where the competition stands. The imbalance is a simple indicator that is calculated as Abs of total(dm) - total(rossmann) , and allows to see where the competition is closest, whereas the duopoly share indicates what share (%) of the city constitutes a duopoly. Here are the results for the largest 25 cities, sorted on high branch count and low imbalance (indicating high competition):

Table

Sources
Back to my projects →