@urbankitstudio/atlas 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +7 -2
  2. package/data/alabama.json +52 -6
  3. package/data/alaska.json +1 -1
  4. package/data/arizona.json +3 -3
  5. package/data/arkansas.json +143 -0
  6. package/data/california.json +65 -59
  7. package/data/colorado.json +6 -6
  8. package/data/connecticut.json +105 -3
  9. package/data/delaware.json +46 -0
  10. package/data/florida.json +31 -34
  11. package/data/georgia.json +42 -2
  12. package/data/hawaii.json +82 -0
  13. package/data/illinois.json +16 -11
  14. package/data/index.json +47 -47
  15. package/data/indiana.json +3 -3
  16. package/data/kansas.json +2 -2
  17. package/data/kentucky.json +1 -1
  18. package/data/louisiana.json +7 -7
  19. package/data/maine.json +1 -1
  20. package/data/maryland.json +94 -0
  21. package/data/massachusetts.json +1 -1
  22. package/data/michigan.json +5 -5
  23. package/data/minnesota.json +5 -5
  24. package/data/mississippi.json +8 -10
  25. package/data/missouri.json +49 -2
  26. package/data/montana.json +196 -0
  27. package/data/nebraska.json +3 -3
  28. package/data/nevada.json +1 -1
  29. package/data/new-jersey.json +2 -2
  30. package/data/new-mexico.json +49 -0
  31. package/data/new-york.json +7 -7
  32. package/data/north-carolina.json +5 -5
  33. package/data/north-dakota.json +57 -0
  34. package/data/ohio.json +3 -3
  35. package/data/oklahoma.json +49 -0
  36. package/data/oregon.json +10 -16
  37. package/data/pennsylvania.json +3 -3
  38. package/data/rhode-island.json +1 -1
  39. package/data/south-carolina.json +18 -19
  40. package/data/south-dakota.json +58 -0
  41. package/data/tennessee.json +9 -8
  42. package/data/texas.json +33 -26
  43. package/data/utah.json +4 -4
  44. package/data/vermont.json +2 -2
  45. package/data/virginia.json +43 -1
  46. package/data/washington.json +9 -9
  47. package/data/west-virginia.json +176 -0
  48. package/data/wisconsin.json +1 -1
  49. package/data/wyoming.json +58 -0
  50. package/dist/index.cjs +1702 -377
  51. package/dist/index.js +1702 -377
  52. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "connecticut",
3
3
  "stateName": "Connecticut",
4
4
  "stateAbbrev": "CT",
5
- "lastUpdated": "2026-05-15",
5
+ "lastUpdated": "2026-06-20",
6
6
  "counties": [
7
7
  {
8
8
  "id": "ct-hartford",
@@ -52,11 +52,113 @@
52
52
  }
53
53
  ],
54
54
  "contact": {
55
- "department": "Connecticut Office of Policy and Management (OPM) — GIS Data",
55
+ "department": "Connecticut Office of Policy and Management (OPM), GIS Data",
56
56
  "url": "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
57
57
  "email": null
58
58
  },
