BizGapMap

Home / Offices of physical, occupational & speech therapists / Illinois / Cook County, IL

Cook County, IL — Physical therapy Saturation

How many physical therapy 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. 186 ZIP codes analyzed.

Includes: Physical therapy clinics · Occupational therapy offices · Speech therapy offices · Audiology offices. Counted together because official statistics use one 621340 code.

Measured density: Above average — 1.15× the U.S. rate (between 1.15× and 1.30× 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. 82 ZIP cells in this county are withheld, 62 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   Cook County physical therapy — 115–130% of the U.S. rate

939 physical therapy are counted in Cook County — 1.5 per 10,000 people present (residents + daytime workers), 115% of the U.S. rate of 1.3.

On the comparable ZIP set (ZIPs with a published count in every year), the total has risen 40% between 2015 and 2023 (596 → 835). 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 60463 (Palos Heights), 60467 (Orland Park), 60302 (Oak Park) — well above the national rate. On measured density alone, the lowest-density residential ZIPs with a published count are 60804 (Cicero), 60629 (Chicago), 60639 (Chicago).

Census County Business Patterns (2023) puts the county-wide count at 1,015 establishments, including locations in ZIP codes that do not map to a ZCTA — so it can run slightly above the sum of the ZIP rows on this page. It is annual, so it lags more than QCEW.

Measured density: Cook County sits at 115% of the U.S. rate for physical therapy. 62 ZIPs with population have no published count (each 0–2 businesses), so the true per-capita rate is between 115% and 130% of the U.S. rate. Why. The highest measured density is in 60463 and 60467; the lowest measured density is in 60804 and 60629.

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

Physical therapy
939–1,103
published count; upper bound counts each withheld ZIP cell as 2 (82 cells) (2023)
Per 10,000 present
1.5
residents + daytime workers
U.S. average
1.3
per 10,000 present
County index
1.15×
vs. U.S.
Latest year (CBP)
1,015
2023 — $444M annual payroll
Residents
5,132,257
166 ZIPs with data
Workers
2,445,383
jobs located in county

Is the area growing?

Population
5,182,617
Census PEP, July 1 2024
Change since 2020
−1.6%
−84,455 people
Net migration 2024
+30,570
international +67,763, domestic −37,193
Jobs located here
2,616,104
LODES 2022, −1.9% since 2019

Cook County had an estimated 5,182,617 residents on July 1, 2024 — 1.6% fewer than in 2020 (−84,455). In the latest year it gained 40,095 people: births minus deaths +9,459, international migration +67,763, domestic migration −37,193. Components are published separately and may not sum exactly.

2,616,104 jobs were located in the county in 2022 (−1.9% since 2019), and 2,331,664 employed residents lived there (−3.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
60654 Chicago
+28.6%
60605 Chicago
+24.6%
60611 Chicago
+13.5%
ZIP losing residents
2015–19 → 2020–24
Change
60445 Midlothian
−44.7%
60426 Harvey
−16.7%
60827 Riverdale
−13.2%

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 (no paid employees)

Nonemployer businesses
1,988
no paid employees (2024)
Receipts
$81.4M
published gross receipts
Receipts per business
$41K
gross, not profit

Census Nonemployer Statistics counts businesses with no paid employees — a separate universe from the employer establishments counted above; a business is in one or the other, never both. They are not storefronts by definition: many are home-based, mobile, or part-time.

We show them beside the density index, not inside it. In categories such as nail and beauty salons, child care, and pet care, one-person businesses can outnumber employer establishments, so the employer-only count understates how many businesses exist. That is not evidence of higher demand.

Receipts are gross revenue reported for these businesses — not profit, and not the size of the local market. Census publishes this only at county level, so it is not shown on the ZIP map. See methodology.

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 physical therapy 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 40% since 2015

Number of physical therapy in Cook 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.

596
2015
684
2018
731
2020
771
2021
817
2022
835
2023

Highest measured density

ZIP
vs. U.S. average
Index
60463 Palos Heights
553%
60467 Orland Park
489%
60302 Oak Park
406%
60712 Lincolnwood
383%
60068 Park Ridge
367%
60614 Chicago
359%
60462 Orland Park
342%
60805 Evergreen Park
340%
60194 Schaumburg
312%
60005 Arlington Heights
299%
60154 Westchester
296%
60304 Oak Park
295%
60091 Wilmette
284%
60093 Winnetka
281%
60062 Northbrook
277%

Lowest measured density

ZIP
vs. U.S. average
Index
60804 Cicero
26%
60629 Chicago
28%
60639 Chicago
34%
60612 Chicago
40%
60608 Chicago
41%
60193 Schaumburg
52%
60707 Elmwood Park
53%
60107 Streamwood
55%
60402 Berwyn
56%
60626 Chicago
58%
60133 Hanover Park
58%
60018 Des Plaines
60%
60632 Chicago
63%
60652 Chicago
71%
60641 Chicago
72%
Low measured density is not evidence of opportunity. A ZIP with few physical therapy 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 ResidentsWorkersPhysical therapyIndex
60602Chicago Destination 1,48033,916 5 211%
60607Chicago Employment hub 32,39268,600 17 198%
60173Schaumburg Employment hub 13,65052,694 10 194%
60611Chicago Employment hub 37,70589,024 16 151%
60601Chicago Employment hub 15,23583,170 9 123%
60654Chicago Employment hub 25,75568,006 9 117%
60661Chicago Employment hub 11,39864,670 3 53%
60606Chicago Destination 3,840203,655 5 37%
60141Hines Destination 1953,318 0–2 —
60208Evanston Destination 25520,972 0–2 —

Scroll the table sideways to see all columns.

All ZIP codes

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

ZIPNeighborhood ResidentsWorkersPhysical therapy Per 10kIndexStatus
60301Oak Park 3,4754,793 5 8.5 662% Very high density
60463Palos Heights 13,7226,296 12 7.1 553% Very high density
60456Hometown 4,215339 3 6.8 532% Very high density
60467Orland Park 24,3988,422 18 6.3 489% Very high density
60302Oak Park 32,8627,083 19 5.2 406% Very high density
60712Lincolnwood 13,11210,293 9 4.9 383% Very high density
60068Park Ridge 38,65015,904 22 4.7 367% Very high density
60614Chicago 70,69327,556 39 4.6 359% Very high density
60462Orland Park 41,45617,270 22 4.4 342% Very high density
60805Evergreen Park 19,4206,844 10 4.4 340% Very high density
60194Schaumburg 19,7565,345 9 4.0 312% Very high density
60005Arlington Heights 28,84320,389 15 3.8 299% Very high density
60154Westchester 16,4369,124 8 3.8 296% Very high density
60304Oak Park 16,9552,964 7 3.8 295% Very high density
60091Wilmette 27,3335,627 11 3.6 284% Very high density
60093Winnetka 19,86710,004 9 3.6 281% Very high density
60062Northbrook 41,40646,099 23 3.6 277% Very high density
60642Chicago 21,78921,425 11 3.4 263% Very high density
60646Chicago 28,7808,214 11 3.3 260% Very high density
60657Chicago 71,90420,985 27 3.3 255% Very high density
60453Oak Lawn 56,86120,791 21 3.1 243% High density
60656Chicago 29,5385,140 10 3.1 242% High density
60077Skokie 28,50120,601 12 3.1 241% High density
60070Prospect Heights 15,4961,603 5 3.1 239% High density
60643Chicago 45,9429,019 15 3.0 231% High density
60439Lemont 24,19212,721 9 2.9 229% High density
60130Forest Park 13,9437,440 5 2.8 220% High density
60477Tinley Park 35,97613,621 12 2.8 218% High density
60305River Forest 11,9924,595 4 2.8 218% High density
60558Western Springs 13,4462,222 4 2.7 214% High density
60026Glenview 14,0698,480 5 2.7 212% High density
60602Chicago 1,48033,916 5 2.7 211% High density
60053Morton Grove 24,61910,528 8 2.7 208% High density
60076Skokie 32,95319,696 11 2.6 200% High density
60640Chicago 65,44517,714 19 2.6 199% High density
60607Chicago 32,39268,600 17 2.5 198% High density
60192Hoffman Estates 16,4617,007 5 2.5 195% High density
60613Chicago 52,24415,412 15 2.5 195% High density
60173Schaumburg 13,65052,694 10 2.5 194% High density
60457Hickory Hills 14,5033,211 4 2.5 193% High density
60025Glenview 41,68915,355 12 2.4 189% High density
60622Chicago 54,60925,035 16 2.4 185% High density
60429Hazel Crest 14,8644,802 4 2.3 180% High density
60525La Grange 31,32441,056 12 2.3 180% High density
60655Chicago 28,4343,995 7 2.3 179% High density
60630Chicago 55,4869,520 13 2.2 168% High density
60546Riverside 16,3224,686 4 2.1 167% High density
60605Chicago 36,21022,820 10 2.1 163% High density
60618Chicago 91,90120,260 21 2.1 160% High density
60638Chicago 57,07437,741 15 2.0 154% High density
60611Chicago 37,70589,024 16 1.9 151% High density
60610Chicago 44,88324,563 11 1.9 150% Above average
60714Niles 30,30524,130 8 1.9 147% Above average
60016Des Plaines 60,89817,329 13 1.9 145% Above average
60131Franklin Park 18,05417,688 5 1.9 145% Above average
60415Chicago Ridge 14,0994,484 3 1.8 143% Above average
60007Elk Grove Village 32,59244,419 10 1.8 142% Above average
60706Harwood Heights 24,2607,647 5 1.8 138% Above average
60067Palatine 38,20413,951 8 1.8 138% Above average
60615Chicago 42,9757,045 8 1.7 134% Above average
60056Mount Prospect 55,81817,452 11 1.7 133% Above average
60452Oak Forest 26,7395,281 5 1.7 132% Above average
60647Chicago 84,74918,625 16 1.7 132% Above average
60616Chicago 54,30824,459 11 1.7 129% Above average
60443Matteson 20,6637,534 4 1.6 127% Above average
60004Arlington Heights 51,83520,130 10 1.6 126% Above average
60201Evanston 43,74425,259 9 1.6 124% Above average
60601Chicago 15,23583,170 9 1.6 123% Above average
60438Lansing 28,8067,275 5 1.5 120% Above average
60465Palos Hills 18,0813,499 3 1.5 118% Above average
60654Chicago 25,75568,006 9 1.5 117% Above average
60008Rolling Meadows 22,80021,481 5 1.5 116% Above average
60513Brookfield 19,3433,146 3 1.4 112% Above average
60631Chicago 30,92423,781 6 1.4 109% Above average
60645Chicago 48,2084,307 7 1.4 108% Above average
60202Evanston 32,3417,547 5 1.4 108% Above average
60455Bridgeview 16,87210,328 3 1.4 106% Above average
60169Hoffman Estates 33,40110,355 5 1.3 101% Above average
60659Chicago 41,7289,683 6 1.3 100% Above average
60660Chicago 42,72411,098 6 1.2 97% Below average
60090Wheeling 38,29820,419 6 1.2 96% Below average
60625Chicago 76,76012,820 10 1.2 94% Below average
60160Melrose Park 24,54917,614 4 1.2 93% Below average
60473South Holland 21,22510,974 3 1.1 87% Below average
60634Chicago 73,8859,038 8 1.0 79% Below average
60617Chicago 74,7909,915 8 1.0 78% Below average
60074Palatine 36,4608,793 4 1.0 76% Below average
60641Chicago 68,89412,906 7 0.9 72% Below average
60652Chicago 41,0745,715 4 0.9 71% Below average
60632Chicago 89,10720,101 8 0.8 63% Below average
60018Des Plaines 27,95247,694 4 0.8 60% Below average
60133Hanover Park 36,7326,371 3 0.8 58% Below average
60626Chicago 49,6627,775 4 0.7 58% Below average
60402Berwyn 63,72112,054 5 0.7 56% Below average
60107Streamwood 38,8866,624 3 0.7 55% Below average
60661Chicago 11,39864,670 3 0.7 53% Below average
60707Elmwood Park 41,1166,357 3 0.7 53% Below average
60193Schaumburg 40,1469,409 3 0.7 52% Below average
60608Chicago 80,73729,377 5 0.5 41% Far below average
60612Chicago 35,74444,360 3 0.5 40% Far below average
60606Chicago 3,840203,655 5 0.5 37% Far below average
60639Chicago 84,24015,433 4 0.4 34% Far below average
60629Chicago 108,3248,370 4 0.4 28% Far below average
60804Cicero 82,79714,661 3 0.3 26% Far below average
60006Arlington Heights —36 0–2 — — Not published
60017Des Plaines —170 0–2 — — Not published
60022Glencoe 8,3522,391 0–2 — — Not published
60029Golf 51888 0–2 — — Not published
60043Kenilworth 2,503555 0–2 — — Not published
60065Northbrook —201 0–2 — — Not published
60078Palatine —40 0–2 — — Not published
60082Techny —184 0–2 — — Not published
60104Bellwood 18,2563,868 0–2 — — Not published
60141Hines 1953,318 0–2 — — Not published
60153Maywood 23,20111,871 0–2 — — Not published
60155Broadview 7,9066,792 0–2 — — Not published
60159Schaumburg —14 0–2 — — Not published
60161Melrose Park —61 0–2 — — Not published
60162Hillside 8,0847,285 0–2 — — Not published
60163Berkeley 5,1991,517 0–2 — — Not published
60164Melrose Park 20,8728,892 0–2 — — Not published
60165Stone Park 4,4821,140 0–2 — — Not published
60168Schaumburg —27 0–2 — — Not published
60171River Grove 10,4512,096 0–2 — — Not published
60176Schiller Park 11,3936,458 0–2 — — Not published
60179Hoffman Estates —1,237 0–2 — — Not published
60195Schaumburg 4,3975,331 0–2 — — Not published
60196Schaumburg —3,103 0–2 — — Not published
60203Evanston 4,680390 0–2 — — Not published
60204Evanston —160 0–2 — — Not published
60208Evanston 25520,972 0–2 — — Not published
60303Oak Park —20 0–2 — — Not published
60406Blue Island 23,3274,972 0–2 — — Not published
60409Calumet City 35,1007,660 0–2 — — Not published
60411Chicago Heights 52,17515,397 0–2 — — Not published
60412Chicago Heights —43 0–2 — — Not published
60418Crestwood 10,5722,133 0–2 — — Not published
60419Dolton 20,8252,530 0–2 — — Not published
60422Flossmoor 9,5421,424 0–2 — — Not published
60425Glenwood 8,7141,909 0–2 — — Not published
60426Harvey 23,9067,383 0–2 — — Not published
60428Markham 10,9273,809 0–2 — — Not published
60430Homewood 19,83812,628 0–2 — — Not published
60445Midlothian 14,2686,940 0–2 — — Not published
60454Oak Lawn —156 0–2 — — Not published
60458Justice 14,2001,189 0–2 — — Not published
60459Burbank 28,7394,621 0–2 — — Not published
60461Olympia Fields 4,7613,726 0–2 — — Not published
60464Palos Park 9,7731,758 0–2 — — Not published
60466Park Forest 21,4612,093 0–2 — — Not published
60469Posen 5,205774 0–2 — — Not published
60471Richton Park 12,8481,435 0–2 — — Not published
60472Robbins 4,563217 0–2 — — Not published
60475Steger 10,035887 0–2 — — Not published
60476Thornton 1,940780 0–2 — — Not published
60478Country Club Hills 16,3902,171 0–2 — — Not published
60480Willow Springs 5,388773 0–2 — — Not published
60482Worth 10,8971,288 0–2 — — Not published
60487Tinley Park 26,0436,646 0–2 — — Not published
60499Bedford Park —77 0–2 — — Not published
60501Summit Argo 11,4324,212 0–2 — — Not published
60526La Grange Park 13,4591,746 0–2 — — Not published
60534Lyons 10,3272,008 0–2 — — Not published
60603Chicago 1,29860,606 0–2 — — Not published
60604Chicago 61641,171 0–2 — — Not published
60609Chicago 62,02818,440 0–2 — — Not published
60619Chicago 59,5036,093 0–2 — — Not published
60620Chicago 64,8717,319 0–2 — — Not published
60621Chicago 28,3013,833 0–2 — — Not published
60623Chicago 81,27712,534 0–2 — — Not published
60624Chicago 35,2636,140 0–2 — — Not published
60628Chicago 60,4317,654 0–2 — — Not published
60633Chicago 12,47410,315 0–2 — — Not published
60636Chicago 32,1983,505 0–2 — — Not published
60637Chicago 52,72131,368 0–2 — — Not published
60644Chicago 47,2105,433 0–2 — — Not published
60649Chicago 48,0564,778 0–2 — — Not published
60651Chicago 63,3356,154 0–2 — — Not published
60653Chicago 33,3833,171 0–2 — — Not published
60666Chicago —37,159 0–2 — — Not published
60673Chicago —7 0–2 — — Not published
60680Chicago —80 0–2 — — Not published
60690Chicago —25 0–2 — — Not published
60699Chicago —50 0–2 — — Not published
60803Alsip 22,10615,497 0–2 — — Not published
60827Riverdale 24,7132,241 0–2 — — Not published

Scroll the table sideways to see all columns.

Find an actual space in Chicago

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 Chicago retail space →
Crexi
Free listings + market data
Browse Chicago retail space →
CityFeet
Retail space for lease
Browse Chicago 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 Cook County and physical therapy

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 621340 — offices of physical, occupational and speech therapists, and audiologists. Counts establishments with paid employees. ZBP is published annually with a ~2-year lag.

Fresh county signal. This industry has no clean QCEW series, so the freshest county signal is Census County Business Patterns 2023: 1,015 establishments and $444M in annual payroll county-wide. This count includes locations in ZIP codes that do not map to a ZCTA, so it can be slightly higher than the sum of the ZIP rows. CBP is annual and slower than QCEW. 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.29 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.