BizGapMap

Home / Fitness & recreational sports centers / California / Contra Costa County, CA

Contra Costa County, CA — Gyms Saturation

How many gyms exist per person present — residents plus daytime workers — by ZIP code, compared with the U.S. average. Establishment data: Census ZBP 2023. Population: ACS 2024 5-year. 50 ZIP codes analyzed.

Includes: Gyms & fitness centers · CrossFit boxes · Boxing, martial arts & dance studios · Recreational sports centers. Counted together because official statistics use one 713940 code.

Measured density: Above average — 1.16× the U.S. rate (between 1.16× and 1.45× once withheld ZIP cells are counted)

Why a range: Census does not publish a ZIP-by-industry count when that ZIP has 0–2 businesses. 28 ZIP cells in this county are withheld, 20 of them with residents. Each could hold 0, 1, or 2 businesses: counting them all as 0 gives the low end, counting them all as 2 gives the high end — the data cannot say where the truth sits. The density range uses only the populated cells, since ZIPs without residents are excluded from per-person rates. How ranges work

Above the U.S. rate   Contra Costa County gyms — 116–145% of the U.S. rate

158 gyms are counted in Contra Costa County — 1.2 per 10,000 people present (residents + daytime workers), 116% of the U.S. rate of 1.0.

On the comparable ZIP set (ZIPs with a published count in every year), the total has risen 26% between 2015 and 2023 (107 → 135). That set is smaller than today's county total. 2020–2021 were pandemic-distorted, and Census rounds counts, so small moves are within noise.

Measured supply density is highest in 94596 (Walnut Creek), 94598 (Walnut Creek), 94597 (Walnut Creek) — well above the national rate. On measured density alone, the lowest-density residential ZIPs with a published count are 94553 (Martinez), 94806 (San Pablo), 94801 (Richmond).

BLS QCEW puts the latest county-wide count (2026 Q1) at 179 establishments, the freshest available signal.

Measured density: Contra Costa County sits at 116% of the U.S. rate for gyms. 20 ZIPs with population have no published count (each 0–2 businesses), so the true per-capita rate is between 116% and 145% of the U.S. rate. Why. The highest measured density is in 94596 and 94598; the lowest measured density is in 94553 and 94806.

This is a supply-side read: it counts existing gyms and the people present, not foot traffic, income, rent, or whether locals want more. Treat low density as a question to check, not an answer.

Gyms
158–214
published count; upper bound counts each withheld ZIP cell as 2 (28 cells) (2023)
Per 10,000 present
1.2
residents + daytime workers
U.S. average
1.0
per 10,000 present
County index
1.16×
vs. U.S.
Latest quarter (QCEW)
179
2026 Q1 — county total
Residents
1,159,422
42 ZIPs with data
Workers
342,009
jobs located in county

Is the area growing?

Population
1,172,607
Census PEP, July 1 2024
Change since 2020
+0.6%
+6,442 people
Net migration 2024
+7,594
international +12,286, domestic −4,692
Jobs located here
379,038
LODES 2022, −2.3% since 2019

Contra Costa County had an estimated 1,172,607 residents on July 1, 2024 — 0.6% more than in 2020 (+6,442). In the latest year it gained 10,428 people: births minus deaths +2,765, international migration +12,286, domestic migration −4,692. Components are published separately and may not sum exactly.

379,038 jobs were located in the county in 2022 (−2.3% since 2019), and 523,689 employed residents lived there (+0.4% since 2019). LODES counts wage and salary jobs covered by unemployment insurance plus federal jobs; it excludes the self-employed and military, and counts jobs rather than unique people. 2019→2022 spans the pandemic, so read it as one change, not a trend.

Population and migration say whether the customer base is growing. They do not say whether people want another business of this type. Definitions and limits →  ·  Full county detail →

ZIP gaining residents
2015–19 → 2020–24
Change
94583 San Ramon
+12.4%
94582 San Ramon
+11.4%
94804 Richmond
+9.7%
ZIP losing residents
2015–19 → 2020–24
Change
94517 Clayton
−10.0%
94549 Lafayette
−4.6%
94564 Pinole
−2.6%

ACS 5-year estimates for 2015–2019 and 2020–2024. Only ZIPs with at least 2,000 residents in both windows and a change larger than the survey margin of error (90%) are listed — small ZIPs move a lot on paper without a real signal.