59
- "notes": "49 fields confirmed including Parcel_ID, Parcel_Typ, Town_Name, Unit_Type, link_1, Location_1, Property_City, Owner, Co_Owner, Mailing_Address, Mailing_City, Mailing_State, Assessed_Total, Assessed_Land, Assessed_Building, Pre_Yr_Assessed_Total, Appraised_Land, Appraised_Building, Appraised_Outbuilding, Valuation_Year, Land_Acres, State_Use, State_Use_Description, Model, Condition, Living_Area, Effective_Area, Total_Rooms, Number_of_Bedroom, Number_of_Baths, Number_of_Half_Baths, Sale_Price, Sale_Date, Qualified, Prior_Sale_Date, Prior_Book_Page, Prior_Sale_Price, Occupancy, Planning_Region, Collection_Year, FIPS_Codes, ayb, eyb. NOTE: Connecticut does not have active county governments — county is a historical/geographic designation only. This statewide CT CAMA 2024 layer covers ALL Connecticut municipalities. Filter by Town_Name for specific towns. Hartford County towns include Hartford, West Hartford, East Hartford, Manchester, Enfield, Bloomfield, Glastonbury, Newington, Windsor, Wethersfield, South Windsor, New Britain, Southington, Bristol, etc. Owner query confirmed returning real residential parcels. This is a town-reported CAMA (Computer Assisted Mass Appraisal) dataset collected by CT OPM."
59
+ "notes": "49 fields confirmed including Parcel_ID, Parcel_Typ, Town_Name, Unit_Type, link_1, Location_1, Property_City, Owner, Co_Owner, Mailing_Address, Mailing_City, Mailing_State, Assessed_Total, Assessed_Land, Assessed_Building, Pre_Yr_Assessed_Total, Appraised_Land, Appraised_Building, Appraised_Outbuilding, Valuation_Year, Land_Acres, State_Use, State_Use_Description, Model, Condition, Living_Area, Effective_Area, Total_Rooms, Number_of_Bedroom, Number_of_Baths, Number_of_Half_Baths, Sale_Price, Sale_Date, Qualified, Prior_Sale_Date, Prior_Book_Page, Prior_Sale_Price, Occupancy, Planning_Region, Collection_Year, FIPS_Codes, ayb, eyb. NOTE: Connecticut does not have active county governments. County is a historical/geographic designation only. This statewide CT CAMA 2024 layer covers ALL Connecticut municipalities. Filter by Town_Name for specific towns. Hartford County towns include Hartford, West Hartford, East Hartford, Manchester, Enfield, Bloomfield, Glastonbury, Newington, Windsor, Wethersfield, South Windsor, New Britain, Southington, Bristol, etc. Owner query confirmed returning real residential parcels. This is a town-reported CAMA (Computer Assisted Mass Appraisal) dataset collected by CT OPM."
60
+ },
61
+ {
62
+ "id": "ct-new-haven",
63
+ "state": "CT",
64
+ "stateName": "Connecticut",
65
+ "stateSlug": "connecticut",
66
+ "county": "New Haven",
67
+ "countySlug": "new-haven-county",
68
+ "countyFips": "09009",
69
+ "hasPublicRest": true,
70
+ "endpoints": [
71
+ {
72
+ "url": "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
73
+ "serviceType": "FeatureServer",
74
+ "layerIndex": 0,
75
+ "layerName": "Connecticut_CAMA_and_Parcel_Layer",
76
+ "supportsQuery": true,
77
+ "corsEnabled": null,
78
+ "searchFields": [
79
+ { "name": "Town_Name", "label": "Town Name (REQUIRED filter. Set to a New Haven County town, e.g. New Haven, Waterbury, Meriden, Milford, West Haven, Hamden)", "searchable": true },
80
+ { "name": "Owner", "label": "Owner Name", "searchable": true },
81
+ { "name": "Co_Owner", "label": "Co-Owner Name", "searchable": true },
82
+ { "name": "Parcel_ID", "label": "Parcel ID (may be blank for some towns incl. New Haven)", "searchable": true },
83
+ { "name": "Location_1", "label": "Property Location / Address", "searchable": true },
84
+ { "name": "Property_City", "label": "Property City", "searchable": false },
85
+ { "name": "Mailing_Address", "label": "Mailing Address", "searchable": true },
86
+ { "name": "Mailing_City", "label": "Mailing City", "searchable": false },
87
+ { "name": "Mailing_State", "label": "Mailing State", "searchable": false },
88
+ { "name": "Assessed_Total", "label": "Total Assessed Value", "searchable": false },
89
+ { "name": "Assessed_Land", "label": "Land Assessed Value", "searchable": false },
90
+ { "name": "Assessed_Building", "label": "Building Assessed Value", "searchable": false },
91
+ { "name": "Valuation_Year", "label": "Valuation Year", "searchable": false },
92
+ { "name": "Sale_Price", "label": "Sale Price", "searchable": false },
93
+ { "name": "Sale_Date", "label": "Sale Date", "searchable": false },
94
+ { "name": "State_Use_Description", "label": "Use Description", "searchable": false },
95
+ { "name": "Living_Area", "label": "Living Area (sq ft)", "searchable": false }
96
+ ],
97
+ "sampleQuery": "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0/query?where=Town_Name%3D'New Haven'+AND+UPPER(Owner)+LIKE+UPPER('%25SMITH%25')&outFields=Parcel_ID,Town_Name,Owner,Co_Owner,Location_1,Assessed_Total&returnGeometry=false&f=json&resultRecordCount=10",
98
+ "license": "public",
99
+ "licenseUrl": "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
100
+ "status": "live",
101
+ "lastVerified": "2026-06-20",
102
+ "verifiedBy": "manual"
103
+ }
104
+ ],
105
+ "contact": {
106
+ "department": "Connecticut Office of Policy and Management (OPM), GIS Data",
107
+ "url": "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
108
+ "email": null
109
+ },
110
+ "notes": "Connecticut has no active county governments, New Haven County is a historical/geographic designation. Property records are maintained per-municipality and aggregated into the statewide CT CAMA & Parcel Layer 2024 (the SAME FeatureServer used for Hartford County). To scope to New Haven County you MUST filter by Town_Name; the layer carries every CT town in one table. New Haven County towns: New Haven, Waterbury, Meriden, Milford, West Haven, Hamden, East Haven, North Haven, Branford, Cheshire, Naugatuck, Wallingford, Guilford, Madison, Seymour, Derby, Ansonia, Orange, Woodbridge, Bethany, Beacon Falls, Middlebury, Oxford, Prospect, Southbury, Wolcott. Verified 2026-06-20: Town_Name='New Haven' returns 27,251 parcels; UPPER(Owner) LIKE '%SMITH%' returns real residential parcels (e.g. '653 WASHINGTON AV'). NOTE: Parcel_ID comes back blank for some towns (New Haven included) because those municipalities did not report it to OPM, Owner + Location_1 remain populated. For authoritative records use the relevant town Assessor's office (e.g. New Haven: cityofnewhaven.com)."
111
+ },
112
+ {
113
+ "id": "ct-fairfield",
114
+ "state": "CT",
115
+ "stateName": "Connecticut",
116
+ "stateSlug": "connecticut",
117
+ "county": "Fairfield",
118
+ "countySlug": "fairfield-county",
119
+ "countyFips": "09001",
120
+ "hasPublicRest": true,
121
+ "endpoints": [
122
+ {
123
+ "url": "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
124
+ "serviceType": "FeatureServer",
125
+ "layerIndex": 0,
126
+ "layerName": "Connecticut_CAMA_and_Parcel_Layer",
127
+ "supportsQuery": true,
128
+ "corsEnabled": null,
129
+ "searchFields": [
130
+ { "name": "Town_Name", "label": "Town Name (REQUIRED filter, set to a Fairfield County town, e.g. Bridgeport, Stamford, Norwalk, Danbury, Fairfield, Westport)", "searchable": true },
131
+ { "name": "Owner", "label": "Owner Name", "searchable": true },
132
+ { "name": "Co_Owner", "label": "Co-Owner Name", "searchable": true },
133
+ { "name": "Parcel_ID", "label": "Parcel ID (may be blank for some towns)", "searchable": true },
134
+ { "name": "Location_1", "label": "Property Location / Address", "searchable": true },
135
+ { "name": "Property_City", "label": "Property City", "searchable": false },
136
+ { "name": "Mailing_Address", "label": "Mailing Address", "searchable": true },
137
+ { "name": "Mailing_City", "label": "Mailing City", "searchable": false },
138
+ { "name": "Mailing_State", "label": "Mailing State", "searchable": false },
139
+ { "name": "Assessed_Total", "label": "Total Assessed Value", "searchable": false },
140
+ { "name": "Assessed_Land", "label": "Land Assessed Value", "searchable": false },
141
+ { "name": "Assessed_Building", "label": "Building Assessed Value", "searchable": false },
142
+ { "name": "Valuation_Year", "label": "Valuation Year", "searchable": false },
143
+ { "name": "Sale_Price", "label": "Sale Price", "searchable": false },
144
+ { "name": "Sale_Date", "label": "Sale Date", "searchable": false },
145
+ { "name": "State_Use_Description", "label": "Use Description", "searchable": false },
146
+ { "name": "Living_Area", "label": "Living Area (sq ft)", "searchable": false }
147
+ ],
148
+ "sampleQuery": "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0/query?where=Town_Name%3D'Stamford'+AND+UPPER(Owner)+LIKE+UPPER('%25SMITH%25')&outFields=Parcel_ID,Town_Name,Owner,Co_Owner,Location_1,Assessed_Total&returnGeometry=false&f=json&resultRecordCount=10",
149
+ "license": "public",
150
+ "licenseUrl": "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
151
+ "status": "live",
152
+ "lastVerified": "2026-06-20",
153
+ "verifiedBy": "manual"
154
+ }
155
+ ],
156
+ "contact": {
157
+ "department": "Connecticut Office of Policy and Management (OPM), GIS Data",
158
+ "url": "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
159
+ "email": null
160
+ },
161
+ "notes": "Connecticut has no active county governments, Fairfield County is a historical/geographic designation. Property records are maintained per-municipality and aggregated into the statewide CT CAMA & Parcel Layer 2024 (the SAME FeatureServer used for Hartford and New Haven Counties). To scope to Fairfield County you MUST filter by Town_Name. Fairfield County towns: Bridgeport, Stamford, Norwalk, Danbury, Fairfield, Westport, Greenwich, Stratford, Trumbull, Shelton, Monroe, Newtown, Ridgefield, Wilton, Weston, New Canaan, Darien, Bethel, Brookfield, Easton, Redding, Sherman, New Fairfield. Verified 2026-06-20: Town_Name='Stamford' returns 25,719 parcels; UPPER(Owner) LIKE '%SMITH%' returns real residential parcels (e.g. '92 SHADY LANE'). NOTE: Parcel_ID may be blank for some towns; Owner + Location_1 remain populated. For authoritative records use the relevant town Assessor's office."
60
162
  }
61
163
  ]
62
164
  }
