@urbankitstudio/atlas 0.4.0 → 0.5.0

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 +12 -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 +1698 -377
  51. package/dist/index.js +1698 -377
  52. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,19 +1,19 @@
1
1
  // data/index.json
2
2
  var data_default = {
3
- version: "0.4.0",
4
- lastUpdated: "2026-05-31",
3
+ version: "0.5.0",
4
+ lastUpdated: "2026-06-20",
5
5
  totals: {
6
6
  states: 50,
7
- counties: 128,
8
- endpoints: 128
7
+ counties: 155,
8
+ endpoints: 155
9
9
  },
10
10
  states: [
11
11
  {
12
12
  slug: "alabama",
13
13
  name: "Alabama",
14
14
  abbrev: "AL",
15
- countyCount: 1,
16
- endpointCount: 1,
15
+ countyCount: 2,
16
+ endpointCount: 2,
17
17
  populated: true
18
18
  },
19
19
  {
@@ -36,9 +36,9 @@ var data_default = {
36
36
  slug: "arkansas",
37
37
  name: "Arkansas",
38
38
  abbrev: "AR",
39
- countyCount: 0,
40
- endpointCount: 0,
41
- populated: false
39
+ countyCount: 3,
40
+ endpointCount: 3,
41
+ populated: true
42
42
  },
43
43
  {
44
44
  slug: "california",
@@ -60,17 +60,17 @@ var data_default = {
60
60
  slug: "connecticut",
61
61
  name: "Connecticut",
62
62
  abbrev: "CT",
63
- countyCount: 1,
64
- endpointCount: 1,
63
+ countyCount: 3,
64
+ endpointCount: 3,
65
65
  populated: true
66
66
  },
67
67
  {
68
68
  slug: "delaware",
69
69
  name: "Delaware",
70
70
  abbrev: "DE",
71
- countyCount: 0,
72
- endpointCount: 0,
73
- populated: false
71
+ countyCount: 1,
72
+ endpointCount: 1,
73
+ populated: true
74
74
  },
75
75
  {
76
76
  slug: "florida",
@@ -84,17 +84,17 @@ var data_default = {
84
84
  slug: "georgia",
85
85
  name: "Georgia",
86
86
  abbrev: "GA",
87
- countyCount: 3,
88
- endpointCount: 3,
87
+ countyCount: 4,
88
+ endpointCount: 4,
89
89
  populated: true
90
90
  },
91
91
  {
92
92
  slug: "hawaii",
93
93
  name: "Hawaii",
94
94
  abbrev: "HI",
95
- countyCount: 0,
96
- endpointCount: 0,
97
- populated: false
95
+ countyCount: 2,
96
+ endpointCount: 2,
97
+ populated: true
98
98
  },
99
99
  {
100
100
  slug: "idaho",
@@ -164,9 +164,9 @@ var data_default = {
164
164
  slug: "maryland",
165
165
  name: "Maryland",
166
166
  abbrev: "MD",
167
- countyCount: 0,
168
- endpointCount: 0,
169
- populated: false
167
+ countyCount: 2,
168
+ endpointCount: 2,
169
+ populated: true
170
170
  },
171
171
  {
172
172
  slug: "massachusetts",
@@ -204,17 +204,17 @@ var data_default = {
204
204
  slug: "missouri",
205
205
  name: "Missouri",
206
206
  abbrev: "MO",
207
- countyCount: 1,
208
- endpointCount: 1,
207
+ countyCount: 2,
208
+ endpointCount: 2,
209
209
  populated: true
210
210
  },
211
211
  {
212
212
  slug: "montana",
213
213
  name: "Montana",
214
214
  abbrev: "MT",
215
- countyCount: 0,
216
- endpointCount: 0,
217
- populated: false
215
+ countyCount: 4,
216
+ endpointCount: 4,
217
+ populated: true
218
218
  },
219
219
  {
220
220
  slug: "nebraska",
@@ -252,9 +252,9 @@ var data_default = {
252
252
  slug: "new-mexico",
253
253
  name: "New Mexico",
254
254
  abbrev: "NM",
255
- countyCount: 0,
256
- endpointCount: 0,
257
- populated: false
255
+ countyCount: 1,
256
+ endpointCount: 1,
257
+ populated: true
258
258
  },
259
259
  {
260
260
  slug: "new-york",
@@ -276,9 +276,9 @@ var data_default = {
276
276
  slug: "north-dakota",
277
277
  name: "North Dakota",
278
278
  abbrev: "ND",
279
- countyCount: 0,
280
- endpointCount: 0,
281
- populated: false
279
+ countyCount: 1,
280
+ endpointCount: 1,
281
+ populated: true
282
282
  },
283
283
  {
284
284
  slug: "ohio",
@@ -292,9 +292,9 @@ var data_default = {
292
292
  slug: "oklahoma",
293
293
  name: "Oklahoma",
294
294
  abbrev: "OK",
295
- countyCount: 0,
296
- endpointCount: 0,
297
- populated: false
295
+ countyCount: 1,
296
+ endpointCount: 1,
297
+ populated: true
298
298
  },
299
299
  {
300
300
  slug: "oregon",
@@ -332,9 +332,9 @@ var data_default = {
332
332
  slug: "south-dakota",
333
333
  name: "South Dakota",
334
334
  abbrev: "SD",
335
- countyCount: 0,
336
- endpointCount: 0,
337
- populated: false
335
+ countyCount: 1,
336
+ endpointCount: 1,
337
+ populated: true
338
338
  },
339
339
  {
340
340
  slug: "tennessee",
@@ -372,8 +372,8 @@ var data_default = {
372
372
  slug: "virginia",
373
373
  name: "Virginia",
374
374
  abbrev: "VA",
375
- countyCount: 1,
376
- endpointCount: 1,
375
+ countyCount: 2,
376
+ endpointCount: 2,
377
377
  populated: true
378
378
  },
379
379
  {
@@ -388,9 +388,9 @@ var data_default = {
388
388
  slug: "west-virginia",
389
389
  name: "West Virginia",
390
390
  abbrev: "WV",
391
- countyCount: 0,
392
- endpointCount: 0,
393
- populated: false
391
+ countyCount: 4,
392
+ endpointCount: 4,
393
+ populated: true
394
394
  },
395
395
  {
396
396
  slug: "wisconsin",
@@ -404,9 +404,9 @@ var data_default = {
404
404
  slug: "wyoming",
405
405
  name: "Wyoming",
406
406
  abbrev: "WY",
407
- countyCount: 0,
408
- endpointCount: 0,
409
- populated: false
407
+ countyCount: 1,
408
+ endpointCount: 1,
409
+ populated: true
410
410
  }
411
411
  ]
412
412
  };
@@ -416,8 +416,55 @@ var alabama_default = {
416
416
  stateSlug: "alabama",
417
417
  stateName: "Alabama",
418
418
  stateAbbrev: "AL",
419
- lastUpdated: "2026-05-15",
419
+ lastUpdated: "2026-06-20",
420
420
  counties: [
421
+ {
422
+ id: "al-shelby",
423
+ state: "AL",
424
+ stateName: "Alabama",
425
+ stateSlug: "alabama",
426
+ county: "Shelby",
427
+ countySlug: "shelby-county",
428
+ countyFips: "01117",
429
+ hasPublicRest: true,
430
+ endpoints: [
431
+ {
432
+ url: "https://maps.shelbyal.com/gisserver/rest/services/LegacyServices/Cadastral_2022/MapServer/91",
433
+ serviceType: "MapServer",
434
+ layerIndex: 91,
435
+ layerName: "Parcels",
436
+ supportsQuery: true,
437
+ corsEnabled: null,
438
+ searchFields: [
439
+ { name: "Parcel_Num", label: "Parcel Number", searchable: true },
440
+ { name: "NAM1", label: "Owner Name 1", searchable: true },
441
+ { name: "NAM2", label: "Owner Name 2", searchable: false },
442
+ { name: "ADR1", label: "Owner Address Line 1", searchable: false },
443
+ { name: "ADR2", label: "Owner Address Line 2", searchable: false },
444
+ { name: "CITY", label: "Owner City", searchable: false },
445
+ { name: "STATE", label: "Owner State", searchable: false },
446
+ { name: "ZIP", label: "Owner ZIP", searchable: false },
447
+ { name: "PROP_ADR", label: "Property Address", searchable: true },
448
+ { name: "Subd_Name", label: "Subdivision Name", searchable: false },
449
+ { name: "Zoning", label: "Zoning", searchable: false },
450
+ { name: "ACRES", label: "Acres", searchable: false },
451
+ { name: "PROP_CLASS", label: "Property Class", searchable: false }
452
+ ],
453
+ sampleQuery: "https://maps.shelbyal.com/gisserver/rest/services/LegacyServices/Cadastral_2022/MapServer/91/query?where=UPPER(NAM1)+LIKE+UPPER('%25SMITH%25')&outFields=Parcel_Num,NAM1,NAM2,ADR1,CITY,PROP_ADR,Subd_Name&returnGeometry=false&f=json&resultRecordCount=10",
454
+ license: "public",
455
+ licenseUrl: "https://maps.shelbyal.com/",
456
+ status: "live",
457
+ lastVerified: "2026-06-20",
458
+ verifiedBy: "automated"
459
+ }
460
+ ],
461
+ contact: {
462
+ department: "Shelby County GIS / Shelby County Commission",
463
+ url: "https://maps.shelbyal.com/",
464
+ email: null
465
+ },
466
+ notes: "Shelby County AL (Birmingham south suburbs, Hoover, Alabaster, Helena, Pelham, Calera; county seat Columbiana; FIPS 01117; fastest-growing county in AL) uses MapServer layer 91 (layerIndex=91) in the Cadastral_2022 service at maps.shelbyal.com. The layer has 160+ fields including Parcel_Num, NAM1, NAM2 (owner names), ADR1/ADR2, CITY, STATE, ZIP, ZIP4 (owner mailing address), PROP_ADR (property address), Subd_Name, Zoning, ACRES, SQUARE_FEET, PROP_CLASS, DIST, SCH_DIST, LN_VL1/LN_VL2, CUR_USE_VL, various CIMP/IMP improvement codes and values, tax sale fields, and audit timestamps. Owner search via UPPER(NAM1) LIKE on NAM1 works. Verified 2026-06-20: SMITH returns Shelby County addresses (e.g., 'SMITH GLENDA & ADAMS MIRIAM ROLLS & MIKE'). Note: layerIndex 91 is non-standard. Must specify /91 in the URL. Do not confuse with Shelby County TN (Memphis, FIPS 47157) already in the atlas."
467
+ },
421
468
  {
422
469
  id: "al-jefferson",
423
470
  state: "AL",
@@ -448,7 +495,6 @@ var alabama_default = {
448
495
  { name: "STATE_Mail", label: "Mailing State", searchable: false },
449
496
  { name: "Legal_Desc", label: "Legal Description", searchable: false },
450
497
  { name: "Property_City", label: "Property City", searchable: false },
451
- { name: "ZONING_BOE", label: "Zoning (Board of Equalization)", searchable: false },
452
498
  { name: "ACRES_APR", label: "Appraised Acres", searchable: false },
453
499
  { name: "AssdValue", label: "Assessed Value", searchable: false }
454
500
  ],
@@ -456,16 +502,16 @@ var alabama_default = {
456
502
  license: "public",
457
503
  licenseUrl: "https://www.jccal.org/Default.asp?ID=1220&pg=Enterprise+GIS",
458
504
  status: "live",
459
- lastVerified: "2026-05-15",
460
- verifiedBy: "manual"
505
+ lastVerified: "2026-06-27",
506
+ verifiedBy: "automated"
461
507
  }
462
508
  ],
463
509
  contact: {
464
- department: "Jefferson County Commission GIS / Information Technology Services \u2014 EGIS",
510
+ department: "Jefferson County Commission GIS / Information Technology Services, EGIS",
465
511
  url: "https://data-jeffco-al.opendata.arcgis.com/",
466
512
  email: null
467
513
  },
468
- notes: "Jefferson County AL (Birmingham, pop. 670,000; FIPS 01073) Basemap/Parcels layer. Data maintained by Jefferson County Tax Assessor Office and updated nightly. 70+ fields confirmed including PARCELID, OWNERNAME, Name2, PROP_MAIL, CITYMAIL, ZIP_MAIL, STATE_Mail, Bldg_Number, Street_Name, Street_Type, Street_Dir, ADDR_APR, ZIP, Property_City/State, Legal_Desc, SUBDIV_NAME, ZONING_BOE, Water/Sewer/Gas, ACRES_APR, GIS_ACRES, PrevParcelLand/Imp/Total, AssdValue, TotalMHValue, Cls, TAX_CODE, DISTRICT, ESN_NUM, FIREDEPTNAME, NEIGHBOR_N, SchDist, MapNumber, Sqft. OWNERNAME field returns padded fixed-width strings (trim on use). Note: distinct from Jefferson County CO (FIPS 08059) and Jefferson County KY (Louisville; FIPS 21111) already in atlas. Verified 2026-05-15: SMITH returns Birmingham-area addresses."
514
+ notes: "Jefferson County AL (Birmingham, pop. 670,000; FIPS 01073) Basemap/Parcels layer. Data maintained by Jefferson County Tax Assessor Office and updated nightly. 76 fields in live schema as of 2026-06-27: OBJECTID, Unique_ID, PID, TAX_TOWNSH, ISP_SECTION, SEC, QSECTION, BLOCK, PARCEL, PARCELID, APP_PID, DISTRICT, ESN_NUM, ADDR_PSPR, Bldg_Number, Street_Name, Street_Type, Street_Dir, APARTMENT, ADDRAPT_PS, OWNERNAME, PROP_MAIL, CITYMAIL, ZIP_MAIL, STATE_Mail, Legal_Desc, Property_City, Property_State, NEIGHBOR_N, SUBDIV_NAME, ADDR_APR, ZIP, TotalMHValue, PrevParcelLand/Imp/Total, Water, Sewer, Gas, ACRES_APR, GIS_ACRES, Remarks, Name2, Plat_Book/Page (\xD72), NbhdCd, Ownership, Topography, RoadAcc, MaintDate, CITY, NbhName, PriMunCode, SecMunCode, PriAcreage, SecAcreage, LegalRemarks, ParcelNo, Division, RecordYear, SchDist, MapNumber, Sqft, FIREDEPTNAME, Cls, BLDG_IND, TAX_CODE, OBY_IND, AssdValue, Territory, FireFee_District. NOTE 2026-06-27: ZONING_BOE is no longer in the live schema (schema drift), removed from searchFields. OWNERNAME field returns padded fixed-width strings (trim on use). Note: distinct from Jefferson County CO (FIPS 08059) and Jefferson County KY (Louisville; FIPS 21111) already in atlas. Verified 2026-06-27: metadata 200, query 200, 410K+ parcels."
469
515
  }
470
516
  ]
471
517
  };
@@ -518,7 +564,7 @@ var alaska_default = {
518
564
  url: "https://services1.arcgis.com/7HDiw78fcUiM2BWn/arcgis/rest/services/AK_Parcels/FeatureServer",
519
565
  email: null
520
566
  },
521
- notes: "15 fields confirmed: OBJECTID, parcel_id, owner, alt_owner, property_type, property_use, land_value, building_value, total_value, local_gov, datetime_processed, feature_id, Shape__Area, Shape__Length, GlobalID. This is the Alaska Statewide Parcel FeatureServer, combining parcel data from various local government bodies in Alaska. Filter by local_gov field \u2014 use UPPER(local_gov) LIKE '%ANCHORAGE%' for Anchorage Municipality parcels (confirmed returning real parcels including United Airlines, residential, etc.). Owner query confirmed working. NOTE: Alaska does not have counties \u2014 it has boroughs and a small number of unified municipalities. Anchorage is officially the Municipality of Anchorage (FIPS 02020). This statewide service also covers Fairbanks North Star Borough, Matanuska-Susitna Borough, and other AK jurisdictions via the local_gov field. Coverage and completeness vary by participating jurisdiction."
567
+ notes: "15 fields confirmed: OBJECTID, parcel_id, owner, alt_owner, property_type, property_use, land_value, building_value, total_value, local_gov, datetime_processed, feature_id, Shape__Area, Shape__Length, GlobalID. This is the Alaska Statewide Parcel FeatureServer, combining parcel data from various local government bodies in Alaska. Filter by local_gov field, use UPPER(local_gov) LIKE '%ANCHORAGE%' for Anchorage Municipality parcels (confirmed returning real parcels including United Airlines, residential, etc.). Owner query confirmed working. NOTE: Alaska does not have counties. It has boroughs and a small number of unified municipalities. Anchorage is officially the Municipality of Anchorage (FIPS 02020). This statewide service also covers Fairbanks North Star Borough, Matanuska-Susitna Borough, and other AK jurisdictions via the local_gov field. Coverage and completeness vary by participating jurisdiction."
522
568
  }
523
569
  ]
524
570
  };
@@ -571,7 +617,7 @@ var arizona_default = {
571
617
  }
572
618
  ],
573
619
  contact: {
574
- department: "Maricopa County Assessor's Office \u2014 GIS Division",
620
+ department: "Maricopa County Assessor's Office, GIS Division",
575
621
  url: "https://maps.mcassessor.maricopa.gov/",
576
622
  email: null
577
623
  },
@@ -617,11 +663,11 @@ var arizona_default = {
617
663
  }
618
664
  ],
619
665
  contact: {
620
- department: "City of Tucson / Pima County GIS \u2014 PropertyHousing MapServer (Pima Assessor PAREGION data)",
666
+ department: "City of Tucson / Pima County GIS, PropertyHousing MapServer (Pima Assessor PAREGION data)",
621
667
  url: "https://www.pima.gov/1796/Geographic-Information-Systems",
622
668
  email: null
623
669
  },
624
- notes: "75 fields confirmed. The PAREGION layer (layer 17) is the county-wide Pima County Assessor parcel layer, hosted on the City of Tucson mapdata.tucsonaz.gov ArcGIS server, which aggregates both City of Tucson and unincorporated Pima County parcels. Layer 40 (PAREGION_TUCSON) is the Tucson-only subset; use layer 17 for full county coverage. Owner-name field is ADDRESSEE (holds the assessor's addressee/taxpayer name \u2014 equivalent to owner name for most records). PARCEL format is alphanumeric (e.g. '101013880'). Also exposes FCV (Full Cash Value), TAXYR, USE_DESC, MAIL1-5 (mailing address), LEGAL1-5 (legal description), SITE_ADDRESS, SITE_ZIPCITY, SITE_ZIP, TAXAREA, GISACRES, CURZONE_OL (zoning), and YearBuilt. The supportsQuery field reads null in layer metadata (ArcGIS 11.3 quirk), but the service capabilities string is 'Map,Query,Data' \u2014 queries work as confirmed by live testing. maxRecordCount=2000. The gisweb.pima.gov hostname NXDOMAINs; mapdata.tucsonaz.gov is the correct publicly accessible host."
670
+ notes: "75 fields confirmed. The PAREGION layer (layer 17) is the county-wide Pima County Assessor parcel layer, hosted on the City of Tucson mapdata.tucsonaz.gov ArcGIS server, which aggregates both City of Tucson and unincorporated Pima County parcels. Layer 40 (PAREGION_TUCSON) is the Tucson-only subset; use layer 17 for full county coverage. Owner-name field is ADDRESSEE (holds the assessor's addressee/taxpayer name, equivalent to owner name for most records). PARCEL format is alphanumeric (e.g. '101013880'). Also exposes FCV (Full Cash Value), TAXYR, USE_DESC, MAIL1-5 (mailing address), LEGAL1-5 (legal description), SITE_ADDRESS, SITE_ZIPCITY, SITE_ZIP, TAXAREA, GISACRES, CURZONE_OL (zoning), and YearBuilt. The supportsQuery field reads null in layer metadata (ArcGIS 11.3 quirk), but the service capabilities string is 'Map,Query,Data'. Queries work as confirmed by live testing. maxRecordCount=2000. The gisweb.pima.gov hostname NXDOMAINs; mapdata.tucsonaz.gov is the correct publicly accessible host."
625
671
  },
626
672
  {
627
673
  id: "az-pinal",
@@ -672,6 +718,151 @@ var arizona_default = {
672
718
  ]
673
719
  };
674
720
 
721
+ // data/arkansas.json
722
+ var arkansas_default = {
723
+ stateSlug: "arkansas",
724
+ stateName: "Arkansas",
725
+ stateAbbrev: "AR",
726
+ lastUpdated: "2026-06-20",
727
+ counties: [
728
+ {
729
+ id: "ar-pulaski",
730
+ state: "AR",
731
+ stateName: "Arkansas",
732
+ stateSlug: "arkansas",
733
+ county: "Pulaski",
734
+ countySlug: "pulaski-county",
735
+ countyFips: "05119",
736
+ hasPublicRest: true,
737
+ endpoints: [
738
+ {
739
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
740
+ serviceType: "FeatureServer",
741
+ layerIndex: 6,
742
+ layerName: "Parcels",
743
+ supportsQuery: true,
744
+ corsEnabled: null,
745
+ searchFields: [
746
+ { name: "parcelid", label: "Parcel ID", searchable: true },
747
+ { name: "ownername", label: "Owner Name", searchable: true },
748
+ { name: "adrnum", label: "Address Number", searchable: false },
749
+ { name: "pstrnam", label: "Street Name", searchable: true },
750
+ { name: "adrcity", label: "City", searchable: true },
751
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
752
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
753
+ { name: "countyfips", label: "County FIPS (05119 = Pulaski)", searchable: false },
754
+ { name: "county", label: "County Name", searchable: false },
755
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
756
+ { name: "totalvalue", label: "Total Value", searchable: false }
757
+ ],
758
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05119'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
759
+ license: "public",
760
+ licenseUrl: "https://gis.arkansas.gov/",
761
+ status: "live",
762
+ lastVerified: "2026-06-20",
763
+ verifiedBy: "automated"
764
+ }
765
+ ],
766
+ contact: {
767
+ department: "Arkansas GIS Office (AGISO)",
768
+ url: "https://gis.arkansas.gov/",
769
+ email: null
770
+ },
771
+ notes: "Pulaski County AR (Little Rock, pop. 400,000; state capital; county seat Little Rock; FIPS 05119) is served by the Arkansas statewide parcel layer hosted by the Arkansas GIS Office (AGISO). The Planning_Cadastre/FeatureServer/6 layer aggregates parcels from all 75 AR counties, filter by countyfips='05119' to query Pulaski County specifically. Key fields: parcelid (parcel identifier), ownername (owner name), adrnum+pstrnam+adrcity+adrzip5 (address components), adrlabel (full address string), countyfips (5-digit FIPS, '05119' for Pulaski), countyid, county (county name text), parceltype, assessvalue, impvalue, landvalue, totalvalue, subdivision, section/township/range, camakey, dataprov, pubdate. Owner-name search via UPPER(ownername) LIKE works across all AR counties. Verified 2026-06-20: countyfips='05119' AND SMITH returns Little Rock addresses. The statewide layer is compiled from county assessor data and may lag 6\u201312 months from deed recording."
772
+ },
773
+ {
774
+ id: "ar-benton",
775
+ state: "AR",
776
+ stateName: "Arkansas",
777
+ stateSlug: "arkansas",
778
+ county: "Benton",
779
+ countySlug: "benton-county",
780
+ countyFips: "05007",
781
+ hasPublicRest: true,
782
+ endpoints: [
783
+ {
784
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
785
+ serviceType: "FeatureServer",
786
+ layerIndex: 6,
787
+ layerName: "Parcels",
788
+ supportsQuery: true,
789
+ corsEnabled: null,
790
+ searchFields: [
791
+ { name: "parcelid", label: "Parcel ID", searchable: true },
792
+ { name: "ownername", label: "Owner Name", searchable: true },
793
+ { name: "adrnum", label: "Address Number", searchable: false },
794
+ { name: "pstrnam", label: "Street Name", searchable: true },
795
+ { name: "adrcity", label: "City", searchable: true },
796
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
797
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
798
+ { name: "countyfips", label: "County FIPS (05007 = Benton)", searchable: false },
799
+ { name: "county", label: "County Name", searchable: false },
800
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
801
+ { name: "totalvalue", label: "Total Value", searchable: false }
802
+ ],
803
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05007'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
804
+ license: "public",
805
+ licenseUrl: "https://gis.arkansas.gov/",
806
+ status: "live",
807
+ lastVerified: "2026-06-20",
808
+ verifiedBy: "automated"
809
+ }
810
+ ],
811
+ contact: {
812
+ department: "Arkansas GIS Office (AGISO)",
813
+ url: "https://gis.arkansas.gov/",
814
+ email: null
815
+ },
816
+ notes: "Benton County AR (Bentonville/Rogers/Fayetteville metro north; county seat Bentonville; FIPS 05007; home to Walmart HQ) is served by the Arkansas statewide parcel layer. Filter countyfips='05007' to scope to Benton County. Same schema and endpoint as Pulaski County (AR statewide FeatureServer/6). Benton County is the fastest-growing county in Arkansas. Verified 2026-06-20: SMITH query returns Bentonville-area addresses."
817
+ },
818
+ {
819
+ id: "ar-washington",
820
+ state: "AR",
821
+ stateName: "Arkansas",
822
+ stateSlug: "arkansas",
823
+ county: "Washington",
824
+ countySlug: "washington-county",
825
+ countyFips: "05143",
826
+ hasPublicRest: true,
827
+ endpoints: [
828
+ {
829
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
830
+ serviceType: "FeatureServer",
831
+ layerIndex: 6,
832
+ layerName: "Parcels",
833
+ supportsQuery: true,
834
+ corsEnabled: null,
835
+ searchFields: [
836
+ { name: "parcelid", label: "Parcel ID", searchable: true },
837
+ { name: "ownername", label: "Owner Name", searchable: true },
838
+ { name: "adrnum", label: "Address Number", searchable: false },
839
+ { name: "pstrnam", label: "Street Name", searchable: true },
840
+ { name: "adrcity", label: "City", searchable: true },
841
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
842
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
843
+ { name: "countyfips", label: "County FIPS (05143 = Washington)", searchable: false },
844
+ { name: "county", label: "County Name", searchable: false },
845
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
846
+ { name: "totalvalue", label: "Total Value", searchable: false }
847
+ ],
848
+ sampleQuery: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6/query?where=countyfips%3D'05143'+AND+UPPER(ownername)+LIKE+UPPER('%25SMITH%25')&outFields=parcelid,ownername,adrlabel,countyfips&returnGeometry=false&f=json&resultRecordCount=10",
849
+ license: "public",
850
+ licenseUrl: "https://gis.arkansas.gov/",
851
+ status: "live",
852
+ lastVerified: "2026-06-20",
853
+ verifiedBy: "automated"
854
+ }
855
+ ],
856
+ contact: {
857
+ department: "Arkansas GIS Office (AGISO)",
858
+ url: "https://gis.arkansas.gov/",
859
+ email: null
860
+ },
861
+ notes: "Washington County AR (Fayetteville metro; county seat Fayetteville; FIPS 05143; home to University of Arkansas) is served by the Arkansas statewide parcel layer. Filter countyfips='05143' to scope to Washington County. Same schema and endpoint as Pulaski and Benton counties (AR statewide FeatureServer/6). Washington County AR must not be confused with Washington County in other states. Verified 2026-06-20: SMITH query returns Fayetteville-area addresses."
862
+ }
863
+ ]
864
+ };
865
+
675
866
  // data/california.json
676
867
  var california_default = {
677
868
  stateSlug: "california",
@@ -698,13 +889,19 @@ var california_default = {
698
889
  corsEnabled: null,
699
890
  searchFields: [
700
891
  { name: "AIN", label: "Assessor Identification Number (AIN)", searchable: true },
701
- { name: "SitusFullAddress", label: "Situs Address", searchable: true }
892
+ { name: "APN", label: "Assessor Parcel Number (formatted)", searchable: true },
893
+ { name: "SitusFullAddress", label: "Situs Address", searchable: true },
894
+ { name: "SitusCity", label: "City", searchable: false },
895
+ { name: "SitusZIP", label: "ZIP Code", searchable: false },
896
+ { name: "UseCode", label: "Use Code", searchable: false },
897
+ { name: "UseDescription", label: "Use Description", searchable: false },
898
+ { name: "YearBuilt1", label: "Year Built", searchable: false }
702
899
  ],
703
900
  sampleQuery: "https://public.gis.lacounty.gov/public/rest/services/LACounty_Cache/LACounty_Parcel/MapServer/0/query?where=AIN%3D%274321002009%27&outFields=*&f=json",
704
901
  license: "public",
705
902
  licenseUrl: null,
706
- status: "unverified",
707
- lastVerified: "2026-05-07",
903
+ status: "live",
904
+ lastVerified: "2026-06-04",
708
905
  verifiedBy: "manual"
709
906
  }
710
907
  ],
@@ -713,7 +910,52 @@ var california_default = {
713
910
  url: "https://egis-lacounty.hub.arcgis.com/",
714
911
  email: null
715
912
  },
716
- notes: "Los Angeles County is the most populous US county (pop. 10M+) and contains 88 incorporated cities plus a large unincorporated area. The Assessor Identification Number (AIN) is a 10-digit numeric code unique to each parcel. The public LACounty_Cache/LACounty_Parcel MapServer layer exposes AIN and SitusFullAddress only \u2014 owner name is not included, per California Government Code \xA77928.205, which broadly restricts owner name and mailing address from public REST endpoints across California. For ownership data, use the LA County Assessor's portal at assessor.lacounty.gov; the Assessor's office manages roughly 2.5 million parcels and publishes annual assessment rolls. The layer status is marked unverified as of 2026-05-07 \u2014 the endpoint URL structure has shifted between the LACounty_Cache service and the egis-lacounty.hub.arcgis.com open-data platform at different points; verify the MapServer URL is live before building a query workflow. The EGIS open-data hub at egis-lacounty.hub.arcgis.com has downloadable parcel shapefiles. AIN queries use exact match: AIN='4321002009' (no dashes)."
913
+ notes: "Los Angeles County is the most populous US county (pop. 10M+) and contains 88 incorporated cities plus a large unincorporated area. The Assessor Identification Number (AIN) is a 10-digit numeric code unique to each parcel. The public LACounty_Cache/LACounty_Parcel MapServer layer exposes AIN, APN, and SitusFullAddress (no owner name), per California Government Code \xA77928.205, which broadly restricts owner name and mailing address from public REST endpoints across California. For ownership data, use the LA County Assessor's portal at assessor.lacounty.gov; the Assessor's office manages roughly 2.5 million parcels and publishes annual assessment rolls. Re-verified live 2026-06-04, a sample AIN query returned a real parcel. The EGIS open-data hub at egis-lacounty.hub.arcgis.com has downloadable parcel shapefiles. AIN queries use exact match: AIN='4321002009' (no dashes)."
914
+ },
915
+ {
916
+ id: "ca-sacramento",
917
+ state: "CA",
918
+ stateName: "California",
919
+ stateSlug: "california",
920
+ county: "Sacramento",
921
+ countySlug: "sacramento-county",
922
+ countyFips: "06067",
923
+ hasPublicRest: true,
924
+ endpoints: [
925
+ {
926
+ url: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0",
927
+ serviceType: "FeatureServer",
928
+ layerIndex: 0,
929
+ layerName: "Parcels",
930
+ supportsQuery: true,
931
+ corsEnabled: null,
932
+ searchFields: [
933
+ { name: "APN", label: "Assessor Parcel Number", searchable: true },
934
+ { name: "STREET_NBR", label: "Street Number", searchable: true },
935
+ { name: "STREET_NAM", label: "Street Name", searchable: true },
936
+ { name: "CITY", label: "City", searchable: true },
937
+ { name: "ZIP", label: "ZIP Code", searchable: false },
938
+ { name: "TRA", label: "Tax Rate Area", searchable: false },
939
+ { name: "LANDUSE", label: "Land Use Code", searchable: false },
940
+ { name: "LU_GENERAL", label: "Land Use (General)", searchable: false },
941
+ { name: "LOT_SIZE", label: "Lot Size (sq ft)", searchable: false },
942
+ { name: "JURISDICTION", label: "Jurisdiction", searchable: true },
943
+ { name: "PRCL_TYPE", label: "Parcel Type", searchable: false }
944
+ ],
945
+ sampleQuery: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0/query?where=JURISDICTION%3D'CITRUS+HEIGHTS'&outFields=APN,STREET_NAM,STREET_NBR,CITY,ZIP,TRA,LANDUSE,LOT_SIZE&returnGeometry=false&f=json&resultRecordCount=10",
946
+ license: "public",
947
+ licenseUrl: "https://data-sacramentocounty.opendata.arcgis.com/",
948
+ status: "live",
949
+ lastVerified: "2026-05-15",
950
+ verifiedBy: "manual"
951
+ }
952
+ ],
953
+ contact: {
954
+ department: "Sacramento County GIS / Planning and Environmental Review",
955
+ url: "https://data-sacramentocounty.opendata.arcgis.com/",
956
+ email: null
957
+ },
958
+ notes: "22 fields confirmed: OBJECTID, APN, LOT_SIZE, NEIBRHC, JURISDICTION, STREET_NBR, STREET_NAM, CITY, ZIP, TRA, SUBDIVISIO, LOT, LANDUSE, LU_GENERAL, LU_SPECIF, LU_DETAIL, LU_USE, LU_SEC_USE, PRCL_KEY, PRCL_TYPE, Shape__Area, Shape__Length. Live query confirmed: JURISDICTION='CITRUS HEIGHTS' returns real Sacramento County parcels. NOTE: Owner name is NOT on this public layer. APN is the 14-character Sacramento County parcel number. Land use fields are detailed (LU_GENERAL, LU_SPECIF, LU_DETAIL). ArcGIS item ID: 8d011b99aebc46d48060b2e5bdd7f4a0. Hosted on ArcGIS Online (services1.arcgis.com/5NARefyPVtAeuJPU). Capabilities: Query, Extract. maxRecordCount=2000."
717
959
  },
718
960
  {
719
961
  id: "ca-sonoma",
@@ -751,7 +993,7 @@ var california_default = {
751
993
  url: "https://gis-sonomacounty.hub.arcgis.com/",
752
994
  email: null
753
995
  },
754
- notes: "Sonoma County (county seat Santa Rosa, pop. 490,000) publishes parcels through the OWTSPublic Cities_GIS_Parcel_Base FeatureServer. APN format is XXX-XXX-XXX with hyphens (e.g. '029-201-001'). Owner name is NOT exposed on this public layer \u2014 California Government Code \xA77928.205 restricts owner and mailing-address data from public REST endpoints. For ownership data, use the Sonoma County Assessor's parcel search at sonomacounty.ca.gov/assessor. The address schema on this layer was refactored in 2026: the prior single SitusAddress string field was replaced by two formatted address lines (SitusFormatted1, SitusFormatted2) plus fully structured components \u2014 SitusStreetNo, SitusDirection, SitusStreetName, SitusStreetType, SitusUnitNumber, SitusCity, SitusState, SitusZip. Queries on the old SitusAddress field name will fail against the current layer; use SitusFormatted1 or SitusStreetName instead. The endpoint is hosted on the county's own ArcGIS server (socogis.sonomacounty.ca.gov). The Sonoma County GIS open-data hub is at gis-sonomacounty.hub.arcgis.com."
996
+ notes: "Sonoma County (county seat Santa Rosa, pop. 490,000) publishes parcels through the OWTSPublic Cities_GIS_Parcel_Base FeatureServer. APN format is XXX-XXX-XXX with hyphens (e.g. '029-201-001'). Owner name is NOT exposed on this public layer, California Government Code \xA77928.205 restricts owner and mailing-address data from public REST endpoints. For ownership data, use the Sonoma County Assessor's parcel search at sonomacounty.ca.gov/assessor. The address schema on this layer was refactored in 2026: the prior single SitusAddress string field was replaced by two formatted address lines (SitusFormatted1, SitusFormatted2) plus fully structured components, SitusStreetNo, SitusDirection, SitusStreetName, SitusStreetType, SitusUnitNumber, SitusCity, SitusState, SitusZip. Queries on the old SitusAddress field name will fail against the current layer; use SitusFormatted1 or SitusStreetName instead. The endpoint is hosted on the county's own ArcGIS server (socogis.sonomacounty.ca.gov). The Sonoma County GIS open-data hub is at gis-sonomacounty.hub.arcgis.com."
755
997
  },
756
998
  {
757
999
  id: "ca-orange",
@@ -789,7 +1031,7 @@ var california_default = {
789
1031
  url: "https://data-ocpw.opendata.arcgis.com/",
790
1032
  email: null
791
1033
  },
792
- notes: "Orange County CA (Anaheim/Santa Ana/Irvine) \u2014 687,000+ parcels. Only 6 fields on the public REST endpoint: ASSESSMENT_NO, SITE_ADDRESS, YEAR_BUILT, NBR_BEDROOMS, SHAPE, OBJECTID. Owner name is NOT on this public layer. The ASSESSMENT_NO is the APN with hyphens (e.g. '072-478-23'). Full assessor data is available through the ParcelQuest partnership at the county assessor portal (ocassessor.gov). This domain (ocgis.com) is Orange County California Public Works GIS \u2014 note that Orange County Florida's GIS uses ocfl.net."
1034
+ notes: "Orange County CA (Anaheim/Santa Ana/Irvine), 687,000+ parcels. Only 6 fields on the public REST endpoint: ASSESSMENT_NO, SITE_ADDRESS, YEAR_BUILT, NBR_BEDROOMS, SHAPE, OBJECTID. Owner name is NOT on this public layer. The ASSESSMENT_NO is the APN with hyphens (e.g. '072-478-23'). Full assessor data is available through the ParcelQuest partnership at the county assessor portal (ocassessor.gov). This domain (ocgis.com) is Orange County California Public Works GIS. Note that Orange County Florida's GIS uses ocfl.net."
793
1035
  },
794
1036
  {
795
1037
  id: "ca-san-bernardino",
@@ -825,11 +1067,11 @@ var california_default = {
825
1067
  }
826
1068
  ],
827
1069
  contact: {
828
- department: "County of San Bernardino \u2014 Geographic Information Management Systems (GIMS)",
1070
+ department: "County of San Bernardino, Geographic Information Management Systems (GIMS)",
829
1071
  url: "https://data-sbcounty.opendata.arcgis.com/",
830
1072
  email: null
831
1073
  },
832
- notes: "San Bernardino County is the largest county by land area in the contiguous United States (20,000+ sq mi, extending from the Inland Empire to the Nevada and Arizona borders), with a population of approximately 2.2M. 21 fields confirmed including ParcelNumber (the APN), OwnerName, LandValue, ImprovementValue, PersonalPropertyValue, ExemptionValue, HomeOwnerExemption, Acreage, TaxStatus, TaxRateArea, Zoning, ZoningDescription, Jurisdiction. Critical limitation: the OwnerName field exists in the schema and is returned in query results, but its value is redacted to the string 'Protected Per CA Gov Code 7928.205' on every public record \u2014 this is a deliberate redaction applied server-side under California Assembly Bill 1785 (effective January 2023), not a field that varies by parcel. ParcelNumber, LandValue, ImprovementValue, Zoning, and Acreage remain accessible and unredacted. Hosted on ArcGIS Online (services.arcgis.com/aA3snZwJfFkVyDuP). The county Assessor portal at arc.sbcounty.gov/property-information/ provides ownership data by APN. The Geographic Information Management Systems (GIMS) division manages the spatial data. Open-data hub: data-sbcounty.opendata.arcgis.com."
1074
+ notes: "San Bernardino County is the largest county by land area in the contiguous United States (20,000+ sq mi, extending from the Inland Empire to the Nevada and Arizona borders), with a population of approximately 2.2M. 21 fields confirmed including ParcelNumber (the APN), OwnerName, LandValue, ImprovementValue, PersonalPropertyValue, ExemptionValue, HomeOwnerExemption, Acreage, TaxStatus, TaxRateArea, Zoning, ZoningDescription, Jurisdiction. Critical limitation: the OwnerName field exists in the schema and is returned in query results, but its value is redacted to the string 'Protected Per CA Gov Code 7928.205' on every public record. This is a deliberate redaction applied server-side under California Assembly Bill 1785 (effective January 2023), not a field that varies by parcel. ParcelNumber, LandValue, ImprovementValue, Zoning, and Acreage remain accessible and unredacted. Hosted on ArcGIS Online (services.arcgis.com/aA3snZwJfFkVyDuP). The county Assessor portal at arc.sbcounty.gov/property-information/ provides ownership data by APN. The Geographic Information Management Systems (GIMS) division manages the spatial data. Open-data hub: data-sbcounty.opendata.arcgis.com."
833
1075
  },
834
1076
  {
835
1077
  id: "ca-san-diego",
@@ -873,7 +1115,7 @@ var california_default = {
873
1115
  url: "https://gis-public.sandiegocounty.gov/",
874
1116
  email: null
875
1117
  },
876
- notes: "65 fields confirmed including APN, APN_8, PARCELID, OWN_NAME1/2/3, OWN_ADDR1-4, OWN_ZIP, SITUS_ADDRESS (house number), SITUS_STREET, SITUS_SUFFIX, SITUS_PRE_DIR, SITUS_POST_DIR, SITUS_BUILDING, SITUS_SUITE, SITUS_COMMUNITY, SITUS_ZIP, SITUS_JURIS, OWNEROCC, NUCLEUS_SITUS_FROM_NBR/THRU_NBR, NUCLEUS_USE_CD, NUCLEUS_ZONE_CD. Owner query tested and confirmed \u2014 OWN_NAME1 returns real names (e.g., 'SMITH MARY ANN'). The display field is OWN_NAME1. Copyright: 'SanGIS using legal recorded data provided by the County Recorders and Assessor's Office.' This is the GeocoderMerged MapServer layer 1, which combines assessor parcel data. A sibling PARCELS_ALL service exists at gis-public.sandiegocounty.gov/arcgis/rest/services/sdep_warehouse/PARCELS_ALL/MapServer but returns HTTP 403 to external callers; the webmaps.sandiego.gov endpoint is the publicly accessible equivalent."
1118
+ notes: "65 fields confirmed including APN, APN_8, PARCELID, OWN_NAME1/2/3, OWN_ADDR1-4, OWN_ZIP, SITUS_ADDRESS (house number), SITUS_STREET, SITUS_SUFFIX, SITUS_PRE_DIR, SITUS_POST_DIR, SITUS_BUILDING, SITUS_SUITE, SITUS_COMMUNITY, SITUS_ZIP, SITUS_JURIS, OWNEROCC, NUCLEUS_SITUS_FROM_NBR/THRU_NBR, NUCLEUS_USE_CD, NUCLEUS_ZONE_CD. Owner query tested and confirmed, OWN_NAME1 returns real names (e.g., 'SMITH MARY ANN'). The display field is OWN_NAME1. Copyright: 'SanGIS using legal recorded data provided by the County Recorders and Assessor's Office.' This is the GeocoderMerged MapServer layer 1, which combines assessor parcel data. A sibling PARCELS_ALL service exists at gis-public.sandiegocounty.gov/arcgis/rest/services/sdep_warehouse/PARCELS_ALL/MapServer but returns HTTP 403 to external callers; the webmaps.sandiego.gov endpoint is the publicly accessible equivalent."
877
1119
  },
878
1120
  {
879
1121
  id: "ca-santa-clara",
@@ -912,11 +1154,11 @@ var california_default = {
912
1154
  }
913
1155
  ],
914
1156
  contact: {
915
- department: "County of Santa Clara \u2014 Geographic Information Services",
1157
+ department: "County of Santa Clara, Geographic Information Services",
916
1158
  url: "https://gis.santaclaracounty.gov/",
917
1159
  email: null
918
1160
  },
919
- notes: "19 fields confirmed: FID, ap_lp, apn, number_of_, objectid, shape_area, shape_leng, situs_city, situs_hous, situs_ho_1, situs_stat, situs_stre, situs_st_1, situs_st_2, situs_unit, situs_zip_, tax_rate_a, Shape__Area, Shape__Length. Live query confirmed: situs_city='SAN JOSE' returns real parcel data. NOTE: Owner name is NOT on this public layer \u2014 Santa Clara County restricts owner data per CA Gov Code 7928.205. No value/assessment fields available. APN format is numeric without dashes. ArcGIS item ID: 5d3c68c25b3e443893577fb6ecf54ba7. Hosted on ArcGIS Online (services8.arcgis.com/fpjs8A5Vtkshblnd). Parcel data updated annually around August. Capabilities: Query only. maxRecordCount=2000."
1161
+ notes: "19 fields confirmed: FID, ap_lp, apn, number_of_, objectid, shape_area, shape_leng, situs_city, situs_hous, situs_ho_1, situs_stat, situs_stre, situs_st_1, situs_st_2, situs_unit, situs_zip_, tax_rate_a, Shape__Area, Shape__Length. Live query confirmed: situs_city='SAN JOSE' returns real parcel data. NOTE: Owner name is NOT on this public layer, Santa Clara County restricts owner data per CA Gov Code 7928.205. No value/assessment fields available. APN format is numeric without dashes. ArcGIS item ID: 5d3c68c25b3e443893577fb6ecf54ba7. Hosted on ArcGIS Online (services8.arcgis.com/fpjs8A5Vtkshblnd). Parcel data updated annually around August. Capabilities: Query only. maxRecordCount=2000."
920
1162
  },
921
1163
  {
922
1164
  id: "ca-alameda",
@@ -963,7 +1205,7 @@ var california_default = {
963
1205
  url: "https://data.acgov.org/",
964
1206
  email: null
965
1207
  },
966
- notes: "42 fields confirmed including APN, APN_SORT, BOOK, PAGE, PARCEL, SUB_PARCEL, CLCA_CATEGORY, CENTROID_X, CENTROID_Y, SortParcel, PrintParcel, TRAPrimary, TRASecondary, SitusStreetNumber, SitusStreetName, SitusUnit, SitusCity, SitusZip, SitusZip_4, Land, Imps, CLCALand, CLCAImps, HOEX, OTEX, TotalNetValue, LatestDocument_Prefix, LatestDocumentSeries, LatestDocumentDate, MailingAddressStreet, MailingAddressUnit, MailingAddressCityState, MailingAddressZip, MailingAddressZip_4, UseCode, EconUnit, EconomicUnit, SitusAddress, MailingAddress, Shape__Area, Shape__Length. Live query confirmed: SitusCity='OAKLAND' returns real parcel data (APN='15-1338-24', Land=458816). NOTE: Owner name is NOT on this public layer \u2014 CA Gov Code 7928.205 applies. Mailing address (owner's mailing) is available via MailingAddress/MailingAddressStreet. APN format uses dashes (e.g. '15-1338-24'). ArcGIS item ID: 2b026350b5dd40b18ed7a321fdcdba81. Hosted on ArcGIS Online (services5.arcgis.com/ROBnTHSNjoZ2Wm1P). Capabilities: Query, Extract. maxRecordCount=2000."
1208
+ notes: "42 fields confirmed including APN, APN_SORT, BOOK, PAGE, PARCEL, SUB_PARCEL, CLCA_CATEGORY, CENTROID_X, CENTROID_Y, SortParcel, PrintParcel, TRAPrimary, TRASecondary, SitusStreetNumber, SitusStreetName, SitusUnit, SitusCity, SitusZip, SitusZip_4, Land, Imps, CLCALand, CLCAImps, HOEX, OTEX, TotalNetValue, LatestDocument_Prefix, LatestDocumentSeries, LatestDocumentDate, MailingAddressStreet, MailingAddressUnit, MailingAddressCityState, MailingAddressZip, MailingAddressZip_4, UseCode, EconUnit, EconomicUnit, SitusAddress, MailingAddress, Shape__Area, Shape__Length. Live query confirmed: SitusCity='OAKLAND' returns real parcel data (APN='15-1338-24', Land=458816). NOTE: Owner name is NOT on this public layer, CA Gov Code 7928.205 applies. Mailing address (owner's mailing) is available via MailingAddress/MailingAddressStreet. APN format uses dashes (e.g. '15-1338-24'). ArcGIS item ID: 2b026350b5dd40b18ed7a321fdcdba81. Hosted on ArcGIS Online (services5.arcgis.com/ROBnTHSNjoZ2Wm1P). Capabilities: Query, Extract. maxRecordCount=2000."
967
1209
  },
968
1210
  {
969
1211
  id: "ca-contra-costa",
@@ -1003,57 +1245,12 @@ var california_default = {
1003
1245
  }
1004
1246
  ],
1005
1247
  contact: {
1006
- department: "Contra Costa County GIS / CCMAP \u2014 DOIT GIS Division",
1248
+ department: "Contra Costa County GIS / CCMAP, DOIT GIS Division",
1007
1249
  url: "https://contra-costa-gis-cocogis.hub.arcgis.com/",
1008
1250
  email: null
1009
1251
  },
1010
1252
  notes: "42 fields confirmed including APN, APN_CHECK, TRA, N_STR_NM, N_STR_SUF, N_ODD_EVN, N_STR_NBR, N_FRAC, N_APT_NBR, N_CTY_ST, N_ZIP, N_ZIP_EXT, DESC_, VIEW_, ACREAGE, C_DED_NBR, C_DED_DT, USE_CODE, LAND_VALUE, IMP_VAL, PER_PRPTY, TOT_AREA, XMP_CODE1, XMP_AMT1. Live query confirmed: N_CTY_ST LIKE 'CONCORD%' returns real Concord CA parcels (APN='510052007', LAND_VALUE=512317). NOTE: Owner name is NOT on this public layer per CA Gov Code 7928.205. The CCMAP Assessment Parcels service is the county-maintained assessor parcel layer for Contra Costa County (Concord, Richmond, Walnut Creek, Antioch, etc.). Hosted on the county's GIS server (gis.cccounty.us). The main CCMAP MapServer (/CCMAP/CCMAP) has no external query layer. maxRecordCount=2000. Capabilities: Map, Query, Data."
1011
1253
  },
1012
- {
1013
- id: "ca-sacramento",
1014
- state: "CA",
1015
- stateName: "California",
1016
- stateSlug: "california",
1017
- county: "Sacramento",
1018
- countySlug: "sacramento-county",
1019
- countyFips: "06067",
1020
- hasPublicRest: true,
1021
- endpoints: [
1022
- {
1023
- url: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0",
1024
- serviceType: "FeatureServer",
1025
- layerIndex: 0,
1026
- layerName: "Parcels",
1027
- supportsQuery: true,
1028
- corsEnabled: null,
1029
- searchFields: [
1030
- { name: "APN", label: "Assessor Parcel Number", searchable: true },
1031
- { name: "STREET_NBR", label: "Street Number", searchable: false },
1032
- { name: "STREET_NAM", label: "Street Name", searchable: true },
1033
- { name: "CITY", label: "City", searchable: true },
1034
- { name: "ZIP", label: "ZIP Code", searchable: false },
1035
- { name: "TRA", label: "Tax Rate Area", searchable: false },
1036
- { name: "LANDUSE", label: "Land Use Code", searchable: false },
1037
- { name: "LU_GENERAL", label: "Land Use (General)", searchable: false },
1038
- { name: "LOT_SIZE", label: "Lot Size (sq ft)", searchable: false },
1039
- { name: "JURISDICTION", label: "Jurisdiction", searchable: true },
1040
- { name: "PRCL_TYPE", label: "Parcel Type", searchable: false }
1041
- ],
1042
- sampleQuery: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0/query?where=JURISDICTION%3D'CITRUS+HEIGHTS'&outFields=APN,STREET_NAM,STREET_NBR,CITY,ZIP,TRA,LANDUSE,LOT_SIZE&returnGeometry=false&f=json&resultRecordCount=10",
1043
- license: "public",
1044
- licenseUrl: "https://data-sacramentocounty.opendata.arcgis.com/",
1045
- status: "live",
1046
- lastVerified: "2026-05-15",
1047
- verifiedBy: "manual"
1048
- }
1049
- ],
1050
- contact: {
1051
- department: "Sacramento County GIS / Planning and Environmental Review",
1052
- url: "https://data-sacramentocounty.opendata.arcgis.com/",
1053
- email: null
1054
- },
1055
- notes: "22 fields confirmed: OBJECTID, APN, LOT_SIZE, NEIBRHC, JURISDICTION, STREET_NBR, STREET_NAM, CITY, ZIP, TRA, SUBDIVISIO, LOT, LANDUSE, LU_GENERAL, LU_SPECIF, LU_DETAIL, LU_USE, LU_SEC_USE, PRCL_KEY, PRCL_TYPE, Shape__Area, Shape__Length. Live query confirmed: JURISDICTION='CITRUS HEIGHTS' returns real Sacramento County parcels. NOTE: Owner name is NOT on this public layer. APN is the 14-character Sacramento County parcel number. Land use fields are detailed (LU_GENERAL, LU_SPECIF, LU_DETAIL). ArcGIS item ID: 8d011b99aebc46d48060b2e5bdd7f4a0. Hosted on ArcGIS Online (services1.arcgis.com/5NARefyPVtAeuJPU). Capabilities: Query, Extract. maxRecordCount=2000."
1056
- },
1057
1254
  {
1058
1255
  id: "ca-ventura",
1059
1256
  state: "CA",
@@ -1094,7 +1291,7 @@ var california_default = {
1094
1291
  }
1095
1292
  ],
1096
1293
  contact: {
1097
- department: "Ventura County Information Technology Services \u2014 GIS Division",
1294
+ department: "Ventura County Information Technology Services, GIS Division",
1098
1295
  url: "https://venturacountydatadownloads-vcitsgis.hub.arcgis.com/",
1099
1296
  email: null
1100
1297
  },
@@ -1152,11 +1349,11 @@ var colorado_default = {
1152
1349
  }
1153
1350
  ],
