Marketing mix modeling datasets you can download and practise on

Real MMM data is almost never public, so you learn on synthetic data. Here's every dataset worth your time as of October 2026, what's in each one, what it's good for and where it will mislead you, with a previewer to look inside the Vexpower files before you download.

Mike Taylor By Mike Taylor · Updated · 10 min read

A marketing mix modeling dataset is a time series, usually weekly, of an outcome like revenue or conversions alongside spend (or impressions) for each marketing channel and the non-marketing drivers that move sales, such as price, promotions, holidays and seasonality. The best free ones to learn on are the simulated datasets that ship with Robyn, Google Meridian and PyMC-Marketing, plus Vexpower’s own synthetic files, which are small enough to understand completely.

I’ve built marketing mix models for brands like Monzo, Booking.com and The AA, and none of that data could ever be published, which is the norm rather than the exception. Spend and sales by week is about as commercially sensitive as data gets, so almost every public MMM dataset is simulated. That’s less of a problem than it sounds. A simulated dataset where you know the true effects is a better teacher than a real one where you don’t, because you can check whether your model got the answer right. What you need to watch for is the opposite trap: treating a clean simulated dataset as evidence that a method works on messy real data. Every dataset below was checked against its source on 24 October 2026, including the license, and the files were opened to confirm what’s actually in them.

Preview the Vexpower MMM datasets

The previewer loads each Vexpower file directly from this site. You can see the first rows, a summary of every column (mean, min, max and missing values), a few automatic data checks and a chart of any column, split by group where the data has one. The Northstar file is the interesting one to start with, because it was deliberately broken in four ways, and all four show up in the quick checks without you doing anything. You can also load any CSV of your own, including the public datasets further down, and it’s read in your browser rather than uploaded.

Interactive
Preview any Vexpower dataset before you download it

Pick a dataset (or load your own CSV) to see its first rows, a summary of every column, some quick data checks and a chart of any column.

Rows
–
Columns
–
Missing cells
–
Date range
–

First rows, plus any flagged rows

Column summary