@@ -0,0 +1,46 @@
1
+ {
2
+ "stateSlug": "delaware",
3
+ "stateName": "Delaware",
4
+ "stateAbbrev": "DE",
5
+ "lastUpdated": "2026-06-20",
6
+ "counties": [
7
+ {
8
+ "id": "de-new-castle",
9
+ "state": "DE",
10
+ "stateName": "Delaware",
11
+ "stateSlug": "delaware",
12
+ "county": "New Castle",
13
+ "countySlug": "new-castle-county",
14
+ "countyFips": "10003",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://gis.nccde.org/entserver/rest/services/Foundation/Base_Layers/MapServer/0",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 0,
21
+ "layerName": "Parcels",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "PRCLID", "label": "Parcel ID (APN)", "searchable": true },
26
+ { "name": "CNTCTLAST", "label": "Owner Last Name / Contact", "searchable": true },
27
+ { "name": "OWNADDR", "label": "Owner Mailing Address", "searchable": false },
28
+ { "name": "ADDRESS", "label": "Property Address", "searchable": true }
29
+ ],
30
+ "sampleQuery": "https://gis.nccde.org/entserver/rest/services/Foundation/Base_Layers/MapServer/0/query?where=UPPER(CNTCTLAST)+LIKE+UPPER('%25SMITH%25')&outFields=PRCLID,CNTCTLAST,ADDRESS,OWNADDR&returnGeometry=false&f=json&resultRecordCount=10",
31
+ "license": "public",
32
+ "licenseUrl": "https://gis.nccde.org/",
33
+ "status": "live",
34
+ "lastVerified": "2026-06-20",
35
+ "verifiedBy": "manual"
36
+ }
37
+ ],
38
+ "contact": {
39
+ "department": "New Castle County Government, Office of Land Use / GIS (NCCDE)",
40
+ "url": "https://gis.nccde.org/",
41
+ "email": null
42
+ },
43
+ "notes": "New Castle County DE (Wilmington/Newark metro; county seat Wilmington; FIPS 10003; most populous of Delaware's 3 counties, pop. ~570,000) publishes a public ArcGIS MapServer parcel layer hosted by NCCDE GIS (Foundation/Base_Layers/MapServer/0, 'Parcels', ~203,753 features, no token required). Key fields: PRCLID (parcel ID / APN), CNTCTLAST (owner last name / contact, the searchable owner field), OWNADDR (owner mailing address), ADDRESS (property situs address). Owner-name search via UPPER(CNTCTLAST) LIKE UPPER('%NAME%') works. Verified 2026-06-20: UPPER(CNTCTLAST) LIKE UPPER('%SMITH%') returns Wilmington-area parcels. Delaware has only 3 counties (New Castle, Kent, Sussex); Kent and Sussex are served separately. Do not confuse with New Castle in Pennsylvania (Lawrence County, PA)."
44
+ }
45
+ ]
46
+ }
package/data/florida.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "florida",
3
3
  "stateName": "Florida",
4
4
  "stateAbbrev": "FL",
5
- "lastUpdated": "2026-05-15",
5
+ "lastUpdated": "2026-06-06",
6
6
  "counties": [
7
7
  {
8
8
  "id": "fl-miami-dade",
@@ -82,7 +82,7 @@
82
82
  "url": "https://ocgis-datahub-ocfl.hub.arcgis.com/",
83
83
  "email": null
84
84
  },
85
- "notes": "Only 6 fields on this public REST endpoint: ASSESSMENT_NO, SITE_ADDRESS, YEAR_BUILT, NBR_BEDROOMS, SHAPE, OBJECTID. Owner name is NOT available on this layer — the public REST endpoint is geometry + parcel ID + limited building characteristics only. Owner data lives in the OCPA (Orange County Property Appraiser) portal at ocpa.com and is not exposed via public REST. A second service at ocgis4.ocfl.net/arcgis/rest/services/Public_Dynamic/MapServer exists for county facilities but not full parcel attributes."
85
+ "notes": "Only 6 fields on this public REST endpoint: ASSESSMENT_NO, SITE_ADDRESS, YEAR_BUILT, NBR_BEDROOMS, SHAPE, OBJECTID. Owner name is NOT available on this layer. The public REST endpoint is geometry + parcel ID + limited building characteristics only. Owner data lives in the OCPA (Orange County Property Appraiser) portal at ocpa.com and is not exposed via public REST. A second service at ocgis4.ocfl.net/arcgis/rest/services/Public_Dynamic/MapServer exists for county facilities but not full parcel attributes."
86
86
  },
87
87
  {
88
88
  "id": "fl-hillsborough",
@@ -95,36 +95,36 @@
95
95
  "hasPublicRest": true,
96
96
  "endpoints": [
97
97
  {
98
- "url": "https://www25.swfwmd.state.fl.us/arcgiswmis/rest/services/r27/LocationInfo/MapServer/71",
98
+ "url": "https://gis.hcpafl.org/arcgis/rest/services/Webmaps/HillsboroughFL_WebParcels/MapServer/0",
99
99
  "serviceType": "MapServer",
100
- "layerIndex": 71,
101
- "layerName": "Hillsborough County Parcels",
100
+ "layerIndex": 0,
101
+ "layerName": "WebParcels_NonConfidential",
102
102
  "supportsQuery": true,
103
103
  "corsEnabled": null,
104
104
  "searchFields": [
105
- { "name": "PARNO", "label": "Parcel Number", "searchable": true },
106
- { "name": "OWNNAME", "label": "Owner Name", "searchable": true },
107
- { "name": "MAILADD", "label": "Mailing Address", "searchable": true },
108
- { "name": "STNAME", "label": "State", "searchable": false },
109
- { "name": "CNTYFIPS", "label": "County FIPS Code", "searchable": false },
110
- { "name": "OWNTYPE", "label": "Owner Type", "searchable": false },
111
- { "name": "PARUSEDESC", "label": "Parcel Use Description", "searchable": false },
112
- { "name": "PARVAL", "label": "Parcel Value", "searchable": false }
105
+ { "name": "folio", "label": "Folio Number (Parcel ID)", "searchable": true },
106
+ { "name": "Owner1", "label": "Owner Name", "searchable": true },
107
+ { "name": "Owner2", "label": "Owner Name 2", "searchable": true },
108
+ { "name": "FullAddress", "label": "Site Address", "searchable": true },
109
+ { "name": "strap", "label": "STRAP (alternate parcel key)", "searchable": true },
110
+ { "name": "SiteCity", "label": "City", "searchable": false },
111
+ { "name": "SiteZip", "label": "ZIP Code", "searchable": false },
112
+ { "name": "Homestead", "label": "Homestead Exemption", "searchable": false }
113
113
  ],
114
- "sampleQuery": "https://www25.swfwmd.state.fl.us/arcgiswmis/rest/services/r27/LocationInfo/MapServer/71/query?where=UPPER(OWNNAME)%20LIKE%20UPPER('%25SMITH%25')&outFields=PARNO,OWNNAME,MAILADD,PARUSEDESC&returnGeometry=false&f=json&resultRecordCount=10",
114
+ "sampleQuery": "https://gis.hcpafl.org/arcgis/rest/services/Webmaps/HillsboroughFL_WebParcels/MapServer/0/query?where=UPPER(Owner1)+LIKE+UPPER('%25SMITH%25')&outFields=folio,Owner1,FullAddress,SiteCity&returnGeometry=false&f=json&resultRecordCount=10",
115
115
  "license": "public",
116
- "licenseUrl": "https://www.swfwmd.state.fl.us/resources/data-maps",
116
+ "licenseUrl": "https://www.hcpafl.org/",
117
117
  "status": "live",
118
- "lastVerified": "2026-05-11",
119
- "verifiedBy": "manual"
118
+ "lastVerified": "2026-06-27",
119
+ "verifiedBy": "automated"
120
120
  }
121
121
  ],
122
122
  "contact": {
123
- "department": "Southwest Florida Water Management District (SWFWMD) — hosts the FL regional parcel layer",
124
- "url": "https://www.swfwmd.state.fl.us/resources/data-maps",
123
+ "department": "Hillsborough County Property Appraiser (HCPA)",
124
+ "url": "https://www.hcpafl.org/",
125
125
  "email": null
126
126
  },
127
- "notes": "20 fields confirmed including PARNO, OWNNAME, MAILADD, OWNTYPE, AREATXT, IMPROVVAL, LANDVAL, PARVAL, PARVALTYPE, PARUSECODE, PARUSEDESC. Owner query returns real results with CNTYFIPS=057 confirming Hillsborough data. This endpoint is on the SWFWMD (regional water management district) server, which aggregates parcel data from multiple FL counties in a single LocationInfo MapServer (layer 71 of 80+). The Hillsborough County Property Appraiser's own REST server at gis.hcpafl.org does not expose a queryable public parcel layer — only their browser-based property search at gis.hcpafl.org/propertysearch/."
127
+ "notes": "Hillsborough County Property Appraiser (HCPA) public parcel layer at gis.hcpafl.org, 'WebParcels_NonConfidential', ~527,844 parcels exposing Owner1/Owner2 (owner name), folio (parcel ID), strap (alternate key), and FullAddress. Owner search via UPPER(Owner1) LIKE works; field names are CASE-SENSITIVE (Owner1, folio, FullAddress). Records flagged Confidential (state address-confidentiality program) have owner names suppressed. Replaced the prior SWFWMD regional water-district layer (2026-06-08). NOTE 2026-06-27: query endpoint responds in 13-35s (server-side slowness); the liveness check at 12s timeout always flags this FAIL but the endpoint IS live. Metadata returns immediately. If the liveness checker timeout is raised above ~30s for this endpoint, it will pass."
128
128
  },
