EverydayPriceIndex

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 monthly

Download

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

CategoryChainsObservedJSON
Oil changes112026-09-14oil_change_prices.json
Haircuts102026-09-28haircut_prices.json
Car washes122026-09-21car_wash_prices.json
Gym memberships112026-10-05gym_prices.json
Self-storage102026-10-12storage_prices.json
Massage102026-08-17massage_prices.json
Pet grooming112026-08-24pet_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.

Cite as:
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

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