1154
1351
  contact: {
1155
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1352
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1156
1353
  url: "https://gis.colorado.gov/",
1157
1354
  email: null
1158
1355
  },
1159
- notes: "34 fields confirmed including parcel_id, countyName, countyFips, situsAdd, sitAddCty, sitAddZip, owner, owner2, ownerAdd, ownAddCty, ownAddStt, ownAddZip, legalDesc, landSqft, landAcres, block, lot, subCode, subName, zoningCode, zoningDesc, landUseCde, landUseDsc, saleDate, salePrice, apprValTot, asedValTot, URL, dateReceived. This is a statewide composite \u2014 query by countyName='Denver' OR countyFips='031' (note: FIPS here is the 3-digit county portion, not the full 5-digit). Owner query tested and confirmed with real Denver addresses. This same endpoint covers all 64 Colorado counties; filter by countyName or countyFips for any of them. Denver is a consolidated city-county (countyName='Denver' and cityName='Denver' are the same entity)."
1356
+ notes: "34 fields confirmed including parcel_id, countyName, countyFips, situsAdd, sitAddCty, sitAddZip, owner, owner2, ownerAdd, ownAddCty, ownAddStt, ownAddZip, legalDesc, landSqft, landAcres, block, lot, subCode, subName, zoningCode, zoningDesc, landUseCde, landUseDsc, saleDate, salePrice, apprValTot, asedValTot, URL, dateReceived. This is a statewide composite. Query by countyName='Denver' OR countyFips='031' (note: FIPS here is the 3-digit county portion, not the full 5-digit). Owner query tested and confirmed with real Denver addresses. This same endpoint covers all 64 Colorado counties; filter by countyName or countyFips for any of them. Denver is a consolidated city-county (countyName='Denver' and cityName='Denver' are the same entity)."
1160
1357
  },
1161
1358
  {
1162
1359
  id: "co-el-paso",
@@ -1199,11 +1396,11 @@ var colorado_default = {
1199
1396
  }
1200
1397
  ],
1201
1398
  contact: {
1202
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1399
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1203
1400
  url: "https://gis.colorado.gov/",
1204
1401
  email: null
1205
1402
  },
1206
- notes: "El Paso County (Colorado Springs metro, pop. 730,000, county seat Colorado Springs) is the second-most populous Colorado county and home to Fort Carson, Peterson Space Force Base, and Schriever Space Force Base. Like all Colorado counties, it uses the Colorado Governor's OIT statewide composite endpoint \u2014 query by countyName='El Paso' or countyFips='041' (the statewide layer uses the 3-digit county FIPS, not the full 5-digit '08041'). Owner query confirmed live with real Colorado Springs results (e.g., 'SMITH CHERYL LYNNE'). The composite layer exposes parcel_id, owner/owner2, ownerAdd/ownAddCty/ownAddStt/ownAddZip, situsAdd/sitAddCty/sitAddZip, legalDesc, landSqft/landAcres, zoningCode/zoningDesc, landUseCde/landUseDsc, saleDate, salePrice, apprValTot, asedValTot, and dateReceived (currency indicator for when each county's data was loaded). The El Paso County Assessor at assessor.elpasoco.com handles formal reassessment disputes. Colorado assesses on a biennial cycle \u2014 unlike Illinois or California, which use triennial or annual schedules."
1403
+ notes: "El Paso County (Colorado Springs metro, pop. 730,000, county seat Colorado Springs) is the second-most populous Colorado county and home to Fort Carson, Peterson Space Force Base, and Schriever Space Force Base. Like all Colorado counties, it uses the Colorado Governor's OIT statewide composite endpoint, query by countyName='El Paso' or countyFips='041' (the statewide layer uses the 3-digit county FIPS, not the full 5-digit '08041'). Owner query confirmed live with real Colorado Springs results (e.g., 'SMITH CHERYL LYNNE'). The composite layer exposes parcel_id, owner/owner2, ownerAdd/ownAddCty/ownAddStt/ownAddZip, situsAdd/sitAddCty/sitAddZip, legalDesc, landSqft/landAcres, zoningCode/zoningDesc, landUseCde/landUseDsc, saleDate, salePrice, apprValTot, asedValTot, and dateReceived (currency indicator for when each county's data was loaded). The El Paso County Assessor at assessor.elpasoco.com handles formal reassessment disputes. Colorado assesses on a biennial cycle, unlike Illinois or California, which use triennial or annual schedules."
1207
1404
  },
1208
1405
  {
1209
1406
  id: "co-jefferson",
@@ -1246,11 +1443,11 @@ var colorado_default = {
1246
1443
  }
1247
1444
  ],
1248
1445
  contact: {
1249
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1446
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1250
1447
  url: "https://gis.colorado.gov/",
1251
1448
  email: null
1252
1449
  },
1253
- notes: "Jefferson County (Denver's west-side suburbs \u2014 Lakewood, Arvada, Wheat Ridge, Evergreen, Golden; pop. 582,000, county seat Golden) is a mixed urban-mountain county extending from the Denver metro edge into the foothills and lower Rockies. Like all Colorado counties, it uses the Colorado Governor's OIT statewide composite endpoint \u2014 query by countyName='Jefferson' or countyFips='059' (3-digit county portion; full 5-digit is '08059'). Owner query confirmed live: returns real Jefferson County results (e.g., 'SMITH STEVEN W' at '7347 W FREMONT DR LITTLETON'). The composite layer exposes parcel_id, owner/owner2 (owner name fields), ownerAdd/ownAddCty/ownAddStt/ownAddZip (owner mailing address), situsAdd/sitAddCty/sitAddZip (situs address), legalDesc, landSqft/landAcres, zoningCode/zoningDesc, landUseCde/landUseDsc, saleDate/salePrice, apprValTot/asedValTot, and dateReceived. The Jefferson County Assessor at jeffco.us/1304/Assessor administers biennial reassessments (Colorado assesses on a two-year cycle, not triennial). Open-data downloads available at jeffco.us/GIS."
1450
+ notes: "Jefferson County (Denver's west-side suburbs, Lakewood, Arvada, Wheat Ridge, Evergreen, Golden; pop. 582,000, county seat Golden) is a mixed urban-mountain county extending from the Denver metro edge into the foothills and lower Rockies. Like all Colorado counties, it uses the Colorado Governor's OIT statewide composite endpoint, query by countyName='Jefferson' or countyFips='059' (3-digit county portion; full 5-digit is '08059'). Owner query confirmed live: returns real Jefferson County results (e.g., 'SMITH STEVEN W' at '7347 W FREMONT DR LITTLETON'). The composite layer exposes parcel_id, owner/owner2 (owner name fields), ownerAdd/ownAddCty/ownAddStt/ownAddZip (owner mailing address), situsAdd/sitAddCty/sitAddZip (situs address), legalDesc, landSqft/landAcres, zoningCode/zoningDesc, landUseCde/landUseDsc, saleDate/salePrice, apprValTot/asedValTot, and dateReceived. The Jefferson County Assessor at jeffco.us/1304/Assessor administers biennial reassessments (Colorado assesses on a two-year cycle, not triennial). Open-data downloads available at jeffco.us/GIS."
1254
1451
  }
1255
1452
  ]
1256
1453
  };
@@ -1260,7 +1457,7 @@ var connecticut_default = {
1260
1457
  stateSlug: "connecticut",
1261
1458
  stateName: "Connecticut",
1262
1459
  stateAbbrev: "CT",
1263
- lastUpdated: "2026-05-15",
1460
+ lastUpdated: "2026-06-20",
1264
1461
  counties: [
1265
1462
  {
1266
1463
  id: "ct-hartford",
@@ -1310,11 +1507,161 @@ var connecticut_default = {
1310
1507
  }
1311
1508
  ],
1312
1509
  contact: {
1313
- department: "Connecticut Office of Policy and Management (OPM) \u2014 GIS Data",
1510
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1511
+ url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1512
+ email: null
1513
+ },
1514
+ 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."
1515
+ },
1516
+ {
1517
+ id: "ct-new-haven",
1518
+ state: "CT",
1519
+ stateName: "Connecticut",
1520
+ stateSlug: "connecticut",
1521
+ county: "New Haven",
1522
+ countySlug: "new-haven-county",
1523
+ countyFips: "09009",
1524
+ hasPublicRest: true,
1525
+ endpoints: [
1526
+ {
1527
+ url: "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
1528
+ serviceType: "FeatureServer",
1529
+ layerIndex: 0,
1530
+ layerName: "Connecticut_CAMA_and_Parcel_Layer",
1531
+ supportsQuery: true,
1532
+ corsEnabled: null,
1533
+ searchFields: [
1534
+ { 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 },
1535
+ { name: "Owner", label: "Owner Name", searchable: true },
1536
+ { name: "Co_Owner", label: "Co-Owner Name", searchable: true },
1537
+ { name: "Parcel_ID", label: "Parcel ID (may be blank for some towns incl. New Haven)", searchable: true },
1538
+ { name: "Location_1", label: "Property Location / Address", searchable: true },
1539
+ { name: "Property_City", label: "Property City", searchable: false },
1540
+ { name: "Mailing_Address", label: "Mailing Address", searchable: true },
1541
+ { name: "Mailing_City", label: "Mailing City", searchable: false },
1542
+ { name: "Mailing_State", label: "Mailing State", searchable: false },
1543
+ { name: "Assessed_Total", label: "Total Assessed Value", searchable: false },
1544
+ { name: "Assessed_Land", label: "Land Assessed Value", searchable: false },
1545
+ { name: "Assessed_Building", label: "Building Assessed Value", searchable: false },
1546
+ { name: "Valuation_Year", label: "Valuation Year", searchable: false },
1547
+ { name: "Sale_Price", label: "Sale Price", searchable: false },
1548
+ { name: "Sale_Date", label: "Sale Date", searchable: false },
1549
+ { name: "State_Use_Description", label: "Use Description", searchable: false },
1550
+ { name: "Living_Area", label: "Living Area (sq ft)", searchable: false }
1551
+ ],
1552
+ 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",
1553
+ license: "public",
1554
+ licenseUrl: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1555
+ status: "live",
1556
+ lastVerified: "2026-06-20",
1557
+ verifiedBy: "manual"
1558
+ }
1559
+ ],
1560
+ contact: {
1561
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1314
1562
  url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1315
1563
  email: null
1316
1564
  },
1317
- 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 \u2014 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."
1565
+ 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)."
1566
+ },
1567
+ {
1568
+ id: "ct-fairfield",
1569
+ state: "CT",
1570
+ stateName: "Connecticut",
1571
+ stateSlug: "connecticut",
1572
+ county: "Fairfield",
1573
+ countySlug: "fairfield-county",
1574
+ countyFips: "09001",
1575
+ hasPublicRest: true,
1576
+ endpoints: [
1577
+ {
1578
+ url: "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
1579
+ serviceType: "FeatureServer",
1580
+ layerIndex: 0,
1581
+ layerName: "Connecticut_CAMA_and_Parcel_Layer",
1582
+ supportsQuery: true,
1583
+ corsEnabled: null,
1584
+ searchFields: [
1585
+ { name: "Town_Name", label: "Town Name (REQUIRED filter, set to a Fairfield County town, e.g. Bridgeport, Stamford, Norwalk, Danbury, Fairfield, Westport)", searchable: true },
1586
+ { name: "Owner", label: "Owner Name", searchable: true },
1587
+ { name: "Co_Owner", label: "Co-Owner Name", searchable: true },
1588
+ { name: "Parcel_ID", label: "Parcel ID (may be blank for some towns)", searchable: true },
1589
+ { name: "Location_1", label: "Property Location / Address", searchable: true },
1590
+ { name: "Property_City", label: "Property City", searchable: false },
1591
+ { name: "Mailing_Address", label: "Mailing Address", searchable: true },
1592
+ { name: "Mailing_City", label: "Mailing City", searchable: false },
1593
+ { name: "Mailing_State", label: "Mailing State", searchable: false },
1594
+ { name: "Assessed_Total", label: "Total Assessed Value", searchable: false },
1595
+ { name: "Assessed_Land", label: "Land Assessed Value", searchable: false },
1596
+ { name: "Assessed_Building", label: "Building Assessed Value", searchable: false },
1597
+ { name: "Valuation_Year", label: "Valuation Year", searchable: false },
1598
+ { name: "Sale_Price", label: "Sale Price", searchable: false },
1599
+ { name: "Sale_Date", label: "Sale Date", searchable: false },
1600
+ { name: "State_Use_Description", label: "Use Description", searchable: false },
1601
+ { name: "Living_Area", label: "Living Area (sq ft)", searchable: false }
1602
+ ],
1603
+ 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",
1604
+ license: "public",
1605
+ licenseUrl: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1606
+ status: "live",
1607
+ lastVerified: "2026-06-20",
1608
+ verifiedBy: "manual"
1609
+ }
1610
+ ],
1611
+ contact: {
1612
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1613
+ url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1614
+ email: null
1615
+ },
1616
+ 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."
1617
+ }
1618
+ ]
1619
+ };
1620
+
1621
+ // data/delaware.json
1622
+ var delaware_default = {
1623
+ stateSlug: "delaware",
1624
+ stateName: "Delaware",
1625
+ stateAbbrev: "DE",
1626
+ lastUpdated: "2026-06-20",
1627
+ counties: [
1628
+ {
1629
+ id: "de-new-castle",
1630
+ state: "DE",
1631
+ stateName: "Delaware",
1632
+ stateSlug: "delaware",
1633
+ county: "New Castle",
1634
+ countySlug: "new-castle-county",
1635
+ countyFips: "10003",
1636
+ hasPublicRest: true,
1637
+ endpoints: [
1638
+ {
1639
+ url: "https://gis.nccde.org/entserver/rest/services/Foundation/Base_Layers/MapServer/0",
1640
+ serviceType: "MapServer",
1641
+ layerIndex: 0,
1642
+ layerName: "Parcels",
1643
+ supportsQuery: true,
1644
+ corsEnabled: null,
1645
+ searchFields: [
1646
+ { name: "PRCLID", label: "Parcel ID (APN)", searchable: true },
1647
+ { name: "CNTCTLAST", label: "Owner Last Name / Contact", searchable: true },
1648
+ { name: "OWNADDR", label: "Owner Mailing Address", searchable: false },
1649
+ { name: "ADDRESS", label: "Property Address", searchable: true }
1650
+ ],
1651
+ 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",
1652
+ license: "public",
1653
+ licenseUrl: "https://gis.nccde.org/",
1654
+ status: "live",
1655
+ lastVerified: "2026-06-20",
1656
+ verifiedBy: "manual"
1657
+ }
1658
+ ],
1659
+ contact: {
1660
+ department: "New Castle County Government, Office of Land Use / GIS (NCCDE)",
1661
+ url: "https://gis.nccde.org/",
1662
+ email: null
1663
+ },
1664
+ 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)."
1318
1665
  }
1319
1666
  ]
1320
1667
  };