129
129
  {
130
130
  "id": "fl-broward",
@@ -137,23 +137,20 @@
137
137
  "hasPublicRest": true,
138
138
  "endpoints": [
139
139
  {
140
- "url": "https://gis.bcpa.net/bcpagis/rest/services/Public/BCPA_EXTERNAL/MapServer/0",
140
+ "url": "https://gisweb-adapters.bcpa.net/arcgis/rest/services/BCPA_EXTERNAL_JAN26/MapServer/16",
141
141
  "serviceType": "MapServer",
142
- "layerIndex": 0,
142
+ "layerIndex": 16,
143
143
  "layerName": "Parcels",
144
144
  "supportsQuery": true,
145
145
  "corsEnabled": null,
146
146
  "searchFields": [
147
- { "name": "FOLIO", "label": "Folio Number (Parcel ID)", "searchable": true },
148
- { "name": "OWNER", "label": "Owner Name", "searchable": true },
149
- { "name": "SITE_ADDR", "label": "Site Address", "searchable": true },
150
- { "name": "MAILING_ADDRESS", "label": "Mailing Address", "searchable": true }
147
+ { "name": "FOLIO", "label": "Folio Number (Parcel ID)", "searchable": true }
151
148
  ],
152
- "sampleQuery": "https://gis.bcpa.net/bcpagis/rest/services/Public/BCPA_EXTERNAL/MapServer/0/query?where=UPPER(OWNER)+LIKE+UPPER('%25SMITH%25')&outFields=FOLIO,OWNER,SITE_ADDR,MAILING_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
149
+ "sampleQuery": "https://gisweb-adapters.bcpa.net/arcgis/rest/services/BCPA_EXTERNAL_JAN26/MapServer/16/query?where=FOLIO%3D%27504201090030%27&outFields=FOLIO&returnGeometry=false&f=json&resultRecordCount=10",
153
150
  "license": "public",
154
151
  "licenseUrl": "https://www.bcpa.net/",
155
152
  "status": "live",
156
- "lastVerified": "2026-05-15",
153
+ "lastVerified": "2026-06-06",
157
154
  "verifiedBy": "manual"
158
155
  }
159
156
  ],
@@ -162,7 +159,7 @@
162
159
  "url": "https://www.bcpa.net/",
163
160
  "email": null
164
161
  },
165
- "notes": "Broward County Property Appraiser public REST endpoint. Fields include FOLIO (13-digit parcel ID), OWNER, SITE_ADDR, MAILING_ADDRESS, LAND_VAL, BLDG_VAL, TOTAL_VAL, SALE_DATE, SALE_PRICE, USE_CODE. Owner name search uses UPPER() LIKE. The FL statewide FDOR cadastral (services9.arcgis.com) is a partitioned FeatureServer that routes to individual county subsets — the CO_NO field in that dataset uses FDOR-internal county numbers (not FIPS) and queries outside the locally-routed partition return empty. County-specific endpoints are more reliable for Broward."
162
+ "notes": "Broward County Property Appraiser public REST endpoint. The current public layer exposes FOLIO (13-digit parcel ID) only. Owner, site-address, mailing, valuation, and sale fields were removed from public REST in the 2026-06-06 migration (see below). The FL statewide FDOR cadastral (services9.arcgis.com) is a partitioned FeatureServer that routes to individual county subsets. The CO_NO field in that dataset uses FDOR-internal county numbers (not FIPS) and queries outside the locally-routed partition return empty. County-specific endpoints are more reliable for Broward. MIGRATED 2026-06-06: gis.bcpa.net DNS was retired -- the public service moved to gisweb-adapters.bcpa.net (BCPA_EXTERNAL_JAN26/MapServer/16, 556,435 parcels). DEGRADED: the new public layer exposes FOLIO only; the county removed owner, site-address, and mailing fields from public REST. FOLIO lookup only -- owner-name search is no longer possible on this endpoint."
166
163
  },
167
164
  {
168
165
  "id": "fl-duval",
@@ -293,7 +290,7 @@
293
290
  "url": "https://data-sarco.opendata.arcgis.com/",
294
291
  "email": null
295
292
  },
296
- "notes": "Sarasota County Property Appraiser parcel dataset hosted on ArcGIS Online (Sarasota County Enterprise GIS). Fields include ACCOUNT (parcel account number), NAME1/NAME_ADD2/3/4/5 (owner name lines), LOCN (street number), LOCD/LOCS/LOCT (direction/name/type), CITY, STATE, ZIP, UNIT. Mailing address uses NAME_ADD lines. Verified 2026-05-15: SMITH returns Sarasota-area addresses (LONGBOAT KEY, SUNAPEE NH mailing). Note CITY field contains mailing city not site city — for site address the LOCN+LOCS+LOCT fields must be concatenated. Sarasota County pop. 464,000."
293
+ "notes": "Sarasota County Property Appraiser parcel dataset hosted on ArcGIS Online (Sarasota County Enterprise GIS). Fields include ACCOUNT (parcel account number), NAME1/NAME_ADD2/3/4/5 (owner name lines), LOCN (street number), LOCD/LOCS/LOCT (direction/name/type), CITY, STATE, ZIP, UNIT. Mailing address uses NAME_ADD lines. Verified 2026-05-15: SMITH returns Sarasota-area addresses (LONGBOAT KEY, SUNAPEE NH mailing). Note CITY field contains mailing city not site city. For site address the LOCN+LOCS+LOCT fields must be concatenated. Sarasota County pop. 464,000."
297
294
  },
298
295
  {
299
296
  "id": "fl-palm-beach",
@@ -332,7 +329,7 @@
332
329
  "url": "https://opendata2-pbcgov.opendata.arcgis.com/",
333
330
  "email": null
334
331
  },
335
- "notes": "Palm Beach County, Florida (West Palm Beach / Boca Raton, pop. ~1.49M — 3rd most populous FL county) publishes a Property Appraiser parcels FeatureServer through the PBCGOV open-data portal. Owner search uses OWNER_NAME1 (with OWNER_NAME2 as a second owner slot); the combined site address is SITE_ADDR_STR; the parcel control number is PARID; MUNICIPALITY filters by city. Owner LIKE query confirmed live 2026-05-30. Records flagged CONFIDENTIAL under Florida public-records exemptions (s. 119.071, F.S. — for law enforcement, judges, and similar protected persons) have owner/mailing data suppressed; the majority of parcels are public."
332
+ "notes": "Palm Beach County, Florida (West Palm Beach / Boca Raton, pop. ~1.49M, 3rd most populous FL county) publishes a Property Appraiser parcels FeatureServer through the PBCGOV open-data portal. Owner search uses OWNER_NAME1 (with OWNER_NAME2 as a second owner slot); the combined site address is SITE_ADDR_STR; the parcel control number is PARID; MUNICIPALITY filters by city. Owner LIKE query confirmed live 2026-05-30. Records flagged CONFIDENTIAL under Florida public-records exemptions (s. 119.071, F.S., for law enforcement, judges, and similar protected persons) have owner/mailing data suppressed; the majority of parcels are public."
336
333
  },
