BizGapMap

Home / Grocery stores & supermarkets / California / San Bernardino County, CA

San Bernardino County, CA — Grocery stores Saturation

How many grocery stores 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. 109 ZIP codes analyzed.

Includes: Supermarkets · Grocery stores · Neighborhood food markets. Counted together because official statistics use one 445110 code.

Measured density: Range spans bands — 0.78× the U.S. rate (between 0.78× and 1.02× 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. 70 ZIP cells in this county are withheld, 48 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

Range spans the U.S. rate   San Bernardino County grocery stores — 78–102% of the U.S. rate

309 grocery stores are counted in San Bernardino County — 1.2 per 10,000 people present (residents + daytime workers), 78% of the U.S. rate of 1.6.

On the comparable ZIP set (ZIPs with a published count in every year), the total has risen 6% between 2015 and 2023 (269 → 284). 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 92284 (Yucca Valley), 92410 (San Bernardino), 92324 (Colton) — well above the national rate. On measured density alone, the lowest-density residential ZIPs with a published count are 92307 (Apple Valley), 92316 (Bloomington), 92407 (San Bernardino).

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

Measured density: San Bernardino County sits at 78% of the U.S. rate for grocery stores. 48 ZIPs with population have no published count (each 0–2 businesses), so the true per-capita rate is between 78% and 102% of the U.S. rate. Why. The highest measured density is in 92284 and 92410; the lowest measured density is in 92307 and 92316.

This is a supply-side read: it counts existing grocery stores 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.

Grocery stores
309–449
published count; upper bound counts each withheld ZIP cell as 2 (70 cells) (2023)
Per 10,000 present
1.2
residents + daytime workers
U.S. average
1.6
per 10,000 present
County index
0.78×
vs. U.S.
Latest quarter (QCEW)
344
2026 Q1 — county total
Residents
2,195,107
87 ZIPs with data
Workers
711,262
jobs located in county

Is the area growing?

Population
2,214,281
Census PEP, July 1 2024
Change since 2020
+1.4%
+30,755 people
Net migration 2024
+3,724
international +9,984, domestic −6,260
Jobs located here
841,615
LODES 2022, +9.4% since 2019

San Bernardino County had an estimated 2,214,281 residents on July 1, 2024 — 1.4% more than in 2020 (+30,755). In the latest year it gained 13,476 people: births minus deaths +9,604, international migration +9,984, domestic migration −6,260. Components are published separately and may not sum exactly.

841,615 jobs were located in the county in 2022 (+9.4% since 2019), and 942,704 employed residents lived there (+7.2% 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
91708 Chino
+379.2%
92256 Morongo Valley
+35.8%
92394 Victorville
+19.2%
ZIP losing residents
2015–19 → 2020–24
Change
91710 Chino
−14.2%
92346 Highland
−12.0%
92324 Colton
−4.3%

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. Census publishes grocery stores only combined with convenience stores in this dataset, so a grocery-only nonemployer count is not published.

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 grocery stores 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 6% since 2015

Number of grocery stores in San Bernardino 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.

269
2015
251
2018
270
2020
275
2021
285
2022
284
2023

Highest measured density

ZIP
vs. U.S. average
Index
92284 Yucca Valley
209%
92410 San Bernardino
189%
92324 Colton
162%
92313 Grand Terrace
136%
92373 Redlands
125%
92395 Victorville
123%
92354 Loma Linda
122%
92335 Fontana
114%
91786 Upland
113%
91710 Chino
104%
91737 Rancho Cucamonga
103%
92376 Rialto
100%
92277 Twentynine Palms
95%
91701 Rancho Cucamonga
94%
91762 Ontario
92%

Lowest measured density

ZIP
vs. U.S. average
Index
92307 Apple Valley
42%
92316 Bloomington
49%
92407 San Bernardino
50%
92337 Fontana
55%
91763 Montclair
59%
91709 Chino Hills
60%
92392 Victorville
62%
92374 Redlands
66%
91730 Rancho Cucamonga
66%
92404 San Bernardino
66%
91739 Rancho Cucamonga
68%
91761 Ontario
69%
92336 Fontana
69%
91764 Ontario
71%
92345 Hesperia
74%
Low measured density is not evidence of opportunity. A ZIP with few grocery stores 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.

Employment hubs & destinations

These ZIPs have far more workers (or visitors) than residents, so their counts are driven by daytime and visitor demand — not a place to read "shortage" from resident numbers alone.

ZIPNeighborhoodType ResidentsWorkersGrocery storesIndex
92408San Bernardino Employment hub 14,32553,660 3 47%
92350Loma Linda Employment hub 3442,352 0–2 —
92364Nipton Destination 797 0–2 —
92401San Bernardino Employment hub 1,6593,378 0–2 —

Scroll the table sideways to see all columns.

All ZIP codes

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

ZIPNeighborhood ResidentsWorkersGrocery stores Per 10kIndexStatus
92284Yucca Valley 25,4154,558 9 3.2 209% High density
92410San Bernardino 47,8696,508 15 2.9 189% High density
92324Colton 57,36520,473 17 2.5 162% High density
92313Grand Terrace 13,0782,241 3 2.1 136% Above average
92373Redlands 35,25721,800 9 1.9 125% Above average
92395Victorville 47,3759,843 10 1.9 123% Above average
92354Loma Linda 22,05119,065 6 1.9 122% Above average
92335Fontana 97,51130,986 20 1.8 114% Above average
91786Upland 55,82925,012 12 1.8 113% Above average
91710Chino 78,75440,333 16 1.6 104% Above average
91737Rancho Cucamonga 22,9583,913 4 1.6 103% Above average
92376Rialto 84,39425,088 15 1.5 100% Below average
92277Twentynine Palms 26,2771,626 4 1.5 95% Below average
91701Rancho Cucamonga 39,2873,424 6 1.5 94% Below average
91762Ontario 64,23511,224 10 1.4 92% Below average
92346Highland 56,17914,141 9 1.4 92% Below average
91784Upland 26,8863,894 4 1.4 89% Below average
92411San Bernardino 27,2493,739 4 1.4 88% Below average
92399Yucaipa 55,3667,769 8 1.4 87% Below average
92311Barstow 33,9546,604 5 1.3 86% Below average
92308Apple Valley 42,7095,955 6 1.3 84% Below average
92301Adelanto 38,5773,763 5 1.2 79% Below average
92405San Bernardino 31,2172,538 4 1.2 79% Below average
92345Hesperia 88,70612,884 11 1.2 74% Below average
91764Ontario 56,27031,385 8 1.1 71% Below average
92336Fontana 105,51712,653 12 1.1 69% Below average
91761Ontario 62,93580,635 11 1.1 69% Below average
91739Rancho Cucamonga 41,67311,454 5 1.1 68% Below average
92404San Bernardino 63,2439,026 7 1.0 66% Below average
91730Rancho Cucamonga 71,61351,205 10 1.0 66% Below average
92374Redlands 45,26226,678 6 1.0 66% Below average
92392Victorville 65,42914,518 7 1.0 62% Below average
91709Chino Hills 78,00614,381 8 0.9 60% Below average
91763Montclair 37,70012,536 4 0.9 59% Below average
92337Fontana 36,02621,209 4 0.9 55% Below average
92407San Bernardino 71,71110,988 6 0.8 50% Far below average
92316Bloomington 32,76513,511 3 0.8 49% Far below average
92408San Bernardino 14,32553,660 3 0.7 47% Far below average
92307Apple Valley 41,1809,065 3 0.7 42% Far below average
91708Chino 19,2137,009 0–2 — — Not published
91729Rancho Cucamonga —348 0–2 — — Not published
91743Guasti —7 0–2 — — Not published
91758Ontario —67 0–2 — — Not published
91759Mt Baldy 34176 0–2 — — Not published
91785Upland —62 0–2 — — Not published
92242Earp 1,359185 0–2 — — Not published
92252Joshua Tree 7,5381,190 0–2 — — Not published
92256Morongo Valley 4,209243 0–2 — — Not published
92267Parker Dam 0151 0–2 — — Not published
92268Pioneertown 434137 0–2 — — Not published
92278Twentynine Palms 3,913401 0–2 — — Not published
92285Landers 2,76458 0–2 — — Not published
92286Yucca Valley —24 0–2 — — Not published
92304Amboy 035 0–2 — — Not published
92305Angelus Oaks 533112 0–2 — — Not published
92309Baker 343391 0–2 — — Not published
92310Fort Irwin 8,4191,906 0–2 — — Not published
92312Barstow —28 0–2 — — Not published
92314Big Bear City 9,334601 0–2 — — Not published
92315Big Bear Lake 5,2155,701 0–2 — — Not published
92317Blue Jay 916379 0–2 — — Not published
92318Bryn Mawr —38 0–2 — — Not published
92321Cedar Glen 724100 0–2 — — Not published
92322Cedarpines Park 77028 0–2 — — Not published
92325Crestline 9,065995 0–2 — — Not published
92327Daggett 576123 0–2 — — Not published
92329Phelan —31 0–2 — — Not published
92331Fontana —280 0–2 — — Not published
92332Essex 10542 0–2 — — Not published
92333Fawnskin 30252 0–2 — — Not published
92334Fontana —258 0–2 — — Not published
92338Ludlow 073 0–2 — — Not published
92339Forest Falls 1,302140 0–2 — — Not published
92340Hesperia —188 0–2 — — Not published
92341Green Valley Lake 40698 0–2 — — Not published
92342Helendale 7,606345 0–2 — — Not published
92344Hesperia 21,3491,246 0–2 — — Not published
92347Hinkley 76689 0–2 — — Not published
92350Loma Linda 3442,352 0–2 — — Not published
92352Lake Arrowhead 6,2461,449 0–2 — — Not published
92356Lucerne Valley 6,5431,007 0–2 — — Not published
92357Loma Linda —3,094 0–2 — — Not published
92358Lytle Creek 672179 0–2 — — Not published
92359Mentone 9,284754 0–2 — — Not published
92363Needles 5,5311,076 0–2 — — Not published
92364Nipton 797 0–2 — — Not published
92365Newberry Springs 2,192178 0–2 — — Not published
92368Oro Grande 906356 0–2 — — Not published
92369Patton 2,5752,856 0–2 — — Not published
92371Phelan 21,5801,155 0–2 — — Not published
92372Pinon Hills 5,149151 0–2 — — Not published
92375Redlands —140 0–2 — — Not published
92377Rialto 20,8145,807 0–2 — — Not published
92378Rimforest 315182 0–2 — — Not published
92382Running Springs 5,215876 0–2 — — Not published
92385Skyforest 198170 0–2 — — Not published
92386Sugarloaf 2,042140 0–2 — — Not published
92391Twin Peaks 2,254171 0–2 — — Not published
92393Victorville —263 0–2 — — Not published
92394Victorville 41,6145,012 0–2 — — Not published
92397Wrightwood 5,8541,152 0–2 — — Not published
92398Yermo 2,609332 0–2 — — Not published
92401San Bernardino 1,6593,378 0–2 — — Not published
92402San Bernardino —97 0–2 — — Not published
92406San Bernardino —225 0–2 — — Not published
92415San Bernardino 0106 0–2 — — Not published
92423San Bernardino —84 0–2 — — Not published
92427San Bernardino —88 0–2 — — Not published
93562Trona 1,849500 0–2 — — Not published

Scroll the table sideways to see all columns.

Find an actual space in Ontario

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 Ontario retail space →
Crexi
Free listings + market data
Browse Ontario retail space →
CityFeet
Retail space for lease
Browse Ontario 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 San Bernardino County and grocery stores

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 445110 — supermarkets & other grocery stores. 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 344 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.55 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.