@@ -1324,7 +1671,7 @@ var florida_default = {
1324
1671
  stateSlug: "florida",
1325
1672
  stateName: "Florida",
1326
1673
  stateAbbrev: "FL",
1327
- lastUpdated: "2026-05-15",
1674
+ lastUpdated: "2026-06-06",
1328
1675
  counties: [
1329
1676
  {
1330
1677
  id: "fl-miami-dade",
@@ -1404,7 +1751,7 @@ var florida_default = {
1404
1751
  url: "https://ocgis-datahub-ocfl.hub.arcgis.com/",
1405
1752
  email: null
1406
1753
  },
1407
- 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 \u2014 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."
1754
+ 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."
1408
1755
  },
1409
1756
  {
1410
1757
  id: "fl-hillsborough",
@@ -1417,36 +1764,36 @@ var florida_default = {
1417
1764
  hasPublicRest: true,
1418
1765
  endpoints: [
1419
1766
  {
1420
- url: "https://www25.swfwmd.state.fl.us/arcgiswmis/rest/services/r27/LocationInfo/MapServer/71",
1767
+ url: "https://gis.hcpafl.org/arcgis/rest/services/Webmaps/HillsboroughFL_WebParcels/MapServer/0",
1421
1768
  serviceType: "MapServer",
1422
- layerIndex: 71,
1423
- layerName: "Hillsborough County Parcels",
1769
+ layerIndex: 0,
1770
+ layerName: "WebParcels_NonConfidential",
1424
1771
  supportsQuery: true,
1425
1772
  corsEnabled: null,
1426
1773
  searchFields: [
1427
- { name: "PARNO", label: "Parcel Number", searchable: true },
1428
- { name: "OWNNAME", label: "Owner Name", searchable: true },
1429
- { name: "MAILADD", label: "Mailing Address", searchable: true },
1430
- { name: "STNAME", label: "State", searchable: false },
1431
- { name: "CNTYFIPS", label: "County FIPS Code", searchable: false },
1432
- { name: "OWNTYPE", label: "Owner Type", searchable: false },
1433
- { name: "PARUSEDESC", label: "Parcel Use Description", searchable: false },
1434
- { name: "PARVAL", label: "Parcel Value", searchable: false }
1774
+ { name: "folio", label: "Folio Number (Parcel ID)", searchable: true },
1775
+ { name: "Owner1", label: "Owner Name", searchable: true },
1776
+ { name: "Owner2", label: "Owner Name 2", searchable: true },
1777
+ { name: "FullAddress", label: "Site Address", searchable: true },
1778
+ { name: "strap", label: "STRAP (alternate parcel key)", searchable: true },
1779
+ { name: "SiteCity", label: "City", searchable: false },
1780
+ { name: "SiteZip", label: "ZIP Code", searchable: false },
1781
+ { name: "Homestead", label: "Homestead Exemption", searchable: false }
1435
1782
  ],
1436
- 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",
1783
+ 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",
1437
1784
  license: "public",
1438
- licenseUrl: "https://www.swfwmd.state.fl.us/resources/data-maps",
1785
+ licenseUrl: "https://www.hcpafl.org/",
1439
1786
  status: "live",
1440
- lastVerified: "2026-05-11",
1441
- verifiedBy: "manual"
1787
+ lastVerified: "2026-06-27",
1788
+ verifiedBy: "automated"
1442
1789
  }
1443
1790
  ],
1444
1791
  contact: {
1445
- department: "Southwest Florida Water Management District (SWFWMD) \u2014 hosts the FL regional parcel layer",
1446
- url: "https://www.swfwmd.state.fl.us/resources/data-maps",
1792
+ department: "Hillsborough County Property Appraiser (HCPA)",
1793
+ url: "https://www.hcpafl.org/",
1447
1794
  email: null
1448
1795
  },
1449
- 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 \u2014 only their browser-based property search at gis.hcpafl.org/propertysearch/."
1796
+ 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."
1450
1797
  },
1451
1798
  {
1452
1799
  id: "fl-broward",
@@ -1459,23 +1806,20 @@ var florida_default = {
1459
1806
  hasPublicRest: true,
1460
1807
  endpoints: [
1461
1808
  {
1462
- url: "https://gis.bcpa.net/bcpagis/rest/services/Public/BCPA_EXTERNAL/MapServer/0",
1809
+ url: "https://gisweb-adapters.bcpa.net/arcgis/rest/services/BCPA_EXTERNAL_JAN26/MapServer/16",
1463
1810
  serviceType: "MapServer",
1464
- layerIndex: 0,
1811
+ layerIndex: 16,
1465
1812
  layerName: "Parcels",
1466
1813
  supportsQuery: true,
1467
1814
  corsEnabled: null,
1468
1815
  searchFields: [
1469
- { name: "FOLIO", label: "Folio Number (Parcel ID)", searchable: true },
1470
- { name: "OWNER", label: "Owner Name", searchable: true },
1471
- { name: "SITE_ADDR", label: "Site Address", searchable: true },
1472
- { name: "MAILING_ADDRESS", label: "Mailing Address", searchable: true }
1816
+ { name: "FOLIO", label: "Folio Number (Parcel ID)", searchable: true }
1473
1817
  ],
1474
- 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",
1818
+ 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",
1475
1819
  license: "public",
1476
1820
  licenseUrl: "https://www.bcpa.net/",
1477
1821
  status: "live",
1478
- lastVerified: "2026-05-15",
1822
+ lastVerified: "2026-06-06",
1479
1823
  verifiedBy: "manual"
1480
1824
  }
1481
1825
  ],
@@ -1484,7 +1828,7 @@ var florida_default = {
1484
1828
  url: "https://www.bcpa.net/",
1485
1829
  email: null
1486
1830
  },
1487
- 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 \u2014 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."
1831
+ 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."
1488
1832
  },
1489
1833
  {
1490
1834
  id: "fl-duval",
@@ -1615,7 +1959,7 @@ var florida_default = {
1615
1959
  url: "https://data-sarco.opendata.arcgis.com/",
1616
1960
  email: null
1617
1961
  },
1618
- 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 \u2014 for site address the LOCN+LOCS+LOCT fields must be concatenated. Sarasota County pop. 464,000."
1962
+ 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."
1619
1963
  },
1620
1964
  {
1621
1965
  id: "fl-palm-beach",
@@ -1654,7 +1998,7 @@ var florida_default = {
1654
1998
  url: "https://opendata2-pbcgov.opendata.arcgis.com/",
1655
1999
  email: null
1656
2000
  },
1657
- notes: "Palm Beach County, Florida (West Palm Beach / Boca Raton, pop. ~1.49M \u2014 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. \u2014 for law enforcement, judges, and similar protected persons) have owner/mailing data suppressed; the majority of parcels are public."
2001
+ 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."
1658
2002
  },
1659
2003
  {
1660
2004
  id: "fl-pinellas",
@@ -1685,8 +2029,8 @@ var florida_default = {
1685
2029
  license: "public",
1686
2030
  licenseUrl: "https://egis.pinellas.gov/",
1687
2031
  status: "live",
1688
- lastVerified: "2026-05-30",
1689
- verifiedBy: "manual"
2032
+ lastVerified: "2026-06-27",
2033
+ verifiedBy: "automated"
1690
2034
  }
1691
2035
  ],
1692
2036
  contact: {
@@ -1694,7 +2038,7 @@ var florida_default = {
1694
2038
  url: "https://www.pcpao.gov/",
1695
2039
  email: null
1696
2040
  },
1697
- 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)."
2041
+ 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."
1698
2042
  },
1699
2043
  {
1700
2044
  id: "fl-lee",
@@ -1784,7 +2128,7 @@ var georgia_default = {
1784
2128
  stateSlug: "georgia",
1785
2129
  stateName: "Georgia",
1786
2130
  stateAbbrev: "GA",
1787
- lastUpdated: "2026-05-15",
2131
+ lastUpdated: "2026-06-20",
1788
2132
  counties: [
1789
2133
  {
1790
2134
  id: "ga-fulton",
@@ -1827,91 +2171,215 @@ var georgia_default = {
1827
2171
  url: "https://fultoncountyga.gov/maps",
1828
2172
  email: null
1829
2173
  },
1830
- 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 \u2014 neighbor layers include 'Tax Parcel Address Labels' (id 9) for cartographic use."
2174
+ 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."
2175
+ },
2176
+ {
2177
+ id: "ga-cobb",
2178
+ state: "GA",
2179
+ stateName: "Georgia",
2180
+ stateSlug: "georgia",
2181
+ county: "Cobb",
2182
+ countySlug: "cobb-county",
2183
+ countyFips: "13067",
2184
+ hasPublicRest: true,
2185
+ endpoints: [
2186
+ {
2187
+ url: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0",
2188
+ serviceType: "MapServer",
2189
+ layerIndex: 0,
2190
+ layerName: "CobbParcels",
2191
+ supportsQuery: true,
2192
+ corsEnabled: null,
2193
+ searchFields: [
2194
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
2195
+ { name: "PARID", label: "Parcel Account ID", searchable: true },
2196
+ { name: "OWNER_NAM1", label: "Owner Name 1", searchable: true },
2197
+ { name: "OWNER_NAM2", label: "Owner Name 2", searchable: false },
2198
+ { name: "SITUS_ADDR", label: "Site Address", searchable: true },
2199
+ { name: "OWNER_ADDR", label: "Owner Mailing Address", searchable: false },
2200
+ { name: "OWNER_CITY", label: "Owner City", searchable: false },
2201
+ { name: "OWNER_STAT", label: "Owner State", searchable: false },
2202
+ { name: "OWNER_ZIP", label: "Owner ZIP", searchable: false }
2203
+ ],
2204
+ sampleQuery: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0/query?where=UPPER(OWNER_NAM1)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER_NAM1,SITUS_ADDR,OWNER_ADDR,OWNER_CITY&returnGeometry=false&f=json&resultRecordCount=10",
2205
+ license: "public",
2206
+ licenseUrl: "https://www.cobbcounty.gov/information-technology-services/cobb-county-gis",
2207
+ status: "live",
2208
+ lastVerified: "2026-05-15",
2209
+ verifiedBy: "manual"
2210
+ }
2211
+ ],
2212
+ contact: {
2213
+ department: "Cobb County GIS (Information Technology Services)",
2214
+ url: "https://geo-cobbcountyga.hub.arcgis.com/",
2215
+ email: null
2216
+ },
2217
+ notes: "Cobb County (Marietta seat, pop. 766,000; Atlanta metro northwest) maintains a Tax Assessor parcel layer at gis.cobbcounty.org that refreshes nightly from CAMA data -- the service name 'taxassessorsdaily' reflects this cadence. 36+ confirmed fields: PIN, PARID, PARCEL_TYPE, OWNER_NAM1/2 (owner names), SITUS_ADDR (site address), OWNER_ADDR/CITY/STAT/ZIP (owner mailing address), TAXDIST, ACRES, FMV_LAND (fair-market land value), FMV_BLDG, FMV_TOTAL, ASV_LAND (assessed land), ASV_BLDG, ASV_TOTAL, CLASS (property class), NBHOOD_NUM (neighborhood code). Verified 2026-05-15: SMITH returns results from Acworth, Marietta, Powder Springs, and Kennesaw. Cobb County borders Atlanta only in limited segments and has no parcel-boundary overlap with the city. The county's GIS Hub at geo-cobbcountyga.hub.arcgis.com and the Property Search portal at gis.cobbcounty.org/PropertySearch.html both provide web-interface access. The Cobb County Board of Tax Assessors (cobbassessor.org) is the authoritative record for appeals, exemptions, and recent reassessment values."
1831
2218
  },
1832
2219
  {
1833
- id: "ga-cobb",
1834
- state: "GA",
1835
- stateName: "Georgia",
1836
- stateSlug: "georgia",
1837
- county: "Cobb",
1838
- countySlug: "cobb-county",
1839
- countyFips: "13067",
2220
+ id: "ga-dekalb",
2221
+ state: "GA",
2222
+ stateName: "Georgia",
2223
+ stateSlug: "georgia",
2224
+ county: "DeKalb",
2225
+ countySlug: "dekalb-county",
2226
+ countyFips: "13089",
2227
+ hasPublicRest: true,
2228
+ endpoints: [
2229
+ {
2230
+ url: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0",
2231
+ serviceType: "MapServer",
2232
+ layerIndex: 0,
2233
+ layerName: "Tax Parcels",
2234
+ supportsQuery: true,
2235
+ corsEnabled: null,
2236
+ searchFields: [
2237
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
2238
+ { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
2239
+ { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
2240
+ { name: "SITEADDRESS", label: "Site Address", searchable: true },
2241
+ { name: "USECD", label: "Use Code", searchable: false },
2242
+ { name: "USEDSCRP", label: "Use Description", searchable: false },
2243
+ { name: "CVTTXCD", label: "City/County Tax Code", searchable: false }
2244
+ ],
2245
+ sampleQuery: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0/query?where=UPPER(OWNERNME1)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OWNERNME1,SITEADDRESS,USEDSCRP&returnGeometry=false&f=json&resultRecordCount=10",
2246
+ license: "public",
2247
+ licenseUrl: "https://dcgis-dekalbgis.hub.arcgis.com/",
2248
+ status: "live",
2249
+ lastVerified: "2026-05-15",
2250
+ verifiedBy: "manual"
2251
+ }
2252
+ ],
2253
+ contact: {
2254
+ department: "DeKalb County GIS Department",
2255
+ url: "https://dcgis-dekalbgis.hub.arcgis.com/",
2256
+ email: null
2257
+ },
2258
+ 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."
2259
+ },
2260
+ {
2261
+ id: "ga-gwinnett",
2262
+ state: "GA",
2263
+ stateName: "Georgia",
2264
+ stateSlug: "georgia",
2265
+ county: "Gwinnett",
2266
+ countySlug: "gwinnett-county",
2267
+ countyFips: "13135",
2268
+ hasPublicRest: true,
2269
+ endpoints: [
2270
+ {
2271
+ url: "https://services3.arcgis.com/RfpmnkSAQleRbndX/arcgis/rest/services/Property_and_Tax/FeatureServer/3",
2272
+ serviceType: "FeatureServer",
2273
+ layerIndex: 3,
2274
+ layerName: "Tax Master Table",
2275
+ supportsQuery: true,
2276
+ corsEnabled: null,
2277
+ searchFields: [
2278
+ { name: "OWNER1", label: "Owner Name 1", searchable: true },
2279
+ { name: "OWNER2", label: "Owner Name 2", searchable: true },
2280
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
2281
+ { name: "LOCADDR", label: "Property (Location) Address", searchable: true },
2282
+ { name: "LOCCITY", label: "Property City", searchable: false },
2283
+ { name: "LOCZIP", label: "Property ZIP", searchable: false }
2284
+ ],
2285
+ 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",
2286
+ license: "public",
2287
+ licenseUrl: "https://gwin-gwinnettcounty.opendata.arcgis.com/",
2288
+ status: "live",
2289
+ lastVerified: "2026-06-20",
2290
+ verifiedBy: "manual"
2291
+ }
2292
+ ],
2293
+ contact: {
2294
+ department: "Gwinnett County GIS / Tax Assessor",
2295
+ url: "https://www.gwinnettcounty.com/web/gwinnett/departments/financialservices/taxassessorsoffice",
2296
+ email: null
2297
+ },
2298
+ 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."
2299
+ }
2300
+ ]
2301
+ };
2302
+
2303
+ // data/hawaii.json
2304
+ var hawaii_default = {
2305
+ stateSlug: "hawaii",
2306
+ stateName: "Hawaii",
2307
+ stateAbbrev: "HI",
2308
+ lastUpdated: "2026-06-20",
2309
+ counties: [
2310
+ {
2311
+ id: "hi-kauai",
2312
+ state: "HI",
2313
+ stateName: "Hawaii",
2314
+ stateSlug: "hawaii",
2315
+ county: "Kauai",
2316
+ countySlug: "kauai-county",
2317
+ countyFips: "15007",
1840
2318
  hasPublicRest: true,
1841
2319
  endpoints: [
1842
2320
  {
1843
- url: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0",
2321
+ url: "https://geodata.hawaii.gov/arcgis/rest/services/ParcelsZoning/MapServer/9",
1844
2322
  serviceType: "MapServer",
1845
- layerIndex: 0,
1846
- layerName: "CobbParcels",
2323
+ layerIndex: 9,
2324
+ layerName: "Kauai County Parcels",
1847
2325
  supportsQuery: true,
1848
2326
  corsEnabled: null,
1849
2327
  searchFields: [
1850
- { name: "PIN", label: "Parcel Identification Number", searchable: true },
1851
- { name: "PARID", label: "Parcel Account ID", searchable: true },
1852
- { name: "OWNER_NAM1", label: "Owner Name 1", searchable: true },
1853
- { name: "OWNER_NAM2", label: "Owner Name 2", searchable: false },
1854
- { name: "SITUS_ADDR", label: "Site Address", searchable: true },
1855
- { name: "OWNER_ADDR", label: "Owner Mailing Address", searchable: false },
1856
- { name: "OWNER_CITY", label: "Owner City", searchable: false },
1857
- { name: "OWNER_STAT", label: "Owner State", searchable: false },
1858
- { name: "OWNER_ZIP", label: "Owner ZIP", searchable: false }
2328
+ { name: "owner", label: "Owner Name", searchable: true },
2329
+ { name: "tmk_txt", label: "Tax Map Key (9-digit TMK / APN)", searchable: true },
2330
+ { name: "cty_tmk", label: "County TMK (8-digit)", searchable: true }
1859
2331
  ],
1860
- sampleQuery: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0/query?where=UPPER(OWNER_NAM1)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER_NAM1,SITUS_ADDR,OWNER_ADDR,OWNER_CITY&returnGeometry=false&f=json&resultRecordCount=10",
2332
+ 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",
1861
2333
  license: "public",
1862
- licenseUrl: "https://www.cobbcounty.gov/information-technology-services/cobb-county-gis",
2334
+ licenseUrl: "https://geoportal.hawaii.gov/",
1863
2335
  status: "live",
1864
- lastVerified: "2026-05-15",
2336
+ lastVerified: "2026-06-20",
1865
2337
  verifiedBy: "manual"
1866
2338
  }
1867
2339
  ],
1868
2340
  contact: {
1869
- department: "Cobb County GIS (Information Technology Services)",
1870
- url: "https://geo-cobbcountyga.hub.arcgis.com/",
2341
+ department: "State of Hawaii Office of Planning and Sustainable Development, Statewide GIS Program",
2342
+ url: "https://planning.hawaii.gov/gis/",
1871
2343
  email: null
1872
2344
  },
1873
- notes: "Cobb County (Marietta seat, pop. 766,000; Atlanta metro northwest) maintains a Tax Assessor parcel layer at gis.cobbcounty.org that refreshes nightly from CAMA data -- the service name 'taxassessorsdaily' reflects this cadence. 36+ confirmed fields: PIN, PARID, PARCEL_TYPE, OWNER_NAM1/2 (owner names), SITUS_ADDR (site address), OWNER_ADDR/CITY/STAT/ZIP (owner mailing address), TAXDIST, ACRES, FMV_LAND (fair-market land value), FMV_BLDG, FMV_TOTAL, ASV_LAND (assessed land), ASV_BLDG, ASV_TOTAL, CLASS (property class), NBHOOD_NUM (neighborhood code). Verified 2026-05-15: SMITH returns results from Acworth, Marietta, Powder Springs, and Kennesaw. Cobb County borders Atlanta only in limited segments and has no parcel-boundary overlap with the city. The county's GIS Hub at geo-cobbcountyga.hub.arcgis.com and the Property Search portal at gis.cobbcounty.org/PropertySearch.html both provide web-interface access. The Cobb County Board of Tax Assessors (cobbassessor.org) is the authoritative record for appeals, exemptions, and recent reassessment values."
2345
+ 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."
1874
2346
  },
1875
2347
  {
1876
- id: "ga-dekalb",
1877
- state: "GA",
1878
- stateName: "Georgia",
1879
- stateSlug: "georgia",
1880
- county: "DeKalb",
1881
- countySlug: "dekalb-county",
1882
- countyFips: "13089",
2348
+ id: "hi-maui",
2349
+ state: "HI",
2350
+ stateName: "Hawaii",
2351
+ stateSlug: "hawaii",
2352
+ county: "Maui",
2353
+ countySlug: "maui-county",
2354
+ countyFips: "15009",
1883
2355
  hasPublicRest: true,
1884
2356
  endpoints: [
1885
2357
  {
1886
- url: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0",
1887
- serviceType: "MapServer",
1888
- layerIndex: 0,
1889
- layerName: "Tax Parcels",
2358
+ url: "https://services1.arcgis.com/x4h61KaW16vFs7PM/arcgis/rest/services/Parcels_2024_Owners/FeatureServer/196",
2359
+ serviceType: "FeatureServer",
2360
+ layerIndex: 196,
2361
+ layerName: "Parcels 2024 Owners",
1890
2362
  supportsQuery: true,
1891
2363
  corsEnabled: null,
1892
2364
  searchFields: [
1893
- { name: "PARCELID", label: "Parcel ID", searchable: true },
1894
- { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
1895
- { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
1896
- { name: "SITEADDRESS", label: "Site Address", searchable: true },
1897
- { name: "USECD", label: "Use Code", searchable: false },
1898
- { name: "USEDSCRP", label: "Use Description", searchable: false },
1899
- { name: "CVTTXCD", label: "City/County Tax Code", searchable: false }
2365
+ { name: "OWNER", label: "Owner Name", searchable: true },
2366
+ { name: "tmk_txt", label: "Tax Map Key (TMK / APN)", searchable: true },
2367
+ { name: "TMK_1", label: "Tax Map Key (alternate)", searchable: true }
1900
2368
  ],
1901
- sampleQuery: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0/query?where=UPPER(OWNERNME1)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OWNERNME1,SITEADDRESS,USEDSCRP&returnGeometry=false&f=json&resultRecordCount=10",
2369
+ 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",
1902
2370
  license: "public",
1903
- licenseUrl: "https://dcgis-dekalbgis.hub.arcgis.com/",
2371
+ licenseUrl: "https://www.mauicounty.gov/1933/GIS-Maps",
1904
2372
  status: "live",
1905
- lastVerified: "2026-05-15",
2373
+ lastVerified: "2026-06-20",
1906
2374
  verifiedBy: "manual"
1907
2375
  }
1908
2376
  ],
1909
2377
  contact: {
1910
- department: "DeKalb County GIS Department",
1911
- url: "https://dcgis-dekalbgis.hub.arcgis.com/",
2378
+ department: "County of Maui, GIS Division",
2379
+ url: "https://www.mauicounty.gov/1933/GIS-Maps",
1912
2380
  email: null
1913
2381
  },
1914
- 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."
2382
+ 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."
1915
2383
  }
1916
2384
  ]
1917
2385
  };
@@ -2016,7 +2484,7 @@ var illinois_default = {
2016
2484
  url: "https://www.kanecountyil.gov/pages/gis.aspx",
2017
2485
  email: null
2018
2486
  },
2019
- 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 \u2014 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)."
2487
+ 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)."
2020
2488
  },
2021
2489
  {
2022
2490
  id: "il-cook",
@@ -2053,7 +2521,8 @@ var illinois_default = {
2053
2521
  url: "https://www.cookcountyil.gov/agency/geographic-information-systems-gis",
2054
2522
  email: null
2055
2523
  },
2056
- notes: "Cook County uses the 14-digit PIN format (XX-XX-XXX-XXX-XXXX) \u2014 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 \u2014 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 \u2014 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 \u2014 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."
2524
+ 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.",
2525
+ relatedPropertyCitySlug: "chicago"
2057
2526
  },
2058
2527
  {
2059
2528
  id: "il-dupage",
@@ -2092,7 +2561,7 @@ var illinois_default = {
2092
2561
  url: "https://www.dupagecounty.gov/government/departments/gis/",
2093
2562
  email: null
2094
2563
  },
2095
- notes: "DuPage County migrated their public GIS server from gis.dupagecounty.gov to gis.dupageco.org in 2026 \u2014 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 \u2014 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)."
2564
+ 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)."
2096
2565
  },
2097
2566
  {
2098
2567
  id: "il-dekalb",
@@ -2131,7 +2600,7 @@ var illinois_default = {
2131
2600
  url: "https://dekalbcounty.org/services/property-data-and-maps/",
2132
2601
  email: "gis@dekalbcounty.org"
2133
2602
  },
2134
- notes: "This is DeKalb County, Illinois (county seat Sycamore, home to Northern Illinois University in DeKalb city) \u2014 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) \u2014 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 \u2014 TaxBillMailedTo reflects the current billing addressee, which may differ from the recorded owner in cases involving trusts or recent transfers."
2603
+ 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."
2135
2604
  },
2136
2605
  {
2137
2606
  id: "il-will",
@@ -2144,20 +2613,20 @@ var illinois_default = {
2144
2613
  hasPublicRest: true,
2145
2614
  endpoints: [
2146
2615
  {
2147
- url: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0",
2616
+ url: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0",
2148
2617
  serviceType: "MapServer",
2149
2618
  layerIndex: 0,
2150
- layerName: "Parcels_21",
2619
+ layerName: "Parcels_20",
2151
2620
  supportsQuery: true,
2152
2621
  corsEnabled: null,
2153
2622
  searchFields: [
2154
2623
  { name: "PIN", label: "Parcel Identification Number", searchable: true }
2155
2624
  ],
2156
- sampleQuery: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
2625
+ sampleQuery: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
2157
2626
  license: "public",
2158
2627
  licenseUrl: null,
2159
2628
  status: "live",
2160
- lastVerified: "2026-05-15",
2629
+ lastVerified: "2026-06-27",
2161
2630
  verifiedBy: "automated"
2162
2631
  }
2163
2632
  ],
@@ -2166,7 +2635,7 @@ var illinois_default = {
2166
2635
  url: "https://willcounty.gov/County-Offices/Administration/GIS-Division",
2167
2636
  email: "gis@willcounty.gov"
2168
2637
  },
2169
- 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 \u2014 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."
2638
+ 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."
2170
2639
  },
2171
2640
  {
2172
2641
  id: "il-mchenry",
@@ -2244,7 +2713,7 @@ var illinois_default = {
2244
2713
  url: "https://www.lakecountyil.gov/636/GISMaps",
2245
2714
  email: null
2246
2715
  },
2247
- 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 \u2014 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 \u2014 not to be confused with Lake County Indiana or Lake County Ohio, which use separate GIS systems."
2716
+ 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."
2248
2717
  },
2249
2718
  {
2250
2719
  id: "il-winnebago",
@@ -2261,7 +2730,7 @@ var illinois_default = {
2261
2730
  url: "https://wingis.org/",
2262
2731
  email: null
2263
2732
  },
2264
- 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 \u2014 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."
2733
+ 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."
2265
2734
  },
2266
2735
  {
2267
2736
  id: "il-st-clair",
@@ -2353,7 +2822,7 @@ var indiana_default = {
2353
2822
  url: "https://www.hamiltoncounty.in.gov/442/GIS-and-Maps",
2354
2823
  email: null
2355
2824
  },
2356
- notes: "Hamilton County IN (Indianapolis north suburbs \u2014 Noblesville, Carmel, Fishers, Westfield) is one of the fastest-growing counties in Indiana. HamCoParcelsPublic/FeatureServer/0 exposes 25+ fields including FMTPRCLNO (formatted parcel number, e.g., '10-11-04-00-00-019.000'), DEEDEDOWNR (full deeded owner), OWNNAME, OWNADDRESS, OWNCITY, OWNSTATE, OWNZIP, OWNCOUNTRY, LOCADDRESS, LOCHSENUMR, LOCSTRDIR, LOCSTRNAME, LOCSTRSUF, LOCCITY, LOCZIP, LEGALDESC, SECTIONNO, TOWNSHIP, RANGE, SUBDIVCODE, SUBDIVNAME, DEEDACRES, PROPCLASS, PROPUSE. Query confirmed live: UPPER(DEEDEDOWNR) LIKE '%SMITH%' returns real results (e.g., 'Smith, Terrance & Alyssa Smith h&w' in Noblesville). Hamilton County IN (FIPS 18057) must not be confused with Hamilton County OH (39061, Cincinnati) or Hamilton County TN (47065, Chattanooga). GeoHub portal at geohub.hamiltoncounty.in.gov. EXPORTDATE field tracks data currency."
2825
+ notes: "Hamilton County IN (Indianapolis north suburbs, Noblesville, Carmel, Fishers, Westfield) is one of the fastest-growing counties in Indiana. HamCoParcelsPublic/FeatureServer/0 exposes 25+ fields including FMTPRCLNO (formatted parcel number, e.g., '10-11-04-00-00-019.000'), DEEDEDOWNR (full deeded owner), OWNNAME, OWNADDRESS, OWNCITY, OWNSTATE, OWNZIP, OWNCOUNTRY, LOCADDRESS, LOCHSENUMR, LOCSTRDIR, LOCSTRNAME, LOCSTRSUF, LOCCITY, LOCZIP, LEGALDESC, SECTIONNO, TOWNSHIP, RANGE, SUBDIVCODE, SUBDIVNAME, DEEDACRES, PROPCLASS, PROPUSE. Query confirmed live: UPPER(DEEDEDOWNR) LIKE '%SMITH%' returns real results (e.g., 'Smith, Terrance & Alyssa Smith h&w' in Noblesville). Hamilton County IN (FIPS 18057) must not be confused with Hamilton County OH (39061, Cincinnati) or Hamilton County TN (47065, Chattanooga). GeoHub portal at geohub.hamiltoncounty.in.gov. EXPORTDATE field tracks data currency."
2357
2826
  },
2358
2827
  {
2359
2828
  id: "in-allen",
@@ -2391,7 +2860,7 @@ var indiana_default = {
2391
2860
  url: "https://www.acimap.us/",
2392
2861
  email: null
2393
2862
  },
2394
- notes: "Allen County IN (Fort Wayne metro, county seat Fort Wayne) provides parcels via gis.acimap.us \u2014 a combined City of Fort Wayne / Allen County GIS platform branded 'iMap'. The parcels/MapServer/0 layer is a lean 11-field service: PIN, GIS_ID, OwnerofRecord, PropertyAddress1, TransferDate, lat_add_pt, long_add_pt, Shape_Area, Shape_Length, Shape, OBJECTID. Owner and address search confirmed working: UPPER(OwnerofRecord) LIKE '%SMITH%' returns real results (e.g., 'Smith Halery W & Anna Catherine' on Pleasant Center Rd). The acimap.us server uses TLS renegotiation \u2014 direct curl calls may timeout on Windows; use HTTPS clients that handle renegotiation. The ASSESSOR folder at gis.acimap.us/services/rest/services/Assessor/ contains additional assessment data but requires authentication. Allen County IN (18003) must not be confused with other Allen counties."
2863
+ notes: "Allen County IN (Fort Wayne metro, county seat Fort Wayne) provides parcels via gis.acimap.us, a combined City of Fort Wayne / Allen County GIS platform branded 'iMap'. The parcels/MapServer/0 layer is a lean 11-field service: PIN, GIS_ID, OwnerofRecord, PropertyAddress1, TransferDate, lat_add_pt, long_add_pt, Shape_Area, Shape_Length, Shape, OBJECTID. Owner and address search confirmed working: UPPER(OwnerofRecord) LIKE '%SMITH%' returns real results (e.g., 'Smith Halery W & Anna Catherine' on Pleasant Center Rd). The acimap.us server uses TLS renegotiation. Direct curl calls may timeout on Windows; use HTTPS clients that handle renegotiation. The ASSESSOR folder at gis.acimap.us/services/rest/services/Assessor/ contains additional assessment data but requires authentication. Allen County IN (18003) must not be confused with other Allen counties."
2395
2864
  },
2396
2865
  {
2397
2866
  id: "in-marion",
@@ -2431,7 +2900,7 @@ var indiana_default = {
2431
2900
  }
2432
2901
  ],
2433
2902
  contact: {
2434
- department: "IndyGIS \u2014 City of Indianapolis / Marion County Information Services",
2903
+ department: "IndyGIS, City of Indianapolis / Marion County Information Services",
2435
2904
  url: "https://maps.indy.gov/",
2436
2905
  email: null
2437
2906
  },
@@ -2530,7 +2999,7 @@ var kansas_default = {
2530
2999
  license: "public",
2531
3000
  licenseUrl: "https://data-sncoks-gis.opendata.arcgis.com/",
2532
3001
  status: "live",
2533
- lastVerified: "2026-05-15",
3002
+ lastVerified: "2026-06-27",
2534
3003
  verifiedBy: "automated"
2535
3004
  }
2536
3005
  ],
@@ -2539,7 +3008,7 @@ var kansas_default = {
2539
3008
  url: "https://snco.gov/ap/mapping.php",
2540
3009
  email: null
2541
3010
  },
2542
- notes: "Shawnee County KS (Topeka metro, county seat and state capital Topeka) provides AppraisalDataPro/MapServer/4 (Current Parcels) via the county appraiser's GIS server. This is a 20-field service: OBJECTID, PARCELNUM, ACRES, PID, QUICKREFID, ONAME (owner name), PADDRESS, PADDRESS2, DBOOKPAGE, SUBS (subdivision), NBHD (neighborhood), TAXUNIT, USD (unified school district), LBCSFUNCTION, LBCSACTIVITY, LDVAL, BLDGVAL, TOTVAL, Shape, Shape area. Query confirmed live: UPPER(ONAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH, NEIL K & JONI' on SE 105TH ST). The same service has layer 0 (Parcel Information with Labels), layer 3 (Parcels 1-1-2024 \u2014 prior year snapshot), and layer 4 (Current Parcels). The Shawnee County Open Data Portal at data-sncoks-gis.opendata.arcgis.com provides additional datasets. The property search app is at gis.sncoapps.us/propertysearch/. Shawnee County KS (FIPS 20177) must not be confused with Shawnee County Ohio or Shawnee Township."
3011
+ notes: "Shawnee County KS (Topeka metro, county seat and state capital Topeka) provides AppraisalDataPro/MapServer/4 (Current Parcels) via the county appraiser's GIS server. This is a 20-field service: OBJECTID, PARCELNUM, ACRES, PID, QUICKREFID, ONAME (owner name), PADDRESS, PADDRESS2, DBOOKPAGE, SUBS (subdivision), NBHD (neighborhood), TAXUNIT, USD (unified school district), LBCSFUNCTION, LBCSACTIVITY, LDVAL, BLDGVAL, TOTVAL, Shape, Shape area. Query confirmed live: UPPER(ONAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH, NEIL K & JONI' on SE 105TH ST). The same service has layer 0 (Parcel Information with Labels), layer 3 (Parcels 1-1-2024, prior year snapshot), and layer 4 (Current Parcels). The Shawnee County Open Data Portal at data-sncoks-gis.opendata.arcgis.com provides additional datasets. The property search app is at gis.sncoapps.us/propertysearch/. Shawnee County KS (FIPS 20177) must not be confused with Shawnee County Ohio or Shawnee Township. NOTE 2026-06-27: query endpoint responds in 13-35s (server-side slowness. Returns 437,436 features when polled with 35s timeout); liveness check at 12s flags FAIL but endpoint IS live. Metadata returns immediately."
2543
3012
  }
2544
3013
  ]
2545
3014
  };
@@ -2593,7 +3062,7 @@ var kentucky_default = {
2593
3062
  url: "https://data-lfucg.hub.arcgis.com/",
2594
3063
  email: null
2595
3064
  },
2596
- notes: "Fayette County (Lexington, pop. 322,000; consolidated city-county) Tax Parcels FeatureServer hosted on ArcGIS Online (LFUCG org). Fayette County is a merged urban county government \u2014 the Lexington-Fayette Urban County Government (LFUCG). Fields confirmed: PAN (numeric parcel account number), PARCEL_SUB, PARCEL_BLOCK, PARCEL_LOT, LRM_GEOM_DOC, RecordDate, LRM_GEOM_DOC_AREA/UNITS, PARCEL_TYPE, PARCEL_POLY_NAME, Owner1/2/3, Mailing_Address. Note: PARCEL_POLY_NAME may be null; PAN is the numeric parcel identifier. Mailing_Address is a single concatenated field. Verified 2026-05-15: Owner1 SMITH returns Lexington-area addresses (e.g., '3875 GEIST RD STE E469', '4951 E JOHN JOHN CT'). A separate Parcels FeatureServer exists at the same org but has no owner fields \u2014 Tax_Parcels is the correct service. Note: distinct from Jefferson County KY (Louisville, FIPS 21111) already in atlas."
3065
+ notes: "Fayette County (Lexington, pop. 322,000; consolidated city-county) Tax Parcels FeatureServer hosted on ArcGIS Online (LFUCG org). Fayette County is a merged urban county government, the Lexington-Fayette Urban County Government (LFUCG). Fields confirmed: PAN (numeric parcel account number), PARCEL_SUB, PARCEL_BLOCK, PARCEL_LOT, LRM_GEOM_DOC, RecordDate, LRM_GEOM_DOC_AREA/UNITS, PARCEL_TYPE, PARCEL_POLY_NAME, Owner1/2/3, Mailing_Address. Note: PARCEL_POLY_NAME may be null; PAN is the numeric parcel identifier. Mailing_Address is a single concatenated field. Verified 2026-05-15: Owner1 SMITH returns Lexington-area addresses (e.g., '3875 GEIST RD STE E469', '4951 E JOHN JOHN CT'). A separate Parcels FeatureServer exists at the same org but has no owner fields, Tax_Parcels is the correct service. Note: distinct from Jefferson County KY (Louisville, FIPS 21111) already in atlas."
2597
3066
  }
2598
3067
  ]
2599
3068
  };
@@ -2648,7 +3117,7 @@ var louisiana_default = {
2648
3117
  url: "https://web-ebrgis.opendata.arcgis.com/",
2649
3118
  email: null
2650
3119
  },
2651
- notes: "East Baton Rouge Parish (Baton Rouge, pop. 456,000; state capital) Tax Parcel layer. Louisiana uses 'parish' instead of 'county' \u2014 East Baton Rouge Parish is the combined city/parish government. 21 fields confirmed: ID, ASSESSMENT_NUM, PRONO, OWNER, OWNER_ADDRESS, OWNER_CITY_STATE_ZIP, PHYSICAL_ADDRESS, SUBDIVISION, WARD_SECTION, LOT, BLOCK, LEGAL_DESCRIPTION, FLOOD_ZONE, SALE_YEAR, STATUS, SUM_HOMESTEAD_EXEMPTION, SUM_LOT_VALUE, SUM_LAND_VALUE, SUM_IMPROVEMENT_VALUE, SUM_FAIR_MARKET_VALUE, SUM_ASSESSED_VALUE. Verified 2026-05-15: SMITH returns Baton Rouge addresses (e.g., '12523 MERLIN AVE', '9758 W TAMS DR'). EBRGIS manages 200+ public datasets."
3120
+ notes: "East Baton Rouge Parish (Baton Rouge, pop. 456,000; state capital) Tax Parcel layer. Louisiana uses 'parish' instead of 'county'. East Baton Rouge Parish is the combined city/parish government. 21 fields confirmed: ID, ASSESSMENT_NUM, PRONO, OWNER, OWNER_ADDRESS, OWNER_CITY_STATE_ZIP, PHYSICAL_ADDRESS, SUBDIVISION, WARD_SECTION, LOT, BLOCK, LEGAL_DESCRIPTION, FLOOD_ZONE, SALE_YEAR, STATUS, SUM_HOMESTEAD_EXEMPTION, SUM_LOT_VALUE, SUM_LAND_VALUE, SUM_IMPROVEMENT_VALUE, SUM_FAIR_MARKET_VALUE, SUM_ASSESSED_VALUE. Verified 2026-05-15: SMITH returns Baton Rouge addresses (e.g., '12523 MERLIN AVE', '9758 W TAMS DR'). EBRGIS manages 200+ public datasets."
2652
3121
  },
2653
3122
  {
2654
3123
  id: "la-orleans-parish",
@@ -2670,9 +3139,9 @@ var louisiana_default = {
2670
3139
  searchFields: [
2671
3140
  { name: "PARCELID", label: "Parcel ID", searchable: true },
2672
3141
  { name: "TAXBILLID", label: "Tax Bill ID", searchable: true },
2673
- { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
3142
+ { name: "OWNERNME1", label: "Owner Name 1", searchable: false },
2674
3143
  { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
2675
- { name: "SITEADDRESS", label: "Site Address", searchable: true },
3144
+ { name: "SITEADDRESS", label: "Site Address", searchable: false },
2676
3145
  { name: "BUILDING", label: "Building Number", searchable: false },
2677
3146
  { name: "UNIT", label: "Unit", searchable: false },
2678
3147
  { name: "PSTLADDRESS", label: "Postal (Mailing) Address", searchable: false },
@@ -2684,12 +3153,12 @@ var louisiana_default = {
2684
3153
  { name: "SQUARE", label: "Square", searchable: false },
2685
3154
  { name: "PARID", label: "Parcel Account ID", searchable: true }
2686
3155
  ],
2687
- sampleQuery: "https://gis.nola.gov/arcgis/rest/services/apps/property3/MapServer/15/query?where=UPPER(OWNERNME1)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OWNERNME1,SITEADDRESS,PSTLADDRESS,PSTLCITY&returnGeometry=false&f=json&resultRecordCount=10",
3156
+ sampleQuery: "https://gis.nola.gov/arcgis/rest/services/apps/property3/MapServer/15/query?where=PARCELID+IS+NOT+NULL&outFields=PARCELID,OWNERNME1,SITEADDRESS,PSTLADDRESS,PSTLCITY&returnGeometry=false&f=json&resultRecordCount=5",
2688
3157
  license: "public",
2689
3158
  licenseUrl: "https://gis.nola.gov/",
2690
3159
  status: "live",
2691
- lastVerified: "2026-05-15",
2692
- verifiedBy: "manual"
3160
+ lastVerified: "2026-06-27",
3161
+ verifiedBy: "automated"
2693
3162
  }
2694
3163
  ],
2695
3164
  contact: {
@@ -2697,7 +3166,7 @@ var louisiana_default = {
2697
3166
  url: "https://gis.nola.gov/",
2698
3167
  email: null
2699
3168
  },
2700
- notes: "Orleans Parish (New Orleans, pop. 383,000) Property Information layer at index 15 of the apps/property3 composite MapServer. Note: the 'LandBase/Parcels' MapServer at gis.nola.gov only exposes GEOPIN (parcel geometry key, no attributes). For owner + address data, use apps/property3/MapServer/15 which is an assessor join. 20 fields confirmed: OBJECTID, BUILDING, UNIT, SITEADDRESS, OWNERNME1/2, PSTLADDRESS/CITY/STATE/ZIP5/ZIP4, USECD, PRPRTYDSCRP, PARCELID, TAXBILLID, LOT, SQUARE, BLOCK, PARID. New Orleans uses a Square/Lot system (not typical street address) for legal parcel identification. Verified 2026-05-15: SMITH returns New Orleans addresses. The countySlug 'orleans-parish' matches countySlugFromName('Orleans Parish') per atlas slugify rules."
3169
+ notes: "Orleans Parish (New Orleans, pop. 383,000) Property Information layer at index 15 of the apps/property3 composite MapServer. Note: the 'LandBase/Parcels' MapServer at gis.nola.gov only exposes GEOPIN (parcel geometry key, no attributes). For owner + address data, use apps/property3/MapServer/15 which is an assessor join. 20 fields confirmed: OBJECTID, BUILDING, UNIT, SITEADDRESS, OWNERNME1/2, PSTLADDRESS/CITY/STATE/ZIP5/ZIP4, USECD, PRPRTYDSCRP, PARCELID, TAXBILLID, LOT, SQUARE, BLOCK, PARID. New Orleans uses a Square/Lot system (not typical street address) for legal parcel identification. NOTE 2026-06-27: the liveness check 'fetch failed' was transient (metadata at /MapServer/15?f=json now returns 200). However, this ArcGIS Server 10.4 instance has two persistent query limitations: (1) LIKE/UPPER() queries return HTTP 400; (2) count-all queries (where=1=1&returnCountOnly=true) timeout >35s. PARCELID equality queries (where=PARCELID='...') return valid JSON structure. OWNERNME1 and SITEADDRESS marked searchable:false accordingly; sampleQuery changed to IS NOT NULL filter. For PARCELID-based lookups use the PARCELID or PARID fields. The countySlug 'orleans-parish' matches countySlugFromName('Orleans Parish') per atlas slugify rules."
2701
3170
  }
2702
3171
  ]
2703
3172
  };
@@ -2776,7 +3245,7 @@ var maine_default = {
2776
3245
  url: "https://www.maine.gov/geolib/data/index.html",
2777
3246
  email: null
2778
3247
  },
2779
- notes: "Maine GeoLibrary statewide organized-towns parcel service. Layer 10 carries polygon geometry with COUNTY, TOWN, and location fields. Layer 9 is the assessor attribute table (no geometry) with OWNER1/OWNER2 and mailing address \u2014 join on MAP_BK_LOT. Filter Cumberland County with COUNTY='CUMBERLAND'; includes Portland, South Portland, Westbrook, Scarborough, Gorham, Windham, etc. Note: submissions are voluntary from municipalities and some towns may have stale data (updated irregularly). Unorganized territories use a separate service (gis.maine.gov/mapservices)."
3248
+ notes: "Maine GeoLibrary statewide organized-towns parcel service. Layer 10 carries polygon geometry with COUNTY, TOWN, and location fields. Layer 9 is the assessor attribute table (no geometry) with OWNER1/OWNER2 and mailing address, join on MAP_BK_LOT. Filter Cumberland County with COUNTY='CUMBERLAND'; includes Portland, South Portland, Westbrook, Scarborough, Gorham, Windham, etc. Note: submissions are voluntary from municipalities and some towns may have stale data (updated irregularly). Unorganized territories use a separate service (gis.maine.gov/mapservices)."
2780
3249
  },