337
334
  {
338
335
  "id": "fl-pinellas",
@@ -363,8 +360,8 @@
363
360
  "license": "public",
364
361
  "licenseUrl": "https://egis.pinellas.gov/",
365
362
  "status": "live",
366
- "lastVerified": "2026-05-30",
367
- "verifiedBy": "manual"
363
+ "lastVerified": "2026-06-27",
364
+ "verifiedBy": "automated"
368
365
  }
369
366
  ],
370
367
  "contact": {
@@ -372,7 +369,7 @@
372
369
  "url": "https://www.pcpao.gov/",
373
370
  "email": null
374
371
  },
375
- "notes": "Pinellas County, Florida (St. Petersburg / Clearwater, pop. ~960K) serves parcels through the Pinellas eGIS PublicWebGIS folder. The sibling AGO/Parcels/MapServer/0 layer on the same host exposes only survey/title fields (PGIS.ParcelsPublic.*) with no mailable owner name -- use PublicWebGIS/Parcels/MapServer/1, which carries OWNER1/OWNER2 plus owner mailing (OWNADD_1/OWNADD_2/OWNCITY/OWNSTATE/OWNZIP), SITE_ADDRESS, PARCELID (18-digit), STRAP, TAXABLE_VALUE, HOMESTEAD_EXEMP, USE_CODE, LAND_VALUE, IMP_VALUE, SALEDATE1, SALEPRICE1. Owner search uses UPPER(OWNER1) LIKE. Verified live 2026-05-30 (OWNER1 = FOUNDATION REALTY LLC). Source data is the Pinellas County Property Appraiser (PCPAO)."
372
+ "notes": "Pinellas County, Florida (St. Petersburg / Clearwater, pop. ~960K) serves parcels through the Pinellas eGIS PublicWebGIS folder. The sibling AGO/Parcels/MapServer/0 layer on the same host exposes only survey/title fields (PGIS.ParcelsPublic.*) with no mailable owner name -- use PublicWebGIS/Parcels/MapServer/1, which carries OWNER1/OWNER2 plus owner mailing (OWNADD_1/OWNADD_2/OWNCITY/OWNSTATE/OWNZIP), SITE_ADDRESS, PARCELID (18-digit), STRAP, TAXABLE_VALUE, HOMESTEAD_EXEMP, USE_CODE, LAND_VALUE, IMP_VALUE, SALEDATE1, SALEPRICE1. Owner search uses UPPER(OWNER1) LIKE. Verified live 2026-05-30. NOTE 2026-06-27: all declared fields confirmed present in live schema; query endpoint responds in 13-35s (server-side slowness); liveness check at 12s timeout flags FAIL but endpoint IS live. Metadata returns immediately."
376
373
  },
377
374
  {
378
375
  "id": "fl-lee",
package/data/georgia.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "georgia",
3
3
  "stateName": "Georgia",
4
4
  "stateAbbrev": "GA",
5
- "lastUpdated": "2026-05-15",
5
+ "lastUpdated": "2026-06-20",
6
6
  "counties": [
7
7
  {
8
8
  "id": "ga-fulton",
@@ -45,7 +45,7 @@
45
45
  "url": "https://fultoncountyga.gov/maps",
46
46
  "email": null
47
47
  },
48
- "notes": "372,900 polygon tax parcels covering Atlanta and the rest of Fulton County. Verified 2026-05-11: UPPER(Owner) LIKE '%SMITH%' returns real owners with full Atlanta-area site addresses (e.g., '6760 JULES TRC', '528 SOUTH MAIN ST'). Owner names use last-name-first concatenated format (e.g., 'SMITH FAITH L SMITH MARIO D' for joint ownership). Both site address AND owner mailing address are exposed. Layer 11 of the PropertyMapViewer composite — neighbor layers include 'Tax Parcel Address Labels' (id 9) for cartographic use."
48
+ "notes": "372,900 polygon tax parcels covering Atlanta and the rest of Fulton County. Verified 2026-05-11: UPPER(Owner) LIKE '%SMITH%' returns real owners with full Atlanta-area site addresses (e.g., '6760 JULES TRC', '528 SOUTH MAIN ST'). Owner names use last-name-first concatenated format (e.g., 'SMITH FAITH L SMITH MARIO D' for joint ownership). Both site address AND owner mailing address are exposed. Layer 11 of the PropertyMapViewer composite, neighbor layers include 'Tax Parcel Address Labels' (id 9) for cartographic use."
49
49
  },
50
50
  {
51
51
  "id": "ga-cobb",
@@ -130,6 +130,46 @@
130
130
  "email": null
131
131
  },
132
132
  "notes": "DeKalb County (pop. 764,000; Atlanta metro east and north core) should not be confused with DeKalb County IL (FIPS 17037) or DeKalb County IN in the atlas. The GA DeKalb parcel REST layer at dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer exposes 20+ confirmed fields. PARCELID is an 11-digit identifier with spaces (e.g., '06 249 03 007') reflecting district, map sheet, block, and parcel components. Owner fields: OWNERNME1/2. Site address: SITEADDRESS. The CVTTXCD and CVTTXDSCRP fields identify the city/tax district, which matters because several cities -- Decatur, Brookhaven, Dunwoody, Tucker, Doraville, Stone Mountain -- maintain separate municipal boundaries within the county. SCHLTXCD and SCHLDSCRP identify the school tax district. Classification: USECD, USEDSCRP, CLASSCD, CLASSDSCRP, and PRPRTYDSCRP. Verified 2026-05-15: SMITH returns Doraville and Atlanta-DeKalb addresses. For full assessment and exemption records, the DeKalb County Tax Commissioner portal at tax.dekalbcountyga.gov is the authoritative lookup."
133
+ },
134
+ {
135
+ "id": "ga-gwinnett",
136
+ "state": "GA",
137
+ "stateName": "Georgia",
138
+ "stateSlug": "georgia",
139
+ "county": "Gwinnett",
140
+ "countySlug": "gwinnett-county",
141
+ "countyFips": "13135",
142
+ "hasPublicRest": true,
143
+ "endpoints": [
144
+ {
145
+ "url": "https://services3.arcgis.com/RfpmnkSAQleRbndX/arcgis/rest/services/Property_and_Tax/FeatureServer/3",
146
+ "serviceType": "FeatureServer",
147
+ "layerIndex": 3,
148
+ "layerName": "Tax Master Table",
149
+ "supportsQuery": true,
150
+ "corsEnabled": null,
151
+ "searchFields": [
152
+ { "name": "OWNER1", "label": "Owner Name 1", "searchable": true },
153
+ { "name": "OWNER2", "label": "Owner Name 2", "searchable": true },
154
+ { "name": "PIN", "label": "Parcel Identification Number", "searchable": true },
155
+ { "name": "LOCADDR", "label": "Property (Location) Address", "searchable": true },
156
+ { "name": "LOCCITY", "label": "Property City", "searchable": false },
157
+ { "name": "LOCZIP", "label": "Property ZIP", "searchable": false }
158
+ ],
159
+ "sampleQuery": "https://services3.arcgis.com/RfpmnkSAQleRbndX/arcgis/rest/services/Property_and_Tax/FeatureServer/3/query?where=UPPER(OWNER1)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER1,OWNER2,LOCADDR,LOCCITY,LOCZIP&returnGeometry=false&f=json&resultRecordCount=10",
160
+ "license": "public",
161
+ "licenseUrl": "https://gwin-gwinnettcounty.opendata.arcgis.com/",
162
+ "status": "live",
163
+ "lastVerified": "2026-06-20",
164
+ "verifiedBy": "manual"
165
+ }
166
+ ],
167
+ "contact": {
168
+ "department": "Gwinnett County GIS / Tax Assessor",
169
+ "url": "https://www.gwinnettcounty.com/web/gwinnett/departments/financialservices/taxassessorsoffice",
170
+ "email": null
171
+ },
172
+ "notes": "Gwinnett County (pop. ~975,000; Lawrenceville seat; Atlanta metro northeast, Georgia's second-most-populous county) publishes a Property_and_Tax FeatureServer. IMPORTANT: owner data lives on LAYER 3 (the 'Tax Master Table', a non-spatial Table with 35 fields including OWNER1, OWNER2, PIN, LOCADDR, LOCCITY, LOCZIP), NOT on layer 0, which is the parcel geometry layer carrying PIN but no owner name. Query layer 3 for owner-name search; join to layer 0 on PIN if geometry is needed. Verified 2026-06-20: layer 3 holds 314,998 records; UPPER(OWNER1) LIKE '%SMITH%' returns real owners with Duluth/Norcross addresses and ZIPs (e.g. '4078 STILLWATER DR, DULUTH 30096'). Because layer 3 is a Table, query results return no geometry. Cities within the county include Lawrenceville, Duluth, Norcross, Snellville, Suwanee, Lilburn, Buford, Sugar Hill, Grayson, Loganville, Berkeley Lake, Dacula, Auburn, Braselton, Peachtree Corners. For authoritative assessment/appeal records use the Gwinnett County Tax Assessor's office."
133
173
  }