Nonemployer businesses

Not shown. NES 2024 does not publish fitness and recreational sports centers (NAICS 71394); only the broader recreation group (7139) is available.

Census Nonemployer Statistics 2024 (NAICS 2022). We do not approximate this figure.

Saturation map

Each ZIP area is shaded by its density of this business type per person present (residents + workers) vs. the U.S. average. Click any ZIP to zoom to its boundary, see its numbers, and switch to aerial imagery. Individual mapped shops appear as dots at street level — Show locations zooms you in to them (scroll or double-click to zoom).

Basemap:
Under 50% 50–100% 100–150% 150–250% 250%+ 0–2 (not published) / no data ZIP total (dot size) Mapped shop (OpenStreetMap, street level)

Map data © OpenStreetMap contributors, tiles by OpenFreeMap.

White dots are ZIP totals from the official Census count — the bigger the dot, the more gyms in that ZIP. They are aggregated, not individual shops. Turquoise dots are individual locations mapped in OpenStreetMap, shown only at street level; they are crowd-sourced and indicative, may be incomplete, and do not equal the official counts. Only the official ZIP totals feed the saturation index.

Market trend — up 26% since 2015

Number of gyms in Contra Costa County across 2015–2023, on a consistent set of ZIP codes present in every year — so changes are real, not ZIP-boundary artifacts. 2015/2018 are pre-pandemic baselines; 2020/2021 are COVID-distorted.

107
2015
127
2018
140
2020
130
2021
132
2022
135
2023

Highest measured density

ZIP
vs. U.S. average
Index
94596 Walnut Creek
418%
94598 Walnut Creek
316%
94597 Walnut Creek
313%
94549 Lafayette
296%
94526 Danville
288%
94563 Orinda
279%
94518 Concord
262%
94583 San Ramon
253%
94523 Pleasant Hill
189%
94507 Alamo
182%
94556 Moraga
163%
94520 Concord
161%
94521 Concord
109%
94509 Antioch
102%
94506 Danville
101%

Lowest measured density

ZIP
vs. U.S. average
Index
94553 Martinez
51%
94806 San Pablo
57%
94801 Richmond
75%
94531 Antioch
78%
94804 Richmond
95%
94513 Brentwood
98%
94530 El Cerrito
99%
94506 Danville
101%
94509 Antioch
102%
94521 Concord
109%
94520 Concord
161%
94556 Moraga
163%
94507 Alamo
182%
94523 Pleasant Hill
189%
94583 San Ramon
253%
Low measured density is not evidence of opportunity. A ZIP with few gyms may simply lack foot traffic, retail space, or demand. We rank only residential and mixed ZIPs here; employment hubs and visitor destinations are listed separately below. ZIPs where Census did not publish a count (0–2 businesses) are not ranked: they may be the least served of all, but the data cannot tell 0 from 1 or 2. Verify those locally.

All ZIP codes

Click a column header to sort. Index = gyms per 10,000 people present (residents + 0.5×workers) ÷ the U.S. average. 100% = exactly average.