2781
3250
  {
2782
3251
  id: "me-york",
@@ -2842,6 +3311,102 @@ var maine_default = {
2842
3311
  ]
2843
3312
  };
2844
3313
 
3314
+ // data/maryland.json
3315
+ var maryland_default = {
3316
+ stateSlug: "maryland",
3317
+ stateName: "Maryland",
3318
+ stateAbbrev: "MD",
3319
+ lastUpdated: "2026-06-05",
3320
+ counties: [
3321
+ {
3322
+ id: "md-montgomery",
3323
+ state: "MD",
3324
+ stateName: "Maryland",
3325
+ stateSlug: "maryland",
3326
+ county: "Montgomery",
3327
+ countySlug: "montgomery-county",
3328
+ countyFips: "24031",
3329
+ hasPublicRest: true,
3330
+ endpoints: [
3331
+ {
3332
+ url: "https://mcmaps.org/server11/rest/services/Overlays/MCAtlas_Property_Points/FeatureServer/0",
3333
+ serviceType: "FeatureServer",
3334
+ layerIndex: 0,
3335
+ layerName: "Property Points",
3336
+ supportsQuery: true,
3337
+ corsEnabled: null,
3338
+ searchFields: [
3339
+ { name: "TAX_NO", label: "Tax Account Number", searchable: true },
3340
+ { name: "OWNERS_NAME", label: "Owner Name", searchable: true },
3341
+ { name: "OWNERS_NAME2", label: "Owner Name 2", searchable: true },
3342
+ { name: "PREMISE_ADDR_HOUSENO", label: "Site House Number", searchable: true },
3343
+ { name: "PREMISE_ADDR_STREET", label: "Site Street Name", searchable: true },
3344
+ { name: "PREMISE_ADDR_CITY", label: "Site City", searchable: true },
3345
+ { name: "OWNERS_ADDR1", label: "Owner Mailing Address", searchable: true },
3346
+ { name: "OWNERS_CITY", label: "Owner Mailing City", searchable: true }
3347
+ ],
3348
+ sampleQuery: "https://mcmaps.org/server11/rest/services/Overlays/MCAtlas_Property_Points/FeatureServer/0/query?where=UPPER(OWNERS_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=TAX_NO,OWNERS_NAME,PREMISE_ADDR_HOUSENO,PREMISE_ADDR_STREET,PREMISE_ADDR_CITY,OWNERS_ADDR1&returnGeometry=false&f=json&resultRecordCount=10",
3349
+ license: "public",
3350
+ licenseUrl: "https://www.montgomerycountymd.gov/gis/",
3351
+ status: "live",
3352
+ lastVerified: "2026-06-05",
3353
+ verifiedBy: "automated"
3354
+ }
3355
+ ],
3356
+ contact: {
3357
+ department: "Montgomery County Maryland GIS (MCAtlas)",
3358
+ url: "https://www.montgomerycountymd.gov/gis/",
3359
+ email: null
3360
+ },
3361
+ notes: "Montgomery County is Maryland's most populous county (pop. 1.06 million; county seat Rockville) and one of the wealthiest in the US. The MCAtlas_Property_Points FeatureServer on mcmaps.org (mcmaps.org/server11) is the county's ArcGIS Server backing the MCAtlas web viewer; it exposes 97 fields as point geometry. Live query confirmed 351,703 parcels. Owner-name search uses UPPER() LIKE on OWNERS_NAME. Key fields: TAX_NO (Maryland 8-digit tax account number), OWNERS_NAME, OWNERS_NAME2, OWNERS_ADDR1/ADDR2/ADDR3, OWNERS_CITY/STATE/ZIP (full mailing address), PREMISE_ADDR_HOUSENO/STREET/STREET_TYPE/CITY/ZIP (situs address components), LAND_ASSMT, IMPROV_ASSMT, LEGAL_DESC, TRANSFER_DATE, SALES_PRICE, YEAR_BUILT, LANDUSE_CODE. The county uses Maryland SDAT (State Department of Assessments and Taxation) as the authoritative property record; mcmaps.org mirrors a subset of that data. Note: property points are centroid-located, not parcel polygons. For polygon geometry, Maryland's statewide parcel boundary layer is at geodata.md.gov/imap/rest/services/PlanningCadastre/MD_ParcelBoundaries/MapServer but does not expose owner data directly."
3362
+ },
3363
+ {
3364
+ id: "md-prince-georges",
3365
+ state: "MD",
3366
+ stateName: "Maryland",
3367
+ stateSlug: "maryland",
3368
+ county: "Prince George's",
3369
+ countySlug: "prince-georges-county",
3370
+ countyFips: "24033",
3371
+ hasPublicRest: true,
3372
+ endpoints: [
3373
+ {
3374
+ url: "https://gis.princegeorgescountymd.gov/arcgis/rest/services/Property/Property_Flattened/MapServer/0",
3375
+ serviceType: "MapServer",
3376
+ layerIndex: 0,
3377
+ layerName: "Property Flattened",
3378
+ supportsQuery: true,
3379
+ corsEnabled: null,
3380
+ searchFields: [
3381
+ { name: "ACCOUNT", label: "Account Number", searchable: true },
3382
+ { name: "PROPERTY_ID", label: "Property ID", searchable: true },
3383
+ { name: "OWNER_NAME", label: "Owner Name", searchable: true },
3384
+ { name: "ICO_NAME", label: "In Care Of Name", searchable: true },
3385
+ { name: "HOUSE_NUMBER", label: "Site House Number", searchable: true },
3386
+ { name: "STREET_NAME", label: "Site Street Name", searchable: true },
3387
+ { name: "STREET_TYPE", label: "Site Street Type", searchable: true },
3388
+ { name: "MAIL_STREET", label: "Mailing Street Address", searchable: true },
3389
+ { name: "MAIL_CITY", label: "Mailing City", searchable: true },
3390
+ { name: "MAIL_ZIP5", label: "Mailing ZIP", searchable: true }
3391
+ ],
3392
+ sampleQuery: "https://gis.princegeorgescountymd.gov/arcgis/rest/services/Property/Property_Flattened/MapServer/0/query?where=UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=ACCOUNT,PROPERTY_ID,OWNER_NAME,HOUSE_NUMBER,STREET_NAME,STREET_TYPE,MAIL_STREET,MAIL_CITY,MAIL_ZIP5&returnGeometry=false&f=json&resultRecordCount=10",
3393
+ license: "public",
3394
+ licenseUrl: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
3395
+ status: "live",
3396
+ lastVerified: "2026-06-05",
3397
+ verifiedBy: "automated"
3398
+ }
3399
+ ],
3400
+ contact: {
3401
+ department: "Prince George's County Maryland GIS",
3402
+ url: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
3403
+ email: null
3404
+ },
3405
+ notes: "Prince George's County is Maryland's second-most populous county (pop. 910,000; county seat Upper Marlboro). The Property_Flattened MapServer on gis.princegeorgescountymd.gov (ArcGIS Server 11.5) is the county's canonical public property layer with 112 fields and 352,791 parcels. Live query confirmed OWNER_NAME exposure. Key fields: ACCOUNT (county account number, 7 digits), PROPERTY_ID (prefixed as '12' + ACCOUNT for the full 9-digit SDAT account number), OWNER_NAME, ICO_NAME (in-care-of), HOUSE_NUMBER (zero-padded 6-digit, e.g. '002909'), STREET_NAME, STREET_TYPE, STREET_DIRECTION, MAIL_STREET/CITY/STATE/ZIP5 (owner mailing address), ASSESS_DIST (assessment district), LAND_AREA_ACRE, LAND_AREA_SQFT, LIBER, FOLIO, SUB_NAME, CONDO_UNIT_NUMBER, TAXMAPGRID. The situs address is split across HOUSE_NUMBER + STREET_NAME + STREET_TYPE. There is no single combined site address field on this layer. The county belongs to the M-NCPPC (Maryland-National Capital Park and Planning Commission) planning region and uses Maryland SDAT for the authoritative ownership record. Prince George's County borders DC and contains the University of Maryland (College Park) and Joint Base Andrews."
3406
+ }
3407
+ ]
3408
+ };
3409
+
2845
3410
  // data/massachusetts.json
2846
3411
  var massachusetts_default = {
2847
3412
  stateSlug: "massachusetts",
@@ -2917,7 +3482,7 @@ var massachusetts_default = {
2917
3482
  url: "https://www.mass.gov/info-details/massgis-data-property-tax-parcels",
2918
3483
  email: null
2919
3484
  },
2920
- notes: "MassGIS Level 3 (L3) Standardized Assessors' Parcel data \u2014 a single statewide service covering all 351 Massachusetts municipalities including all 6 target counties: Suffolk (Boston), Middlesex, Worcester, Norfolk, Essex, and Plymouth. Parcels are organized by municipality (TOWN_ID numeric code), not by county. To filter by county: Suffolk towns include Boston (274), Chelsea (54), Revere (223), Winthrop (349); Middlesex includes Cambridge (49), Lowell (168), Newton (195); use the MassGIS town-code lookup at mass.gov for the full list. Two-layer workflow: layer 1 (Tax Parcels) carries polygon geometry and parcel ID; layer 4 (L3_ASSESS table, no geometry) carries owner name, address, and assessment data \u2014 join on LOC_ID. OWNER_NAME field is public."
3485
+ notes: "MassGIS Level 3 (L3) Standardized Assessors' Parcel data, a single statewide service covering all 351 Massachusetts municipalities including all 6 target counties: Suffolk (Boston), Middlesex, Worcester, Norfolk, Essex, and Plymouth. Parcels are organized by municipality (TOWN_ID numeric code), not by county. To filter by county: Suffolk towns include Boston (274), Chelsea (54), Revere (223), Winthrop (349); Middlesex includes Cambridge (49), Lowell (168), Newton (195); use the MassGIS town-code lookup at mass.gov for the full list. Two-layer workflow: layer 1 (Tax Parcels) carries polygon geometry and parcel ID; layer 4 (L3_ASSESS table, no geometry) carries owner name, address, and assessment data, join on LOC_ID. OWNER_NAME field is public."
2921
3486
  }
2922
3487
  ]
2923
3488
  };
@@ -2927,7 +3492,7 @@ var michigan_default = {
2927
3492
  stateSlug: "michigan",
2928
3493
  stateName: "Michigan",
2929
3494
  stateAbbrev: "MI",
2930
- lastUpdated: "2026-05-15",
3495
+ lastUpdated: "2026-06-06",
2931
3496
  counties: [
2932
3497
  {
2933
3498
  id: "mi-kent",
@@ -2959,9 +3524,9 @@ var michigan_default = {
2959
3524
  sampleQuery: "https://gis.kentcountymi.gov/agisprod/rest/services/ParcelsWithCondos/MapServer/0/query?where=UPPER(OWNERNAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=PPN,OWNERNAME1,PROPERTYADDRESS,PROPADDRESSCITY&returnGeometry=false&f=json&resultRecordCount=10",
2960
3525
  license: "public",
2961
3526
  licenseUrl: "https://www.kentcountymi-accesskent.opendata.arcgis.com/",
2962
- status: "live",
2963
- lastVerified: "2026-05-15",
2964
- verifiedBy: "automated"
3527
+ status: "unreachable",
3528
+ lastVerified: "2026-06-06",
3529
+ verifiedBy: "manual"
2965
3530
  }
2966
3531
  ],
2967
3532
  contact: {
@@ -2969,7 +3534,7 @@ var michigan_default = {
2969
3534
  url: "https://www.kentcountymi.gov/246/Geographic-Information-System-GIS",
2970
3535
  email: null
2971
3536
  },
2972
- notes: "Kent County (Grand Rapids metro) hosts ParcelsWithCondos/MapServer/0 \u2014 a countywide parcel layer including condominium units. 22 fields: PPN, TAXPARCEL_FLAG, OWNERNAME1, OWNERNAME2, OWNERCAREOF, OWNERADDRESS, OWNERCITY, OWNERZIPCODE, PROPERTYADDRESS, PROPADDRESSCITY, PROPADDRESSSTATE_ZIPCODE, PROPERTYCLASS, GOVERNMENTALUNIT, SCHOOLDISTRICT, SEV/TAXABLE fields (2 tribunals), ACREAGE, PNUM, geometry. Query confirmed live: UPPER(OWNERNAME1) LIKE '%SMITH%' returns real owner names (e.g., 'SMITH TIMOTHY J & STARKS-SMITH MARY'). Owner mailing address is in OWNERADDRESS/OWNERCITY/OWNERZIPCODE. The county's open data hub at kentcountymi-accesskent.opendata.arcgis.com mirrors the same data. Michigan parcel ID (PPN) format is 10-digit county-township-parcel."
3537
+ notes: "Kent County (Grand Rapids metro) hosts ParcelsWithCondos/MapServer/0, a countywide parcel layer including condominium units. 22 fields: PPN, TAXPARCEL_FLAG, OWNERNAME1, OWNERNAME2, OWNERCAREOF, OWNERADDRESS, OWNERCITY, OWNERZIPCODE, PROPERTYADDRESS, PROPADDRESSCITY, PROPADDRESSSTATE_ZIPCODE, PROPERTYCLASS, GOVERNMENTALUNIT, SCHOOLDISTRICT, SEV/TAXABLE fields (2 tribunals), ACREAGE, PNUM, geometry. Query confirmed live: UPPER(OWNERNAME1) LIKE '%SMITH%' returns real owner names (e.g., 'SMITH TIMOTHY J & STARKS-SMITH MARY'). Owner mailing address is in OWNERADDRESS/OWNERCITY/OWNERZIPCODE. The county's open data hub at kentcountymi-accesskent.opendata.arcgis.com mirrors the same data. Michigan parcel ID (PPN) format is 10-digit county-township-parcel. INFRASTRUCTURE OUTAGE (verified 2026-06-06): the entire agisprod ArcGIS server is offline ('Could not access any server machines') -- every service and the portal are affected. Looks transient rather than a retirement; recheck around 2026-07-06."
2973
3538
  },
2974
3539
  {
2975
3540
  id: "mi-oakland",
@@ -3021,7 +3586,7 @@ var minnesota_default = {
3021
3586
  stateSlug: "minnesota",
3022
3587
  stateName: "Minnesota",
3023
3588
  stateAbbrev: "MN",
3024
- lastUpdated: "2026-05-15",
3589
+ lastUpdated: "2026-06-06",
3025
3590
  counties: [
3026
3591
  {
3027
3592
  id: "mn-ramsey",
@@ -3097,9 +3662,9 @@ var minnesota_default = {
3097
3662
  sampleQuery: "https://gis.hennepin.us/arcgis/rest/services/HennepinData/LAND_PROPERTY/MapServer/1/query?where=UPPER(OWNER_NM)+LIKE+UPPER(%27%25SMITH%25%27)&outFields=PID,OWNER_NM,STREET_NM,MAILING_MUNIC_NM&returnGeometry=false&f=json&resultRecordCount=10",
3098
3663
  license: "public",
3099
3664
  licenseUrl: "https://gis-hennepin.hub.arcgis.com/",
3100
- status: "unreachable",
3101
- lastVerified: "2026-05-15",
3102
- verifiedBy: "automated"
3665
+ status: "live",
3666
+ lastVerified: "2026-06-06",
3667
+ verifiedBy: "manual"
3103
3668
  }
3104
3669
  ],
3105
3670
  contact: {
@@ -3107,7 +3672,7 @@ var minnesota_default = {
3107
3672
  url: "https://gis-hennepin.hub.arcgis.com/",
3108
3673
  email: null
3109
3674
  },
3110
- notes: "448,036 polygon parcels covering Minneapolis and the rest of Hennepin County. Verified 2026-05-11: UPPER(OWNER_NM) LIKE '%SMITH%' returns real owners (e.g., 'ALEX D SMITH', 'PAUL LOUIS SMITH'). Owner names are space-padded fixed-width \u2014 wrap searches in UPPER() and trim whitespace client-side. Full residential address columns present (HOUSE_NO, FRAC_HOUSE_NO, STREET_NM, MAILING_MUNIC_NM, ZIP_CD). PID is 13-digit composite (parcel-fragment-municipality-section). TORRENS_TYP flag distinguishes Torrens vs. Abstract land per Minnesota's dual-title system. CURRENT OUTAGE (2026-05-15): the HennepinData/LAND_PROPERTY/MapServer service returns HTTP 500 'Service not started' \u2014 county-side outage, not a permanent retirement. The county's open-data hub at gis-hennepin.opendata.arcgis.com is also returning 404 'Domain record not found'. Recheck weekly via the liveness script \u2014 restore status to 'live' once the service returns."
3675
+ notes: "448,036 polygon parcels covering Minneapolis and the rest of Hennepin County. Verified 2026-05-11: UPPER(OWNER_NM) LIKE '%SMITH%' returns real owners (e.g., 'ALEX D SMITH', 'PAUL LOUIS SMITH'). Owner names are space-padded fixed-width, wrap searches in UPPER() and trim whitespace client-side. Full residential address columns present (HOUSE_NO, FRAC_HOUSE_NO, STREET_NM, MAILING_MUNIC_NM, ZIP_CD). PID is 13-digit composite (parcel-fragment-municipality-section). TORRENS_TYP flag distinguishes Torrens vs. Abstract land per Minnesota's dual-title system. OUTAGE RESOLVED 2026-06-06: the 2026-05 county-side outage cleared -- service re-verified live (448,083 parcels; OWNER_NM queries return real owners)."
3111
3676
  }
3112
3677
  ]
3113
3678
  };
@@ -3117,7 +3682,7 @@ var mississippi_default = {
3117
3682
  stateSlug: "mississippi",
3118
3683
  stateName: "Mississippi",
3119
3684
  stateAbbrev: "MS",
3120
- lastUpdated: "2026-05-15",
3685
+ lastUpdated: "2026-06-06",
3121
3686
  counties: [
3122
3687
  {
3123
3688
  id: "ms-hinds",
@@ -3160,7 +3725,7 @@ var mississippi_default = {
3160
3725
  }
3161
3726
  ],
3162
3727
  contact: {
3163
- department: "Mississippi Department of Environmental Quality (MDEQ) OPCGIS \u2014 hosts county parcel layers",
3728
+ department: "Mississippi Department of Environmental Quality (MDEQ) OPCGIS. Hosts county parcel layers",
3164
3729
  url: "https://www.gis.ms.gov/",
3165
3730
  email: null
3166
3731
  },
@@ -3177,9 +3742,9 @@ var mississippi_default = {
3177
3742
  hasPublicRest: true,
3178
3743
  endpoints: [
3179
3744
  {
3180
- url: "https://maps.desotocountyms.gov/arcgis/rest/services/Layers/MapServer/28",
3745
+ url: "https://maps.desotocountyms.gov/arcgis/rest/services/CountyWebMap/Tax_Assessors_County_Web_Map/MapServer/29",
3181
3746
  serviceType: "MapServer",
3182
- layerIndex: 28,
3747
+ layerIndex: 29,
3183
3748
  layerName: "Tax Parcels",
3184
3749
  supportsQuery: true,
3185
3750
  corsEnabled: null,
@@ -3192,15 +3757,13 @@ var mississippi_default = {
3192
3757
  { name: "STATE", label: "State", searchable: false },
3193
3758
  { name: "ZIP_CODE", label: "ZIP Code", searchable: false },
3194
3759
  { name: "FULL_ADDR", label: "Full Site Address", searchable: true },
3195
- { name: "ACREAGE", label: "Acreage", searchable: false },
3196
- { name: "DEED_BOOK1", label: "Deed Book", searchable: false },
3197
- { name: "DEED_PAGE1", label: "Deed Page", searchable: false }
3760
+ { name: "ACREAGE", label: "Acreage", searchable: false }
3198
3761
  ],
3199
- sampleQuery: "https://maps.desotocountyms.gov/arcgis/rest/services/Layers/MapServer/28/query?where=UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER_NAME,FULL_ADDR,CITY&returnGeometry=false&f=json&resultRecordCount=10",
3762
+ sampleQuery: "https://maps.desotocountyms.gov/arcgis/rest/services/CountyWebMap/Tax_Assessors_County_Web_Map/MapServer/29/query?where=UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER_NAME,FULL_ADDR,CITY&returnGeometry=false&f=json&resultRecordCount=10",
3200
3763
  license: "public",
3201
3764
  licenseUrl: "https://www.desotocountyms.gov/205/GIS-Maps-Data",
3202
3765
  status: "live",
3203
- lastVerified: "2026-05-15",
3766
+ lastVerified: "2026-06-06",
3204
3767
  verifiedBy: "manual"
3205
3768
  }
3206
3769
  ],
@@ -3209,7 +3772,7 @@ var mississippi_default = {
3209
3772
  url: "https://desotocounty-dcms-gis.hub.arcgis.com/",
3210
3773
  email: null
3211
3774
  },
3212
- notes: "DeSoto County (Southaven and Olive Branch; pop. 185,000; Memphis metro south) is Mississippi's fastest-growing county and carries the highest parcel-lookup demand in the state. The Tax Parcels layer sits at index 28 of the DeSoto County Layers MapServer (maps.desotocountyms.gov). 15 confirmed fields: PIN, ACREAGE, FULL_ADDR (site address), OWNER_NAME, SECOND_OWNER (co-owner), OWNER_ADDRESS, CITY, STATE, ZIP_CODE, DEED_BOOK1, DEED_PAGE1, WD_Link (warranty deed hyperlink), Tax_Info (hyperlink to county tax record), and Tax_Map (tax map hyperlink). Owner-name queries confirmed live 2026-05-15; SMITH returns Olive Branch MS addresses. WD_Link and Tax_Info are URL fields that deep-link directly into the county's deed and tax systems -- a convenience not common in Mississippi public layers. DeSoto County's GIS Hub at desotocounty-dcms-gis.hub.arcgis.com provides bulk downloads. The county tax assessor portal at desotocountyms.gov handles exemption and appeal records not surfaced in the REST layer."
3775
+ notes: "DeSoto County (Southaven and Olive Branch; pop. 185,000; Memphis metro south) is Mississippi's fastest-growing county and carries the highest parcel-lookup demand in the state. The Tax Parcels layer sits at index 28 of the DeSoto County Layers MapServer (maps.desotocountyms.gov). 15 confirmed fields: PIN, ACREAGE, FULL_ADDR (site address), OWNER_NAME, SECOND_OWNER (co-owner), OWNER_ADDRESS, CITY, STATE, ZIP_CODE, DEED_BOOK1, DEED_PAGE1, WD_Link (warranty deed hyperlink), Tax_Info (hyperlink to county tax record), and Tax_Map (tax map hyperlink). Owner-name queries confirmed live 2026-05-15; SMITH returns Olive Branch MS addresses. WD_Link and Tax_Info are URL fields that deep-link directly into the county's deed and tax systems -- a convenience not common in Mississippi public layers. DeSoto County's GIS Hub at desotocounty-dcms-gis.hub.arcgis.com provides bulk downloads. The county tax assessor portal at desotocountyms.gov handles exemption and appeal records not surfaced in the REST layer. MIGRATED 2026-06-06: Layer 28 of Layers/MapServer was retired (ArcGIS 404) -- parcels now at CountyWebMap/Tax_Assessors_County_Web_Map/MapServer/29 (84,713 parcels; OWNER_NAME search re-verified live). Deed/tax hyperlink fields from the old layer are not confirmed on the new one."
3213
3776
  }
3214
3777
  ]
3215
3778
  };
@@ -3219,8 +3782,55 @@ var missouri_default = {
3219
3782
  stateSlug: "missouri",
3220
3783
  stateName: "Missouri",
3221
3784
  stateAbbrev: "MO",
3222
- lastUpdated: "2026-05-15",
3785
+ lastUpdated: "2026-06-20",
3223
3786
  counties: [
3787
+ {
3788
+ id: "mo-jackson",
3789
+ state: "MO",
3790
+ stateName: "Missouri",
3791
+ stateSlug: "missouri",
3792
+ county: "Jackson",
3793
+ countySlug: "jackson-county",
3794
+ countyFips: "29095",
3795
+ hasPublicRest: true,
3796
+ endpoints: [
3797
+ {
3798
+ url: "https://gis.mijackson.org/countygis/rest/services/RealEstate/RealEstateParcels/FeatureServer/0",
3799
+ serviceType: "FeatureServer",
3800
+ layerIndex: 0,
3801
+ layerName: "RealEstateParcels",
3802
+ supportsQuery: true,
3803
+ corsEnabled: null,
3804
+ searchFields: [
3805
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
3806
+ { name: "OWNER", label: "Owner Name", searchable: true },
3807
+ { name: "OWNER2", label: "Owner Name 2", searchable: false },
3808
+ { name: "O_ADDRESS", label: "Owner Address", searchable: false },
3809
+ { name: "O_CITY", label: "Owner City", searchable: false },
3810
+ { name: "O_STATE", label: "Owner State", searchable: false },
3811
+ { name: "O_ZIP", label: "Owner ZIP", searchable: false },
3812
+ { name: "P_FULLADD", label: "Property Full Address", searchable: true },
3813
+ { name: "P_CITY", label: "Property City", searchable: false },
3814
+ { name: "P_STATE", label: "Property State", searchable: false },
3815
+ { name: "P_ZIP", label: "Property ZIP", searchable: false },
3816
+ { name: "P_ACREAGE", label: "Acreage", searchable: false },
3817
+ { name: "LIBERPAGE", label: "Liber/Page (deed reference)", searchable: false }
3818
+ ],
3819
+ sampleQuery: "https://gis.mijackson.org/countygis/rest/services/RealEstate/RealEstateParcels/FeatureServer/0/query?where=UPPER(OWNER)+LIKE+UPPER('%25SMITH%25')&outFields=PIN,OWNER,OWNER2,O_ADDRESS,O_CITY,P_FULLADD,P_CITY&returnGeometry=false&f=json&resultRecordCount=10",
3820
+ license: "public",
3821
+ licenseUrl: "https://gis.mijackson.org/",
3822
+ status: "live",
3823
+ lastVerified: "2026-06-20",
3824
+ verifiedBy: "automated"
3825
+ }
3826
+ ],
3827
+ contact: {
3828
+ department: "Jackson County GIS (Assessed Services Division)",
3829
+ url: "https://jacksongov.org/residents/property-information",
3830
+ email: null
3831
+ },
3832
+ notes: "Jackson County MO (Kansas City metro; county seat Kansas City; FIPS 29095; pop. 715,000, largest county in MO) provides parcel data via gis.mijackson.org. The RealEstate/RealEstateParcels/FeatureServer/0 layer exposes 20 fields: PIN (parcel ID), LIBERPAGE, O_CITY, OWNER, OWNER2, O_STATE, O_ADDRESS, O_ZIP, P_CITY, P_FULLADD, P_STATE, P_ZIP, P_STATUS, P_ACREAGE, P_ASSMBOR1-4, P_HPERCENT. Owner search via UPPER(OWNER) LIKE works well. Verified 2026-06-20: SMITH returns Kansas City-area addresses. Jackson County MO includes Kansas City proper and inner suburbs (Independence, Lee's Summit, Blue Springs). Do not confuse with Jackson County in other states. The GIS portal is at gis.mijackson.org."
3833
+ },
3224
3834
  {
3225
3835
  id: "mo-st-louis",
3226
3836
  state: "MO",
@@ -3263,7 +3873,205 @@ var missouri_default = {
3263
3873
  url: "https://gis.stlouiscountymo.gov/",
3264
3874
  email: null
3265
3875
  },
3266
- notes: "St. Louis County MO (St. Louis metro west/south, county seat Clayton \u2014 NOT the independent City of St. Louis) provides AGS_Parcels/MapServer/0 with 30+ fields: LOCATOR (parcel ID), PARENT_LOC, TAXYR, OWNER_NAME, PROP_ADRNUM, PROP_ADD, PROP_ZIP, OWN_ADD, OWN_CITY, OWN_STATE, OWN_ZIP, SCHSUB (school subdivision), MUNYCODE (municipality code), TAXCODE, ASSTIMPVAL, TOTASSMT, APPLANDVAL, APPIMPVAL, TOTAPVAL, PROPCLASS, LUC, LANDUSE2, LUCODE, TENURE, BLDGNAME, TWPNAME. Query confirmed live: UPPER(OWNER_NAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH KIMBERLY & ANTHONY T/E' at '11041 LILAC AVE'). St. Louis County MO (FIPS 29189) is a separate entity from the City of St. Louis (FIPS 29510, an independent city not part of any county). The GeoData portal at data-stlcogis.opendata.arcgis.com provides open data downloads and GeoServices API links. The maps.stlouisco.com server is the live REST host."
3876
+ notes: "St. Louis County MO (St. Louis metro west/south, county seat Clayton, NOT the independent City of St. Louis) provides AGS_Parcels/MapServer/0 with 30+ fields: LOCATOR (parcel ID), PARENT_LOC, TAXYR, OWNER_NAME, PROP_ADRNUM, PROP_ADD, PROP_ZIP, OWN_ADD, OWN_CITY, OWN_STATE, OWN_ZIP, SCHSUB (school subdivision), MUNYCODE (municipality code), TAXCODE, ASSTIMPVAL, TOTASSMT, APPLANDVAL, APPIMPVAL, TOTAPVAL, PROPCLASS, LUC, LANDUSE2, LUCODE, TENURE, BLDGNAME, TWPNAME. Query confirmed live: UPPER(OWNER_NAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH KIMBERLY & ANTHONY T/E' at '11041 LILAC AVE'). St. Louis County MO (FIPS 29189) is a separate entity from the City of St. Louis (FIPS 29510, an independent city not part of any county). The GeoData portal at data-stlcogis.opendata.arcgis.com provides open data downloads and GeoServices API links. The maps.stlouisco.com server is the live REST host."
3877
+ }
3878
+ ]
3879
+ };
3880
+
3881
+ // data/montana.json
3882
+ var montana_default = {
3883
+ stateSlug: "montana",
3884
+ stateName: "Montana",
3885
+ stateAbbrev: "MT",
3886
+ lastUpdated: "2026-06-20",
3887
+ counties: [
3888
+ {
3889
+ id: "mt-yellowstone",
3890
+ state: "MT",
3891
+ stateName: "Montana",
3892
+ stateSlug: "montana",
3893
+ county: "Yellowstone",
3894
+ countySlug: "yellowstone-county",
3895
+ countyFips: "30111",
3896
+ hasPublicRest: true,
3897
+ endpoints: [
3898
+ {
3899
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3900
+ serviceType: "MapServer",
3901
+ layerIndex: 0,
3902
+ layerName: "Parcels",
3903
+ supportsQuery: true,
3904
+ corsEnabled: null,
3905
+ searchFields: [
3906
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
3907
+ { name: "OwnerName", label: "Owner Name", searchable: true },
3908
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
3909
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
3910
+ { name: "OwnerCity", label: "Owner City", searchable: false },
3911
+ { name: "OwnerState", label: "Owner State", searchable: false },
3912
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
3913
+ { name: "AddressLine1", label: "Property Address", searchable: true },
3914
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
3915
+ { name: "CountyName", label: "County Name (Yellowstone)", searchable: false },
3916
+ { name: "COUNTYCD", label: "County Code (3 = Yellowstone)", searchable: false },
3917
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3918
+ { name: "TaxYear", label: "Tax Year", searchable: false }
3919
+ ],
3920
+ sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Yellowstone'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3921
+ license: "public",
3922
+ licenseUrl: "https://gisservicemt.gov/",
3923
+ status: "live",
3924
+ lastVerified: "2026-06-20",
3925
+ verifiedBy: "automated"
3926
+ }
3927
+ ],
3928
+ contact: {
3929
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
3930
+ url: "https://msl.mt.gov/geoinfo/",
3931
+ email: null
3932
+ },
3933
+ notes: "Yellowstone County MT (Billings metro; county seat Billings; FIPS 30111; most populous MT county, pop. 164,000) is served by the Montana statewide parcel layer hosted by the Montana State Library / MSDI Framework. Filter CountyName='Yellowstone' (TitleCase) to scope to Yellowstone County (COUNTYCD=3). Key fields: PARCELID, PropertyID, AssessmentCode, OwnerName, OwnerAddress1/2, OwnerCity, OwnerState, OwnerZipCode, AddressLine1, AddressLine2, CityStateZip, PropType, PropAccess, LevyDistrict, Township, Range, Section, LegalDescriptionShort, GISAcres, TotalBuildingValue, TotalLandValue, TotalValue, TaxYear. Verified 2026-06-20: CountyName='Yellowstone' AND SMITH returns Billings-area addresses. Do not confuse with Yellowstone National Park (in WY, ID, and MT, not a county)."
3934
+ },
3935
+ {
3936
+ id: "mt-missoula",
3937
+ state: "MT",
3938
+ stateName: "Montana",
3939
+ stateSlug: "montana",
3940
+ county: "Missoula",
3941
+ countySlug: "missoula-county",
3942
+ countyFips: "30063",
3943
+ hasPublicRest: true,
3944
+ endpoints: [
3945
+ {
3946
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3947
+ serviceType: "MapServer",
3948
+ layerIndex: 0,
3949
+ layerName: "Parcels",
3950
+ supportsQuery: true,
3951
+ corsEnabled: null,
3952
+ searchFields: [
3953
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
3954
+ { name: "OwnerName", label: "Owner Name", searchable: true },
3955
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
3956
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
3957
+ { name: "OwnerCity", label: "Owner City", searchable: false },
3958
+ { name: "OwnerState", label: "Owner State", searchable: false },
3959
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
3960
+ { name: "AddressLine1", label: "Property Address", searchable: true },
3961
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
3962
+ { name: "CountyName", label: "County Name (Missoula)", searchable: false },
3963
+ { name: "COUNTYCD", label: "County Code (4 = Missoula)", searchable: false },
3964
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3965
+ { name: "TaxYear", label: "Tax Year", searchable: false }
3966
+ ],
3967
+ sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Missoula'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3968
+ license: "public",
3969
+ licenseUrl: "https://gisservicemt.gov/",
3970
+ status: "live",
3971
+ lastVerified: "2026-06-20",
3972
+ verifiedBy: "automated"
3973
+ }
3974
+ ],
3975
+ contact: {
3976
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
3977
+ url: "https://msl.mt.gov/geoinfo/",
3978
+ email: null
3979
+ },
3980
+ notes: "Missoula County MT (Missoula; county seat Missoula; FIPS 30063; home to University of Montana) is served by the Montana statewide parcel layer (COUNTYCD=4). Filter CountyName='Missoula' to scope to this county. Same schema and endpoint as other Montana counties (MSDI Framework Parcels/MapServer/0). Verified 2026-06-20: SMITH query returns Missoula-area addresses."
3981
+ },
3982
+ {
3983
+ id: "mt-cascade",
3984
+ state: "MT",
3985
+ stateName: "Montana",
3986
+ stateSlug: "montana",
3987
+ county: "Cascade",
3988
+ countySlug: "cascade-county",
3989
+ countyFips: "30013",
3990
+ hasPublicRest: true,
3991
+ endpoints: [
3992
+ {
3993
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3994
+ serviceType: "MapServer",
3995
+ layerIndex: 0,
3996
+ layerName: "Parcels",
3997
+ supportsQuery: true,
3998
+ corsEnabled: null,
3999
+ searchFields: [
4000
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
4001
+ { name: "OwnerName", label: "Owner Name", searchable: true },
4002
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
4003
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
4004
+ { name: "OwnerCity", label: "Owner City", searchable: false },
4005
+ { name: "OwnerState", label: "Owner State", searchable: false },
4006
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
4007
+ { name: "AddressLine1", label: "Property Address", searchable: true },
4008
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
4009
+ { name: "CountyName", label: "County Name (Cascade)", searchable: false },
4010
+ { name: "COUNTYCD", label: "County Code (2 = Cascade)", searchable: false },
4011
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4012
+ { name: "TaxYear", label: "Tax Year", searchable: false }
4013
+ ],
4014
+ sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Cascade'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4015
+ license: "public",
4016
+ licenseUrl: "https://gisservicemt.gov/",
4017
+ status: "live",
4018
+ lastVerified: "2026-06-20",
4019
+ verifiedBy: "automated"
4020
+ }
4021
+ ],
4022
+ contact: {
4023
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
4024
+ url: "https://msl.mt.gov/geoinfo/",
4025
+ email: null
4026
+ },
4027
+ notes: "Cascade County MT (Great Falls; county seat Great Falls; FIPS 30013) is served by the Montana statewide parcel layer (COUNTYCD=2). Filter CountyName='Cascade' to scope to this county. Same schema and endpoint as other Montana counties. Verified 2026-06-20: SMITH query returns Great Falls-area addresses."
4028
+ },
4029
+ {
4030
+ id: "mt-flathead",
4031
+ state: "MT",
4032
+ stateName: "Montana",
4033
+ stateSlug: "montana",
4034
+ county: "Flathead",
4035
+ countySlug: "flathead-county",
4036
+ countyFips: "30029",
4037
+ hasPublicRest: true,
4038
+ endpoints: [
4039
+ {
4040
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
4041
+ serviceType: "MapServer",
4042
+ layerIndex: 0,
4043
+ layerName: "Parcels",
4044
+ supportsQuery: true,
4045
+ corsEnabled: null,
4046
+ searchFields: [
4047
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
4048
+ { name: "OwnerName", label: "Owner Name", searchable: true },
4049
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
4050
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
4051
+ { name: "OwnerCity", label: "Owner City", searchable: false },
4052
+ { name: "OwnerState", label: "Owner State", searchable: false },
4053
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
4054
+ { name: "AddressLine1", label: "Property Address", searchable: true },
4055
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
4056
+ { name: "CountyName", label: "County Name (Flathead)", searchable: false },
4057
+ { name: "COUNTYCD", label: "County Code (7 = Flathead)", searchable: false },
4058
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4059
+ { name: "TaxYear", label: "Tax Year", searchable: false }
4060
+ ],
4061
+ sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Flathead'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4062
+ license: "public",
4063
+ licenseUrl: "https://gisservicemt.gov/",
4064
+ status: "live",
4065
+ lastVerified: "2026-06-20",
4066
+ verifiedBy: "automated"
4067
+ }
4068
+ ],
4069
+ contact: {
4070
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
4071
+ url: "https://msl.mt.gov/geoinfo/",
4072
+ email: null
4073
+ },
4074
+ notes: "Flathead County MT (Kalispell; county seat Kalispell; FIPS 30029; gateway to Glacier National Park) is served by the Montana statewide parcel layer (COUNTYCD=7). Filter CountyName='Flathead' to scope to this county. Same schema and endpoint as other Montana counties. Verified 2026-06-20: SMITH query returns Kalispell-area addresses."
3267
4075
  }
3268
4076
  ]
3269
4077
  };
@@ -3318,7 +4126,7 @@ var nebraska_default = {
3318
4126
  url: "https://dogis.org/",
3319
4127
  email: null
3320
4128
  },
3321
- notes: "Douglas County NE (Omaha metro, county seat Omaha) is served by DOGIS (Douglas-Omaha Geographic Information System), a joint city-county GIS agency. The Parcels_public FeatureServer/0 exposes 25 fields: PIN, OWNER_NAME, ADDRESS1/2 (owner mailing), OWNER_CITY, OWNER_STAT, OWNER_ZIP, PROPERTY_A (property address), HOUSE, STREET_DIR, STREET_NAM, STREET_TYP, APARTMENT, PROP_CITY, PROP_ZIP, SEC_TWN_RN, ADDITION_N, BLOCK, LOT, LEGAL1/2/3/4, DCAACCTYPE. Query confirmed live: UPPER(OWNER_NAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH MARKITA T'). Note that PROPERTY_A and PROP_CITY may be empty \u2014 the address join may be incomplete for some parcels; use HOUSE + STREET_NAM for address search if needed. The main DOGIS portal is at dogis.org and the open data portal at data-dogis.opendata.arcgis.com. The dcgis.org server also hosts engineering/project imagery \u2014 the vector/ folder is the correct path for parcel data. Douglas County NE (FIPS 31055) must not be confused with Douglas County CO (08035), Douglas County GA (13097), or other Douglas counties."
4129
+ notes: "Douglas County NE (Omaha metro, county seat Omaha) is served by DOGIS (Douglas-Omaha Geographic Information System), a joint city-county GIS agency. The Parcels_public FeatureServer/0 exposes 25 fields: PIN, OWNER_NAME, ADDRESS1/2 (owner mailing), OWNER_CITY, OWNER_STAT, OWNER_ZIP, PROPERTY_A (property address), HOUSE, STREET_DIR, STREET_NAM, STREET_TYP, APARTMENT, PROP_CITY, PROP_ZIP, SEC_TWN_RN, ADDITION_N, BLOCK, LOT, LEGAL1/2/3/4, DCAACCTYPE. Query confirmed live: UPPER(OWNER_NAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH MARKITA T'). Note that PROPERTY_A and PROP_CITY may be empty. The address join may be incomplete for some parcels; use HOUSE + STREET_NAM for address search if needed. The main DOGIS portal is at dogis.org and the open data portal at data-dogis.opendata.arcgis.com. The dcgis.org server also hosts engineering/project imagery. The vector/ folder is the correct path for parcel data. Douglas County NE (FIPS 31055) must not be confused with Douglas County CO (08035), Douglas County GA (13097), or other Douglas counties."
3322
4130
  },
3323
4131
  {
3324
4132
  id: "ne-lancaster",
@@ -3360,7 +4168,7 @@ var nebraska_default = {
3360
4168
  url: "https://www.lancaster.ne.gov/1485/GIS",
3361
4169
  email: null
3362
4170
  },
3363
- notes: "Lancaster County NE (Lincoln metro, county seat Lincoln \u2014 state capital) uses a joint City/County GIS server at gis.lincoln.ne.gov. The Assessor/TaxParcels/MapServer/0 layer uses Local Government Information Model (LGIM) schema: PARCELID, LOWPARCELID, OWNERNME1, OWNERNME2, CNVYNAME, PSTLADDRES, PSTLCITYSTZIP, SITEADDRESS, CVTTXCD, CVTTXDSCRP, SCHLTXCD, SCHLDSCRP, LGLSTARTDT, CLASSCD, CLASSDSCRP, NBHDCD, TAXABLEVALU, TOTVALUEBASE, RESYRBLT, RESFLRAREA. Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH, DOUGLAS R LIFE ESTATE'). Three alternate GIS servers cover Lancaster County: gis.lincoln.ne.gov (multiple subfolders), gisext.lincoln.ne.gov (Assessor/Pub_Parcels, Assessor/Asr_Landbase), and gis.lincoln.ne.gov/public (Assessor/ParcelLinesAerial). Lancaster County NE (FIPS 31109) must not be confused with Lancaster County PA (42071), Lancaster County SC (45057), or Lancaster County VA (51103). The TaxParcels service (integration subfolder) is the richest public-access parcel layer."
4171
+ notes: "Lancaster County NE (Lincoln metro, county seat Lincoln, state capital) uses a joint City/County GIS server at gis.lincoln.ne.gov. The Assessor/TaxParcels/MapServer/0 layer uses Local Government Information Model (LGIM) schema: PARCELID, LOWPARCELID, OWNERNME1, OWNERNME2, CNVYNAME, PSTLADDRES, PSTLCITYSTZIP, SITEADDRESS, CVTTXCD, CVTTXDSCRP, SCHLTXCD, SCHLDSCRP, LGLSTARTDT, CLASSCD, CLASSDSCRP, NBHDCD, TAXABLEVALU, TOTVALUEBASE, RESYRBLT, RESFLRAREA. Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH, DOUGLAS R LIFE ESTATE'). Three alternate GIS servers cover Lancaster County: gis.lincoln.ne.gov (multiple subfolders), gisext.lincoln.ne.gov (Assessor/Pub_Parcels, Assessor/Asr_Landbase), and gis.lincoln.ne.gov/public (Assessor/ParcelLinesAerial). Lancaster County NE (FIPS 31109) must not be confused with Lancaster County PA (42071), Lancaster County SC (45057), or Lancaster County VA (51103). The TaxParcels service (integration subfolder) is the richest public-access parcel layer."
3364
4172
  },
3365
4173
  {
3366
4174
  id: "ne-sarpy",
@@ -3402,7 +4210,7 @@ var nebraska_default = {
3402
4210
  url: "https://www.sarpy.gov/187/Geographic-Information-System-GIS",
3403
4211
  email: null
3404
4212
  },
3405
- notes: "Sarpy County NE (Omaha south/west suburbs \u2014 Bellevue, Papillion, La Vista, Gretna) hosts LandRecordsSearch/FeatureServer with 10 layers; layer 5 (Tax Parcels) is the polygon parcel layer with ownership data. Fields follow LGIM schema: PARCELID, OWNERNME1, OWNERNME2, CNVYNAME, PSTLADDRES, SITEADDRESS, CVTTXCD/CVTTXDSCRP, SCHLTXCD/SCHLDSCRP, USEDSCRP, NGHBRHDCD, CLASSCD, CLASSDSCRP, LNDVALUE, CNTASSDVAL, CNTTXBLVAL, RESFLRAREA, RESYRBLT. Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH/SHAWN L' at '11106 S 18TH CIR BELLEVUE NE 68123'). The Cadastral/LandRecordsDynamic/MapServer provides the same parcels as a cached tile service. Sarpy County is the fastest-growing county in Nebraska. GIS portal at gis.sarpy.gov and open data at data2-sarpy.opendata.arcgis.com. The SIMS parcel viewer (maps.sarpy.gov/html5viewer/?Viewer=SIMS) is the public-facing tool."
4213
+ notes: "Sarpy County NE (Omaha south/west suburbs, Bellevue, Papillion, La Vista, Gretna) hosts LandRecordsSearch/FeatureServer with 10 layers; layer 5 (Tax Parcels) is the polygon parcel layer with ownership data. Fields follow LGIM schema: PARCELID, OWNERNME1, OWNERNME2, CNVYNAME, PSTLADDRES, SITEADDRESS, CVTTXCD/CVTTXDSCRP, SCHLTXCD/SCHLDSCRP, USEDSCRP, NGHBRHDCD, CLASSCD, CLASSDSCRP, LNDVALUE, CNTASSDVAL, CNTTXBLVAL, RESFLRAREA, RESYRBLT. Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH/SHAWN L' at '11106 S 18TH CIR BELLEVUE NE 68123'). The Cadastral/LandRecordsDynamic/MapServer provides the same parcels as a cached tile service. Sarpy County is the fastest-growing county in Nebraska. GIS portal at gis.sarpy.gov and open data at data2-sarpy.opendata.arcgis.com. The SIMS parcel viewer (maps.sarpy.gov/html5viewer/?Viewer=SIMS) is the public-facing tool."
3406
4214
  }
3407
4215
  ]
3408
4216
  };