134
174
  ]
135
175
  }
@@ -0,0 +1,82 @@
1
+ {
2
+ "stateSlug": "hawaii",
3
+ "stateName": "Hawaii",
4
+ "stateAbbrev": "HI",
5
+ "lastUpdated": "2026-06-20",
6
+ "counties": [
7
+ {
8
+ "id": "hi-kauai",
9
+ "state": "HI",
10
+ "stateName": "Hawaii",
11
+ "stateSlug": "hawaii",
12
+ "county": "Kauai",
13
+ "countySlug": "kauai-county",
14
+ "countyFips": "15007",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://geodata.hawaii.gov/arcgis/rest/services/ParcelsZoning/MapServer/9",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 9,
21
+ "layerName": "Kauai County Parcels",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "owner", "label": "Owner Name", "searchable": true },
26
+ { "name": "tmk_txt", "label": "Tax Map Key (9-digit TMK / APN)", "searchable": true },
27
+ { "name": "cty_tmk", "label": "County TMK (8-digit)", "searchable": true }
28
+ ],
29
+ "sampleQuery": "https://geodata.hawaii.gov/arcgis/rest/services/ParcelsZoning/MapServer/9/query?where=UPPER(owner)+LIKE+UPPER('%25SMITH%25')&outFields=owner,tmk_txt,cty_tmk&returnGeometry=false&f=json&resultRecordCount=10",
30
+ "license": "public",
31
+ "licenseUrl": "https://geoportal.hawaii.gov/",
32
+ "status": "live",
33
+ "lastVerified": "2026-06-20",
34
+ "verifiedBy": "manual"
35
+ }
36
+ ],
37
+ "contact": {
38
+ "department": "State of Hawaii Office of Planning and Sustainable Development, Statewide GIS Program",
39
+ "url": "https://planning.hawaii.gov/gis/",
40
+ "email": null
41
+ },
42
+ "notes": "Kauai County HI (the island of Kauai plus Niihau; county seat Lihue; FIPS 15007; pop. ~73,000) parcels are published on the State of Hawaii statewide GIS portal (geodata.hawaii.gov ParcelsZoning/MapServer/9, 'Kauai County Parcels', ~25,119 features, no token required). Hawaii uses the Tax Map Key (TMK) system rather than a conventional APN: tmk_txt is the 9-digit TMK, cty_tmk the 8-digit county form. Key fields: owner (owner name, searchable), tmk_txt (9-digit TMK), cty_tmk (8-digit TMK). Owner-name search via UPPER(owner) LIKE UPPER('%NAME%') works. Verified 2026-06-20: UPPER(owner) LIKE UPPER('%SMITH%') returns Kauai parcels. Hawaii has only 5 county-equivalents statewide; each of the four main counties (Honolulu, Hawaii, Maui, Kauai) is a separate layer on the statewide ParcelsZoning service."
43
+ },
44
+ {
45
+ "id": "hi-maui",
46
+ "state": "HI",
47
+ "stateName": "Hawaii",
48
+ "stateSlug": "hawaii",
49
+ "county": "Maui",
50
+ "countySlug": "maui-county",
51
+ "countyFips": "15009",
52
+ "hasPublicRest": true,
53
+ "endpoints": [
54
+ {
55
+ "url": "https://services1.arcgis.com/x4h61KaW16vFs7PM/arcgis/rest/services/Parcels_2024_Owners/FeatureServer/196",
56
+ "serviceType": "FeatureServer",
57
+ "layerIndex": 196,
58
+ "layerName": "Parcels 2024 Owners",
59
+ "supportsQuery": true,
60
+ "corsEnabled": null,
61
+ "searchFields": [
62
+ { "name": "OWNER", "label": "Owner Name", "searchable": true },
63
+ { "name": "tmk_txt", "label": "Tax Map Key (TMK / APN)", "searchable": true },
64
+ { "name": "TMK_1", "label": "Tax Map Key (alternate)", "searchable": true }
65
+ ],
66
+ "sampleQuery": "https://services1.arcgis.com/x4h61KaW16vFs7PM/arcgis/rest/services/Parcels_2024_Owners/FeatureServer/196/query?where=OWNER+LIKE+'%25SMITH%25'&outFields=OWNER,tmk_txt,TMK_1&returnGeometry=false&f=json&resultRecordCount=10",
67
+ "license": "public",
68
+ "licenseUrl": "https://www.mauicounty.gov/1933/GIS-Maps",
69
+ "status": "live",
70
+ "lastVerified": "2026-06-20",
71
+ "verifiedBy": "manual"
72
+ }
73
+ ],
74
+ "contact": {
75
+ "department": "County of Maui, GIS Division",
76
+ "url": "https://www.mauicounty.gov/1933/GIS-Maps",
77
+ "email": null
78
+ },
79
+ "notes": "Maui County HI (the islands of Maui, Molokai, and Lanai; county seat Wailuku; FIPS 15009; pop. ~165,000) publishes a public ArcGIS Online FeatureServer parcel layer (Parcels_2024_Owners/FeatureServer/196, no token required). Hawaii uses the Tax Map Key (TMK) system: tmk_txt and TMK_1 hold the TMK (APN equivalent). Key fields: OWNER (owner name, searchable, already stored UPPERCASE), tmk_txt / TMK_1 (TMK). IMPORTANT. Owner search must use OWNER LIKE '%NAME%' WITHOUT UPPER(): this layer returns HTTP 400 if UPPER() is applied to the field, and the data is already uppercase so no case folding is needed. CAVEAT: multi-owner parcels are duplicated. The layer has one row per owner, so the ~141,239 feature count exceeds the number of unique parcels; dedupe on tmk_txt when counting distinct parcels. Verified 2026-06-20: OWNER LIKE '%SMITH%' returns Maui/Molokai/Lanai parcels."
80
+ }
81
+ ]
82
+ }
@@ -41,7 +41,7 @@
41
41
  "url": "https://www.kanecountyil.gov/pages/gis.aspx",
42
42
  "email": null
43
43
  },
