The Everyday Price Index open dataset
Every number behind this site, free to download and free to republish. 257 dated price observations across 75 national service chains in 7 categories. CSV and JSON, CC BY 4.0.
Last CSV build: 2026-10-12 · source files current to 2026-10-12 · re-checked monthlyDownload
The CSV is the whole dataset in one long-format table — one row per chain per price measure, so categories with different price shapes (a gym has an annual fee, a haircut doesn't) sit together without inventing empty columns.
Download full CSV (257 rows) Per-category JSON →
Columns: category, chain_slug, chain, model, measure, low_usd, high_usd, typical_usd, note, unit, observed_date, chain_last_checked, chain_verified_latest_cycle, chain_price_publication, chain_price_publication_checked, sources.
Added 31 August 2026, extended 7 and 21 September: the two chain_price_publication columns record whether the chain publishes a customer price on its own website at all — published, store_pages_only, partial or not_published, with the date we checked. Blank means we have not audited that chain yet; it does not mean “publishes.” 58 of the 75 chains are audited so far. Label change, 7 September 2026: two values were respelled — location-only is now store_pages_only and not published is now not_published — so the column holds four machine-readable values in one convention rather than four meanings in six spellings. The meanings did not change. If you pulled the CSV before 7 September, remap those two. The findings, with every chain named →
What's in it
| Category | Chains | Observed | JSON |
|---|---|---|---|
| Oil changes | 11 | 2026-09-14 | oil_change_prices.json |
| Haircuts | 10 | 2026-09-28 | haircut_prices.json |
| Car washes | 12 | 2026-09-21 | car_wash_prices.json |
| Gym memberships | 11 | 2026-10-05 | gym_prices.json |
| Self-storage | 10 | 2026-10-12 | storage_prices.json |
| Massage | 10 | 2026-08-17 | massage_prices.json |
| Pet grooming | 11 | 2026-08-24 | pet_grooming_prices.json |
The observed_date column carries the real per-category observation date, not the build date. chain_last_checked (added August 2026) carries the date each individual chain was last re-verified — when the two differ, that chain was carried forward from an earlier cycle rather than re-quoted, and we would rather tell you that than let a category date imply a freshness we did not earn. Corrected 17 August 2026: until this build, a chain with no individual date silently inherited the category date, so 31 carried-forward chains were published as if freshly re-checked — the exact overclaim the column was added to prevent. Every row now carries its own true date plus a chain_verified_latest_cycle flag; 43 of the 257 rows say “no — carried forward”.
License and citation
Released under Creative Commons Attribution 4.0. Use it commercially, republish it, chart it, feed it to a model — the only condition is attribution.
Everyday Price Index (2026). Everyday Price Index — US Service Chain Price Observations. Retrieved from https://everydaypriceindex.com/data.html
Loading it takes one line:
import pandas as pd
df = pd.read_csv("https://everydaypriceindex.com/DATA/everyday_price_index_all.csv")
df.query("category == 'gym'")[["chain", "measure", "low_usd", "high_usd"]]
What makes this different from the price pages you usually find
- Every figure is dated. An undated price is a guess. Ours carry the month they were observed, in the data itself, not just in prose.
- Every figure names its sources. They travel in the
sourcescolumn, so you can check us. - Gaps stay gaps. Where a chain genuinely publishes no price — Woof Gang quotes by breed and coat, self-storage operators quote by zip code — the record is band-free and says why. There are no filler numbers anywhere in this dataset, which is the entire reason it is worth citing.
- It gets re-checked. Monthly cycle, and the observation dates move even when the price doesn't, because "verified unchanged" is a finding too.
Full write-up: our methodology →
Found an error, or want a category added?
Corrections are welcome and get folded into the next monthly cycle, and we publish them openly rather than quietly overwriting the old number. If you're using this dataset for research, journalism or a tool, you don't need permission — but we'd like to know, so we can prioritise the categories people actually use.
Email corrections@everydaypriceindex.com — or see what makes a correction quick to act on.
All guides: Oil Changes · Haircuts · Car Washes · Gyms · Storage · Massage · Pet Grooming · Methodology · Corrections · Home