@@ -3502,7 +4310,7 @@ var nevada_default = {
3502
4310
  url: "https://explore-washoe.opendata.arcgis.com/",
3503
4311
  email: null
3504
4312
  },
3505
- notes: "71 fields confirmed including OBJECTID, APN, REGION, PIN, RECMAP, BOOK, PAGE, BLOCK, PARCEL, SUBNAME, TOWNSHIP, RANGE, SECTION_, FLOOR, MAPLINK, FLR, Shape, Shape.STArea(), STREETNUM, STREETDIR, STREET, CITY, SITUSZIP, FIRSTNAME, LASTNAME, MAILING1, MAILING2, MAILCITY, MAILSTATE, MAILZIP, LAND_USE, Zoning, WATER, SEWER, ACREAGE, TAXDIST, BEDROOMS, BATHS, YEARBLT, LANDASS, BUILDASS, TOTALASS, LANDAPR, BUILDAPR, TOTALAPR, DEPRECIATION, SALEDATE, SALEPRICE, OCCUPANCY, PROPCODE, TAXYEAR, STORIES, TOWNHOUSE, SQFEET, UNITS, AVCONSYEAR, BUILDINGTYPE, NBHD, SPECPROPCODE, QC, LAND_BASE, NBC, Fireplaces, HeatType, SecHeatType, Agency, AG_ABBR, FullAddress, ZoningWithDetail, Zoning_GIS, STRAP. Owner name available as FIRSTNAME + LASTNAME (split fields) \u2014 live query confirmed: APN 134087 returns 'MIEKO E SPAHR' in RENO 89503. maxRecordCount=1000. Covers Reno, Sparks, and unincorporated Washoe County (pop. 480,000). Note: owner name is public per Nevada law (unlike Clark County which also has a public layer but no owner). Current version 11.4."
4313
+ notes: "71 fields confirmed including OBJECTID, APN, REGION, PIN, RECMAP, BOOK, PAGE, BLOCK, PARCEL, SUBNAME, TOWNSHIP, RANGE, SECTION_, FLOOR, MAPLINK, FLR, Shape, Shape.STArea(), STREETNUM, STREETDIR, STREET, CITY, SITUSZIP, FIRSTNAME, LASTNAME, MAILING1, MAILING2, MAILCITY, MAILSTATE, MAILZIP, LAND_USE, Zoning, WATER, SEWER, ACREAGE, TAXDIST, BEDROOMS, BATHS, YEARBLT, LANDASS, BUILDASS, TOTALASS, LANDAPR, BUILDAPR, TOTALAPR, DEPRECIATION, SALEDATE, SALEPRICE, OCCUPANCY, PROPCODE, TAXYEAR, STORIES, TOWNHOUSE, SQFEET, UNITS, AVCONSYEAR, BUILDINGTYPE, NBHD, SPECPROPCODE, QC, LAND_BASE, NBC, Fireplaces, HeatType, SecHeatType, Agency, AG_ABBR, FullAddress, ZoningWithDetail, Zoning_GIS, STRAP. Owner name available as FIRSTNAME + LASTNAME (split fields). Live query confirmed: APN 134087 returns 'MIEKO E SPAHR' in RENO 89503. maxRecordCount=1000. Covers Reno, Sparks, and unincorporated Washoe County (pop. 480,000). Note: owner name is public per Nevada law (unlike Clark County which also has a public layer but no owner). Current version 11.4."
3506
4314
  }
3507
4315
  ]
3508
4316
  };
@@ -3646,11 +4454,11 @@ var new_jersey_default = {
3646
4454
  }
3647
4455
  ],
3648
4456
  contact: {
3649
- department: "NJ Office of GIS (NJOGIS) \u2014 Statewide MOD-IV Composite",
4457
+ department: "NJ Office of GIS (NJOGIS), Statewide MOD-IV Composite",
3650
4458
  url: "https://www.njogis.com/",
3651
4459
  email: null
3652
4460
  },
3653
- notes: "NJ statewide MOD-IV Composite parcel layer \u2014 covers all 21 counties; filter by COUNTY='BERGEN' (uppercase county name). Bergen County has 20,553+ parcels confirmed. IMPORTANT: OWNER_NAME field is present in the schema but intentionally blank for all records \u2014 NJ state policy restricts bulk owner-name lookup via the public REST layer. Parcel data includes address, assessed values, sale price, year built, deed book/page, and building description. For owner lookup, see NJ MOD-IV database via county tax assessors or NJACTB. This hosted service (Web Mercator 3857 projection) is maintained by NJOGIS and mirrors the official New Jersey Division of Taxation MOD-IV database."
4461
+ notes: "NJ statewide MOD-IV Composite parcel layer, covers all 21 counties; filter by COUNTY='BERGEN' (uppercase county name). Bergen County has 20,553+ parcels confirmed. IMPORTANT: OWNER_NAME field is present in the schema but intentionally blank for all records, NJ state policy restricts bulk owner-name lookup via the public REST layer. Parcel data includes address, assessed values, sale price, year built, deed book/page, and building description. For owner lookup, see NJ MOD-IV database via county tax assessors or NJACTB. This hosted service (Web Mercator 3857 projection) is maintained by NJOGIS and mirrors the official New Jersey Division of Taxation MOD-IV database."
3654
4462
  },
3655
4463
  {
3656
4464
  id: "nj-monmouth",
@@ -4028,20 +4836,71 @@ var new_jersey_default = {
4028
4836
  searchable: false
4029
4837
  }
4030
4838
  ],
4031
- sampleQuery: "https://maps.nj.gov/arcgis/rest/services/Framework/Cadastral/MapServer/0/query?where=COUNTY%3D'MORRIS'+AND+UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=COUNTY,MUN_NAME,PAMS_PIN,PROP_LOC,OWNER_NAME,NET_VALUE&returnGeometry=false&f=json&resultRecordCount=10",
4839
+ sampleQuery: "https://maps.nj.gov/arcgis/rest/services/Framework/Cadastral/MapServer/0/query?where=COUNTY%3D'MORRIS'+AND+UPPER(OWNER_NAME)+LIKE+UPPER('%25SMITH%25')&outFields=COUNTY,MUN_NAME,PAMS_PIN,PROP_LOC,OWNER_NAME,NET_VALUE&returnGeometry=false&f=json&resultRecordCount=10",
4840
+ license: "public",
4841
+ licenseUrl: "https://www.nj.gov/njgin/",
4842
+ status: "live",
4843
+ lastVerified: "2026-05-15",
4844
+ verifiedBy: "manual"
4845
+ }
4846
+ ],
4847
+ contact: {
4848
+ department: "NJ Office of Information Technology, Office of GIS (NJOGIS)",
4849
+ url: "https://www.nj.gov/njgin/",
4850
+ email: null
4851
+ },
4852
+ notes: "Morris County (pop. 510,000; northern NJ exurbs) has no county-direct REST parcel layer that exposes owner data. The local morrisgisapps.co.morris.nj.us MapServer exists but returns only PAMS_PIN and shape geometry -- insufficient for owner or address lookup. The NJOGIS statewide cadastral layer at maps.nj.gov (Framework/Cadastral/MapServer/0) is the practical choice; filter with COUNTY='MORRIS'. Fields include OWNER_NAME, PAMS_PIN, PROP_LOC, MUN_NAME, PROP_CLASS, LAND_VAL, IMPRVT_VAL, NET_VALUE, SALE_PRICE, YR_CONSTR, and CALC_ACRE. Morris County's 39 municipalities include Morristown, Parsippany-Troy Hills, Dover, Rockaway Township, Randolph, and several with significant commercial and industrial parcels along I-80 and Route 10. The MOD-IV quarterly update cycle applies; data reflects the prior quarter's county submission. NJ Daniel's Law address-redaction applies. For recorded instruments, the Morris County Clerk document portal is at morriscountyclerk.org."
4853
+ }
4854
+ ]
4855
+ };
4856
+
4857
+ // data/new-mexico.json
4858
+ var new_mexico_default = {
4859
+ stateSlug: "new-mexico",
4860
+ stateName: "New Mexico",
4861
+ stateAbbrev: "NM",
4862
+ lastUpdated: "2026-06-05",
4863
+ counties: [
4864
+ {
4865
+ id: "nm-bernalillo",
4866
+ state: "NM",
4867
+ stateName: "New Mexico",
4868
+ stateSlug: "new-mexico",
4869
+ county: "Bernalillo",
4870
+ countySlug: "bernalillo-county",
4871
+ countyFips: "35001",
4872
+ hasPublicRest: true,
4873
+ endpoints: [
4874
+ {
4875
+ url: "https://assessormap.bernco.gov/server/rest/services/Enterprise_Assessment_And_Tax/Public_Access_Parcel_Data_EAT/MapServer/0",
4876
+ serviceType: "MapServer",
4877
+ layerIndex: 0,
4878
+ layerName: "Parcels",
4879
+ supportsQuery: true,
4880
+ corsEnabled: null,
4881
+ searchFields: [
4882
+ { name: "UPC", label: "Unique Parcel Code (APN)", searchable: true },
4883
+ { name: "OWNER", label: "Owner Name", searchable: true },
4884
+ { name: "SITUSADD", label: "Situs Address", searchable: true },
4885
+ { name: "SITUSCITY", label: "Situs City", searchable: true },
4886
+ { name: "OWNADD", label: "Owner Mailing Address", searchable: true },
4887
+ { name: "OWNCITY", label: "Owner Mailing City", searchable: true },
4888
+ { name: "OWNZIPCODE", label: "Owner ZIP Code", searchable: true }
4889
+ ],
4890
+ sampleQuery: "https://assessormap.bernco.gov/server/rest/services/Enterprise_Assessment_And_Tax/Public_Access_Parcel_Data_EAT/MapServer/0/query?where=UPPER(OWNER)+LIKE+UPPER('%25SMITH%25')&outFields=UPC,OWNER,SITUSADD,SITUSCITY,OWNADD,OWNCITY,OWNZIPCODE&returnGeometry=false&f=json&resultRecordCount=10",
4032
4891
  license: "public",
4033
- licenseUrl: "https://www.nj.gov/njgin/",
4892
+ licenseUrl: "https://www.bernco.gov/assessor/assessors-gis-maps/",
4034
4893
  status: "live",
4035
- lastVerified: "2026-05-15",
4036
- verifiedBy: "manual"
4894
+ lastVerified: "2026-06-05",
4895
+ verifiedBy: "automated"
4037
4896
  }
4038
4897
  ],
4039
4898
  contact: {
4040
- department: "NJ Office of Information Technology, Office of GIS (NJOGIS)",
4041
- url: "https://www.nj.gov/njgin/",
4899
+ department: "Bernalillo County Assessor's Office GIS",
4900
+ url: "https://www.bernco.gov/assessor/assessors-gis-maps/",
4042
4901
  email: null
4043
4902
  },
4044
- notes: "Morris County (pop. 510,000; northern NJ exurbs) has no county-direct REST parcel layer that exposes owner data. The local morrisgisapps.co.morris.nj.us MapServer exists but returns only PAMS_PIN and shape geometry -- insufficient for owner or address lookup. The NJOGIS statewide cadastral layer at maps.nj.gov (Framework/Cadastral/MapServer/0) is the practical choice; filter with COUNTY='MORRIS'. Fields include OWNER_NAME, PAMS_PIN, PROP_LOC, MUN_NAME, PROP_CLASS, LAND_VAL, IMPRVT_VAL, NET_VALUE, SALE_PRICE, YR_CONSTR, and CALC_ACRE. Morris County's 39 municipalities include Morristown, Parsippany-Troy Hills, Dover, Rockaway Township, Randolph, and several with significant commercial and industrial parcels along I-80 and Route 10. The MOD-IV quarterly update cycle applies; data reflects the prior quarter's county submission. NJ Daniel's Law address-redaction applies. For recorded instruments, the Morris County Clerk document portal is at morriscountyclerk.org."
4903
+ notes: "Bernalillo County is New Mexico's most populous county (pop. 680,000; county seat Albuquerque, which contains roughly 90% of the county population). The Public_Access_Parcel_Data_EAT MapServer on assessormap.bernco.gov (ArcGIS Server 11.1) is the Bernalillo County Assessor's enterprise assessment and tax parcel layer. Live query confirmed 256,034 parcels with full owner-name and situs-address exposure. Key fields: UPC (Unique Parcel Code, a 20-character alphanumeric ID, e.g. '102106049820341601AL'), TAXYR, OWNER, SITUSADD (full situs address, e.g. '3501 JUAN TABO NE J1'), SITUSCITY, SITUSSTATE, SITUSZIP, OWNADD, OWNADD2, OWNCITY, OWNSTATE, OWNCOUNTRY, OWNZIPCODE, OWNZIP4 (full owner mailing address), TAXDIST, LEGALDESC, ROLLTYPE, VALCLASS, PROPCLASS, LANDVALUE, AGVALUE, IMPTVALUE, TOTVALUE, TOTTXBLE, NETTAXABLE, ACREAGE. UPC format encodes township/range/section/parcel in a compound alphanumeric string. Owner-name search via UPPER() LIKE on OWNER works. The assessor also maintains a public property search UI at assessor.bernco.gov. Note: assessormap.bernco.gov is a separate subdomain from the county's PDS GIS server at pdsgismaps.bernco.gov. Both are public; only assessormap.bernco.gov has the parcel-with-owner layer. The county GIS server at pdsgismaps.bernco.gov has the canvass parcel polygons (BernCo_Public_Canvass_Update/MapServer layer 6) but that layer has only UPC + situs address, not owner name."
4045
4904
  }
4046
4905
  ]
4047
4906
  };
@@ -4122,7 +4981,7 @@ var new_york_default = {
4122
4981
  url: "https://nycplanning.github.io/db-pluto/",
4123
4982
  email: null
4124
4983
  },
4125
- notes: "New York County (FIPS 36061) is the formal name for the borough of Manhattan, but both endpoints below cover ALL FIVE NYC boroughs. Use either to query Brooklyn (Kings, 36047), Queens (36081), Bronx (36005), or Staten Island (Richmond, 36085). MAPPLUTO (96 fields) is the DCP-maintained primary source: BBL as the unique identifier, OwnerName, full zoning (ZoneDist1-4, overlays, FAR), building characteristics, political geography. Filter MAPPLUTO by Borough field with codes MN/BX/BK/QN/SI. The NYS Tax Parcels service (75+ fields) covers all 62 NY counties \u2014 filter by COUNTY_NAME='Kings'/'Queens'/'New York'/'Bronx'/'Richmond' for NYC boroughs, or any upstate county name for statewide reach."
4984
+ notes: "New York County (FIPS 36061) is the formal name for the borough of Manhattan, but both endpoints below cover ALL FIVE NYC boroughs. Use either to query Brooklyn (Kings, 36047), Queens (36081), Bronx (36005), or Staten Island (Richmond, 36085). MAPPLUTO (96 fields) is the DCP-maintained primary source: BBL as the unique identifier, OwnerName, full zoning (ZoneDist1-4, overlays, FAR), building characteristics, political geography. Filter MAPPLUTO by Borough field with codes MN/BX/BK/QN/SI. The NYS Tax Parcels service (75+ fields) covers all 62 NY counties, filter by COUNTY_NAME='Kings'/'Queens'/'New York'/'Bronx'/'Richmond' for NYC boroughs, or any upstate county name for statewide reach."
4126
4985
  },
4127
4986
  {
4128
4987
  id: "ny-erie",
@@ -4167,7 +5026,7 @@ var new_york_default = {
4167
5026
  }
4168
5027
  ],
4169
5028
  contact: {
4170
- department: "Erie County Department of Environment and Planning \u2014 GIS Division",
5029
+ department: "Erie County Department of Environment and Planning, GIS Division",
4171
5030
  url: "https://www.erie.gov/environment/gis",
4172
5031
  email: null
4173
5032
  },
@@ -4263,7 +5122,7 @@ var new_york_default = {
4263
5122
  url: "https://gisservices.its.ny.gov/arcgis/rest/services/NYS_Tax_Parcels_Public/MapServer",
4264
5123
  email: null
4265
5124
  },
4266
- notes: "Onondaga County (Syracuse, FIPS 36067) is served by the NYS Tax Parcels Public statewide layer \u2014 filter with COUNTY_NAME='Onondaga'. 75+ fields including PRIMARY_OWNER, PARCEL_ADDR, SWIS_SBL_ID, PRINT_KEY, MAIL_ADDR, MAIL_CITY, TOTAL_AV, PROP_CLASS, YR_BLT. Owner query confirmed returning real residential parcels (Smith, Gregg S at 2647 Ellsworth Rd). This same statewide endpoint covers all 62 NY counties; see the NYC entry for borough-specific filtering. Note: Monroe County (Rochester, 36055) has its own dedicated hosted service with richer attributes \u2014 see ny-monroe entry. The NYS statewide service may not always return Monroe data; use the dedicated Monroe endpoint for that county."
5125
+ notes: "Onondaga County (Syracuse, FIPS 36067) is served by the NYS Tax Parcels Public statewide layer, filter with COUNTY_NAME='Onondaga'. 75+ fields including PRIMARY_OWNER, PARCEL_ADDR, SWIS_SBL_ID, PRINT_KEY, MAIL_ADDR, MAIL_CITY, TOTAL_AV, PROP_CLASS, YR_BLT. Owner query confirmed returning real residential parcels (Smith, Gregg S at 2647 Ellsworth Rd). This same statewide endpoint covers all 62 NY counties; see the NYC entry for borough-specific filtering. Note: Monroe County (Rochester, 36055) has its own dedicated hosted service with richer attributes, see ny-monroe entry. The NYS statewide service may not always return Monroe data; use the dedicated Monroe endpoint for that county."
4267
5126
  },
4268
5127
  {
4269
5128
  id: "ny-suffolk",
@@ -4283,7 +5142,7 @@ var new_york_default = {
4283
5142
  supportsQuery: true,
4284
5143
  corsEnabled: null,
4285
5144
  searchFields: [
4286
- { name: "COUNTY_NAME", label: "County Name \u2014 filter with 'Suffolk'", searchable: true },
5145
+ { name: "COUNTY_NAME", label: "County Name, filter with 'Suffolk'", searchable: true },
4287
5146
  { name: "PRIMARY_OWNER", label: "Primary Owner Name", searchable: true },
4288
5147
  { name: "ADD_OWNER", label: "Additional Owner Name", searchable: true },
4289
5148
  { name: "PARCEL_ADDR", label: "Parcel Address", searchable: true },
@@ -4313,7 +5172,7 @@ var new_york_default = {
4313
5172
  url: "https://www.its.ny.gov/gis",
4314
5173
  email: null
4315
5174
  },
4316
- notes: "75+ fields confirmed. This is the same NYS Tax Parcels Public statewide endpoint used for New York County (Manhattan) \u2014 filter by COUNTY_NAME='Suffolk' for Suffolk County. Suffolk is the most populous county on Long Island (~1.5M residents). SWIS_SBL_ID is the canonical parcel identifier (26-character SWIS + SBL concatenation); PRINT_KEY is the human-readable tax map reference (e.g. '1.-1-1'). PRIMARY_OWNER is the assessed owner. Note the NYC-area MAPPLUTO endpoint does NOT cover Suffolk \u2014 that endpoint is for the five NYC boroughs only. This statewide layer has 75+ attributes including assessed values, market values, year built, building style, heat/fuel type, bedrooms, school district, sewer/water type. Data is the annual NYS Real Property System roll export updated each September/October. ROLL_YR=2025 confirmed in live query results. Municipalities within Suffolk include Babylon, Brookhaven, East Hampton, Huntington, Islip, Riverhead, Shelter Island, Smithtown, Southampton, Southold \u2014 all accessible via the same COUNTY_NAME='Suffolk' filter."
5175
+ notes: "75+ fields confirmed. This is the same NYS Tax Parcels Public statewide endpoint used for New York County (Manhattan), filter by COUNTY_NAME='Suffolk' for Suffolk County. Suffolk is the most populous county on Long Island (~1.5M residents). SWIS_SBL_ID is the canonical parcel identifier (26-character SWIS + SBL concatenation); PRINT_KEY is the human-readable tax map reference (e.g. '1.-1-1'). PRIMARY_OWNER is the assessed owner. Note the NYC-area MAPPLUTO endpoint does NOT cover Suffolk. That endpoint is for the five NYC boroughs only. This statewide layer has 75+ attributes including assessed values, market values, year built, building style, heat/fuel type, bedrooms, school district, sewer/water type. Data is the annual NYS Real Property System roll export updated each September/October. ROLL_YR=2025 confirmed in live query results. Municipalities within Suffolk include Babylon, Brookhaven, East Hampton, Huntington, Islip, Riverhead, Shelter Island, Smithtown, Southampton, Southold, all accessible via the same COUNTY_NAME='Suffolk' filter."
4317
5176
  },
4318
5177
  {
4319
5178
  id: "ny-westchester",
@@ -4333,7 +5192,7 @@ var new_york_default = {
4333
5192
  supportsQuery: true,
4334
5193
  corsEnabled: null,
4335
5194
  searchFields: [
4336
- { name: "COUNTY_NAME", label: "County Name \u2014 filter with 'Westchester'", searchable: true },
5195
+ { name: "COUNTY_NAME", label: "County Name, filter with 'Westchester'", searchable: true },
4337
5196
  { name: "PRIMARY_OWNER", label: "Primary Owner Name", searchable: true },
4338
5197
  { name: "ADD_OWNER", label: "Additional Owner Name", searchable: true },
4339
5198
  { name: "PARCEL_ADDR", label: "Parcel Address", searchable: true },
@@ -4360,7 +5219,7 @@ var new_york_default = {
4360
5219
  url: "https://www.its.ny.gov/gis",
4361
5220
  email: null
4362
5221
  },
4363
- notes: "75+ fields confirmed. Same NYS Tax Parcels Public statewide endpoint as New York County (Manhattan) and Suffolk County \u2014 filter by COUNTY_NAME='Westchester'. Westchester is the most affluent large county in the lower Hudson Valley (~1M residents), and a high-search-intent county for public notice tools. PRIMARY_OWNER is the assessed owner name. Municipalities within Westchester accessible via this layer include Yonkers, White Plains, New Rochelle, Mount Vernon, Scarsdale, Ardsley, Tarrytown, Port Chester, Mamaroneck, and 35+ other cities/towns/villages \u2014 all filtered by COUNTY_NAME='Westchester'. Data is NYS RPS annual roll export (ROLL_YR=2025 confirmed in live query). The Westchester County GIS portal at gis.westchestergov.com offers a browser-based property viewer but does NOT expose a separate county-run public parcel REST endpoint for owner-name search; the NYS statewide service is the only public REST option. For both Suffolk and Westchester, always pair COUNTY_NAME with the owner query (as shown in sampleQuery) to avoid cross-county false matches in this multi-county statewide layer."
5222
+ notes: "75+ fields confirmed. Same NYS Tax Parcels Public statewide endpoint as New York County (Manhattan) and Suffolk County, filter by COUNTY_NAME='Westchester'. Westchester is the most affluent large county in the lower Hudson Valley (~1M residents), and a high-search-intent county for public notice tools. PRIMARY_OWNER is the assessed owner name. Municipalities within Westchester accessible via this layer include Yonkers, White Plains, New Rochelle, Mount Vernon, Scarsdale, Ardsley, Tarrytown, Port Chester, Mamaroneck, and 35+ other cities/towns/villages, all filtered by COUNTY_NAME='Westchester'. Data is NYS RPS annual roll export (ROLL_YR=2025 confirmed in live query). The Westchester County GIS portal at gis.westchestergov.com offers a browser-based property viewer but does NOT expose a separate county-run public parcel REST endpoint for owner-name search; the NYS statewide service is the only public REST option. For both Suffolk and Westchester, always pair COUNTY_NAME with the owner query (as shown in sampleQuery) to avoid cross-county false matches in this multi-county statewide layer."
4364
5223
  }
4365
5224
  ]
4366
5225
  };
@@ -4449,11 +5308,11 @@ var north_carolina_default = {
4449
5308
  }
4450
5309
  ],
4451
5310
  contact: {
4452
- department: "Mecklenburg County GIS \u2014 Geospatial Information Services (Charlotte-Mecklenburg joint GIS)",
5311
+ department: "Mecklenburg County GIS, Geospatial Information Services (Charlotte-Mecklenburg joint GIS)",
4453
5312
  url: "https://gis.mecknc.gov/",
4454
5313
  email: null
4455
5314
  },
4456
- notes: "Mecklenburg County (Charlotte, pop. 1.2M) GIS endpoint is hosted on Charlotte's ArcGIS server (gis.charlottenc.gov). 13 fields on this public layer: OBJECTID, MAP_BOOK, MAP_PAGE, MAP_BLOCK, LOT_NUM, NC_PIN, PID, PARCEL_TYPE, CONDO_TOWN_FLAG, Legal_From, Shape. NOTE: Owner name and address are NOT exposed on this public REST endpoint \u2014 the Charlotte/Mecklenburg POLARIS system provides owner-name lookups at polaris3g.mecklenburgcountync.gov but does not expose a public REST API. For parcel + owner data, Mecklenburg County's Geospatial Information Services (GIS) division provides full POLARIS data through the county open mapping site. This endpoint is geometry + PIN only."
5315
+ notes: "Mecklenburg County (Charlotte, pop. 1.2M) GIS endpoint is hosted on Charlotte's ArcGIS server (gis.charlottenc.gov). 13 fields on this public layer: OBJECTID, MAP_BOOK, MAP_PAGE, MAP_BLOCK, LOT_NUM, NC_PIN, PID, PARCEL_TYPE, CONDO_TOWN_FLAG, Legal_From, Shape. NOTE: Owner name and address are NOT exposed on this public REST endpoint. The Charlotte/Mecklenburg POLARIS system provides owner-name lookups at polaris3g.mecklenburgcountync.gov but does not expose a public REST API. For parcel + owner data, Mecklenburg County's Geospatial Information Services (GIS) division provides full POLARIS data through the county open mapping site. This endpoint is geometry + PIN only."
4457
5316
  },
4458
5317
  {
4459
5318
  id: "nc-forsyth",
@@ -4494,7 +5353,7 @@ var north_carolina_default = {
4494
5353
  }
4495
5354
  ],
4496
5355
  contact: {
4497
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5356
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4498
5357
  url: "https://www.nconemap.gov/pages/parcels",
4499
5358
  email: null
4500
5359
  },
@@ -4534,7 +5393,7 @@ var north_carolina_default = {
4534
5393
  }
4535
5394
  ],
4536
5395
  contact: {
4537
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5396
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4538
5397
  url: "https://www.nconemap.gov/pages/parcels",
4539
5398
  email: null
4540
5399
  },
@@ -4618,7 +5477,7 @@ var north_carolina_default = {
4618
5477
  }
4619
5478
  ],
4620
5479
  contact: {
4621
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5480
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4622
5481
  url: "https://www.nconemap.gov/pages/parcels",
4623
5482
  email: null
4624
5483
  },
@@ -4670,6 +5529,65 @@ var north_carolina_default = {
4670
5529
  ]
4671
5530
  };
4672
5531
 