44
- "notes": "Kane County is the highest-impression Illinois county in our GSC data; users search for 'kane county illinois gis rest api mapserver featureserver owner name'. The county migrated their GIS server from gis.co.kane.il.us to gistech.countyofkane.org in 2026 — the old hostname now NXDOMAINs. The current layer is KanePINList/MapServer/0 (named Kane.DBO.Parcels_v2025), a snapshot of the active parcel polygon layer from the cadastral source. 35+ fields including PIN, TaxName, SiteAddress, MailingAddress, LegalDesc, UseCodeDescription, plus jurisdictional districts (Township, AirportDistrict, AmbulanceDistrict, etc.). Owner-style search uses the TaxName field (legal taxpayer name)."
44
+ "notes": "Kane County is the highest-impression Illinois county in our GSC data; users search for 'kane county illinois gis rest api mapserver featureserver owner name'. The county migrated their GIS server from gis.co.kane.il.us to gistech.countyofkane.org in 2026. The old hostname now NXDOMAINs. The current layer is KanePINList/MapServer/0 (named Kane.DBO.Parcels_v2025), a snapshot of the active parcel polygon layer from the cadastral source. 35+ fields including PIN, TaxName, SiteAddress, MailingAddress, LegalDesc, UseCodeDescription, plus jurisdictional districts (Township, AirportDistrict, AmbulanceDistrict, etc.). Owner-style search uses the TaxName field (legal taxpayer name)."
45
45
  },
46
46
  {
47
47
  "id": "il-cook",
@@ -78,7 +78,8 @@
78
78
  "url": "https://www.cookcountyil.gov/agency/geographic-information-systems-gis",
79
79
  "email": null
80
80
  },
81
- "notes": "Cook County uses the 14-digit PIN format (XX-XX-XXX-XXX-XXXX) — exposed as PIN14_dash on this layer. The legacy cookVwHosted/Cook_County_Parcels/FeatureServer was retired in 2026; the active replacement is CookViewer3Parcels/MapServer/0 (1.86M+ parcels). Public fields are geometry, PIN10, PIN14_dash, and street_address only — owner name is NOT on this layer. For ownership lookups, use the Cook County Property Tax Portal at cookcountypropertyinfo.com, keyed by PIN. Cook County reassesses on a triennial cycle divided into three geographic triads: the City of Chicago triad, the north suburban triad, and the south/west suburban triad — each triad goes through a full reassessment every three years on a rotating schedule (north triad reassessed 2025, south/west triad 2026). The county has 5.2M+ residents and 1.86M taxable parcels — the largest county in Illinois by both metrics. The Assessor's office is the valuation authority; the Treasurer's office (cookcountytreasurer.com) handles tax payment records."
81
+ "notes": "Cook County uses the 14-digit PIN format (XX-XX-XXX-XXX-XXXX), exposed as PIN14_dash on this layer. The legacy cookVwHosted/Cook_County_Parcels/FeatureServer was retired in 2026; the active replacement is CookViewer3Parcels/MapServer/0 (1.86M+ parcels). Public fields are geometry, PIN10, PIN14_dash, and street_address only. Owner name is NOT on this layer. For ownership lookups, use the Cook County Property Tax Portal at cookcountypropertyinfo.com, keyed by PIN. Cook County reassesses on a triennial cycle divided into three geographic triads: the City of Chicago triad, the north suburban triad, and the south/west suburban triad. Each triad goes through a full reassessment every three years on a rotating schedule (north triad reassessed 2025, south/west triad 2026). The county has 5.2M+ residents and 1.86M taxable parcels, the largest county in Illinois by both metrics. The Assessor's office is the valuation authority; the Treasurer's office (cookcountytreasurer.com) handles tax payment records.",
82
+ "relatedPropertyCitySlug": "chicago"
82
83
  },
83
84
  {
84
85
  "id": "il-dupage",
@@ -117,7 +118,7 @@
117
118
  "url": "https://www.dupagecounty.gov/government/departments/gis/",
118
119
  "email": null
119
120
  },
120
- "notes": "DuPage County migrated their public GIS server from gis.dupagecounty.gov to gis.dupageco.org in 2026 — the old hostname now NXDOMAINs. The ParcelsWithRealEstateCC MapServer joins the parcel polygon layer to the weekly real estate file, exposing 60+ fields including PIN, BILLNAME (taxpayer billing name), BILLSTNUM/BILLSTNAME (billing address), PROPSTNUM/PROPSTNAME/PROPCITY (property address), BILLVALUE, TAXAMOUNT, MUNICIPALITY, and taxing district fields. 337k features. The open-data portal at gisdata-dupage.opendata.arcgis.com mirrors the same data. Note on BILLNAME: this is the taxpayer of record for the current tax bill — it can differ from the legal owner when a recent sale has been deeded but the billing file has not yet been updated, or when a trust holds title but the trustee name appears as BILLNAME. For the chain-of-title legal owner, cross-reference the DuPage County Recorder's instrument search at recorder.dupageco.org. DuPage is Illinois's third-most populous county (pop. 930,000, county seat Wheaton)."
121
+ "notes": "DuPage County migrated their public GIS server from gis.dupagecounty.gov to gis.dupageco.org in 2026. The old hostname now NXDOMAINs. The ParcelsWithRealEstateCC MapServer joins the parcel polygon layer to the weekly real estate file, exposing 60+ fields including PIN, BILLNAME (taxpayer billing name), BILLSTNUM/BILLSTNAME (billing address), PROPSTNUM/PROPSTNAME/PROPCITY (property address), BILLVALUE, TAXAMOUNT, MUNICIPALITY, and taxing district fields. 337k features. The open-data portal at gisdata-dupage.opendata.arcgis.com mirrors the same data. Note on BILLNAME: this is the taxpayer of record for the current tax bill. It can differ from the legal owner when a recent sale has been deeded but the billing file has not yet been updated, or when a trust holds title but the trustee name appears as BILLNAME. For the chain-of-title legal owner, cross-reference the DuPage County Recorder's instrument search at recorder.dupageco.org. DuPage is Illinois's third-most populous county (pop. 930,000, county seat Wheaton)."
121
122
  },
122
123
  {
123
124
  "id": "il-dekalb",
@@ -156,7 +157,7 @@
156
157
  "url": "https://dekalbcounty.org/services/property-data-and-maps/",
157
158
  "email": "gis@dekalbcounty.org"
158
159
  },
159
- "notes": "This is DeKalb County, Illinois (county seat Sycamore, home to Northern Illinois University in DeKalb city) — not to be confused with DeKalb County, Georgia (Atlanta metro, FIPS 13089). The Illinois county (FIPS 17037) is an outer-collar county roughly 60 miles west of Chicago. Hosted on ArcGIS Online (services7.arcgis.com) — the county's WAB viewer config points at this FeatureServer as the backing data layer. 27 fields total including Parcel_Number, Owner, SiteAddress, MailingAddress, tax_code, net_taxable_value, Zone_Code, and QTAS/Compass hyperlinks. Owner-name search by UPPER() LIKE on the Owner field works directly; no token required. The public-facing viewer at spatial.dekalbcounty.org uses VertiGIS/Geocortex as its front-end but queries the same FeatureServer. DeKalb County GIS is administered by the county's Information Management Office (gis@dekalbcounty.org). Owner and TaxBillMailedTo are distinct fields — TaxBillMailedTo reflects the current billing addressee, which may differ from the recorded owner in cases involving trusts or recent transfers."
160
+ "notes": "This is DeKalb County, Illinois (county seat Sycamore, home to Northern Illinois University in DeKalb city), not to be confused with DeKalb County, Georgia (Atlanta metro, FIPS 13089). The Illinois county (FIPS 17037) is an outer-collar county roughly 60 miles west of Chicago. Hosted on ArcGIS Online (services7.arcgis.com), the county's WAB viewer config points at this FeatureServer as the backing data layer. 27 fields total including Parcel_Number, Owner, SiteAddress, MailingAddress, tax_code, net_taxable_value, Zone_Code, and QTAS/Compass hyperlinks. Owner-name search by UPPER() LIKE on the Owner field works directly; no token required. The public-facing viewer at spatial.dekalbcounty.org uses VertiGIS/Geocortex as its front-end but queries the same FeatureServer. DeKalb County GIS is administered by the county's Information Management Office (gis@dekalbcounty.org). Owner and TaxBillMailedTo are distinct fields. TaxBillMailedTo reflects the current billing addressee, which may differ from the recorded owner in cases involving trusts or recent transfers."
160
161
  },