Quick checks

    Chart a column

    Download this CSV
    All four Vexpower datasets are synthetic teaching data. A CSV you load yourself is read in your browser and never uploaded. The checks are simple heuristics (duplicates, gaps, blanks, values far from the median), not a full data audit.

    Try the geo test with the chart split by arm: you can see the treatment and comparison regions moving together before the campaign and separating after it, which is the whole idea behind difference-in-differences in one picture. On the holdout dataset, plot flexible_prediction against spend and split by split to see a model that fits the training points beautifully and goes wild between them.

    The four Vexpower datasets and what each one teaches

    These were built for the Vexpower MMM course and the simulators on this site. Each one is small on purpose, so you can read every row and know exactly what’s in it, and each one comes with a README (datasets-README.md in the same folder) that explains how it was constructed. They’re invented data, so there’s nothing confidential in them and no reason to be precious about how you use them.

    The weekly practice dataset

    mmm-practice-synthetic.csv has 104 weekly rows from January 2024 to December 2025, with revenue, spend on search, social and video in the same currency unit, and a 0/1 promotion flag. That’s the minimum shape of an MMM: two years of weekly data so each season appears twice, three channels and one control. It’s what the in-browser models on what marketing mix modeling is and the Python and Excel walkthroughs use. Its limits are deliberate: it leaves out price, distribution, competitors and macro conditions that a real model would need, so it’s for learning the mechanics, not for ranking modeling methods against each other. It’s also worth knowing that the file is exactly linear with no noise: revenue is 20,000 plus 1.4 times search, 0.8 times social and 0.6 times video spend, plus a sine-wave seasonal term and 1,800 in promotion weeks, with no adstock and no saturation built in. If you fit carryover or diminishing returns to it, the model should find close to zero decay and push saturation to its bound, which is the correct answer for this file rather than a finding about how media works.

    csv
    MMM practice dataset104 weeks of synthetic revenue, search, social and video spend and a promotion flag.
    Download

    The geo experiment dataset

    geo-experiment-synthetic.csv is a geo lift test in 96 rows: 12 invented regions in six matched pairs, observed for four weeks before and four weeks after a campaign. A shared trend lifts every region by eight between periods, the campaign adds a known eight to each treated region, and one treated region also runs a local promotion. That construction lets you reproduce three answers exactly: a naive before/after comparison on the treated regions says 17, difference-in-differences says 9, and the true media effect is 8. The extra 1 is the local promotion, which a shared control can’t remove. It’s exact arithmetic with no sampling noise, so it teaches the logic of a geo test rather than the statistics of one; for those, see statistical power for marketing tests.

    csv
    Geo experiment dataset12 regions in six matched pairs over eight weeks, with the known media lift as an answer key.
    Download

    The holdout model comparison dataset

    holdout-model-comparison-synthetic.csv has 32 observations of an invented spend input and a noisy outcome. Every fourth row is held out, leaving 24 for training, and the file includes predictions from two polynomial fits trained only on those 24: a restrained degree-three curve and a flexible degree-fourteen one. The flexible fit has the lower training error and the much higher holdout error, which is overfitting in its most visible form. It’s the dataset behind the demo on MMM validation. It isn’t an MMM, and its point is narrow: good predictive accuracy is necessary but doesn’t prove that a model’s channel split is right.

    csv
    Holdout model comparison dataset32 observations with a training/holdout split and two polynomial fits.
    Download

    The Northstar decision pack

    Northstar is the invented online homeware brand that runs through the whole Vexpower course, and its decision pack is the closest thing here to a real MMM handoff. The zip contains a brief (finance has authorised £300,000 for a quarter, and the marketing lead wants to move £30,000 from search to social), a data dictionary, a messy weekly input file, a source-corrections file, planning evidence for four allocations under three social-response scenarios and two margins, a model review, a decision memo template, a marking rubric and an answer key with a verification script. The messy file is a copy of the practice dataset with 105 rows instead of 104 and four planted problems: a blank social spend cell, a search value recorded in thousands, a duplicated week and a week labeled on a Tuesday instead of a Monday. It’s the dataset I’d point anyone to who wants to practise the unglamorous part of the job, which in my experience is where most models actually go wrong. The Northstar example walks through it end to end.

    zip
    Northstar decision packBrief, data dictionary, messy data, corrections, planning evidence, model review, memo template, rubric and answer key.
    Download

    Free MMM datasets from Robyn, Meridian and PyMC-Marketing

    The open-source libraries all ship sample data, and it’s the data their tutorials are written against, so it’s the fastest way to get a working model before you bring your own. All of it is simulated. The table summarizes what I found in each file.

    DatasetSource and licenseShapeWhat’s in it
    dt_simulated_weeklyRobyn, MIT208 weeks, Nov 2015 to Nov 2019Revenue; TV, out-of-home, print, search and Facebook spend; Facebook impressions; search clicks; competitor sales; events; newsletter
    dt_prophet_holidaysRobyn, MIT87,651 rows (CSV copy), 123 countries, 1995 to 2044Date, holiday name, country code and year, for Prophet’s holiday effects
    geo_all_channels.csvMeridian, Apache 2.040 geos × 156 weeks, Jan 2021 to Jan 2024Impressions and spend for five paid channels, one organic channel, competitor sales and sentiment controls, promo, conversions, revenue per conversion, population
    national_all_channels.csvMeridian, Apache 2.0156 weeksThe same variables aggregated nationally
    geo_media_rf.csvMeridian, Apache 2.020 geos × 156 weeksFour channels, one of them with reach and frequency columns
    mmm_example.csvPyMC-Marketing, Apache 2.0179 weeks, Apr 2018 to Aug 2021Outcome y, two channels x1 and x2, two event dummies, day of year and a trend index
    mmm_multidimensional_example.csvPyMC-Marketing, Apache 2.02 geos × 159 weeks, Jun 2022 to Jun 2025Two channels, two events and y per geo
    mmm_roas_data.csvPyMC-Marketing, Apache 2.0131 weeks, Oct 2021 to Mar 2024Two channels plus the true adstocked, saturated effect of each, so you can check your estimates
    case_study_data.csvPyMC-Marketing, from sibylhe/mmm_stan (MIT)209 weeks, Aug 2014 to Jul 2018, 80 columnsImpressions for 13 channels, spend for 10, sales, CPI, gas price, store count, markdowns, retail holidays and seasonal dummies

    Robyn’s two datasets load in R with data("dt_simulated_weekly") and data("dt_prophet_holidays"), and the Python port keeps CSV copies in its tutorial resources folder. The column names follow a simple pattern, with an _S suffix on every spend column and _I on Facebook impressions, which makes it easy to see which variables Robyn treats as paid media. It’s a good first dataset because it has the mix of channels a real advertiser has, but there’s no regional dimension, so it can’t teach you anything about geo-level modeling.

    Meridian’s files are the richest of the official samples. The geo-level file is what the getting-started notebook loads, and it’s the best public dataset for learning hierarchical, geo-level MMM, because 40 regions give the model far more variation than one national series. The outcome is conversions with a separate revenue-per-conversion column, which is how Meridian likes its inputs and worth copying in your own data. The channel names are anonymised (Channel0 to Channel4), so there’s no business story to sanity-check against.

    PyMC-Marketing’s mmm_example.csv is the smallest and the easiest to read, with just two channels, and it’s what the library’s main example notebook uses. The one I’d single out is mmm_roas_data.csv, because it includes the true effect of each channel alongside the inputs, which makes it a proper test of whether a model can recover what it should. case_study_data.csv is the largest and most realistic-looking; it originally comes from Sibyl He’s mmm_stan project, whose README describes it as a more complicated, real-world setting without saying where the data came from, so I’d use it for practice with lots of channels and controls rather than as a benchmark.

    Marketing mix modeling datasets on Kaggle

    Kaggle has fewer genuine MMM datasets than a search suggests, and the licenses vary, so I’ve listed only the ones that are actually weekly or monthly media-and-sales data and noted what each license field says.

    • Marketing Mix Modelling (MMM) dataset (Nafees Sayyed, CC0): synthetic weekly data from January 2022 to December 2025 with sales, spend on seven channels (Instagram, Google Ads, TV, YouTube, newspaper, influencer and OTT), competitor spend, a promotion field and a holiday flag. Missing values are included on purpose for cleaning practice.
    • MMM Weekly Data - Geo:India (Subhagato Adak, Apache 2.0): a synthetic FMCG panel of 11,232 rows and 28 columns, covering 156 weeks from July 2022 to June 2025 across eight Indian regions, three brands and nine SKUs, with media, trade promotion, price, distribution and macro variables. It’s the most complete public panel I found for practising hierarchical models with price and distribution in them.
    • Sample Media Spends Data (Yogesh Agrawal, license listed as “Data files © Original Authors”): 3,051 rows covering 26 divisions over 113 weeks from January 2018 to February 2020, with sales and views or impressions for YouTube (paid and organic), Google, email, Facebook and affiliates. Despite the name, the channel columns are exposure rather than spend, so you can’t compute ROAS from it.
    • DT MART: Market Mix Modeling (Aman Miglani, license listed as “Data files © Original Authors”): order-level ecommerce sales with monthly media investment across nine channels from July 2015 to June 2016, plus NPS scores and a sale calendar. It’s good practice in aggregating transaction data to a modeling grain, but 12 months of monthly media is far too little to estimate channel effects.

    You’ll also see the “Advertising” dataset everywhere, often titled as a marketing mix dataset. It’s the 200-market example from An Introduction to Statistical Learning (TV, radio and newspaper budgets against sales), and it’s cross-sectional rather than a time series, so there’s no adstock, no seasonality and nothing that behaves like a real MMM. It’s fine for learning linear regression and not much else.

    How to choose a dataset for what you’re trying to learn

    The right dataset depends on the skill you’re practising. To learn regression and decomposition, use something small where you can see every row, such as the Vexpower practice data or PyMC-Marketing’s mmm_example.csv; for adstock and saturation, use a file that actually has them built in, like mmm_roas_data.csv or Robyn’s demo data, because the Vexpower practice file has neither. To learn a specific library, use its own sample data first, because the tutorials, defaults and column conventions are built around it, then move your own data into the same shape. To learn geo-level and hierarchical modeling, use Meridian’s geo file or the India FMCG panel. And to test whether a method actually recovers true effects, use a dataset with the answer included, such as mmm_roas_data.csv or the Vexpower geo test, rather than one where you can only judge the fit.

    To learn what a real project feels like, use the Northstar pack, because finding the blank cell, the duplicated week and the value in the wrong units is a bigger part of the work than fitting the model. When you’re ready to move to your own data, the MMM data requirements page has a sufficiency checker and a data template, and the templates page collects every workbook, brief and memo template on the site.

    Downloads

    csv
    MMM practice dataset (CSV)104 weeks of synthetic revenue, search, social and video spend and a promotion flag.
    Download
    csv
    Geo experiment dataset (CSV)12 regions in six matched pairs over eight weeks, with the known media lift included as an answer key.
    Download
    csv
    Holdout model comparison dataset (CSV)32 observations with a training/holdout split and a restrained and a flexible polynomial fit.
    Download
    csv
    Northstar messy weekly inputs (CSV)The Northstar handoff file on its own, with four planted data problems to find before modeling.
    Download
    zip
    Northstar decision pack (ZIP)The full invented Northstar case: brief, data dictionary, messy data, corrections, planning evidence, memo template, rubric and answer key.
    Download

    Frequently asked questions

    Where can I find a marketing mix modeling dataset?

    The most useful free MMM datasets come with the open-source libraries: Robyn ships dt_simulated_weekly, Google's Meridian repository has simulated national and geo-level CSVs, and PyMC-Marketing's data folder has several example files. Vexpower publishes three small synthetic teaching datasets and a messy Northstar case file, and Kaggle has a handful of MMM datasets, though you should check each license.

    Is there a public marketing mix modeling dataset with real company data?

    Very rarely, because spend and sales data are commercially sensitive. Almost every public MMM dataset is simulated, including the official Robyn, Meridian and PyMC-Marketing examples. A few Kaggle datasets look real, but their provenance and license are often unclear, so they are better for practice than for benchmarking methods.

    What dataset does Robyn use in its demo?

    Robyn's demo uses dt_simulated_weekly, a simulated dataset of 208 weeks from November 2015 to November 2019 with revenue, spend on TV, out-of-home, print, search and Facebook, Facebook impressions, search clicks, competitor sales, events and newsletter activity. It also uses dt_prophet_holidays, a table of public holidays by country used for the Prophet decomposition.

    How much data do you need for a marketing mix model?

    A common rule of thumb is at least two years of weekly data, about 104 observations, so the model sees each season twice, with enough variation in each channel's spend to separate its effect. Regional data multiplies the number of observations and is one of the best ways to make a small dataset more informative.

    What is in Google Meridian's sample data?

    Meridian's repository includes simulated CSV, Excel and pickle files. The main geo file covers 40 regions over 156 weeks from January 2021 to January 2024, with impressions and spend for five paid channels, one organic channel, two control variables, a promotion variable, conversions, revenue per conversion and population. There are national versions and a reach and frequency version too.

    References

    1. Robyn, R/R/data.R and tutorial resources (Meta Marketing Science) dt_simulated_weekly and dt_prophet_holidays; MIT licence. CSV copies in python/src/robyn/tutorials/resources.
    2. Meridian, simulated_data folder (Google) Apache 2.0. Columns and dimensions read from the CSVs on 24 October 2026.
    3. Meridian getting-started notebook Loads simulated_data/csv/geo_all_channels.csv.
    4. PyMC-Marketing, data folder (PyMC Labs) Apache 2.0. mmm_example.csv, mmm_multidimensional_example.csv, mmm_roas_data.csv, case_study_data.csv.
    5. PyMC-Marketing, MMM example notebook
    6. PyMC-Marketing, MMM case study notebook
    7. sibylhe/mmm_stan, GitHub repository Original source of the 209-week, 13-channel dataset; MIT licence.
    8. Kaggle, Marketing Mix Modelling (MMM) dataset (Nafees Sayyed) Synthetic, CC0.
    9. Kaggle, MMM Weekly Data - Geo:India (Subhagato Adak) Synthetic, Apache 2.0.
    10. Kaggle, Sample Media Spends Data (Yogesh Agrawal) Licence listed as Data files © Original Authors.
    11. Kaggle, DT MART: Market Mix Modeling (Aman Miglani) Licence listed as Data files © Original Authors.
    12. An Introduction to Statistical Learning, data sets and resources Origin of the Advertising dataset widely copied to Kaggle.
    Mike Taylor
    Mike Taylor

    I've built marketing mix models for Monzo Bank, Booking.com, Time Out, The AA and others, advised Google, Appsflyer and Recast on MMM, and teach marketing mix modeling on LinkedIn Learning. Before that I co-founded a 50-person growth marketing agency. I write the Vexpower MMM course.

    Keep reading

    Learn MMM by doing itThe Vexpower course walks through thirty lessons on one invented brand, with simulators, Python labs and a decision case you can defend.
    See the course