5532
+ // data/north-dakota.json
5533
+ var north_dakota_default = {
5534
+ stateSlug: "north-dakota",
5535
+ stateName: "North Dakota",
5536
+ stateAbbrev: "ND",
5537
+ lastUpdated: "2026-06-20",
5538
+ counties: [
5539
+ {
5540
+ id: "nd-cass",
5541
+ state: "ND",
5542
+ stateName: "North Dakota",
5543
+ stateSlug: "north-dakota",
5544
+ county: "Cass",
5545
+ countySlug: "cass-county",
5546
+ countyFips: "38017",
5547
+ hasPublicRest: true,
5548
+ endpoints: [
5549
+ {
5550
+ url: "https://gisweb.casscountynd.gov/arcgis/rest/services/Public/CountyParcels/MapServer/0",
5551
+ serviceType: "MapServer",
5552
+ layerIndex: 0,
5553
+ layerName: "CountyParcels",
5554
+ supportsQuery: true,
5555
+ corsEnabled: null,
5556
+ searchFields: [
5557
+ { name: "GISPIN", label: "GIS Parcel ID", searchable: true },
5558
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
5559
+ { name: "DASHPIN", label: "Dash PIN", searchable: true },
5560
+ { name: "Name", label: "Owner Name", searchable: true },
5561
+ { name: "PropertyAddress", label: "Property Address", searchable: true },
5562
+ { name: "LMVENU", label: "Land Market Value (per unit)", searchable: false },
5563
+ { name: "VENUDESC", label: "Venue Description", searchable: false },
5564
+ { name: "Section", label: "Section", searchable: false },
5565
+ { name: "Lot", label: "Lot", searchable: false },
5566
+ { name: "CommRes", label: "Commercial/Residential flag", searchable: false },
5567
+ { name: "Exempt", label: "Exempt flag", searchable: false },
5568
+ { name: "ACRES", label: "Acres", searchable: false },
5569
+ { name: "LGDESC", label: "Legal Description", searchable: false },
5570
+ { name: "SchoolDistrict", label: "School District", searchable: false },
5571
+ { name: "FireDistrict", label: "Fire District", searchable: false }
5572
+ ],
5573
+ sampleQuery: "https://gisweb.casscountynd.gov/arcgis/rest/services/Public/CountyParcels/MapServer/0/query?where=UPPER(Name)+LIKE+UPPER('%25SMITH%25')&outFields=GISPIN,PIN,Name,PropertyAddress,SchoolDistrict&returnGeometry=false&f=json&resultRecordCount=10",
5574
+ license: "public",
5575
+ licenseUrl: "https://gisweb.casscountynd.gov/",
5576
+ status: "live",
5577
+ lastVerified: "2026-06-20",
5578
+ verifiedBy: "automated"
5579
+ }
5580
+ ],
5581
+ contact: {
5582
+ department: "Cass County GIS / Cass County Commission",
5583
+ url: "https://www.casscountynd.gov/county/depts/gis/Pages/default.aspx",
5584
+ email: null
5585
+ },
5586
+ notes: "Cass County ND (Fargo metro; county seat Fargo; FIPS 38017; most populous county in ND, pop. 193,000) provides parcel data via gisweb.casscountynd.gov. The Public/CountyParcels/MapServer/0 layer exposes 20 fields: OBJECTID, GISPIN (14-digit GIS parcel ID, e.g., '64160000340000'), DASHPIN, PIN, ALTPIN, LMVENU, VENUDESC, Name (owner name), Section, Lot, CommRes, Exempt, As400Acres, ACRES, LGDESC (legal description), PLATID, PropertyAddress, SchoolDistrict, FireDistrict. Owner search via UPPER(Name) LIKE returns full owner name strings. Verified 2026-06-20: SMITH returns Fargo-area addresses (e.g., GISPIN '01001000210000', owner 'DANIEL N & LORETTA K WENTZ' at 2315 UNIVERSITY DR N). Note: the Name field holds the full owner name as a single string. Cass County ND (FIPS 38017) must not be confused with Cass County MO, NE, IL, or TX."
5587
+ }
5588
+ ]
5589
+ };
5590
+
4673
5591
  // data/ohio.json
4674
5592
  var ohio_default = {
4675
5593
  stateSlug: "ohio",
@@ -4802,7 +5720,7 @@ var ohio_default = {
4802
5720
  url: "https://data-franklincova.opendata.arcgis.com/",
4803
5721
  email: null
4804
5722
  },
4805
- notes: "Franklin County, Ohio (Columbus metro, pop. 1.35M, county seat Columbus) is the most populous Ohio county. In Ohio, the county Auditor \u2014 not the Assessor \u2014 is the statutory data custodian for parcel records; the Franklin County Auditor's office publishes this GIS layer. 115+ fields confirmed including OWNERNME1/2/3, SITEADDRESS, PSTLADDRES, PSTLCITYSTZIP, CLASSCD/CLASSDSCRP, NBHDCD, CVTTXCD (tax district code), SCHLTXCD (school district), LNDVALUEBASE, BLDVALUEBASE, TOTVALUEBASE, SALEDATE, SALEPRICE, RESFLRAREA, RESYRBLT, RESSTRTYP, FLOORCOUNT, ROOMS, BATHS, HBATHS, BEDRMS, FIREPLC, AIRCOND, WALL, COND, GRADE, FLOOD, WATERSERV, SEWERSERV, OWNEROCCUPIED, RENTAL. Max record count 3000; owner query tested and confirmed returning real Columbus-area results. Parcel ID format: 'XXX-XXXXXX' (3-digit + 6-digit with hyphen). The service follows the ESRI Local Government Information Model (LGIM) parcel schema. Layer is updated Monday through Friday at 7:00 PM Eastern. Open-data downloads available at auditor-fca.opendata.arcgis.com. The Auditor's parcel viewer at property.franklincountyauditor.com is the browser-facing interface over the same data."
5723
+ notes: "Franklin County, Ohio (Columbus metro, pop. 1.35M, county seat Columbus) is the most populous Ohio county. In Ohio, the county Auditor, not the Assessor, is the statutory data custodian for parcel records; the Franklin County Auditor's office publishes this GIS layer. 115+ fields confirmed including OWNERNME1/2/3, SITEADDRESS, PSTLADDRES, PSTLCITYSTZIP, CLASSCD/CLASSDSCRP, NBHDCD, CVTTXCD (tax district code), SCHLTXCD (school district), LNDVALUEBASE, BLDVALUEBASE, TOTVALUEBASE, SALEDATE, SALEPRICE, RESFLRAREA, RESYRBLT, RESSTRTYP, FLOORCOUNT, ROOMS, BATHS, HBATHS, BEDRMS, FIREPLC, AIRCOND, WALL, COND, GRADE, FLOOD, WATERSERV, SEWERSERV, OWNEROCCUPIED, RENTAL. Max record count 3000; owner query tested and confirmed returning real Columbus-area results. Parcel ID format: 'XXX-XXXXXX' (3-digit + 6-digit with hyphen). The service follows the ESRI Local Government Information Model (LGIM) parcel schema. Layer is updated Monday through Friday at 7:00 PM Eastern. Open-data downloads available at auditor-fca.opendata.arcgis.com. The Auditor's parcel viewer at property.franklincountyauditor.com is the browser-facing interface over the same data."
4806
5724
  },
4807
5725
  {
4808
5726
  id: "oh-cuyahoga",
@@ -4847,7 +5765,7 @@ var ohio_default = {
4847
5765
  url: "https://fiscalhub.gis.cuyahogacounty.gov/",
4848
5766
  email: "gis@cuyahogacounty.us"
4849
5767
  },
4850
- notes: "80+ fields confirmed including parcel_owner, deeded_owner, grantor, grantee, transfer_date, sales_amount, par_addr_all, par_city, par_zip, tax_luc, tax_luc_description, zoning_code, zoning_use, property_class, certified_tax_land, certified_tax_building, certified_tax_total, total_acreage, total_square_ft, res_bldg_count, total_res_liv_area. Owner query tested and returning real results (par_addr_all includes city and state in one field). The MyPLACE service (WGS84 projection) is the public-facing layer backing the county's MyPlace property search portal. Layer 0 = Point Parcel, Layer 1 = Air Parcel, Layer 2 = the full polygon parcel layer. The earlier 'saledate' field was renamed 'transfer_date' in 2026 \u2014 joined record retains the same semantics."
5768
+ notes: "80+ fields confirmed including parcel_owner, deeded_owner, grantor, grantee, transfer_date, sales_amount, par_addr_all, par_city, par_zip, tax_luc, tax_luc_description, zoning_code, zoning_use, property_class, certified_tax_land, certified_tax_building, certified_tax_total, total_acreage, total_square_ft, res_bldg_count, total_res_liv_area. Owner query tested and returning real results (par_addr_all includes city and state in one field). The MyPLACE service (WGS84 projection) is the public-facing layer backing the county's MyPlace property search portal. Layer 0 = Point Parcel, Layer 1 = Air Parcel, Layer 2 = the full polygon parcel layer. The earlier 'saledate' field was renamed 'transfer_date' in 2026, joined record retains the same semantics."
4851
5769
  },
4852
5770
  {
4853
5771
  id: "oh-hamilton",
@@ -4889,7 +5807,7 @@ var ohio_default = {
4889
5807
  }
4890
5808
  ],
4891
5809
  contact: {
4892
- department: "CAGIS (Cincinnati Area Geographic Information System) \u2014 Hamilton County Auditor",
5810
+ department: "CAGIS (Cincinnati Area Geographic Information System), Hamilton County Auditor",
4893
5811
  url: "https://www.hamilton-co.org/auditor/maps",
4894
5812
  email: null
4895
5813
  },
@@ -4976,12 +5894,63 @@ var ohio_default = {
4976
5894
  ]
4977
5895
  };
4978
5896
 
5897
+ // data/oklahoma.json
5898
+ var oklahoma_default = {
5899
+ stateSlug: "oklahoma",
5900
+ stateName: "Oklahoma",
5901
+ stateAbbrev: "OK",
5902
+ lastUpdated: "2026-06-05",
5903
+ counties: [
5904
+ {
5905
+ id: "ok-oklahoma",
5906
+ state: "OK",
5907
+ stateName: "Oklahoma",
5908
+ stateSlug: "oklahoma",
5909
+ county: "Oklahoma",
5910
+ countySlug: "oklahoma-county",
5911
+ countyFips: "40109",
5912
+ hasPublicRest: true,
5913
+ endpoints: [
5914
+ {
5915
+ url: "https://services8.arcgis.com/euhkr1dAJeQBIjV0/arcgis/rest/services/TaxParcelsPublics_view/FeatureServer/0",
5916
+ serviceType: "FeatureServer",
5917
+ layerIndex: 0,
5918
+ layerName: "TaxParcelPublic",
5919
+ supportsQuery: true,
5920
+ corsEnabled: null,
5921
+ searchFields: [
5922
+ { name: "accountno", label: "Account Number (APN)", searchable: true },
5923
+ { name: "name1", label: "Owner Name (Primary)", searchable: true },
5924
+ { name: "name2", label: "Owner Name 2", searchable: true },
5925
+ { name: "name3", label: "Owner Name 3", searchable: true },
5926
+ { name: "location", label: "Property Address", searchable: true },
5927
+ { name: "locationcity", label: "Property City", searchable: true },
5928
+ { name: "mailingaddress1", label: "Mailing Address", searchable: true }
5929
+ ],
5930
+ sampleQuery: "https://services8.arcgis.com/euhkr1dAJeQBIjV0/arcgis/rest/services/TaxParcelsPublics_view/FeatureServer/0/query?where=UPPER(name1)+LIKE+UPPER('%25SMITH%25')&outFields=accountno,name1,name2,mailingaddress1,city,location,locationcity&returnGeometry=false&f=json&resultRecordCount=10",
5931
+ license: "public",
5932
+ licenseUrl: "https://ok-county-gis-hub-ok-co.hub.arcgis.com/",
5933
+ status: "live",
5934
+ lastVerified: "2026-06-05",
5935
+ verifiedBy: "automated"
5936
+ }
5937
+ ],
5938
+ contact: {
5939
+ department: "Oklahoma County GIS",
5940
+ url: "https://ok-county-gis-hub-ok-co.hub.arcgis.com/",
5941
+ email: null
5942
+ },
5943
+ notes: "Oklahoma County is Oklahoma's most populous county (pop. 810,000; county seat Oklahoma City). The TaxParcelsPublics_view FeatureServer is hosted on ArcGIS Online (services8.arcgis.com, org ID euhkr1dAJeQBIjV0) and published via the OK County GIS Hub at ok-county-gis-hub-ok-co.hub.arcgis.com. Live query confirmed 336,922 parcels and owner-name exposure. Key fields: accountno (R-prefixed account number, e.g. 'R189878000'), name1/name2/name3 (up to three owners), mailingaddress1, city (mailing city), location (combined property address when populated, e.g. '17622 N INDIAN MERIDIAN RD OKLAHOMA CITY'), locationcity (property city), propertyid (numeric internal ID), taxdistrict, taxdistrictname, currentmarket, currentassessed, currenttaxable, landvalue, legal (legal description), subname, lot, block, section, township, range, acreage. Note: location and locationcity fields may be null for some rural parcels, when null, use legal/section/township/range for location. The former county ArcGIS Server at oklahomacounty.geocortex.com is no longer reachable (DNS fails as of 2026-06); the ArcGIS Online hosted view is the current canonical public layer. Oklahoma County Assessor portal at assessor.oklahomacounty.org provides the full record with appeals and valuation history."
5944
+ }
5945
+ ]
5946
+ };
5947
+
4979
5948
  // data/oregon.json
4980
5949
  var oregon_default = {
4981
5950
  stateSlug: "oregon",
4982
5951
  stateName: "Oregon",
4983
5952
  stateAbbrev: "OR",
4984
- lastUpdated: "2026-05-15",
5953
+ lastUpdated: "2026-06-06",
4985
5954
  counties: [
4986
5955
  {
4987
5956
  id: "or-multnomah",
@@ -5013,7 +5982,7 @@ var oregon_default = {
5013
5982
  { name: "SITUS_CITY", label: "Situs City", searchable: true },
5014
5983
  { name: "SITUS_ZIP", label: "Situs ZIP", searchable: false },
5015
5984
  { name: "RMV_PROPER", label: "Real Market Value (Property)", searchable: false },
5016
- { name: "PROP_TYPE", label: "Property Type", searchable: false }
5985
+ { name: "PROPERTY_C", label: "Property Class", searchable: false }
5017
5986
  ],
5018
5987
  sampleQuery: "https://services3.arcgis.com/tNPgIZWOB0Efvm0g/ArcGIS/rest/services/Tax_Lots/FeatureServer/0/query?where=UPPER(MAILING_NA)+LIKE+UPPER('%25SMITH%25')&outFields=TLID,MAILING_NA,M_ADDRESS,SITUS_HOUS,SITUS_STRE,SITUS_CITY&returnGeometry=false&f=json&resultRecordCount=10",
5019
5988
  license: "public",
@@ -5024,11 +5993,11 @@ var oregon_default = {
5024
5993
  }
5025
5994
  ],
5026
5995
  contact: {
5027
- department: "Multnomah County Department of Assessment, Recording and Taxation \u2014 GIS",
5996
+ department: "Multnomah County Department of Assessment, Recording and Taxation, GIS",
5028
5997
  url: "https://gis-multco.opendata.arcgis.com/",
5029
5998
  email: null
5030
5999
  },
5031
- notes: "46 fields confirmed including TLID, GlobalID, StatedArea, ID, account_id, tax_status, map_tax, MAP, Taxlot, S_I_TYPE, SI_NUMBER, MAILING_NA, IN_CARE_OF, AGENT, M_ADDRESS, M_CITY, M_STATE, zip, YEAR, ma, sa, nh, RMV_PROPER, PROPERTY_C, CODE_AREA, SUM_OF_ACR, SUM_OF_SQF, SITUS_HOUS (house number), SITUS_STRE, SITUS_ST_1, SITUS_DIRE, SITUS_UNIT, SITUS_CITY, SITUS_STAT, SITUS_ZIP, SITUS_PRE_. Owner name search via UPPER() LIKE on MAILING_NA returns real results (e.g., 'SMITH TIMOTHY BLAIR & KAREN KAY'). Hosted on ArcGIS Online (services3.arcgis.com/tNPgIZWOB0Efvm0g). Parcel boundaries are approximated \u2014 not for determining legal property boundaries. This data is from Multnomah County Assessment, Recording and Taxation, covering Portland and all of Multnomah County (pop. 830,000). Capabilities: Query, Sync."
6000
+ notes: "46 fields confirmed including TLID, GlobalID, StatedArea, ID, account_id, tax_status, map_tax, MAP, Taxlot, S_I_TYPE, SI_NUMBER, MAILING_NA, IN_CARE_OF, AGENT, M_ADDRESS, M_CITY, M_STATE, zip, YEAR, ma, sa, nh, RMV_PROPER, PROPERTY_C, CODE_AREA, SUM_OF_ACR, SUM_OF_SQF, SITUS_HOUS (house number), SITUS_STRE, SITUS_ST_1, SITUS_DIRE, SITUS_UNIT, SITUS_CITY, SITUS_STAT, SITUS_ZIP, SITUS_PRE_. Owner name search via UPPER() LIKE on MAILING_NA returns real results (e.g., 'SMITH TIMOTHY BLAIR & KAREN KAY'). Hosted on ArcGIS Online (services3.arcgis.com/tNPgIZWOB0Efvm0g). Parcel boundaries are approximated, not for determining legal property boundaries. This data is from Multnomah County Assessment, Recording and Taxation, covering Portland and all of Multnomah County (pop. 830,000). Capabilities: Query, Sync."
5032
6001
  },
5033
6002
  {
5034
6003
  id: "or-lane",
@@ -5041,7 +6010,7 @@ var oregon_default = {
5041
6010
  hasPublicRest: true,
5042
6011
  endpoints: [
5043
6012
  {
5044
- url: "http://lcmaps.lanecounty.org/arcgis/rest/services/AT/AddressParcelSales/MapServer/2",
6013
+ url: "https://lcgispubags.lanecountyor.gov/arcgis/rest/services/LaneCountyMaps/AddressParcel/MapServer/2",
5045
6014
  serviceType: "MapServer",
5046
6015
  layerIndex: 2,
5047
6016
  layerName: "Parcels",
@@ -5056,28 +6025,22 @@ var oregon_default = {
5056
6025
  { name: "ADDR3", label: "Owner Address Line 3", searchable: true },
5057
6026
  { name: "OWNERCITY", label: "Owner City", searchable: false },
5058
6027
  { name: "OWNERPRVST", label: "Owner State", searchable: false },
5059
- { name: "OWNERZIP", label: "Owner ZIP", searchable: false },
5060
- { name: "SITUS", label: "Situs Address", searchable: true },
5061
- { name: "GEOCITY", label: "Geographic City", searchable: true },
5062
- { name: "MAPACRES", label: "Map Acreage", searchable: false },
5063
- { name: "RMVLND", label: "Real Market Value (Land)", searchable: false },
5064
- { name: "RMVIMP", label: "Real Market Value (Improvements)", searchable: false },
5065
- { name: "RMVTOTAL", label: "Real Market Value (Total)", searchable: false }
6028
+ { name: "OWNERZIP", label: "Owner ZIP", searchable: false }
5066
6029
  ],
5067
- sampleQuery: "http://lcmaps.lanecounty.org/arcgis/rest/services/AT/AddressParcelSales/MapServer/2/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=RLID,MAPTAXLOT,OWNNAME,SITUS,GEOCITY,MAPACRES,RMVTOTAL&returnGeometry=false&f=json&resultRecordCount=10",
6030
+ sampleQuery: "https://lcgispubags.lanecountyor.gov/arcgis/rest/services/LaneCountyMaps/AddressParcel/MapServer/2/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=RLID,MAPTAXLOT,OWNNAME,ADDR1&returnGeometry=false&f=json&resultRecordCount=10",
5068
6031
  license: "public",
5069
6032
  licenseUrl: "https://www.lanecounty.org/business/maps",
5070
6033
  status: "live",
5071
- lastVerified: "2026-05-15",
6034
+ lastVerified: "2026-06-06",
5072
6035
  verifiedBy: "manual"
5073
6036
  }
5074
6037
  ],
5075
6038
  contact: {
5076
- department: "Lane County Information Services \u2014 Maps & GIS",
6039
+ department: "Lane County Information Services, Maps & GIS",
5077
6040
  url: "https://www.lanecounty.org/business/maps",
5078
6041
  email: null
5079
6042
  },
5080
- notes: "24 fields confirmed including OBJECTID, RLID, PROPACCT, MAPTAXLOT, MAPNUMBER, TAXLOT, ACCTNO, OWNNAME, ADDR1, ADDR2, ADDR3, OWNERCITY, OWNERPRVST, OWNERZIP, OWNERCNTRY, MAPACRES, GEOCITY, UGB, AscendAcres, Shape_Length, Shape_Area, zoningdesc, plandesdesc. Owner name confirmed live: OWNNAME field returns real owner names (e.g., 'SMITH, BENJAMIN C 25%...'). This is Layer 2 (Parcels polygon) on the AddressParcelSales MapServer; Layer 0 is Site Address points; Layer 1 is recent sales. The base URL uses HTTP (not HTTPS) \u2014 the server redirects HTTPS to HTTP. RLID is the Regional Land Information Database identifier. Real Market Value fields are available (RMVLND, RMVIMP, RMVTOTAL). maxRecordCount=1000. Capabilities: Map, Query, Data."
6043
+ notes: "24 fields confirmed including OBJECTID, RLID, PROPACCT, MAPTAXLOT, MAPNUMBER, TAXLOT, ACCTNO, OWNNAME, ADDR1, ADDR2, ADDR3, OWNERCITY, OWNERPRVST, OWNERZIP, OWNERCNTRY, MAPACRES, GEOCITY, UGB, AscendAcres, Shape_Length, Shape_Area, zoningdesc, plandesdesc. Owner name confirmed live: OWNNAME field returns real owner names (e.g., 'SMITH, BENJAMIN C 25%...'). MIGRATED 2026-06-06: lcmaps.lanecounty.org was retired (HTTP 500) -- the service moved to lcgispubags.lanecountyor.gov LaneCountyMaps/AddressParcel/MapServer/2 over HTTPS (159,028 parcels; OWNNAME search re-verified live). Situs and market-value columns from the old layer are not yet confirmed on the new one -- searchFields trimmed to confirmed columns. RLID is the Regional Land Information Database identifier. Real Market Value fields are available (RMVLND, RMVIMP, RMVTOTAL). maxRecordCount=1000. Capabilities: Map, Query, Data."
5081
6044
  },
5082
6045
  {
5083
6046
  id: "or-marion",
@@ -5165,11 +6128,11 @@ var pennsylvania_default = {
5165
6128
  }
5166
6129
  ],
5167
6130
  contact: {
5168
- department: "Allegheny County Department of Information Technology \u2014 GIS Division",
6131
+ department: "Allegheny County Department of Information Technology, GIS Division",
5169
6132
  url: "https://openac-alcogis.opendata.arcgis.com/",
5170
6133
  email: "gis@alleghenycounty.us"
5171
6134
  },
5172
- notes: "Only 5 fields on the public Web_Parcels endpoint: OBJECTID, PIN, MAPBLOCKLOT, SHAPE, SHAPE.STArea(), SHAPE.STLength(). This is geometry + parcel ID only \u2014 owner name is NOT exposed on the public REST layer. The EGIS folder on gisdata.alleghenycounty.us contains only 4 services (Web_Parcels, Buildings, Municipalities, AC_AddressPointsWithLabels). Full owner/address data is accessible through the Allegheny County Real Estate portal at alleghenyco.us/property-assessment and the county's block-lot lookup at property.alleghenycounty.us \u2014 these are browser-only, not REST-queryable. The WPRDC open data portal at data.wprdc.org has property assessment data as a CSV/API download."
6135
+ notes: "Only 5 fields on the public Web_Parcels endpoint: OBJECTID, PIN, MAPBLOCKLOT, SHAPE, SHAPE.STArea(), SHAPE.STLength(). This is geometry + parcel ID only. Owner name is NOT exposed on the public REST layer. The EGIS folder on gisdata.alleghenycounty.us contains only 4 services (Web_Parcels, Buildings, Municipalities, AC_AddressPointsWithLabels). Full owner/address data is accessible through the Allegheny County Real Estate portal at alleghenyco.us/property-assessment and the county's block-lot lookup at property.alleghenycounty.us. These are browser-only, not REST-queryable. The WPRDC open data portal at data.wprdc.org has property assessment data as a CSV/API download."
5173
6136
  },
5174
6137
  {
5175
6138
  id: "pa-philadelphia",
@@ -5207,7 +6170,7 @@ var pennsylvania_default = {
5207
6170
  }
5208
6171
  ],
5209
6172
  contact: {
5210
- department: "City of Philadelphia \u2014 Office of Innovation and Technology (OIT) CityGeo / Philadelphia Water Department",
6173
+ department: "City of Philadelphia, Office of Innovation and Technology (OIT) CityGeo / Philadelphia Water Department",
5211
6174
  url: "https://data-phl.opendata.arcgis.com/",
5212
6175
  email: null
5213
6176
  },
@@ -5238,7 +6201,7 @@ var rhode_island_default = {
5238
6201
  url: "https://www.rigis.org/",
5239
6202
  email: null
5240
6203
  },
5241
- notes: "No public queryable REST endpoint found for Providence County parcel data. Rhode Island has no county government \u2014 GIS and parcel authority rests with individual municipalities. RIGIS (risegis.ri.gov) hosts only a MuniGIS_Resources MapServer that tracks metadata (last-updated status) per municipality, not actual parcel polygons. The state GIS server at gis.ri.gov/arcgis/rest/services/RIDOA/Muni_Parcel/MapServer was unreachable at time of research. Providence City has its own GIS portal (webgis.providenceri.gov, pvdgis.maps.arcgis.com) with parcel data, but the server was refusing connections in May 2026. Fallback: download shapefiles for individual RI cities and towns from RIGIS data distribution (rigis.org). Commercial options: Regrid covers RI with full parcel attribute data."
6204
+ notes: "No public queryable REST endpoint found for Providence County parcel data. Rhode Island has no county government, GIS and parcel authority rests with individual municipalities. RIGIS (risegis.ri.gov) hosts only a MuniGIS_Resources MapServer that tracks metadata (last-updated status) per municipality, not actual parcel polygons. The state GIS server at gis.ri.gov/arcgis/rest/services/RIDOA/Muni_Parcel/MapServer was unreachable at time of research. Providence City has its own GIS portal (webgis.providenceri.gov, pvdgis.maps.arcgis.com) with parcel data, but the server was refusing connections in May 2026. Fallback: download shapefiles for individual RI cities and towns from RIGIS data distribution (rigis.org). Commercial options: Regrid covers RI with full parcel attribute data."
5242
6205
  }
5243
6206
  ]
5244
6207
  };
@@ -5248,7 +6211,7 @@ var south_carolina_default = {
5248
6211
  stateSlug: "south-carolina",
5249
6212
  stateName: "South Carolina",
5250
6213
  stateAbbrev: "SC",
5251
- lastUpdated: "2026-05-15",
6214
+ lastUpdated: "2026-06-06",
5252
6215
  counties: [
5253
6216
  {
5254
6217
  id: "sc-greenville",
@@ -5296,7 +6259,7 @@ var south_carolina_default = {
5296
6259
  url: "https://www.gcgis.org/",
5297
6260
  email: "gis@greenvillecounty.org"
5298
6261
  },
5299
- notes: "Greenville County (pop. 530,000; seat: Greenville) Tax Parcel layer is within the Map_Layers_JS composite MapServer at layer index 52. 20 fields confirmed: PIN, OWNAM1/2, STREET, CITY, STATE, ZIP5, NAMECO, POWNNM, DEEDDATE, CUBOOK, CUPAGE, PLTBK1, PPAGE1, DIST, MKTAREA, JURIS, LANDUSE, DESCR, SUBDIV. Verified 2026-05-15: SMITH returns Greenville SC addresses (e.g., '124 MCDANIEL GREENE', '218 BUTLER AVE'). The same MapServer contains 95+ other layers (zoning, census, drainage, etc.) \u2014 layer 52 is specifically Tax Parcel. The GCGIS GreenvilleJS MapServer is the public-facing viewer service."
6262
+ notes: "Greenville County (pop. 530,000; seat: Greenville) Tax Parcel layer is within the Map_Layers_JS composite MapServer at layer index 52. 20 fields confirmed: PIN, OWNAM1/2, STREET, CITY, STATE, ZIP5, NAMECO, POWNNM, DEEDDATE, CUBOOK, CUPAGE, PLTBK1, PPAGE1, DIST, MKTAREA, JURIS, LANDUSE, DESCR, SUBDIV. Verified 2026-05-15: SMITH returns Greenville SC addresses (e.g., '124 MCDANIEL GREENE', '218 BUTLER AVE'). The same MapServer contains 95+ other layers (zoning, census, drainage, etc.). Layer 52 is specifically Tax Parcel. The GCGIS GreenvilleJS MapServer is the public-facing viewer service."
5300
6263
  },
5301
6264
  {
5302
6265
  id: "sc-charleston",
@@ -5309,31 +6272,30 @@ var south_carolina_default = {
5309
6272
  hasPublicRest: true,
5310
6273
  endpoints: [
5311
6274
  {
5312
- url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/Parcel_Search/MapServer/4",
6275
+ url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/61",
5313
6276
  serviceType: "MapServer",
5314
- layerIndex: 4,
6277
+ layerIndex: 61,
5315
6278
  layerName: "Parcels",
5316
6279
  supportsQuery: true,
5317
6280
  corsEnabled: null,
5318
6281
  searchFields: [
5319
- { name: "PID", label: "Parcel ID (FEATURES.SDE.P_POLY_PARCEL.PID)", searchable: true },
5320
- { name: "GPIN", label: "GIS Parcel ID (FEATURES.SDE.P_POLY_PARCEL.GPIN)", searchable: true },
5321
- { name: "OWNER1", label: "Owner Name 1 (FEATURES.SDE.CAMA.OWNER1)", searchable: true },
5322
- { name: "OWNER2", label: "Owner Name 2 (FEATURES.SDE.CAMA.OWNER2)", searchable: false },
5323
- { name: "MAIL_ST_NAME", label: "Mailing Street Name (FEATURES.SDE.CAMA.MAIL_ST_NAME)", searchable: false },
5324
- { name: "MAIL_ST_NO", label: "Mailing Street Number (FEATURES.SDE.CAMA.MAIL_ST_NO)", searchable: false },
5325
- { name: "MAIL_CITY", label: "Mailing City (FEATURES.SDE.CAMA.MAIL_CITY)", searchable: false },
5326
- { name: "MAIL_STATE", label: "Mailing State (FEATURES.SDE.CAMA.MAIL_STATE)", searchable: false },
5327
- { name: "MAIL_ZIP", label: "Mailing ZIP (FEATURES.SDE.CAMA.MAIL_ZIP)", searchable: false },
5328
- { name: "TAX_DISTRICT", label: "Tax District (FEATURES.SDE.CAMA.TAX_DISTRICT)", searchable: false },
5329
- { name: "LEGAL_DESCR", label: "Legal Description (FEATURES.SDE.CAMA.LEGAL_DESCR)", searchable: false },
5330
- { name: "SUBDIVISION", label: "Subdivision (FEATURES.SDE.CAMA.SUBDIVISION)", searchable: false }
6282
+ { name: "PID", label: "Parcel ID", searchable: true },
6283
+ { name: "OWNER1", label: "Owner Name 1", searchable: true },
6284
+ { name: "OWNER2", label: "Owner Name 2", searchable: false },
6285
+ { name: "MAIL_ST_NAME", label: "Mailing Street Name", searchable: false },
6286
+ { name: "MAIL_ST_NO", label: "Mailing Street Number", searchable: false },
6287
+ { name: "MAIL_CITY", label: "Mailing City", searchable: false },
6288
+ { name: "MAIL_STATE", label: "Mailing State", searchable: false },
6289
+ { name: "MAIL_ZIP", label: "Mailing ZIP", searchable: false },
6290
+ { name: "TAX_DISTRICT", label: "Tax District", searchable: false },
6291
+ { name: "LEGAL_DESCR", label: "Legal Description", searchable: false },
6292
+ { name: "SUBDIVISION", label: "Subdivision", searchable: false }
5331
6293
  ],
5332
- sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/Parcel_Search/MapServer/4/query?where=UPPER%28%22FEATURES.SDE.CAMA.OWNER1%22%29+LIKE+UPPER%28%27%25SMITH%25%27%29&outFields=FEATURES.SDE.P_POLY_PARCEL.PID%2CFEATURES.SDE.CAMA.OWNER1%2CFEATURES.SDE.CAMA.MAIL_ST_NAME%2CFEATURES.SDE.CAMA.MAIL_CITY&returnGeometry=false&f=json&resultRecordCount=10",
6294
+ sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/61/query?where=UPPER(OWNER1)+LIKE+UPPER(%27%25SMITH%25%27)&outFields=PID,OWNER1,OWNER2,MAIL_ST_NAME&returnGeometry=false&f=json&resultRecordCount=10",
5333
6295
  license: "public",
5334
6296
  licenseUrl: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
5335
6297
  status: "live",
5336
- lastVerified: "2026-05-15",
6298
+ lastVerified: "2026-06-06",
5337
6299
  verifiedBy: "manual"
5338
6300
  }
5339
6301
  ],
@@ -5342,7 +6304,67 @@ var south_carolina_default = {
5342
6304
  url: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
5343
6305
  email: null
5344
6306
  },
5345
- notes: 'Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant) Parcel_Search MapServer layer 4. This layer is a spatial join of parcel geometry (FEATURES.SDE.P_POLY_PARCEL) with CAMA assessor data (FEATURES.SDE.CAMA), so field names are fully qualified with schema prefix. 20 fields confirmed: PID, GPIN, ACRES_CAL, OWNER1/2, TAX_DISTRICT, CLASS_CODE, MAIL_ST_NO/ST_NAME/ST_TYPE, MAIL_2ND_ADDR/ADDT, MAIL_CITY/STATE/ZIP/COUNTRY, LEGAL_DESCR, SUBDIVISION. IMPORTANT: field names in WHERE clause must be double-quoted due to dot notation (e.g., UPPER("FEATURES.SDE.CAMA.OWNER1") LIKE ...). Verified 2026-05-15: SMITH returns Edisto Island and Spring City area addresses.'
6307
+ notes: 'Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant) Parcel_Search MapServer layer 4. This layer is a spatial join of parcel geometry (FEATURES.SDE.P_POLY_PARCEL) with CAMA assessor data (FEATURES.SDE.CAMA), so field names are fully qualified with schema prefix. 20 fields confirmed: PID, GPIN, ACRES_CAL, OWNER1/2, TAX_DISTRICT, CLASS_CODE, MAIL_ST_NO/ST_NAME/ST_TYPE, MAIL_2ND_ADDR/ADDT, MAIL_CITY/STATE/ZIP/COUNTRY, LEGAL_DESCR, SUBDIVISION. IMPORTANT: field names in WHERE clause must be double-quoted due to dot notation (e.g., UPPER("FEATURES.SDE.CAMA.OWNER1") LIKE ...). Verified 2026-05-15: SMITH returns Edisto Island and Spring City area addresses. MIGRATED 2026-06-06: GIS_VIEWER/Parcel_Search/MapServer/4 was retired (ArcGIS 404) -- parcels now at GIS_VIEWER/New_Parcel_Search/MapServer/61 (197,306 parcels; OWNER1 search re-verified live). Field names are unqualified on the new layer (PID, OWNER1, ...); the FEATURES.SDE.* prefixes no longer apply and GPIN is not in the new schema.'
6308
+ }
6309
+ ]
6310
+ };
6311
+
6312
+ // data/south-dakota.json
6313
+ var south_dakota_default = {
6314
+ stateSlug: "south-dakota",
6315
+ stateName: "South Dakota",
6316
+ stateAbbrev: "SD",
6317
+ lastUpdated: "2026-06-20",
6318
+ counties: [
6319
+ {
6320
+ id: "sd-minnehaha",
6321
+ state: "SD",
6322
+ stateName: "South Dakota",
6323
+ stateSlug: "south-dakota",
6324
+ county: "Minnehaha",
6325
+ countySlug: "minnehaha-county",
6326
+ countyFips: "46099",
6327
+ hasPublicRest: true,
6328
+ endpoints: [
6329
+ {
6330
+ url: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0",
6331
+ serviceType: "MapServer",
6332
+ layerIndex: 0,
6333
+ layerName: "Parcels",
6334
+ supportsQuery: true,
6335
+ corsEnabled: null,
6336
+ searchFields: [
6337
+ { name: "TAG", label: "Parcel Tag (Parcel ID)", searchable: true },
6338
+ { name: "MRTNM1", label: "Owner Name 1", searchable: true },
6339
+ { name: "MRTNM2", label: "Owner Name 2", searchable: false },
6340
+ { name: "MRTCTY", label: "Owner City", searchable: false },
6341
+ { name: "MRTSTATE", label: "Owner State", searchable: false },
6342
+ { name: "MRTZPC", label: "Owner ZIP", searchable: false },
6343
+ { name: "FULL_ADDRESS", label: "Property Full Address", searchable: true },
6344
+ { name: "NWLOCN", label: "New Location (property street number)", searchable: false },
6345
+ { name: "NWPRED", label: "Street Pre-directional", searchable: false },
6346
+ { name: "NWLOCS", label: "Street Name", searchable: true },
6347
+ { name: "NWSTYP", label: "Street Type", searchable: false },
6348
+ { name: "MAP_ID", label: "Map ID", searchable: false },
6349
+ { name: "LOT", label: "Lot", searchable: false },
6350
+ { name: "BLOCK", label: "Block", searchable: false },
6351
+ { name: "TRACT", label: "Tract", searchable: false },
6352
+ { name: "SUBDIVISION", label: "Subdivision", searchable: false }
6353
+ ],
6354
+ sampleQuery: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0/query?where=UPPER(MRTNM1)+LIKE+UPPER('%25SMITH%25')&outFields=TAG,MRTNM1,MRTNM2,MRTCTY,FULL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
6355
+ license: "public",
6356
+ licenseUrl: "https://gis.minnehahacounty.org/",
6357
+ status: "live",
6358
+ lastVerified: "2026-06-20",
6359
+ verifiedBy: "automated"
6360
+ }
6361
+ ],
6362
+ contact: {
6363
+ department: "Minnehaha County GIS / Minnehaha County Equalization",
6364
+ url: "https://www.minnehahacounty.org/dept/eq/eq.php",
6365
+ email: null
6366
+ },
6367
+ notes: "Minnehaha County SD (Sioux Falls metro; county seat Sioux Falls; FIPS 46099; most populous county in SD, pop. 210,000) provides parcel data via gis.minnehahacounty.org. The Parcels/MapServer/0 layer exposes 20 fields: OBJECTID, FULL_ADDRESS, TAG (parcel ID), MAP_ID, MRRDID, MRTNM1 (owner name 1), MRTNM2 (owner name 2), MRTCTY (owner city), MRTSTATE, MRTZPC (ZIP), MRTZPC2, NWLOCN, NWPRED, NWLOCS (street name), NWSTYP, NWPOSD, LOT, BLOCK, TRACT, SUBDIVISION. Owner search via UPPER(MRTNM1) LIKE on MRTNM1. To get both owners, also query MRTNM2. Verified 2026-06-20: SMITH query returns Sioux Falls addresses. Minnehaha County SD (FIPS 46099) must not be confused with Minnehaha County in any other state."
5346
6368
  }
5347
6369
  ]
5348
6370
  };
@@ -5352,7 +6374,7 @@ var tennessee_default = {
5352
6374
  stateSlug: "tennessee",
5353
6375
  stateName: "Tennessee",
5354
6376
  stateAbbrev: "TN",
5355
- lastUpdated: "2026-05-15",
6377
+ lastUpdated: "2026-06-06",
5356
6378
  counties: [
5357
6379
  {
5358
6380
  id: "tn-davidson",
@@ -5403,11 +6425,12 @@ var tennessee_default = {
5403
6425
  }
5404
6426
  ],
5405
6427
  contact: {
5406
- department: "Metro Nashville GIS \u2014 Planning Department",
6428
+ department: "Metro Nashville GIS, Planning Department",
5407
6429
  url: "https://maps.nashville.gov/",
5408
6430
  email: null
5409
6431
  },
5410
- notes: "57 fields confirmed including ParID, DateEst, IsActive, FeatureType, Tract, Council, TaxDist, ParType, Owner, OwnDate, SaleCode, SaleSrc, ValidSale, OwnInstr, OwnAddr1/2/3, OwnCity, OwnState, OwnCountry, OwnZip, PropAddr, PropHouse, PropStreet, PropSuite, PropCity, PropState, PropZip, LegalDesc, PropInstr, PropDate, Front, Side, IsRegular, LUCode, LUDesc, AssessDate, PropFraction, StatedArea, SalePrice, Acres, LandAppr, ImprAppr, TotlAppr, LandAssd, ImprAssd, TotlAssd, STANPAR, DeededAcreage, APN. Owner query tested and confirmed: returns real Nashville addresses (e.g., 'SMITH, BRADLEY N JR' at '8300 SAWYER BROWN RD A-304 NASHVILLE'). Davidson County is a consolidated city-county with Nashville as the metro seat (pop. 715,000). APN is the assessor parcel number; STANPAR is the state parcel number. A separate Parcels_SP (State Plane) service exists at the same path with different spatial reference."
6432
+ notes: "57 fields confirmed including ParID, DateEst, IsActive, FeatureType, Tract, Council, TaxDist, ParType, Owner, OwnDate, SaleCode, SaleSrc, ValidSale, OwnInstr, OwnAddr1/2/3, OwnCity, OwnState, OwnCountry, OwnZip, PropAddr, PropHouse, PropStreet, PropSuite, PropCity, PropState, PropZip, LegalDesc, PropInstr, PropDate, Front, Side, IsRegular, LUCode, LUDesc, AssessDate, PropFraction, StatedArea, SalePrice, Acres, LandAppr, ImprAppr, TotlAppr, LandAssd, ImprAssd, TotlAssd, STANPAR, DeededAcreage, APN. Owner query tested and confirmed: returns real Nashville addresses (e.g., 'SMITH, BRADLEY N JR' at '8300 SAWYER BROWN RD A-304 NASHVILLE'). Davidson County is a consolidated city-county with Nashville as the metro seat (pop. 715,000). APN is the assessor parcel number; STANPAR is the state parcel number. A separate Parcels_SP (State Plane) service exists at the same path with different spatial reference.",
6433
+ relatedPropertyCitySlug: "nashville"
5411
6434
  },
5412
6435
  {
5413
6436
  id: "tn-shelby",
@@ -5445,7 +6468,7 @@ var tennessee_default = {
5445
6468
  license: "public",
5446
6469
  licenseUrl: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
5447
6470
  status: "live",
5448
- lastVerified: "2026-05-15",
6471
+ lastVerified: "2026-06-06",
5449
6472
  verifiedBy: "manual"
5450
6473
  }
5451
6474
  ],
@@ -5454,7 +6477,7 @@ var tennessee_default = {
5454
6477
  url: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
5455
6478
  email: null
5456
6479
  },
5457
- notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029."
6480
+ notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029. LEGACY TLS (first documented 2026-06-06, confirmed 2026-06-27): scgis.shelbycountytn.gov requires legacy TLS renegotiation (UNSAFE_LEGACY_RENEGOTIATION). Modern runtimes (Node.js 18+, undici fetch, Python 3.10+ ssl, standard curl) reject the handshake; curl --legacy-server-connect or OpenSSL OP_LEGACY_SERVER_CONNECT succeeds. The endpoint itself is live (353,448 parcels). The atlas liveness check will always flag this endpoint FAIL because Node's native fetch rejects the TLS handshake. This is expected behavior, NOT a server outage. FIX NEEDED (flagged for lead): add a narrow per-host legacy-TLS fetch path in atlas-liveness-check.mjs and in the server-side parcel fetch for this specific host. Weakening TLS globally is not an option."
5458
6481
  },
5459
6482
  {
5460
6483
  id: "tn-hamilton",
@@ -5487,8 +6510,8 @@ var tennessee_default = {
5487
6510
  sampleQuery: "https://mapsdev.hamiltontn.gov/hcwa03/rest/services/Live_Parcels/MapServer/0/query?where=UPPER(OWNERNAME1)+LIKE+UPPER('%25SMITH%25')&outFields=PBA_NUM,OWNERNAME1,ADDRESS,GISLINK&returnGeometry=false&f=json&resultRecordCount=10",
5488
6511
  license: "public",
5489
6512
  licenseUrl: "https://gis.hamiltontn.gov/",
5490
- status: "live",
5491
- lastVerified: "2026-05-15",
6513
+ status: "unreachable",
6514
+ lastVerified: "2026-06-06",
5492
6515
  verifiedBy: "manual"
5493
6516
  }
5494
6517
  ],
@@ -5497,7 +6520,7 @@ var tennessee_default = {
5497
6520
  url: "https://gis.hamiltontn.gov/",
5498
6521
  email: null
5499
6522
  },
5500
- notes: "Hamilton County (Chattanooga, pop. 375,000) Live_Parcels layer \u2014 service name 'Live' indicates real-time feed from the assessor. Service is on mapsdev.hamiltontn.gov (hcwa03 subdirectory). 15 fields confirmed: OBJECTID, PARCEL_TYP, PBA_NUM, GISLINK, OWNERNAME1/2, STNUM, DIRPFX, STNAME, TYPESFX, ADDRESS, MAP, GROUP_, PARCEL. PBA_NUM is the full parcel book/account number (e.g., '033006 00302P000'); GISLINK is the trimmed parcel ID. Verified 2026-05-15: SMITH returns addresses like '16909 DAYTON PIKE', '703 GRAYSVILLE RD'. Note: distinct from Hamilton County OH (Cincinnati, FIPS 39061) in the atlas."
6523
+ notes: "Hamilton County (Chattanooga, pop. 375,000) Live_Parcels layer, service name 'Live' indicates real-time feed from the assessor. Service is on mapsdev.hamiltontn.gov (hcwa03 subdirectory). 15 fields confirmed: OBJECTID, PARCEL_TYP, PBA_NUM, GISLINK, OWNERNAME1/2, STNUM, DIRPFX, STNAME, TYPESFX, ADDRESS, MAP, GROUP_, PARCEL. PBA_NUM is the full parcel book/account number (e.g., '033006 00302P000'); GISLINK is the trimmed parcel ID. Verified 2026-05-15: SMITH returns addresses like '16909 DAYTON PIKE', '703 GRAYSVILLE RD'. Note: distinct from Hamilton County OH (Cincinnati, FIPS 39061) in the atlas. SERVICE RETIRED (verified 2026-06-06): Live_Parcels/MapServer was removed from mapsdev.hamiltontn.gov ('Could not find service'). No public REST replacement exists -- Live_RealProperty is a 155-record county-owned-property inventory, not a parcel layer, and assessor.hamiltontn.gov has no REST API. Status set to unreachable pending a county-side replacement."
5501
6524
  }