161
162
  {
162
163
  "id": "il-will",
@@ -169,20 +170,20 @@
169
170
  "hasPublicRest": true,
170
171
  "endpoints": [
171
172
  {
172
- "url": "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0",
173
+ "url": "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0",
173
174
  "serviceType": "MapServer",
174
175
  "layerIndex": 0,
175
- "layerName": "Parcels_21",
176
+ "layerName": "Parcels_20",
176
177
  "supportsQuery": true,
177
178
  "corsEnabled": null,
178
179
  "searchFields": [
179
180
  { "name": "PIN", "label": "Parcel Identification Number", "searchable": true }
180
181
  ],
181
- "sampleQuery": "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
182
+ "sampleQuery": "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
182
183
  "license": "public",
183
184
  "licenseUrl": null,
184
185
  "status": "live",
185
- "lastVerified": "2026-05-15",
186
+ "lastVerified": "2026-06-27",
186
187
  "verifiedBy": "automated"
187
188
  }
188
189
  ],
@@ -191,7 +192,11 @@
191
192
  "url": "https://willcounty.gov/County-Offices/Administration/GIS-Division",
192
193
  "email": "gis@willcounty.gov"
193
194
  },
194
- "notes": "Parcels_21 is the current parcel geometry layer (Parcels_20 is the prior year, also public). Public access confirmed via allowOthersToQuery:true. Owner-name and address fields are NOT exposed in this public endpoint — only PIN and subtype metadata (Base Parcel, Condo, Leasehold, Mineral Rights, etc.). Owner/address data exists in the county's Geocortex viewer at gisapp.willcountyillinois.com but is not queryable via REST without a token. The ParcelFabric folder on the same server is token-gated."
195
+ "notes": "NOTE 2026-06-27: Parcels_21/MapServer became a zombie service (service listed but layers:[]. All layer queries return HTTP 500 'json' error). Parcels_20/MapServer/0 is the active fallback (prior-year snapshot, 276,644 parcels confirmed live). No Parcels_22 or newer service exists on the server as of 2026-06-27. URL updated from Parcels_21 to Parcels_20. Owner-name and address fields are NOT exposed in this public endpoint, only PIN and subtype metadata (Base Parcel, Condo, Leasehold, Mineral Rights, etc.). Owner/address data exists in the county's Geocortex viewer at gisapp.willcountyillinois.com but is not queryable via REST without a token. The ParcelFabric folder on the same server is token-gated. FIPS 17197 (Joliet / Chicago south suburbs). Contact GIS Division at gis@willcounty.gov for endpoint status updates.",
196
+ "ownerFieldNote": {
197
+ "body": "Will County's public parcel REST layer exposes only the Parcel Identification Number (PIN), no owner-name or address field. Search by PIN below, or look up the owner of record at the Will County Supervisor of Assessments.",
198
+ "source": { "label": "Property search at willcountysoa.com", "url": "https://www.willcountysoa.com/PropertySearchPortal" }
199
+ }
195
200
  },
196
201
  {
197
202
  "id": "il-mchenry",
@@ -269,7 +274,7 @@
269
274
  "url": "https://www.lakecountyil.gov/636/GISMaps",
270
275
  "email": null
271
276
  },
272
- "notes": "Lake County is the northernmost Illinois collar county, bordering Wisconsin (county seat Waukegan, pop. 710,000). WABParcels/MapServer is a 13-layer service; layer 12 (Tax Parcel Information) is the rich parcel polygon layer with 190+ fields covering PIN, taxpayer_name, situs address, assessment values, building characteristics, flood zone, and political boundaries. Owner-name search works via UPPER() LIKE on the taxpayer_name field. The county also exposes CCAO/TaxParcelViewer/MapServer but its layer 14 has only a Name field — WABParcels/12 is the correct layer for rich queries. Key fields beyond PIN and taxpayer_name include situs_addr_line_1, situs_addr_city, situs_zip, mail_addr_line_1, mail_city, mail_zip, property_class, tax_rate, tot_assessed_val, year_built, liv_area_sqft, zoning_district, flood_zone, and multiple political-boundary fields (congressional_district, state_rep_district, school_district, fire_district). The endpoint is at maps.lakecountyil.gov — not to be confused with Lake County Indiana or Lake County Ohio, which use separate GIS systems."
277
+ "notes": "Lake County is the northernmost Illinois collar county, bordering Wisconsin (county seat Waukegan, pop. 710,000). WABParcels/MapServer is a 13-layer service; layer 12 (Tax Parcel Information) is the rich parcel polygon layer with 190+ fields covering PIN, taxpayer_name, situs address, assessment values, building characteristics, flood zone, and political boundaries. Owner-name search works via UPPER() LIKE on the taxpayer_name field. The county also exposes CCAO/TaxParcelViewer/MapServer but its layer 14 has only a Name field. WABParcels/12 is the correct layer for rich queries. Key fields beyond PIN and taxpayer_name include situs_addr_line_1, situs_addr_city, situs_zip, mail_addr_line_1, mail_city, mail_zip, property_class, tax_rate, tot_assessed_val, year_built, liv_area_sqft, zoning_district, flood_zone, and multiple political-boundary fields (congressional_district, state_rep_district, school_district, fire_district). The endpoint is at maps.lakecountyil.gov, not to be confused with Lake County Indiana or Lake County Ohio, which use separate GIS systems."
273
278
  },
274
279
  {
275
280
  "id": "il-winnebago",
@@ -286,7 +291,7 @@
286
291
  "url": "https://wingis.org/",
287
292
  "email": null
288
293
  },
289
- "notes": "Winnebago County IL GIS is operated by WinGIS (wingis.org), a regional GIS services company on a subscription model. Their ArcGIS REST server at maps.wingis.org/public/rest/services/PropertySearch/MapServer is indexed as containing Parcel & Lot Lines, Parcel Owner, PIN Labels, and Parcel Dimensions layers — but all REST queries return HTTP 499 (Token Required) as of 2026-05-15. The word 'public' in the URL path is a directory naming convention, not an access grant. The public-facing search at wingis.org/maps/propertysearch is browser-only and not queryable. No alternative county-hosted ArcGIS REST endpoint was found. The Supervisor of Assessments at assessor.wincoil.gov has a property lookup UI but no public REST API."
294
+ "notes": "Winnebago County IL GIS is operated by WinGIS (wingis.org), a regional GIS services company on a subscription model. Their ArcGIS REST server at maps.wingis.org/public/rest/services/PropertySearch/MapServer is indexed as containing Parcel & Lot Lines, Parcel Owner, PIN Labels, and Parcel Dimensions layers, but all REST queries return HTTP 499 (Token Required) as of 2026-05-15. The word 'public' in the URL path is a directory naming convention, not an access grant. The public-facing search at wingis.org/maps/propertysearch is browser-only and not queryable. No alternative county-hosted ArcGIS REST endpoint was found. The Supervisor of Assessments at assessor.wincoil.gov has a property lookup UI but no public REST API."
290
295
  },
291
296
  {
292
297
  "id": "il-st-clair",