ZIPNeighborhood ResidentsWorkersGyms Per 10kIndexStatus
94596Walnut Creek 23,41732,387 17 4.3 418% Very high density
94598Walnut Creek 27,20619,695 12 3.2 316% Very high density
94597Walnut Creek 23,1299,694 9 3.2 313% Very high density
94549Lafayette 28,4208,904 10 3.0 296% Very high density
94526Danville 32,5849,129 11 3.0 288% Very high density
94563Orinda 19,3783,136 6 2.9 279% Very high density
94518Concord 27,3454,884 8 2.7 262% Very high density
94583San Ramon 39,58336,442 15 2.6 253% Very high density
94523Pleasant Hill 34,59213,469 8 1.9 189% High density
94507Alamo 14,5862,912 3 1.9 182% High density
94556Moraga 15,9983,857 3 1.7 163% High density
94520Concord 37,38146,364 10 1.7 161% High density
94521Concord 41,9095,659 5 1.1 109% Above average
94509Antioch 70,09012,352 8 1.0 102% Above average
94506Danville 27,0553,616 3 1.0 101% Above average
94530El Cerrito 26,4016,230 3 1.0 99% Below average
94513Brentwood 69,75519,262 8 1.0 98% Below average
94804Richmond 44,89113,241 5 1.0 95% Below average
94531Antioch 46,3877,748 4 0.8 78% Below average
94801Richmond 33,59110,717 3 0.8 75% Below average
94806San Pablo 62,54611,191 4 0.6 57% Below average
94553Martinez 48,64317,214 3 0.5 51% Below average
94505Discovery Bay 14,9701,170 0–2 — — Not published
94511Bethel Island 1,864239 0–2 — — Not published
94514Byron 1,953680 0–2 — — Not published
94516Canyon 2145 0–2 — — Not published
94517Clayton 12,3161,819 0–2 — — Not published
94519Concord 19,0582,129 0–2 — — Not published
94522Concord —17 0–2 — — Not published
94524Concord —191 0–2 — — Not published
94525Crockett 3,3721,164 0–2 — — Not published
94528Diablo 1,049170 0–2 — — Not published
94529Concord —49 0–2 — — Not published
94547Hercules 26,3024,695 0–2 — — Not published
94548Knightsen 83260 0–2 — — Not published
94561Oakley 46,3683,601 0–2 — — Not published
94564Pinole 18,7615,145 0–2 — — Not published
94565Pittsburg 100,48812,568 0–2 — — Not published
94569Port Costa 29651 0–2 — — Not published
94570Moraga —5 0–2 — — Not published
94572Rodeo 8,9761,252 0–2 — — Not published
94575Moraga 97577 0–2 — — Not published
94582San Ramon 47,4242,450 0–2 — — Not published
94595Walnut Creek 16,9882,908 0–2 — — Not published
94802Richmond —424 0–2 — — Not published
94803El Sobrante 27,6592,054 0–2 — — Not published
94805Richmond 14,6701,669 0–2 — — Not published
94807Richmond —69 0–2 — — Not published
94808Richmond —28 0–2 — — Not published
94820El Sobrante —4 0–2 — — Not published

Scroll the table sideways to see all columns.

Find an actual space in Concord

The numbers above tell you how the market looks. To find a specific storefront, these marketplaces list available retail space for lease.

LoopNet
Largest commercial marketplace
Browse Concord retail space →
Crexi
Free listings + market data
Browse Concord retail space →
CityFeet
Retail space for lease
Browse Concord retail space →

Open vacancy data (actual empty units) is only published by some cities; where it exists we show it directly. Listings above are third-party.

Census withholds some ZIP-by-industry cells to protect small businesses. 0–2 means the cell was not published (Census publishes industry counts only at 3+ per ZIP), so the ZIP is left unranked rather than counted as zero. ~ means the count is estimated from the broader industry group and can be off by a business or two.

Follow Contra Costa County and gyms

When a data vintage changes or a section of this report is revised, we post it to a public update feed. No email address, no account, no tracking — and nothing is sent unless something actually changed.

Subscribe to updates (RSS) How these numbers are built →

Methodology & sources

Establishments. U.S. Census ZIP Code Business Patterns (ZBP 2023), NAICS 713940 — fitness & recreational sports centers (gyms). Counts establishments with paid employees. ZBP is published annually with a ~2-year lag.

Fresh county signal. BLS QCEW (quarterly) is newer than ZBP — 2026 Q1 shows 179 establishments county-wide for this industry. It cannot be broken down by ZIP.

Population. U.S. Census American Community Survey 2024 5-year ZCTA population (table B01003). Workers are the ZIP's total employment from the same 2023 ZBP file.

Demand ("people present"). Demand comes from residents and daytime workers: residents + 0.5 × workers. This is the single documented assumption in the model and can be tuned.

Index. index = (ZIP establishments ÷ ZIP demand × 10,000) ÷ the U.S. average for this industry (1.03 per 10,000 present). It is a supply-side density measure; it does not capture income, rent, tourism, or whether locals actually want more.

Read the full methodology →  ·  Data sources & vintages →

BizGapMap — free, no-login small-business saturation reports for major U.S. counties. Built entirely from public U.S. Census, BLS, and IRS data (ZBP 2023, ACS 2024 5-year, PEP 2024, LODES, QCEW, IRS SOI). No forecasts, no revenue guesses — withheld cells are marked, and the few derived counts are labelled as estimates.