5502
6525
  ]
5503
6526
  };
@@ -5507,7 +6530,7 @@ var texas_default = {
5507
6530
  stateSlug: "texas",
5508
6531
  stateName: "Texas",
5509
6532
  stateAbbrev: "TX",
5510
- lastUpdated: "2026-05-14",
6533
+ lastUpdated: "2026-06-06",
5511
6534
  counties: [
5512
6535
  {
5513
6536
  id: "tx-harris",
@@ -5550,7 +6573,7 @@ var texas_default = {
5550
6573
  url: "https://geo-harriscounty.opendata.arcgis.com/",
5551
6574
  email: null
5552
6575
  },
5553
- notes: "Harris County, Texas (Houston metro, pop. 4.7M, county seat Houston) is the most populous Texas county and third-most populous in the US. The data authority is HCAD \u2014 Harris Central Appraisal District \u2014 which maintains property appraisal records independently of the county government. 62 fields confirmed, including HCAD_NUM (parcel ID), acct_num, owner_name_1/2/3 (up to three ownership slots with own_pct_1/2/3 percentage shares), site_str_num, site_str_name, site_city, site_zip, mail_addr_1/2/3, mail_city, mail_state, mail_zip, land_use, land_value, bld_value, total_appraised_val, new_owner_date, and yr_impr. Owner name is public under the Texas Public Information Act; Texas Tax Code \xA725.025 allows certain categories of persons (peace officers, judges, domestic violence victims, and others) to request suppression of their home address from appraisal district records. Owner-name LIKE query confirmed live. Max record count = 1000 per query. The HCAD open-data hub at geo-harriscounty.opendata.arcgis.com provides bulk downloads. A sibling service on the same server covers HCAD_MUD (Municipal Utility District) boundaries."
6576
+ notes: "Harris County, Texas (Houston metro, pop. 4.7M, county seat Houston) is the most populous Texas county and third-most populous in the US. The data authority is HCAD, Harris Central Appraisal District, which maintains property appraisal records independently of the county government. 62 fields confirmed, including HCAD_NUM (parcel ID), acct_num, owner_name_1/2/3 (up to three ownership slots with own_pct_1/2/3 percentage shares), site_str_num, site_str_name, site_city, site_zip, mail_addr_1/2/3, mail_city, mail_state, mail_zip, land_use, land_value, bld_value, total_appraised_val, new_owner_date, and yr_impr. Owner name is public under the Texas Public Information Act; Texas Tax Code \xA725.025 allows certain categories of persons (peace officers, judges, domestic violence victims, and others) to request suppression of their home address from appraisal district records. Owner-name LIKE query confirmed live. Max record count = 1000 per query. The HCAD open-data hub at geo-harriscounty.opendata.arcgis.com provides bulk downloads. A sibling service on the same server covers HCAD_MUD (Municipal Utility District) boundaries."
5554
6577
  },
5555
6578
  {
5556
6579
  id: "tx-travis",
@@ -5563,26 +6586,22 @@ var texas_default = {
5563
6586
  hasPublicRest: true,
5564
6587
  endpoints: [
5565
6588
  {
5566
- url: "https://gis.traviscountytx.gov/server1/rest/services/Boundaries_and_Jurisdictions/TCAD_public/MapServer/0",
5567
- serviceType: "MapServer",
6589
+ url: "https://services.arcgis.com/0L95CJ0VTaxqcmED/arcgis/rest/services/EXTERNAL_tcad_parcel/FeatureServer/0",
6590
+ serviceType: "FeatureServer",
5568
6591
  layerIndex: 0,
5569
6592
  layerName: "TCAD Parcels",
5570
6593
  supportsQuery: true,
5571
6594
  corsEnabled: null,
5572
6595
  searchFields: [
5573
6596
  { name: "PROP_ID", label: "Property ID", searchable: true },
5574
- { name: "geo_id", label: "Geo ID", searchable: true },
5575
- { name: "situs_address", label: "Situs Address (combined)", searchable: true },
5576
- { name: "situs_num", label: "Situs Street Number", searchable: true },
5577
- { name: "situs_street", label: "Situs Street Name", searchable: true },
5578
- { name: "situs_city", label: "Situs City", searchable: true },
5579
- { name: "situs_zip", label: "Situs ZIP", searchable: true }
6597
+ { name: "PID_10", label: "Parcel ID (10-char)", searchable: true },
6598
+ { name: "SITUS", label: "Situs Address", searchable: true }
5580
6599
  ],
5581
- sampleQuery: "https://gis.traviscountytx.gov/server1/rest/services/Boundaries_and_Jurisdictions/TCAD_public/MapServer/0/query?where=situs_address+LIKE+'%25CONGRESS%25'&outFields=PROP_ID,geo_id,situs_address,situs_city&returnGeometry=false&f=json&resultRecordCount=10",
6600
+ sampleQuery: "https://services.arcgis.com/0L95CJ0VTaxqcmED/arcgis/rest/services/EXTERNAL_tcad_parcel/FeatureServer/0/query?where=SITUS+LIKE+'%25CONGRESS%25'&outFields=PROP_ID,PID_10,SITUS&returnGeometry=false&f=json&resultRecordCount=10",
5582
6601
  license: "public",
5583
6602
  licenseUrl: "https://tnr-traviscountytx.opendata.arcgis.com/",
5584
6603
  status: "live",
5585
- lastVerified: "2026-05-11",
6604
+ lastVerified: "2026-06-20",
5586
6605
  verifiedBy: "manual"
5587
6606
  }
5588
6607
  ],
@@ -5591,7 +6610,13 @@ var texas_default = {
5591
6610
  url: "https://tnr-traviscountytx.opendata.arcgis.com/",
5592
6611
  email: null
5593
6612
  },
5594
- notes: "Travis County, Texas (Austin metro, pop. 1.3M, county seat Austin) is home to the state capital and the University of Texas at Austin. The REST layer is sourced from Travis Central Appraisal District (TCAD) and published by Travis County Transportation and Natural Resources (TNR) GIS. 20 fields confirmed: geometry, PROP_ID, geo_id, situs_address (combined), situs_num, situs_street, situs_city, situs_zip, and a handful of district fields \u2014 owner name is NOT included. Travis County publishes the parcel geometry and identifiers as a public planning layer while keeping ownership data behind TCAD's property search portal at tcad.org. For owner-name lookups, search tcad.org by address or property ID. Texas Tax Code \xA725.025 permits certain persons (peace officers, judges, domestic violence victims, and similar categories) to request that their home address be withheld from appraisal records; such records may appear with address fields redacted at TCAD's portal. A second endpoint at taxmaps.traviscountytx.gov/arcgis/rest/services/Parcels/MapServer did not respond in testing. Open-data hub: tnr-traviscountytx.opendata.arcgis.com."
6613
+ notes: `Travis County, Texas (Austin metro, pop. 1.3M, county seat Austin) is home to the state capital and the University of Texas at Austin. The REST layer ("TCAD Parcels", an ArcGIS Online hosted FeatureServer, ~386,682 parcels) is sourced from Travis Central Appraisal District (TCAD) and published through Travis County Transportation and Natural Resources (TNR) GIS. Searchable fields: PROP_ID (property ID), PID_10 (10-character parcel key), and SITUS (combined situs address). Owner name is NOT included. Travis County publishes the parcel geometry and identifiers as a public layer while keeping ownership data behind TCAD's property search portal at traviscad.org. For owner-name lookups, search traviscad.org by address or property ID. Texas Tax Code \xA725.025 permits certain persons (peace officers, judges, domestic violence victims, and similar categories) to request that their home address be withheld from appraisal records; such records may appear with address fields redacted at TCAD's portal. The county's former on-premise endpoint at gis.traviscountytx.gov/server1 went offline in 2026 (the ArcGIS host returned an HTTP 500 .NET host error); this hosted FeatureServer is the current public source. Open-data hub: tnr-traviscountytx.opendata.arcgis.com.`,
6614
+ ownerFieldNote: {
6615
+ body: "Owner name isn't in Travis County / TCAD's public REST layer. It exposes Property ID (PROP_ID), the 10-character parcel key, and situs address only. Search by property ID or address below, or look up the owner of record at the Travis Central Appraisal District.",
6616
+ source: { label: "Owner search at traviscad.org", url: "https://traviscad.org/propertysearch/" }
6617
+ },
6618
+ relatedZoningCitySlug: "austin",
6619
+ relatedPropertyCitySlug: "austin"
5595
6620
  },
5596
6621
  {
5597
6622
  id: "tx-tarrant",
@@ -5632,7 +6657,7 @@ var texas_default = {
5632
6657
  url: "https://gis-tad.opendata.arcgis.com/",
5633
6658
  email: null
5634
6659
  },
5635
- notes: "Tarrant County, Texas (Fort Worth / Arlington metro, pop. 2.1M, county seat Fort Worth) is the fourth-most populous Texas county. The data authority is TAD \u2014 Tarrant Appraisal District. 56 fields confirmed including TAXPIN, ACCOUNT, OWNER_NAME, SITUS_ADDR, OWNER_ADDR, OWNER_CITY, ZIPCODE, DEED_DATE, DEED_BOOK, DEED_PAGE, YEAR_BUILT, LIVING_ARE, BEDROOMS, BATHROOMS, SW_POOL, LAND_ACRES, APPRAISEDV, LAND_VALUE, IMPR_VALUE, and TOTAL_VALU. Owner-name query via UPPER() LIKE on OWNER_NAME returns real results. Texas Tax Code \xA725.025 (address-confidentiality program) permits certain protected persons \u2014 peace officers, judges, domestic violence victims, and similar categories \u2014 to request that their address be withheld from public appraisal records; records subject to \xA725.025 may not appear in REST query results or may appear with address fields suppressed. A sibling TADParcelsApp/MapServer/0 exists on the same server but carries only TAXPIN geometry \u2014 it is the display layer for TAD's parcel viewer and has no attribute data. TAD open-data hub: gis-tad.opendata.arcgis.com. Tarrant County open data: data-tarrantcounty.opendata.arcgis.com."
6660
+ notes: "Tarrant County, Texas (Fort Worth / Arlington metro, pop. 2.1M, county seat Fort Worth) is the fourth-most populous Texas county. The data authority is TAD, Tarrant Appraisal District. 56 fields confirmed including TAXPIN, ACCOUNT, OWNER_NAME, SITUS_ADDR, OWNER_ADDR, OWNER_CITY, ZIPCODE, DEED_DATE, DEED_BOOK, DEED_PAGE, YEAR_BUILT, LIVING_ARE, BEDROOMS, BATHROOMS, SW_POOL, LAND_ACRES, APPRAISEDV, LAND_VALUE, IMPR_VALUE, and TOTAL_VALU. Owner-name query via UPPER() LIKE on OWNER_NAME returns real results. Texas Tax Code \xA725.025 (address-confidentiality program) permits certain protected persons, peace officers, judges, domestic violence victims, and similar categories, to request that their address be withheld from public appraisal records; records subject to \xA725.025 may not appear in REST query results or may appear with address fields suppressed. A sibling TADParcelsApp/MapServer/0 exists on the same server but carries only TAXPIN geometry. It is the display layer for TAD's parcel viewer and has no attribute data. TAD open-data hub: gis-tad.opendata.arcgis.com. Tarrant County open data: data-tarrantcounty.opendata.arcgis.com."
5636
6661
  },
5637
6662
  {
5638
6663
  id: "tx-dallas",
@@ -5680,7 +6705,12 @@ var texas_default = {
5680
6705
  url: "https://www.dallascad.org/",
5681
6706
  email: null
5682
6707
  },
5683
- notes: "41 fields confirmed including ACCT (17-digit DCAD account number), TAXPANAME1/2 (taxpayer names), TAXPAADD1-4, TAXPACITY, TAXPASTA, TAXPAZIP, ST_NUM, ST_NAME, ST_TYPE, ST_DIR, CITY, COUNTY, SCHOOL, SPTBCODE (special purpose district), PROP_CL, BLDG_CL, LEGAL_1-5, MAPSCO_GR, TOTEXEMPT, BUSNAME, PROPNAM, ResCom, APPRAISALYEAR. Owner search uses TAXPANAME1 (the taxpayer of record). APPRAISALYEAR in live records reads 2019 \u2014 this is the snapshot vintage of the City of Dallas GIS's DallasTaxParcels layer, which sources from DCAD annual export. The authoritative real-time DCAD parcel lookup is at dcad.org; the gis.dallascounty.org REST server does NOT expose a public parcel service (only SampleWorldCities and CommissionerDistricts). This layer covers all of Dallas County, not just the City of Dallas city limits \u2014 CITY field contains the incorporated municipality (Dallas, Rowlett, Garland, Irving, etc.). The COUNTY field confirms 'DALLAS COUNTY' for all records. Texas Tax Code \xA725.025 (address-confidentiality program for protected persons \u2014 peace officers, judges, victims of family violence, etc.) may suppress some owner names in a future data refresh; query TAXPANAME2 as fallback. maxRecordCount=1000."
6708
+ notes: "41 fields confirmed including ACCT (17-digit DCAD account number), TAXPANAME1/2 (taxpayer names), TAXPAADD1-4, TAXPACITY, TAXPASTA, TAXPAZIP, ST_NUM, ST_NAME, ST_TYPE, ST_DIR, CITY, COUNTY, SCHOOL, SPTBCODE (special purpose district), PROP_CL, BLDG_CL, LEGAL_1-5, MAPSCO_GR, TOTEXEMPT, BUSNAME, PROPNAM, ResCom, APPRAISALYEAR. Owner search uses TAXPANAME1 (the taxpayer of record). APPRAISALYEAR in live records reads 2019. This is the snapshot vintage of the City of Dallas GIS's DallasTaxParcels layer, which sources from DCAD annual export. The authoritative real-time DCAD parcel lookup is at dcad.org; the gis.dallascounty.org REST server does NOT expose a public parcel service (only SampleWorldCities and CommissionerDistricts). This layer covers all of Dallas County, not just the City of Dallas city limits. CITY field contains the incorporated municipality (Dallas, Rowlett, Garland, Irving, etc.). The COUNTY field confirms 'DALLAS COUNTY' for all records. Texas Tax Code \xA725.025 (address-confidentiality program for protected persons, peace officers, judges, victims of family violence, etc.) may suppress some owner names in a future data refresh; query TAXPANAME2 as fallback. maxRecordCount=1000.",
6709
+ dataVintage: {
6710
+ body: "This layer is a DCAD annual-export snapshot, its APPRAISALYEAR field reads 2019. Account numbers, owner names, and addresses still locate a parcel, but for the current owner of record and 2025 appraised value, use DCAD's live records. It covers every incorporated city in Dallas County via the CITY field (Dallas, Garland, Irving, Rowlett, and the rest), not just the City of Dallas.",
6711
+ source: { label: "Current records at dallascad.org", url: "https://www.dallascad.org/" }
6712
+ },
6713
+ relatedPropertyCitySlug: "dallas"
5684
6714
  },
5685
6715
  {
5686
6716
  id: "tx-bexar",
@@ -5725,11 +6755,11 @@ var texas_default = {
5725
6755
  }
5726
6756
  ],
5727
6757
  contact: {
5728
- department: "Bexar County Information Technology \u2014 GIS Division / Bexar County Appraisal District (BCAD)",
6758
+ department: "Bexar County Information Technology, GIS Division / Bexar County Appraisal District (BCAD)",
5729
6759
  url: "https://www.bexar.org/2720/GIS-Data",
5730
6760
  email: null
5731
6761
  },
5732
- notes: "39 fields confirmed including PropID (numeric parcel ID), AcctNumb (BCAD formatted account number, e.g. '04126-236-0090'), Owner, Situs (situs address), AddrLn1/2/3, AddrCity, AddrSt, Country, Zip, Zip4, DBA, LglDesc, LandVal, ImprVal, TotVal, Nbhd (neighborhood code), GBA, TOT_GBA, YrBlt, Stories, NumRooms, Houses, Detached, State_cd, LglAcres, Acres, TaxUnits, Exempts, IS_UDI, UDIPARNT, Roll, SWP, PropUse. Owner LIKE search (including UPPER()) returns real results. The service description notes the data was sourced from BCAD FTP as of October 2022 and was last updated October 2021 \u2014 this is a periodic export, not a live feed. The current version is ArcGIS Server 11.3. The supportsQuery field shows null in layer-level metadata (common with this ArcGIS version); the service capabilities string 'Map,Query,Data' confirms query support. maps.bexar.org is the authoritative Bexar County GIS host; gis.bexar.org NXDOMAINs. BCAD's own server (bcad.org) does not expose a public REST parcel endpoint. maxRecordCount=1000. Texas Tax Code \xA725.025 (address-confidentiality program for protected persons) may suppress certain owner names."
6762
+ notes: "39 fields confirmed including PropID (numeric parcel ID), AcctNumb (BCAD formatted account number, e.g. '04126-236-0090'), Owner, Situs (situs address), AddrLn1/2/3, AddrCity, AddrSt, Country, Zip, Zip4, DBA, LglDesc, LandVal, ImprVal, TotVal, Nbhd (neighborhood code), GBA, TOT_GBA, YrBlt, Stories, NumRooms, Houses, Detached, State_cd, LglAcres, Acres, TaxUnits, Exempts, IS_UDI, UDIPARNT, Roll, SWP, PropUse. Owner LIKE search (including UPPER()) returns real results. The service description notes the data was sourced from BCAD FTP as of October 2022 and was last updated October 2021. This is a periodic export, not a live feed. The current version is ArcGIS Server 11.3. The supportsQuery field shows null in layer-level metadata (common with this ArcGIS version); the service capabilities string 'Map,Query,Data' confirms query support. maps.bexar.org is the authoritative Bexar County GIS host; gis.bexar.org NXDOMAINs. BCAD's own server (bcad.org) does not expose a public REST parcel endpoint. maxRecordCount=1000. Texas Tax Code \xA725.025 (address-confidentiality program for protected persons) may suppress certain owner names."
5733
6763
  },
5734
6764
  {
5735
6765
  id: "tx-collin",
@@ -5767,7 +6797,7 @@ var texas_default = {
5767
6797
  url: "https://www.collincad.org/",
5768
6798
  email: null
5769
6799
  },
5770
- notes: "Collin County, Texas (Plano / Frisco / McKinney, pop. ~1.1M \u2014 among the fastest-growing US counties) publishes Collin Central Appraisal District (CCAD) parcels through a City of Allen ArcGIS MapServer. Owner search uses the joined field GIS_DBO_AD_Entity_file_as_name; the situs (site) address is GIS_DBO_AD_Entity_situs_display; the parcel key is GIS_DBO_Parcel_PROP_ID. The GIS_DBO_ table-join prefixes must be used verbatim in WHERE clauses. Owner LIKE query confirmed live 2026-05-30. Texas Tax Code \xA725.025 lets protected persons (peace officers, judges, family-violence victims) suppress owner/address records."
6800
+ notes: "Collin County, Texas (Plano / Frisco / McKinney, pop. ~1.1M, among the fastest-growing US counties) publishes Collin Central Appraisal District (CCAD) parcels through a City of Allen ArcGIS MapServer. Owner search uses the joined field GIS_DBO_AD_Entity_file_as_name; the situs (site) address is GIS_DBO_AD_Entity_situs_display; the parcel key is GIS_DBO_Parcel_PROP_ID. The GIS_DBO_ table-join prefixes must be used verbatim in WHERE clauses. Owner LIKE query confirmed live 2026-05-30. Texas Tax Code \xA725.025 lets protected persons (peace officers, judges, family-violence victims) suppress owner/address records."
5771
6801
  },
5772
6802
  {
5773
6803
  id: "tx-denton",
@@ -5805,7 +6835,7 @@ var texas_default = {
5805
6835
  url: "https://gis.dentoncounty.gov/",
5806
6836
  email: null
5807
6837
  },
5808
- notes: "Denton County, Texas (north Dallas\u2013Fort Worth metroplex \u2014 Frisco, Flower Mound, Lewisville, pop. ~900K) serves parcels via a Denton County GIS MapServer. Owner search uses OWNER_NAME; the combined site address is SITUS; CITY holds the municipality; the appraisal-district identifier is prop_id. Owner LIKE query confirmed live 2026-05-30. Texas Tax Code \xA725.025 confidentiality provisions apply to protected persons."
6838
+ notes: "Denton County, Texas (north Dallas\u2013Fort Worth metroplex, Frisco, Flower Mound, Lewisville, pop. ~900K) serves parcels via a Denton County GIS MapServer. Owner search uses OWNER_NAME; the combined site address is SITUS; CITY holds the municipality; the appraisal-district identifier is prop_id. Owner LIKE query confirmed live 2026-05-30. Texas Tax Code \xA725.025 confidentiality provisions apply to protected persons."
5809
6839
  },
5810
6840
  {
5811
6841
  id: "tx-el-paso",
@@ -5855,25 +6885,25 @@ var texas_default = {
5855
6885
  hasPublicRest: true,
5856
6886
  endpoints: [
5857
6887
  {
5858
- url: "https://gisweb.fortbendcountytx.gov/arcgis/rest/services/General/Parcels/MapServer/0",
5859
- serviceType: "MapServer",
5860
- layerIndex: 0,
6888
+ url: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1",
6889
+ serviceType: "FeatureServer",
6890
+ layerIndex: 1,
5861
6891
  layerName: "Parcels",
5862
6892
  supportsQuery: true,
5863
6893
  corsEnabled: null,
5864
6894
  searchFields: [
5865
- { name: "CAD_Reference_Number", label: "CAD Reference Number (R-number)", searchable: true },
6895
+ { name: "CADReferenceNumber", label: "CAD Reference Number (R-number)", searchable: true },
5866
6896
  { name: "PropertyNumber", label: "Property Number", searchable: true },
5867
6897
  { name: "OwnerName", label: "Owner Name", searchable: true },
5868
6898
  { name: "Situs", label: "Situs Address", searchable: true },
5869
6899
  { name: "OwnerAddress1", label: "Owner Mailing Address", searchable: false },
5870
6900
  { name: "OwnerCity", label: "Owner City", searchable: false }
5871
6901
  ],
5872
- sampleQuery: "https://gisweb.fortbendcountytx.gov/arcgis/rest/services/General/Parcels/MapServer/0/query?where=UPPER(OwnerName)%20LIKE%20UPPER('%25SMITH%25')&outFields=CAD_Reference_Number,OwnerName,Situs&returnGeometry=false&f=json&resultRecordCount=10",
6902
+ sampleQuery: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(OwnerName)%20LIKE%20UPPER('%25SMITH%25')&outFields=CADReferenceNumber,OwnerName,Situs&returnGeometry=false&f=json&resultRecordCount=10",
5873
6903
  license: "public",
5874
6904
  licenseUrl: "https://fbcad-open-data-hub-fortbend.hub.arcgis.com/",
5875
6905
  status: "live",
5876
- lastVerified: "2026-05-30",
6906
+ lastVerified: "2026-06-06",
5877
6907
  verifiedBy: "manual"
5878
6908
  }
5879
6909
  ],
@@ -5882,7 +6912,7 @@ var texas_default = {
5882
6912
  url: "https://www.fbcad.org/",
5883
6913
  email: null
5884
6914
  },
5885
- notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is OwnerName (the layer display field); owner mailing is OwnerAddress1/2/3 with OwnerCity/OwnerState/OwnerZip; the site address is Situs; identifiers are CAD_Reference_Number (R-number, e.g. R328356) and PropertyNumber. Owner search uses UPPER(OwnerName) LIKE. Verified live 2026-05-30 (OwnerName = Shimmel John). Under Texas Tax Code \xA725.025, protected persons (peace officers, judges, family-violence victims) may have their owner/address records withheld."
6915
+ notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is OwnerName (the layer display field); owner mailing is OwnerAddress1/2/3 with OwnerCity/OwnerState/OwnerZip; the site address is Situs; identifiers are CAD_Reference_Number (R-number, e.g. R328356) and PropertyNumber. Owner search uses UPPER(OwnerName) LIKE. Verified live 2026-05-30 (OwnerName = Shimmel John). Under Texas Tax Code \xA725.025, protected persons (peace officers, judges, family-violence victims) may have their owner/address records withheld. MIGRATED 2026-06-06: gisweb.fortbendcountytx.gov was decommissioned (Cloudflare 522) -- the public service moved to gisportal.fortbendcountytx.gov InteractiveMap/Parcels_Public/FeatureServer/1 (ArcGIS 11.3, 359,954 parcels; OwnerName search re-verified live). Field names dropped underscores (CAD_Reference_Number is now CADReferenceNumber)."
5886
6916
  },
5887
6917
  {
5888
6918
  id: "tx-williamson",
@@ -5977,7 +7007,7 @@ var utah_default = {
5977
7007
  url: "https://gis.utah.gov/data/cadastre/parcels/",
5978
7008
  email: null
5979
7009
  },
5980
- notes: "30 fields confirmed including PARCEL_ID, COUNTY_NAME, COUNTY_ID, ASSESSOR_SRC, BOUNDARY_SRC, CURRENT_ASOF, PARCEL_ADD, PARCEL_CITY, TAXEXEMPT_TYPE, TAX_DISTRICT, TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, PROP_TYPE. Query confirmed: returns real Salt Lake City addresses with market values. NOTE: Owner name is NOT included in this public LIR (Land Information Record) layer \u2014 owner data is available through the Salt Lake County Assessor's Parcel Viewer at apps.saltlakecounty.gov/assessor/new/ParcelViewer/. PARCEL_ID is the 14-digit serial number. This dataset is maintained by UGRC (Utah Geospatial Resource Center) in coordination with the Salt Lake County Assessor; data is updated monthly. A basic geometry-only version (Parcels_SaltLake) also exists on the same service with 17 fields and no value data."
7010
+ notes: "30 fields confirmed including PARCEL_ID, COUNTY_NAME, COUNTY_ID, ASSESSOR_SRC, BOUNDARY_SRC, CURRENT_ASOF, PARCEL_ADD, PARCEL_CITY, TAXEXEMPT_TYPE, TAX_DISTRICT, TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, PROP_TYPE. Query confirmed: returns real Salt Lake City addresses with market values. NOTE: Owner name is NOT included in this public LIR (Land Information Record) layer. Owner data is available through the Salt Lake County Assessor's Parcel Viewer at apps.saltlakecounty.gov/assessor/new/ParcelViewer/. PARCEL_ID is the 14-digit serial number. This dataset is maintained by UGRC (Utah Geospatial Resource Center) in coordination with the Salt Lake County Assessor; data is updated monthly. A basic geometry-only version (Parcels_SaltLake) also exists on the same service with 17 fields and no value data."
5981
7011
  },
5982
7012
  {
5983
7013
  id: "ut-davis",
@@ -6023,7 +7053,7 @@ var utah_default = {
6023
7053
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6024
7054
  email: null
6025
7055
  },
6026
- notes: "Davis County (Salt Lake metro north, pop. 365,000, county seat Farmington) includes Bountiful, Layton, Clearfield, Kaysville, and Hill Air Force Base. This layer follows the Utah Geospatial Resource Center (UGRC) standardized Land Information Record (LIR) schema, established under HB113 (2005) which directed UGRC to aggregate county assessor data into a common statewide format. 29 fields confirmed: COUNTY_NAME, COUNTY_ID, ASSESSOR_SRC, BOUNDARY_SRC, DISCLAIMER, CURRENT_ASOF (data currency date), PARCEL_ID (14-digit serial number), SERIAL_NUM, PARCEL_ADD, PARCEL_CITY, TAXEXEMPT_TYPE, TAX_DISTRICT, TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, BLDG_SQFT_INFO, FLOORS_CNT, FLOORS_INFO, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, Shape__Area, Shape__Length. Owner name is NOT included in any UGRC LIR layer \u2014 county assessors provide annual tax assessment data voluntarily to UGRC, but ownership names are not part of the agreed-upon LIR schema. For owner lookup, use the Davis County Assessor's property search at assessor.co.davis.ut.us. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). maxRecordCount=2000."
7056
+ notes: "Davis County (Salt Lake metro north, pop. 365,000, county seat Farmington) includes Bountiful, Layton, Clearfield, Kaysville, and Hill Air Force Base. This layer follows the Utah Geospatial Resource Center (UGRC) standardized Land Information Record (LIR) schema, established under HB113 (2005) which directed UGRC to aggregate county assessor data into a common statewide format. 29 fields confirmed: COUNTY_NAME, COUNTY_ID, ASSESSOR_SRC, BOUNDARY_SRC, DISCLAIMER, CURRENT_ASOF (data currency date), PARCEL_ID (14-digit serial number), SERIAL_NUM, PARCEL_ADD, PARCEL_CITY, TAXEXEMPT_TYPE, TAX_DISTRICT, TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, BLDG_SQFT_INFO, FLOORS_CNT, FLOORS_INFO, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, Shape__Area, Shape__Length. Owner name is NOT included in any UGRC LIR layer, county assessors provide annual tax assessment data voluntarily to UGRC, but ownership names are not part of the agreed-upon LIR schema. For owner lookup, use the Davis County Assessor's property search at assessor.co.davis.ut.us. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). maxRecordCount=2000."
6027
7057
  },
6028
7058
  {
6029
7059
  id: "ut-utah",
@@ -6069,7 +7099,7 @@ var utah_default = {
6069
7099
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6070
7100
  email: null
6071
7101
  },
6072
- notes: "Utah County (pop. 660,000, county seat Provo) is the second-most populous Utah county and should not be confused with the state of Utah itself. It contains Provo, Orem, American Fork, Springville, Spanish Fork, Payson, and the Brigham Young University campus. This layer follows the same UGRC LIR schema as all Utah county LIR layers (established under HB113, 2005). 29 fields confirmed: same structure as Salt Lake and Davis LIR layers \u2014 PARCEL_ID (14-digit serial number), PARCEL_ADD, PARCEL_CITY, CURRENT_ASOF (data currency date), TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, TAX_DISTRICT, TAXEXEMPT_TYPE, and boundary/source metadata fields. Owner name is NOT included \u2014 this is an intentional exclusion across all UGRC LIR layers, not a per-county decision. For ownership data, use the Utah County Assessor's property search at assessor.utahcounty.gov. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). Capabilities: Query, Extract. maxRecordCount=2000."
7102
+ notes: "Utah County (pop. 660,000, county seat Provo) is the second-most populous Utah county and should not be confused with the state of Utah itself. It contains Provo, Orem, American Fork, Springville, Spanish Fork, Payson, and the Brigham Young University campus. This layer follows the same UGRC LIR schema as all Utah county LIR layers (established under HB113, 2005). 29 fields confirmed: same structure as Salt Lake and Davis LIR layers, PARCEL_ID (14-digit serial number), PARCEL_ADD, PARCEL_CITY, CURRENT_ASOF (data currency date), TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, TAX_DISTRICT, TAXEXEMPT_TYPE, and boundary/source metadata fields. Owner name is NOT included. This is an intentional exclusion across all UGRC LIR layers, not a per-county decision. For ownership data, use the Utah County Assessor's property search at assessor.utahcounty.gov. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). Capabilities: Query, Extract. maxRecordCount=2000."
6073
7103
  },
6074
7104
  {
6075
7105
  id: "ut-weber",
@@ -6115,7 +7145,7 @@ var utah_default = {
6115
7145
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6116
7146
  email: null
6117
7147
  },
6118
- notes: "Weber County (pop. 260,000, county seat Ogden) anchors the northern end of the Wasatch Front urban corridor, roughly 35 miles north of Salt Lake City. It contains Ogden, Roy, Layton (shared with Davis County), Riverdale, and portions of the Ogden metro. This layer follows the same UGRC LIR schema as all Utah county LIR layers (established under HB113, 2005). 29 fields confirmed: same structure as Salt Lake, Davis, and Utah County LIR layers \u2014 PARCEL_ID (14-digit serial number), PARCEL_ADD, PARCEL_CITY, CURRENT_ASOF (data currency date), TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, TAX_DISTRICT, and TAXEXEMPT_TYPE. Owner name is NOT included \u2014 a deliberate exclusion in the statewide LIR schema agreement between UGRC and county assessors. For ownership data, use the Weber County property search at webercountyutah.gov/assessor or the statewide UGRC parcel viewer at parcels.utah.gov. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). maxRecordCount=2000."
7148
+ notes: "Weber County (pop. 260,000, county seat Ogden) anchors the northern end of the Wasatch Front urban corridor, roughly 35 miles north of Salt Lake City. It contains Ogden, Roy, Layton (shared with Davis County), Riverdale, and portions of the Ogden metro. This layer follows the same UGRC LIR schema as all Utah county LIR layers (established under HB113, 2005). 29 fields confirmed: same structure as Salt Lake, Davis, and Utah County LIR layers, PARCEL_ID (14-digit serial number), PARCEL_ADD, PARCEL_CITY, CURRENT_ASOF (data currency date), TOTAL_MKT_VALUE, LAND_MKT_VALUE, PARCEL_ACRES, PROP_CLASS, PRIMARY_RES, HOUSE_CNT, SUBDIV_NAME, BLDG_SQFT, FLOORS_CNT, BUILT_YR, EFFBUILT_YR, CONST_MATERIAL, TAX_DISTRICT, and TAXEXEMPT_TYPE. Owner name is NOT included, a deliberate exclusion in the statewide LIR schema agreement between UGRC and county assessors. For ownership data, use the Weber County property search at webercountyutah.gov/assessor or the statewide UGRC parcel viewer at parcels.utah.gov. Endpoint hosted on ArcGIS Online (services1.arcgis.com/99lidPhWCzftIe9K). maxRecordCount=2000."
6119
7149
  }
6120
7150
  ]
6121
7151
  };
@@ -6145,7 +7175,7 @@ var vermont_default = {
6145
7175
  supportsQuery: true,
6146
7176
  corsEnabled: null,
6147
7177
  searchFields: [
6148
- { name: "SPAN", label: "School Property Account Number (SPAN) \u2014 VT parcel key", searchable: true },
7178
+ { name: "SPAN", label: "School Property Account Number (SPAN), VT parcel key", searchable: true },
6149
7179
  { name: "TOWN", label: "Town Numeric ID", searchable: true },
6150
7180
  { name: "TNAME", label: "Town Name", searchable: true },
6151
7181
  { name: "OWNER1", label: "Owner Name (line 1)", searchable: true },
@@ -6176,7 +7206,7 @@ var vermont_default = {
6176
7206
  url: "https://vcgi.vermont.gov/data-and-programs/parcel-program",
6177
7207
  email: null
6178
7208
  },
6179
- notes: "VCGI statewide VT parcel service \u2014 layer 1 is active parcels (layer 0 = inactive/historical). This single endpoint covers all 14 Vermont counties; filter Chittenden County municipalities by TNAME: BURLINGTON, SOUTH BURLINGTON, WILLISTON, ESSEX, COLCHESTER, WINOOSKI, SHELBURNE, etc. SPAN is the Vermont-standard parcel key joining to the Tax Department grand list. OWNER1/OWNER2 and E911ADDR are public. Data is joined from the annual grand list and updated by VCGI in coordination with municipalities. The Parcel Viewer v4 (released 2024-04-24) uses this service."
7209
+ notes: "VCGI statewide VT parcel service, layer 1 is active parcels (layer 0 = inactive/historical). This single endpoint covers all 14 Vermont counties; filter Chittenden County municipalities by TNAME: BURLINGTON, SOUTH BURLINGTON, WILLISTON, ESSEX, COLCHESTER, WINOOSKI, SHELBURNE, etc. SPAN is the Vermont-standard parcel key joining to the Tax Department grand list. OWNER1/OWNER2 and E911ADDR are public. Data is joined from the annual grand list and updated by VCGI in coordination with municipalities. The Parcel Viewer v4 (released 2024-04-24) uses this service."
6180
7210
  }
6181
7211
  ]
6182
7212
  };
@@ -6186,7 +7216,7 @@ var virginia_default = {
6186
7216
  stateSlug: "virginia",
6187
7217
  stateName: "Virginia",
6188
7218
  stateAbbrev: "VA",
6189
- lastUpdated: "2026-05-11",
7219
+ lastUpdated: "2026-06-20",
6190
7220
  counties: [
6191
7221
  {
6192
7222
  id: "va-fairfax",
@@ -6225,6 +7255,48 @@ var virginia_default = {
6225
7255
  email: null
6226
7256
  },
6227
7257
  notes: "Fairfax County (Northern Virginia, pop. 1.15 million) is the most populous jurisdiction in Virginia and covers 406 square miles, entirely distinct from Fairfax City -- a separate independent city (FIPS 51600) that sits geographically within the county but is governed and assessed independently. The county-direct parcel layer at fairfaxcounty.gov/mercator/rest/services/OpenData/OpenData_A9/MapServer/0 exposes PIN, PARCEL_KEY, PARCEL_TYPE (ORDINARY vs. CONDO), and SRC_CONTROL -- but no owner name. Fairfax keeps ownership data in a non-spatial table not exposed on this REST endpoint. For owner-name lookup, use the Fairfax County Real Estate Assessment Database at realestate.fairfaxcounty.gov; it supports search by address, parcel ID, and owner name. The GIS/Property MapServer at fairfaxcounty.gov/euclid/rest has 54 layers (parcels, tax districts, easements, flood zones, annotations) but also does not surface owner in the queryable parcel layer. PIN format is space-padded with section/block/lot grouping (e.g., '0304 39 0029'). Verified 2026-05-11: 369,267 polygon parcels. Updated daily from county cadastral."
7258
+ },
7259
+ {
7260
+ id: "va-prince-william",
7261
+ state: "VA",
7262
+ stateName: "Virginia",
7263
+ stateSlug: "virginia",
7264
+ county: "Prince William",
7265
+ countySlug: "prince-william-county",
7266
+ countyFips: "51153",
7267
+ hasPublicRest: true,
7268
+ endpoints: [
7269
+ {
7270
+ url: "https://gisweb.pwcva.gov/arcgis/rest/services/OpenData/OpenData/MapServer/0",
7271
+ serviceType: "MapServer",
7272
+ layerIndex: 0,
7273
+ layerName: "Parcels",
7274
+ supportsQuery: true,
7275
+ corsEnabled: null,
7276
+ searchFields: [
7277
+ { name: "CAMA_OWNER_CUR", label: "Owner Name (current, from CAMA)", searchable: true },
7278
+ { name: "CAMA_DEEDOWNER", label: "Deed Owner Name", searchable: true },
7279
+ { name: "GPIN", label: "GPIN (Geographic Parcel ID, e.g. 7201-09-8851)", searchable: true },
7280
+ { name: "ST_NO", label: "Street Number", searchable: true },
7281
+ { name: "ST_NAME", label: "Street Name", searchable: true },
7282
+ { name: "ST_TYPE", label: "Street Type", searchable: false },
7283
+ { name: "CITY", label: "City", searchable: false },
7284
+ { name: "ZIP", label: "ZIP Code", searchable: false }
7285
+ ],
7286
+ sampleQuery: "https://gisweb.pwcva.gov/arcgis/rest/services/OpenData/OpenData/MapServer/0/query?where=UPPER(CAMA_OWNER_CUR)+LIKE+UPPER('%25SMITH%25')&outFields=GPIN,CAMA_OWNER_CUR,ST_NO,ST_NAME,ST_TYPE,CITY,ZIP&returnGeometry=false&f=json&resultRecordCount=10",
7287
+ license: "public",
7288
+ licenseUrl: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7289
+ status: "live",
7290
+ lastVerified: "2026-06-20",
7291
+ verifiedBy: "manual"
7292
+ }
7293
+ ],
7294
+ contact: {
7295
+ department: "Prince William County GIS",
7296
+ url: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7297
+ email: null
7298
+ },
7299
+ notes: "Prince William County (Northern Virginia, pop. ~490,000; county seat unincorporated, courts in Manassas) publishes an Open Data parcel MapServer at gisweb.pwcva.gov (note the host is gisweb.pwcva.gov, NOT pwcgov.org). Layer 0 exposes 49 fields and -- unlike neighboring Fairfax County -- includes owner name directly: CAMA_OWNER_CUR (current owner from the CAMA system) and CAMA_DEEDOWNER (deed owner). Parcel identifier is GPIN, a hyphenated geographic id (e.g. '7201-09-8851'). Site address is split across ST_NO / ST_NAME / ST_TYPE / CITY / ZIP. Verified 2026-06-20: 159,174 parcels; UPPER(CAMA_OWNER_CUR) LIKE '%SMITH%' returns real owners with Haymarket/Manassas-area addresses and ZIPs. IMPORTANT: this entry covers Prince William COUNTY only. The independent cities of Manassas (FIPS 51683) and Manassas Park (FIPS 51685) sit within the county's geographic bounds but are separate Census FIPS jurisdictions, governed and assessed independently. For authoritative assessment records use the PWC Real Estate Assessments office."
6228
7300
  }
6229
7301
  ]
6230
7302
  };
@@ -6234,7 +7306,7 @@ var washington_default = {
6234
7306
  stateSlug: "washington",
6235
7307
  stateName: "Washington",
6236
7308
  stateAbbrev: "WA",
6237
- lastUpdated: "2026-05-15",
7309
+ lastUpdated: "2026-06-06",
6238
7310
  counties: [
6239
7311
  {
6240
7312
  id: "wa-king",
@@ -6261,8 +7333,8 @@ var washington_default = {
6261
7333
  sampleQuery: "https://gismaps.kingcounty.gov/arcgis/rest/services/Property/KingCo_Parcels/MapServer/0/query?where=PIN%3D%270000200001%27&outFields=*&f=json",
6262
7334
  license: "public",
6263
7335
  licenseUrl: "https://kingcounty.gov/services/gis/GISData.aspx",
6264
- status: "unverified",
6265
- lastVerified: "2026-05-07",
7336
+ status: "live",
7337
+ lastVerified: "2026-06-06",
6266
7338
  verifiedBy: "manual"
6267
7339
  }
6268
7340
  ],
@@ -6271,7 +7343,8 @@ var washington_default = {
6271
7343
  url: "https://kingcounty.gov/services/gis.aspx",
6272
7344
  email: null
6273
7345
  },
6274
- notes: "King County, Washington (Seattle metro, pop. 2.3M, county seat Seattle) is the most populous Washington county, containing Seattle, Bellevue, Redmond, Renton, and Kent. The KingCo_Parcels MapServer layer publishes parcel polygons with three identifier fields: PIN (10-digit Parcel Identification Number), MAJOR (first 6 digits of PIN, identifying the parcel block), and MINOR (last 4 digits, the parcel within the block). No owner name, situs address, or assessment values are on this public REST layer. Washington State law broadly restricts owner-name exposure on public REST endpoints; King County follows this consistently. The layer status is 'unverified' as of 2026-05-07 \u2014 the endpoint URL is the documented canonical path but was not confirmed live at last check. For ownership lookups, use the King County Assessor's eReal Property portal at info.kingcounty.gov/assessor/emap/ (search by address, PIN, or complex name). The interactive Parcel Viewer is at gismaps.kingcounty.gov/parcelviewer2/. Bulk GIS downloads: kingcounty.gov/services/gis/GISData.aspx."
7346
+ notes: "King County, Washington (Seattle metro, pop. 2.3M, county seat Seattle) is the most populous Washington county, containing Seattle, Bellevue, Redmond, Renton, and Kent. The KingCo_Parcels MapServer layer publishes parcel polygons with three identifier fields: PIN (10-digit Parcel Identification Number), MAJOR (first 6 digits of PIN, identifying the parcel block), and MINOR (last 4 digits, the parcel within the block). No owner name, situs address, or assessment values are on this public REST layer. Washington State law broadly restricts owner-name exposure on public REST endpoints; King County follows this consistently. Confirmed live 2026-06-06 -- 638,577 parcels, PIN-searchable. For ownership lookups, use the King County Assessor's eReal Property portal at info.kingcounty.gov/assessor/emap/ (search by address, PIN, or complex name). The interactive Parcel Viewer is at gismaps.kingcounty.gov/parcelviewer2/. Bulk GIS downloads: kingcounty.gov/services/gis/GISData.aspx.",
7347
+ relatedPropertyCitySlug: "seattle"
6275
7348
  },
6276
7349
  {
6277
7350
  id: "wa-spokane",
@@ -6315,7 +7388,7 @@ var washington_default = {
6315
7388
  url: "https://gisdatacatalog-spokanecounty.opendata.arcgis.com/",
6316
7389
  email: null
6317
7390
  },
6318
- notes: "43 fields confirmed including PID_NUM, ACO_NUM, PIDMAP, parcel, exmp_code, exmp_amt, nbhd_code, nbhd_name, prop_use_code, prop_use_desc, tax_year, site_address, site_str_nbr, site_str_nbr_suf, site_str_dir, site_str_dir_suf, site_str_name, site_str_type, site_apartment, site_city, site_state, site_zip, soil_id, bldg_only_flag, vacant_land_flag, res_com_flag, appraiser_id, acreage, assessed_amt, taxable_amt, tax_code_area, inspection_cycle, parcel_location, land_value, asmt_year_exmp_code, asmt_year_exmp_amt, eff_from_date, eff_to_date, asmt_year, seg_status, Shape__Area, Shape__Length. Live query confirmed: parcel LIKE '35163%' returns Spokane addresses with assessed values. NOTE: Owner name is NOT on this public FeatureServer \u2014 per Washington State law (RCW 42.56.070(8)) owner name data is restricted. Hosted on ArcGIS Online (services1.arcgis.com/ozNll27nt9ZtPWOn). Item ID: 228db1be1d6940a3b5e3f2104e470134. maxRecordCount=2000."
7391
+ notes: "43 fields confirmed including PID_NUM, ACO_NUM, PIDMAP, parcel, exmp_code, exmp_amt, nbhd_code, nbhd_name, prop_use_code, prop_use_desc, tax_year, site_address, site_str_nbr, site_str_nbr_suf, site_str_dir, site_str_dir_suf, site_str_name, site_str_type, site_apartment, site_city, site_state, site_zip, soil_id, bldg_only_flag, vacant_land_flag, res_com_flag, appraiser_id, acreage, assessed_amt, taxable_amt, tax_code_area, inspection_cycle, parcel_location, land_value, asmt_year_exmp_code, asmt_year_exmp_amt, eff_from_date, eff_to_date, asmt_year, seg_status, Shape__Area, Shape__Length. Live query confirmed: parcel LIKE '35163%' returns Spokane addresses with assessed values. NOTE: Owner name is NOT on this public FeatureServer, per Washington State law (RCW 42.56.070(8)) owner name data is restricted. Hosted on ArcGIS Online (services1.arcgis.com/ozNll27nt9ZtPWOn). Item ID: 228db1be1d6940a3b5e3f2104e470134. maxRecordCount=2000."
6319
7392
  },
6320
7393
  {
6321
7394
  id: "wa-snohomish",
@@ -6336,7 +7409,6 @@ var washington_default = {
6336
7409
  corsEnabled: null,
6337
7410
  searchFields: [
6338
7411
  { name: "PARCEL_ID", label: "Parcel ID", searchable: true },
6339
- { name: "LRSN", label: "LRSN (Assessor Account Number)", searchable: true },
6340
7412
  { name: "OWNERNAME", label: "Owner Name", searchable: true },
6341
7413
  { name: "TAXPRNAME", label: "Taxpayer Name", searchable: true },
6342
7414
  { name: "SITUSHOUSE", label: "Situs House Number", searchable: false },
@@ -6353,8 +7425,8 @@ var washington_default = {
6353
7425
  license: "public",
6354
7426
  licenseUrl: "https://snohomish-county-open-data-portal-snoco-gis.hub.arcgis.com/",
6355
7427
  status: "live",
6356
- lastVerified: "2026-05-15",
6357
- verifiedBy: "manual"
7428
+ lastVerified: "2026-06-27",
7429
+ verifiedBy: "automated"
6358
7430
  }
6359
7431
  ],
6360
7432
  contact: {
@@ -6362,7 +7434,7 @@ var washington_default = {
6362
7434
  url: "https://snohomish-county-open-data-portal-snoco-gis.hub.arcgis.com/",
6363
7435
  email: null
6364
7436
  },
6365
- notes: "51 fields confirmed including PARCEL_ID, PAR_OID, LRSN, TAX_YEAR, STATUS, CREATEDATE, CORRDATE, RETIREDATE, GIS_SQ_FT, GIS_ACRES, TAB_ACRES, TCANUMBER, USECODE, TVR, MKIMP, MKLND, CUIMP, CULND, MKTTL, XMPTDESCR, SITUSLINE1, SITUSHOUSE, SITUSPREFX, SITUSSTRT, SITUSTTYP, SITUSPOSTD, SITUSUNIT, SITUSCITY, SITUSSTATE, SITUSZIP, TAXPRNAME, TAXPRLINE1-3, TAXPRCITY, TAXPRSTATE, TAXPRZIP, OWNERNAME, OWNERLINE1-3, OWNERCITY, OWNERSTATE, OWNERZIP, X_COORD, Y_COORD, SHAPE__Area, SHAPE__Length. Owner name confirmed live (OWNERNAME LIKE '%SMITH%' returns real results, e.g. 'SMITH STANLEY M'). Unlike most WA counties, Snohomish exposes OWNERNAME on the public layer. Hosted on ArcGIS Online (services6.arcgis.com/z6WYi9VRHfgwgtyW). Item ID: 60a6a62688db48e2a5f2ab7712b95658. Updated 3x/week. maxRecordCount=2000."
7437
+ notes: "54 fields in live schema as of 2026-06-27: OBJECTID, PARCEL_ID, PAR_OID, REVOBJID, TAX_YEAR, STATUS, CREATEDATE, CORRDATE, RETIREDATE, SOURCE, COMMENT, GIS_SQ_FT, GIS_ACRES, TAB_ACRES, TCANUMBER, USECODE, TVR, MKIMP, MKLND, CUIMP, CULND, MKTTL, XMPTDESCR, SITUSLINE1, SITUSHOUSE, SITUSPREFX, SITUSSTRT, SITUSSTTYP, SITUSPOSTD, SITUSUNIT, SITUSCITY, SITUSSTATE, SITUSZIP, TAXPRNAME, TAXPRLINE1-3, TAXPRCITY, TAXPRSTATE, TAXPRZIP, OWNERNAME, OWNERLINE1-3, OWNERCITY, OWNERSTATE, OWNERZIP, NBHDCODE, STACKED, FLATTEN, X_COORD, Y_COORD, SHAPE__Area, SHAPE__Length. NOTE 2026-06-27: LRSN (Assessor Account Number) is no longer in the live schema (schema drift), removed from searchFields. REVOBJID is a revision object identifier present in the live schema but is not a direct replacement for LRSN. Owner name confirmed live (OWNERNAME field present). Unlike most WA counties, Snohomish exposes OWNERNAME on the public layer. Hosted on ArcGIS Online (services6.arcgis.com/z6WYi9VRHfgwgtyW). Item ID: 60a6a62688db48e2a5f2ab7712b95658. Updated 3x/week. maxRecordCount=2000. Verified 2026-06-27: metadata 200, query 200, 319K parcels."
6366
7438
  },
6367
7439
  {
6368
7440
  id: "wa-thurston",
@@ -6414,6 +7486,184 @@ var washington_default = {
6414
7486
  ]
6415
7487
  };
6416
7488
 
7489
+ // data/west-virginia.json
7490
+ var west_virginia_default = {
7491
+ stateSlug: "west-virginia",
7492
+ stateName: "West Virginia",
7493
+ stateAbbrev: "WV",
7494
+ lastUpdated: "2026-06-20",
7495
+ counties: [
7496
+ {
7497
+ id: "wv-kanawha",
7498
+ state: "WV",
7499
+ stateName: "West Virginia",
7500
+ stateSlug: "west-virginia",
7501
+ county: "Kanawha",
7502
+ countySlug: "kanawha-county",
7503
+ countyFips: "54039",
7504
+ hasPublicRest: true,
7505
+ endpoints: [
7506
+ {
7507
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7508
+ serviceType: "MapServer",
7509
+ layerIndex: 0,
7510
+ layerName: "WVParcels",
7511
+ supportsQuery: true,
7512
+ corsEnabled: null,
7513
+ searchFields: [
7514
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7515
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7516
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7517
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7518
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7519
+ { name: "CountyID", label: "County ID string ('20' = Kanawha)", searchable: false },
7520
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7521
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7522
+ ],
7523
+ sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'20'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7524
+ license: "public",
7525
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7526
+ status: "live",
7527
+ lastVerified: "2026-06-20",
7528
+ verifiedBy: "automated"
7529
+ }
7530
+ ],
7531
+ contact: {
7532
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7533
+ url: "https://www.mapwv.gov/",
7534
+ email: null
7535
+ },
7536
+ notes: "Kanawha County WV (Charleston; state capital; county seat Charleston; FIPS 54039; most populous WV county, pop. 178,000) uses the statewide WV parcel layer hosted by the WV GIS Technical Center (WVGISTC) at WVU (services.wvgis.wvu.edu). CRITICAL: CountyID is a zero-padded 2-digit string ('20' for Kanawha, NOT integer 20), use WHERE CountyID='20' with quotes. Key fields: CleanParcelID (20-digit: CountyID-District-Map-ParcelPrefix-ParcelSuffix-SpecialID), FullOwnerName, FullOwnerAddress, FullPhysicalAddress, FullLegalDescription, GISPID, CountyID, Acres_C. All 55 WV counties share this single statewide endpoint. Verified 2026-06-20: CountyID='20' AND SMITH returns Charleston-area owner names. The mapwv.gov/parcel public viewer uses this same WVU-hosted layer. Updated from legacy WV DOH/Transportation server URL to authoritative WVU WVGISTC server 2026-06-20."
7537
+ },
7538
+ {
7539
+ id: "wv-monongalia",
7540
+ state: "WV",
7541
+ stateName: "West Virginia",
7542
+ stateSlug: "west-virginia",
7543
+ county: "Monongalia",
7544
+ countySlug: "monongalia-county",
7545
+ countyFips: "54061",
7546
+ hasPublicRest: true,
7547
+ endpoints: [
7548
+ {
7549
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7550
+ serviceType: "MapServer",
7551
+ layerIndex: 0,
7552
+ layerName: "WVParcels",
7553
+ supportsQuery: true,
7554
+ corsEnabled: null,
7555
+ searchFields: [
7556
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7557
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7558
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7559
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7560
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7561
+ { name: "CountyID", label: "County ID string ('31' = Monongalia)", searchable: false },
7562
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7563
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7564
+ ],
7565
+ sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'31'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7566
+ license: "public",
7567
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7568
+ status: "live",
7569
+ lastVerified: "2026-06-20",
7570
+ verifiedBy: "automated"
7571
+ }
7572
+ ],
7573
+ contact: {
7574
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7575
+ url: "https://www.mapwv.gov/",
7576
+ email: null
7577
+ },
7578
+ notes: "Monongalia County WV (Morgantown; county seat Morgantown; FIPS 54061; home to WVU main campus) uses the statewide WV parcel layer (CountyID='31'). CRITICAL: CountyID is a string, use CountyID='31' (with quotes). Verified 2026-06-20: SMITH query returns Morgantown-area addresses. Same endpoint and schema as all WV counties on the WVU WVGISTC server."
7579
+ },
7580
+ {
7581
+ id: "wv-raleigh",
7582
+ state: "WV",
7583
+ stateName: "West Virginia",
7584
+ stateSlug: "west-virginia",
7585
+ county: "Raleigh",
7586
+ countySlug: "raleigh-county",
7587
+ countyFips: "54081",
7588
+ hasPublicRest: true,
7589
+ endpoints: [
7590
+ {
7591
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7592
+ serviceType: "MapServer",
7593
+ layerIndex: 0,
7594
+ layerName: "WVParcels",
7595
+ supportsQuery: true,
7596
+ corsEnabled: null,
7597
+ searchFields: [
7598
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7599
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7600
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7601
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7602
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7603
+ { name: "CountyID", label: "County ID string ('40' = Raleigh)", searchable: false },
7604
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7605
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7606
+ ],
7607
+ sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'40'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7608
+ license: "public",
7609
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7610
+ status: "live",
7611
+ lastVerified: "2026-06-20",
7612
+ verifiedBy: "automated"
7613
+ }
7614
+ ],
7615
+ contact: {
7616
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7617
+ url: "https://www.mapwv.gov/",
7618
+ email: null
7619
+ },
7620
+ notes: "Raleigh County WV (Beckley; county seat Beckley; FIPS 54081) uses the statewide WV parcel layer (CountyID='40'). CRITICAL: CountyID is a string, use CountyID='40' (with quotes). Verified 2026-06-20: SMITH query returns Beckley-area addresses. Same endpoint and schema as all WV counties on the WVU WVGISTC server."
7621
+ },
7622
+ {
7623
+ id: "wv-cabell",
7624
+ state: "WV",
7625
+ stateName: "West Virginia",
7626
+ stateSlug: "west-virginia",
7627
+ county: "Cabell",
7628
+ countySlug: "cabell-county",
7629
+ countyFips: "54011",
7630
+ hasPublicRest: true,
7631
+ endpoints: [
7632
+ {
7633
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7634
+ serviceType: "MapServer",
7635
+ layerIndex: 0,
7636
+ layerName: "WVParcels",
7637
+ supportsQuery: true,
7638
+ corsEnabled: null,
7639
+ searchFields: [
7640
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7641
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7642
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7643
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7644
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7645
+ { name: "CountyID", label: "County ID string ('06' = Cabell)", searchable: false },
7646
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7647
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7648
+ ],
7649
+ sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'06'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7650
+ license: "public",
7651
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7652
+ status: "live",
7653
+ lastVerified: "2026-06-20",
7654
+ verifiedBy: "automated"
7655
+ }
7656
+ ],
7657
+ contact: {
7658
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7659
+ url: "https://www.mapwv.gov/",
7660
+ email: null
7661
+ },
7662
+ notes: "Cabell County WV (Huntington; county seat Huntington; FIPS 54011) uses the statewide WV parcel layer (CountyID='06'). CRITICAL: CountyID is a zero-padded string, use CountyID='06' (with quotes and leading zero). Verified 2026-06-20: SMITH query returns Huntington-area addresses. Same endpoint and schema as all WV counties on the WVU WVGISTC server."
7663
+ }
7664
+ ]
7665
+ };
7666
+
6417
7667
  // data/wisconsin.json
6418
7668
  var wisconsin_default = {
6419
7669
  stateSlug: "wisconsin",
@@ -6785,7 +8035,67 @@ var wisconsin_default = {
6785
8035
  url: "https://www.browncountywi.gov/departments/planning-and-land-services/land-information-office/",
6786
8036
  email: null
6787
8037
  },
6788
- notes: "Brown County (Green Bay metro, county seat Green Bay) hosts ParcelPolygons/MapServer with 2 layers; layer 1 (TaxParcel) is the polygon tax parcel layer with ownership fields. Fields include PARCELID, ParcelType, Municipality, MunicipalZoning, OWNERNME1, OWNERNME2, PSTLADRESS, SITEADRESS, PublicOwner, FirstName1/LastName1/FirstName2/LastName2/StreetName fields (individual name parts), RecentOwnershipChangeDate, Parcels2005/2010/2014/2017 (historical vintage flags), Surveys, ROD (Register of Deeds). Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH SUSAN C REVOCABLE TRUST' at '2674 FOXFIRE DR'). Layer 0 (TaxParcel-smallScale) is the same polygon layer rendered at smaller scales. ParcelslDynamic/MapServer/6 (TaxParcels) is an alternate service containing the same ownership data. The county's BrownDog Online GIS map at gis.browncountywi.gov is the public viewer. PublicOwner field is present but may be null for many records \u2014 use OWNERNME1/OWNERNME2 for owner search."
8038
+ notes: "Brown County (Green Bay metro, county seat Green Bay) hosts ParcelPolygons/MapServer with 2 layers; layer 1 (TaxParcel) is the polygon tax parcel layer with ownership fields. Fields include PARCELID, ParcelType, Municipality, MunicipalZoning, OWNERNME1, OWNERNME2, PSTLADRESS, SITEADRESS, PublicOwner, FirstName1/LastName1/FirstName2/LastName2/StreetName fields (individual name parts), RecentOwnershipChangeDate, Parcels2005/2010/2014/2017 (historical vintage flags), Surveys, ROD (Register of Deeds). Query confirmed live: UPPER(OWNERNME1) LIKE '%SMITH%' returns real results (e.g., 'SMITH SUSAN C REVOCABLE TRUST' at '2674 FOXFIRE DR'). Layer 0 (TaxParcel-smallScale) is the same polygon layer rendered at smaller scales. ParcelslDynamic/MapServer/6 (TaxParcels) is an alternate service containing the same ownership data. The county's BrownDog Online GIS map at gis.browncountywi.gov is the public viewer. PublicOwner field is present but may be null for many records, use OWNERNME1/OWNERNME2 for owner search."
8039
+ }
8040
+ ]
8041
+ };
8042
+
8043
+ // data/wyoming.json
8044
+ var wyoming_default = {
8045
+ stateSlug: "wyoming",
8046
+ stateName: "Wyoming",
8047
+ stateAbbrev: "WY",
8048
+ lastUpdated: "2026-06-20",
8049
+ counties: [
8050
+ {
8051
+ id: "wy-laramie",
8052
+ state: "WY",
8053
+ stateName: "Wyoming",
8054
+ stateSlug: "wyoming",
8055
+ county: "Laramie",
8056
+ countySlug: "laramie-county",
8057
+ countyFips: "56021",
8058
+ hasPublicRest: true,
8059
+ endpoints: [
8060
+ {
8061
+ url: "https://maps.laramiecounty.com/arcgis/rest/services/Planning/SmartGovParcels/MapServer/1",
8062
+ serviceType: "MapServer",
8063
+ layerIndex: 1,
8064
+ layerName: "SmartGovParcels",
8065
+ supportsQuery: true,
8066
+ corsEnabled: null,
8067
+ searchFields: [
8068
+ { name: "statepidn", label: "State Parcel ID Number", searchable: true },
8069
+ { name: "accountno", label: "Account Number", searchable: true },
8070
+ { name: "owner_name1", label: "Owner Name 1", searchable: true },
8071
+ { name: "owner_name2", label: "Owner Name 2", searchable: false },
8072
+ { name: "owner_address", label: "Owner Address", searchable: false },
8073
+ { name: "owner_town", label: "Owner Town", searchable: false },
8074
+ { name: "owner_state", label: "Owner State", searchable: false },
8075
+ { name: "owner_zip", label: "Owner ZIP", searchable: false },
8076
+ { name: "site_address1", label: "Site Address", searchable: true },
8077
+ { name: "site_address2", label: "Site Address 2", searchable: false },
8078
+ { name: "site_town", label: "Site Town", searchable: false },
8079
+ { name: "site_state", label: "Site State", searchable: false },
8080
+ { name: "site_zip", label: "Site ZIP", searchable: false },
8081
+ { name: "trsec", label: "Township/Range/Section", searchable: false },
8082
+ { name: "fema_zone", label: "FEMA Flood Zone", searchable: false },
8083
+ { name: "latitude", label: "Latitude", searchable: false }
8084
+ ],
8085
+ sampleQuery: "https://maps.laramiecounty.com/arcgis/rest/services/Planning/SmartGovParcels/MapServer/1/query?where=UPPER(owner_name1)+LIKE+UPPER('%25SMITH%25')&outFields=statepidn,owner_name1,owner_name2,owner_address,owner_town,site_address1,site_town&returnGeometry=false&f=json&resultRecordCount=10",
8086
+ license: "public",
8087
+ licenseUrl: "https://maps.laramiecounty.com/",
8088
+ status: "live",
8089
+ lastVerified: "2026-06-20",
8090
+ verifiedBy: "automated"
8091
+ }
8092
+ ],
8093
+ contact: {
8094
+ department: "Laramie County GIS / Laramie County Planning and Development",
8095
+ url: "https://www.laramiecounty.com/171/GIS",
8096
+ email: null
8097
+ },
8098
+ notes: "Laramie County WY (Cheyenne; county seat Cheyenne; state capital; FIPS 56021; most populous county in WY, pop. 100,000) provides parcel data via maps.laramiecounty.com. The Planning/SmartGovParcels/MapServer layer at layerIndex=1 (NOT layer 0) exposes 20 fields: objectid, statepidn (14-digit state parcel ID, e.g., '12600210000200'), accountno, fema_zone, trsec, site_address1/2, site_town, site_state, site_zip, owner_name1, owner_name2, owner_address, owner_town, owner_state, owner_zip, latitude, and shape fields. CRITICAL: use layerIndex=1 (the /1 suffix). Layer 0 is a different geometry layer. Owner search via UPPER(owner_name1) LIKE works well. Verified 2026-06-20: SMITH query returns Cheyenne-area addresses (e.g., owner_name1 'BAKER, KATHARINE M LIVING TR' at '261 ROAD 164' Pine Bluffs). Laramie County WY (FIPS 56021) must not be confused with the City of Laramie (Albany County WY). The county seat is Cheyenne, not Laramie city."
6789
8099
  }
6790
8100
  ]
6791
8101
  };
@@ -6796,11 +8106,14 @@ var POPULATED_STATES = {
6796
8106
  alabama: alabama_default,
6797
8107
  alaska: alaska_default,
6798
8108
  arizona: arizona_default,
8109
+ arkansas: arkansas_default,
6799
8110
  california: california_default,
6800
8111
  colorado: colorado_default,
6801
8112
  connecticut: connecticut_default,
8113
+ delaware: delaware_default,
6802
8114
  florida: florida_default,
6803
8115
  georgia: georgia_default,
8116
+ hawaii: hawaii_default,
6804
8117
  idaho: idaho_default,
6805
8118
  illinois: illinois_default,
6806
8119
  indiana: indiana_default,
@@ -6809,29 +8122,37 @@ var POPULATED_STATES = {
6809
8122
  kentucky: kentucky_default,
6810
8123
  louisiana: louisiana_default,
6811
8124
  maine: maine_default,
8125
+ maryland: maryland_default,
6812
8126
  massachusetts: massachusetts_default,
6813
8127
  michigan: michigan_default,
6814
8128
  minnesota: minnesota_default,
6815
8129
  mississippi: mississippi_default,
6816
8130
  missouri: missouri_default,
8131
+ montana: montana_default,
6817
8132
  nebraska: nebraska_default,
6818
8133
  nevada: nevada_default,
6819
8134
  "new-hampshire": new_hampshire_default,
6820
8135
  "new-jersey": new_jersey_default,
8136
+ "new-mexico": new_mexico_default,
6821
8137
  "new-york": new_york_default,
6822
8138
  "north-carolina": north_carolina_default,
8139
+ "north-dakota": north_dakota_default,
6823
8140
  ohio: ohio_default,
8141
+ oklahoma: oklahoma_default,
6824
8142
  oregon: oregon_default,
6825
8143
  pennsylvania: pennsylvania_default,
6826
8144
  "rhode-island": rhode_island_default,
6827
8145
  "south-carolina": south_carolina_default,
8146
+ "south-dakota": south_dakota_default,
6828
8147
  tennessee: tennessee_default,
6829
8148
  texas: texas_default,
6830
8149
  utah: utah_default,
6831
8150
  vermont: vermont_default,
6832
8151
  virginia: virginia_default,
6833
8152
  washington: washington_default,
6834
- wisconsin: wisconsin_default
8153
+ "west-virginia": west_virginia_default,
8154
+ wisconsin: wisconsin_default,
8155
+ wyoming: wyoming_default
6835
8156
  };
6836
8157
  var atlas = {
6837
8158
  version: atlasIndex.version,