@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.cjs CHANGED
@@ -2,20 +2,20 @@
2
2
 
3
3
  // data/index.json
4
4
  var data_default = {
5
- version: "0.4.0",
6
- lastUpdated: "2026-05-31",
5
+ version: "0.5.0",
6
+ lastUpdated: "2026-06-20",
7
7
  totals: {
8
8
  states: 50,
9
- counties: 128,
10
- endpoints: 128
9
+ counties: 155,
10
+ endpoints: 155
11
11
  },
12
12
  states: [
13
13
  {
14
14
  slug: "alabama",
15
15
  name: "Alabama",
16
16
  abbrev: "AL",
17
- countyCount: 1,
18
- endpointCount: 1,
17
+ countyCount: 2,
18
+ endpointCount: 2,
19
19
  populated: true
20
20
  },
21
21
  {
@@ -38,9 +38,9 @@ var data_default = {
38
38
  slug: "arkansas",
39
39
  name: "Arkansas",
40
40
  abbrev: "AR",
41
- countyCount: 0,
42
- endpointCount: 0,
43
- populated: false
41
+ countyCount: 3,
42
+ endpointCount: 3,
43
+ populated: true
44
44
  },
45
45
  {
46
46
  slug: "california",
@@ -62,17 +62,17 @@ var data_default = {
62
62
  slug: "connecticut",
63
63
  name: "Connecticut",
64
64
  abbrev: "CT",
65
- countyCount: 1,
66
- endpointCount: 1,
65
+ countyCount: 3,
66
+ endpointCount: 3,
67
67
  populated: true
68
68
  },
69
69
  {
70
70
  slug: "delaware",
71
71
  name: "Delaware",
72
72
  abbrev: "DE",
73
- countyCount: 0,
74
- endpointCount: 0,
75
- populated: false
73
+ countyCount: 1,
74
+ endpointCount: 1,
75
+ populated: true
76
76
  },
77
77
  {
78
78
  slug: "florida",
@@ -86,17 +86,17 @@ var data_default = {
86
86
  slug: "georgia",
87
87
  name: "Georgia",
88
88
  abbrev: "GA",
89
- countyCount: 3,
90
- endpointCount: 3,
89
+ countyCount: 4,
90
+ endpointCount: 4,
91
91
  populated: true
92
92
  },
93
93
  {
94
94
  slug: "hawaii",
95
95
  name: "Hawaii",
96
96
  abbrev: "HI",
97
- countyCount: 0,
98
- endpointCount: 0,
99
- populated: false
97
+ countyCount: 2,
98
+ endpointCount: 2,
99
+ populated: true
100
100
  },
101
101
  {
102
102
  slug: "idaho",
@@ -166,9 +166,9 @@ var data_default = {
166
166
  slug: "maryland",
167
167
  name: "Maryland",
168
168
  abbrev: "MD",
169
- countyCount: 0,
170
- endpointCount: 0,
171
- populated: false
169
+ countyCount: 2,
170
+ endpointCount: 2,
171
+ populated: true
172
172
  },
173
173
  {
174
174
  slug: "massachusetts",
@@ -206,17 +206,17 @@ var data_default = {
206
206
  slug: "missouri",
207
207
  name: "Missouri",
208
208
  abbrev: "MO",
209
- countyCount: 1,
210
- endpointCount: 1,
209
+ countyCount: 2,
210
+ endpointCount: 2,
211
211
  populated: true
212
212
  },
213
213
  {
214
214
  slug: "montana",
215
215
  name: "Montana",
216
216
  abbrev: "MT",
217
- countyCount: 0,
218
- endpointCount: 0,
219
- populated: false
217
+ countyCount: 4,
218
+ endpointCount: 4,
219
+ populated: true
220
220
  },
221
221
  {
222
222
  slug: "nebraska",
@@ -254,9 +254,9 @@ var data_default = {
254
254
  slug: "new-mexico",
255
255
  name: "New Mexico",
256
256
  abbrev: "NM",
257
- countyCount: 0,
258
- endpointCount: 0,
259
- populated: false
257
+ countyCount: 1,
258
+ endpointCount: 1,
259
+ populated: true
260
260
  },
261
261
  {
262
262
  slug: "new-york",
@@ -278,9 +278,9 @@ var data_default = {
278
278
  slug: "north-dakota",
279
279
  name: "North Dakota",
280
280
  abbrev: "ND",
281
- countyCount: 0,
282
- endpointCount: 0,
283
- populated: false
281
+ countyCount: 1,
282
+ endpointCount: 1,
283
+ populated: true
284
284
  },
285
285
  {
286
286
  slug: "ohio",
@@ -294,9 +294,9 @@ var data_default = {
294
294
  slug: "oklahoma",
295
295
  name: "Oklahoma",
296
296
  abbrev: "OK",
297
- countyCount: 0,
298
- endpointCount: 0,
299
- populated: false
297
+ countyCount: 1,
298
+ endpointCount: 1,
299
+ populated: true
300
300
  },
301
301
  {
302
302
  slug: "oregon",
@@ -334,9 +334,9 @@ var data_default = {
334
334
  slug: "south-dakota",
335
335
  name: "South Dakota",
336
336
  abbrev: "SD",
337
- countyCount: 0,
338
- endpointCount: 0,
339
- populated: false
337
+ countyCount: 1,
338
+ endpointCount: 1,
339
+ populated: true
340
340
  },
341
341
  {
342
342
  slug: "tennessee",
@@ -374,8 +374,8 @@ var data_default = {
374
374
  slug: "virginia",
375
375
  name: "Virginia",
376
376
  abbrev: "VA",
377
- countyCount: 1,
378
- endpointCount: 1,
377
+ countyCount: 2,
378
+ endpointCount: 2,
379
379
  populated: true
380
380
  },
381
381
  {
@@ -390,9 +390,9 @@ var data_default = {
390
390
  slug: "west-virginia",
391
391
  name: "West Virginia",
392
392
  abbrev: "WV",
393
- countyCount: 0,
394
- endpointCount: 0,
395
- populated: false
393
+ countyCount: 4,
394
+ endpointCount: 4,
395
+ populated: true
396
396
  },
397
397
  {
398
398
  slug: "wisconsin",
@@ -406,9 +406,9 @@ var data_default = {
406
406
  slug: "wyoming",
407
407
  name: "Wyoming",
408
408
  abbrev: "WY",
409
- countyCount: 0,
410
- endpointCount: 0,
411
- populated: false
409
+ countyCount: 1,
410
+ endpointCount: 1,
411
+ populated: true
412
412
  }
413
413
  ]
414
414
  };
@@ -418,8 +418,55 @@ var alabama_default = {
418
418
  stateSlug: "alabama",
419
419
  stateName: "Alabama",
420
420
  stateAbbrev: "AL",
421
- lastUpdated: "2026-05-15",
421
+ lastUpdated: "2026-06-20",
422
422
  counties: [
423
+ {
424
+ id: "al-shelby",
425
+ state: "AL",
426
+ stateName: "Alabama",
427
+ stateSlug: "alabama",
428
+ county: "Shelby",
429
+ countySlug: "shelby-county",
430
+ countyFips: "01117",
431
+ hasPublicRest: true,
432
+ endpoints: [
433
+ {
434
+ url: "https://maps.shelbyal.com/gisserver/rest/services/LegacyServices/Cadastral_2022/MapServer/91",
435
+ serviceType: "MapServer",
436
+ layerIndex: 91,
437
+ layerName: "Parcels",
438
+ supportsQuery: true,
439
+ corsEnabled: null,
440
+ searchFields: [
441
+ { name: "Parcel_Num", label: "Parcel Number", searchable: true },
442
+ { name: "NAM1", label: "Owner Name 1", searchable: true },
443
+ { name: "NAM2", label: "Owner Name 2", searchable: false },
444
+ { name: "ADR1", label: "Owner Address Line 1", searchable: false },
445
+ { name: "ADR2", label: "Owner Address Line 2", searchable: false },
446
+ { name: "CITY", label: "Owner City", searchable: false },
447
+ { name: "STATE", label: "Owner State", searchable: false },
448
+ { name: "ZIP", label: "Owner ZIP", searchable: false },
449
+ { name: "PROP_ADR", label: "Property Address", searchable: true },
450
+ { name: "Subd_Name", label: "Subdivision Name", searchable: false },
451
+ { name: "Zoning", label: "Zoning", searchable: false },
452
+ { name: "ACRES", label: "Acres", searchable: false },
453
+ { name: "PROP_CLASS", label: "Property Class", searchable: false }
454
+ ],
455
+ 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",
456
+ license: "public",
457
+ licenseUrl: "https://maps.shelbyal.com/",
458
+ status: "live",
459
+ lastVerified: "2026-06-20",
460
+ verifiedBy: "automated"
461
+ }
462
+ ],
463
+ contact: {
464
+ department: "Shelby County GIS / Shelby County Commission",
465
+ url: "https://maps.shelbyal.com/",
466
+ email: null
467
+ },
468
+ 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."
469
+ },
423
470
  {
424
471
  id: "al-jefferson",
425
472
  state: "AL",
@@ -450,7 +497,6 @@ var alabama_default = {
450
497
  { name: "STATE_Mail", label: "Mailing State", searchable: false },
451
498
  { name: "Legal_Desc", label: "Legal Description", searchable: false },
452
499
  { name: "Property_City", label: "Property City", searchable: false },
453
- { name: "ZONING_BOE", label: "Zoning (Board of Equalization)", searchable: false },
454
500
  { name: "ACRES_APR", label: "Appraised Acres", searchable: false },
455
501
  { name: "AssdValue", label: "Assessed Value", searchable: false }
456
502
  ],
@@ -458,16 +504,16 @@ var alabama_default = {
458
504
  license: "public",
459
505
  licenseUrl: "https://www.jccal.org/Default.asp?ID=1220&pg=Enterprise+GIS",
460
506
  status: "live",
461
- lastVerified: "2026-05-15",
462
- verifiedBy: "manual"
507
+ lastVerified: "2026-06-27",
508
+ verifiedBy: "automated"
463
509
  }
464
510
  ],
465
511
  contact: {
466
- department: "Jefferson County Commission GIS / Information Technology Services \u2014 EGIS",
512
+ department: "Jefferson County Commission GIS / Information Technology Services, EGIS",
467
513
  url: "https://data-jeffco-al.opendata.arcgis.com/",
468
514
  email: null
469
515
  },
470
- 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."
516
+ 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."
471
517
  }
472
518
  ]
473
519
  };
@@ -520,7 +566,7 @@ var alaska_default = {
520
566
  url: "https://services1.arcgis.com/7HDiw78fcUiM2BWn/arcgis/rest/services/AK_Parcels/FeatureServer",
521
567
  email: null
522
568
  },
523
- 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."
569
+ 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."
524
570
  }
525
571
  ]
526
572
  };
@@ -573,7 +619,7 @@ var arizona_default = {
573
619
  }
574
620
  ],
575
621
  contact: {
576
- department: "Maricopa County Assessor's Office \u2014 GIS Division",
622
+ department: "Maricopa County Assessor's Office, GIS Division",
577
623
  url: "https://maps.mcassessor.maricopa.gov/",
578
624
  email: null
579
625
  },
@@ -619,11 +665,11 @@ var arizona_default = {
619
665
  }
620
666
  ],
621
667
  contact: {
622
- department: "City of Tucson / Pima County GIS \u2014 PropertyHousing MapServer (Pima Assessor PAREGION data)",
668
+ department: "City of Tucson / Pima County GIS, PropertyHousing MapServer (Pima Assessor PAREGION data)",
623
669
  url: "https://www.pima.gov/1796/Geographic-Information-Systems",
624
670
  email: null
625
671
  },
626
- 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."
672
+ 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."
627
673
  },
628
674
  {
629
675
  id: "az-pinal",
@@ -674,6 +720,151 @@ var arizona_default = {
674
720
  ]
675
721
  };
676
722
 
723
+ // data/arkansas.json
724
+ var arkansas_default = {
725
+ stateSlug: "arkansas",
726
+ stateName: "Arkansas",
727
+ stateAbbrev: "AR",
728
+ lastUpdated: "2026-06-20",
729
+ counties: [
730
+ {
731
+ id: "ar-pulaski",
732
+ state: "AR",
733
+ stateName: "Arkansas",
734
+ stateSlug: "arkansas",
735
+ county: "Pulaski",
736
+ countySlug: "pulaski-county",
737
+ countyFips: "05119",
738
+ hasPublicRest: true,
739
+ endpoints: [
740
+ {
741
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
742
+ serviceType: "FeatureServer",
743
+ layerIndex: 6,
744
+ layerName: "Parcels",
745
+ supportsQuery: true,
746
+ corsEnabled: null,
747
+ searchFields: [
748
+ { name: "parcelid", label: "Parcel ID", searchable: true },
749
+ { name: "ownername", label: "Owner Name", searchable: true },
750
+ { name: "adrnum", label: "Address Number", searchable: false },
751
+ { name: "pstrnam", label: "Street Name", searchable: true },
752
+ { name: "adrcity", label: "City", searchable: true },
753
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
754
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
755
+ { name: "countyfips", label: "County FIPS (05119 = Pulaski)", searchable: false },
756
+ { name: "county", label: "County Name", searchable: false },
757
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
758
+ { name: "totalvalue", label: "Total Value", searchable: false }
759
+ ],
760
+ 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",
761
+ license: "public",
762
+ licenseUrl: "https://gis.arkansas.gov/",
763
+ status: "live",
764
+ lastVerified: "2026-06-20",
765
+ verifiedBy: "automated"
766
+ }
767
+ ],
768
+ contact: {
769
+ department: "Arkansas GIS Office (AGISO)",
770
+ url: "https://gis.arkansas.gov/",
771
+ email: null
772
+ },
773
+ 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."
774
+ },
775
+ {
776
+ id: "ar-benton",
777
+ state: "AR",
778
+ stateName: "Arkansas",
779
+ stateSlug: "arkansas",
780
+ county: "Benton",
781
+ countySlug: "benton-county",
782
+ countyFips: "05007",
783
+ hasPublicRest: true,
784
+ endpoints: [
785
+ {
786
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
787
+ serviceType: "FeatureServer",
788
+ layerIndex: 6,
789
+ layerName: "Parcels",
790
+ supportsQuery: true,
791
+ corsEnabled: null,
792
+ searchFields: [
793
+ { name: "parcelid", label: "Parcel ID", searchable: true },
794
+ { name: "ownername", label: "Owner Name", searchable: true },
795
+ { name: "adrnum", label: "Address Number", searchable: false },
796
+ { name: "pstrnam", label: "Street Name", searchable: true },
797
+ { name: "adrcity", label: "City", searchable: true },
798
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
799
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
800
+ { name: "countyfips", label: "County FIPS (05007 = Benton)", searchable: false },
801
+ { name: "county", label: "County Name", searchable: false },
802
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
803
+ { name: "totalvalue", label: "Total Value", searchable: false }
804
+ ],
805
+ 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",
806
+ license: "public",
807
+ licenseUrl: "https://gis.arkansas.gov/",
808
+ status: "live",
809
+ lastVerified: "2026-06-20",
810
+ verifiedBy: "automated"
811
+ }
812
+ ],
813
+ contact: {
814
+ department: "Arkansas GIS Office (AGISO)",
815
+ url: "https://gis.arkansas.gov/",
816
+ email: null
817
+ },
818
+ 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."
819
+ },
820
+ {
821
+ id: "ar-washington",
822
+ state: "AR",
823
+ stateName: "Arkansas",
824
+ stateSlug: "arkansas",
825
+ county: "Washington",
826
+ countySlug: "washington-county",
827
+ countyFips: "05143",
828
+ hasPublicRest: true,
829
+ endpoints: [
830
+ {
831
+ url: "https://gis.arkansas.gov/arcgis/rest/services/FEATURESERVICES/Planning_Cadastre/FeatureServer/6",
832
+ serviceType: "FeatureServer",
833
+ layerIndex: 6,
834
+ layerName: "Parcels",
835
+ supportsQuery: true,
836
+ corsEnabled: null,
837
+ searchFields: [
838
+ { name: "parcelid", label: "Parcel ID", searchable: true },
839
+ { name: "ownername", label: "Owner Name", searchable: true },
840
+ { name: "adrnum", label: "Address Number", searchable: false },
841
+ { name: "pstrnam", label: "Street Name", searchable: true },
842
+ { name: "adrcity", label: "City", searchable: true },
843
+ { name: "adrzip5", label: "ZIP Code", searchable: false },
844
+ { name: "adrlabel", label: "Full Address Label", searchable: true },
845
+ { name: "countyfips", label: "County FIPS (05143 = Washington)", searchable: false },
846
+ { name: "county", label: "County Name", searchable: false },
847
+ { name: "assessvalue", label: "Assessed Value", searchable: false },
848
+ { name: "totalvalue", label: "Total Value", searchable: false }
849
+ ],
850
+ 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",
851
+ license: "public",
852
+ licenseUrl: "https://gis.arkansas.gov/",
853
+ status: "live",
854
+ lastVerified: "2026-06-20",
855
+ verifiedBy: "automated"
856
+ }
857
+ ],
858
+ contact: {
859
+ department: "Arkansas GIS Office (AGISO)",
860
+ url: "https://gis.arkansas.gov/",
861
+ email: null
862
+ },
863
+ 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."
864
+ }
865
+ ]
866
+ };
867
+
677
868
  // data/california.json
678
869
  var california_default = {
679
870
  stateSlug: "california",
@@ -700,13 +891,19 @@ var california_default = {
700
891
  corsEnabled: null,
701
892
  searchFields: [
702
893
  { name: "AIN", label: "Assessor Identification Number (AIN)", searchable: true },
703
- { name: "SitusFullAddress", label: "Situs Address", searchable: true }
894
+ { name: "APN", label: "Assessor Parcel Number (formatted)", searchable: true },
895
+ { name: "SitusFullAddress", label: "Situs Address", searchable: true },
896
+ { name: "SitusCity", label: "City", searchable: false },
897
+ { name: "SitusZIP", label: "ZIP Code", searchable: false },
898
+ { name: "UseCode", label: "Use Code", searchable: false },
899
+ { name: "UseDescription", label: "Use Description", searchable: false },
900
+ { name: "YearBuilt1", label: "Year Built", searchable: false }
704
901
  ],
705
902
  sampleQuery: "https://public.gis.lacounty.gov/public/rest/services/LACounty_Cache/LACounty_Parcel/MapServer/0/query?where=AIN%3D%274321002009%27&outFields=*&f=json",
706
903
  license: "public",
707
904
  licenseUrl: null,
708
- status: "unverified",
709
- lastVerified: "2026-05-07",
905
+ status: "live",
906
+ lastVerified: "2026-06-04",
710
907
  verifiedBy: "manual"
711
908
  }
712
909
  ],
@@ -715,7 +912,52 @@ var california_default = {
715
912
  url: "https://egis-lacounty.hub.arcgis.com/",
716
913
  email: null
717
914
  },
718
- 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)."
915
+ 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)."
916
+ },
917
+ {
918
+ id: "ca-sacramento",
919
+ state: "CA",
920
+ stateName: "California",
921
+ stateSlug: "california",
922
+ county: "Sacramento",
923
+ countySlug: "sacramento-county",
924
+ countyFips: "06067",
925
+ hasPublicRest: true,
926
+ endpoints: [
927
+ {
928
+ url: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0",
929
+ serviceType: "FeatureServer",
930
+ layerIndex: 0,
931
+ layerName: "Parcels",
932
+ supportsQuery: true,
933
+ corsEnabled: null,
934
+ searchFields: [
935
+ { name: "APN", label: "Assessor Parcel Number", searchable: true },
936
+ { name: "STREET_NBR", label: "Street Number", searchable: true },
937
+ { name: "STREET_NAM", label: "Street Name", searchable: true },
938
+ { name: "CITY", label: "City", searchable: true },
939
+ { name: "ZIP", label: "ZIP Code", searchable: false },
940
+ { name: "TRA", label: "Tax Rate Area", searchable: false },
941
+ { name: "LANDUSE", label: "Land Use Code", searchable: false },
942
+ { name: "LU_GENERAL", label: "Land Use (General)", searchable: false },
943
+ { name: "LOT_SIZE", label: "Lot Size (sq ft)", searchable: false },
944
+ { name: "JURISDICTION", label: "Jurisdiction", searchable: true },
945
+ { name: "PRCL_TYPE", label: "Parcel Type", searchable: false }
946
+ ],
947
+ 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",
948
+ license: "public",
949
+ licenseUrl: "https://data-sacramentocounty.opendata.arcgis.com/",
950
+ status: "live",
951
+ lastVerified: "2026-05-15",
952
+ verifiedBy: "manual"
953
+ }
954
+ ],
955
+ contact: {
956
+ department: "Sacramento County GIS / Planning and Environmental Review",
957
+ url: "https://data-sacramentocounty.opendata.arcgis.com/",
958
+ email: null
959
+ },
960
+ 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."
719
961
  },
720
962
  {
721
963
  id: "ca-sonoma",
@@ -753,7 +995,7 @@ var california_default = {
753
995
  url: "https://gis-sonomacounty.hub.arcgis.com/",
754
996
  email: null
755
997
  },
756
- 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."
998
+ 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."
757
999
  },
758
1000
  {
759
1001
  id: "ca-orange",
@@ -791,7 +1033,7 @@ var california_default = {
791
1033
  url: "https://data-ocpw.opendata.arcgis.com/",
792
1034
  email: null
793
1035
  },
794
- 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."
1036
+ 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."
795
1037
  },
796
1038
  {
797
1039
  id: "ca-san-bernardino",
@@ -827,11 +1069,11 @@ var california_default = {
827
1069
  }
828
1070
  ],
829
1071
  contact: {
830
- department: "County of San Bernardino \u2014 Geographic Information Management Systems (GIMS)",
1072
+ department: "County of San Bernardino, Geographic Information Management Systems (GIMS)",
831
1073
  url: "https://data-sbcounty.opendata.arcgis.com/",
832
1074
  email: null
833
1075
  },
834
- 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."
1076
+ 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."
835
1077
  },
836
1078
  {
837
1079
  id: "ca-san-diego",
@@ -875,7 +1117,7 @@ var california_default = {
875
1117
  url: "https://gis-public.sandiegocounty.gov/",
876
1118
  email: null
877
1119
  },
878
- 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."
1120
+ 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."
879
1121
  },
880
1122
  {
881
1123
  id: "ca-santa-clara",
@@ -914,11 +1156,11 @@ var california_default = {
914
1156
  }
915
1157
  ],
916
1158
  contact: {
917
- department: "County of Santa Clara \u2014 Geographic Information Services",
1159
+ department: "County of Santa Clara, Geographic Information Services",
918
1160
  url: "https://gis.santaclaracounty.gov/",
919
1161
  email: null
920
1162
  },
921
- 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."
1163
+ 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."
922
1164
  },
923
1165
  {
924
1166
  id: "ca-alameda",
@@ -965,7 +1207,7 @@ var california_default = {
965
1207
  url: "https://data.acgov.org/",
966
1208
  email: null
967
1209
  },
968
- 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."
1210
+ 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."
969
1211
  },
970
1212
  {
971
1213
  id: "ca-contra-costa",
@@ -1005,57 +1247,12 @@ var california_default = {
1005
1247
  }
1006
1248
  ],
1007
1249
  contact: {
1008
- department: "Contra Costa County GIS / CCMAP \u2014 DOIT GIS Division",
1250
+ department: "Contra Costa County GIS / CCMAP, DOIT GIS Division",
1009
1251
  url: "https://contra-costa-gis-cocogis.hub.arcgis.com/",
1010
1252
  email: null
1011
1253
  },
1012
1254
  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."
1013
1255
  },
1014
- {
1015
- id: "ca-sacramento",
1016
- state: "CA",
1017
- stateName: "California",
1018
- stateSlug: "california",
1019
- county: "Sacramento",
1020
- countySlug: "sacramento-county",
1021
- countyFips: "06067",
1022
- hasPublicRest: true,
1023
- endpoints: [
1024
- {
1025
- url: "https://services1.arcgis.com/5NARefyPVtAeuJPU/arcgis/rest/services/Parcels/FeatureServer/0",
1026
- serviceType: "FeatureServer",
1027
- layerIndex: 0,
1028
- layerName: "Parcels",
1029
- supportsQuery: true,
1030
- corsEnabled: null,
1031
- searchFields: [
1032
- { name: "APN", label: "Assessor Parcel Number", searchable: true },
1033
- { name: "STREET_NBR", label: "Street Number", searchable: false },
1034
- { name: "STREET_NAM", label: "Street Name", searchable: true },
1035
- { name: "CITY", label: "City", searchable: true },
1036
- { name: "ZIP", label: "ZIP Code", searchable: false },
1037
- { name: "TRA", label: "Tax Rate Area", searchable: false },
1038
- { name: "LANDUSE", label: "Land Use Code", searchable: false },
1039
- { name: "LU_GENERAL", label: "Land Use (General)", searchable: false },
1040
- { name: "LOT_SIZE", label: "Lot Size (sq ft)", searchable: false },
1041
- { name: "JURISDICTION", label: "Jurisdiction", searchable: true },
1042
- { name: "PRCL_TYPE", label: "Parcel Type", searchable: false }
1043
- ],
1044
- 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",
1045
- license: "public",
1046
- licenseUrl: "https://data-sacramentocounty.opendata.arcgis.com/",
1047
- status: "live",
1048
- lastVerified: "2026-05-15",
1049
- verifiedBy: "manual"
1050
- }
1051
- ],
1052
- contact: {
1053
- department: "Sacramento County GIS / Planning and Environmental Review",
1054
- url: "https://data-sacramentocounty.opendata.arcgis.com/",
1055
- email: null
1056
- },
1057
- 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."
1058
- },
1059
1256
  {
1060
1257
  id: "ca-ventura",
1061
1258
  state: "CA",
@@ -1096,7 +1293,7 @@ var california_default = {
1096
1293
  }
1097
1294
  ],
1098
1295
  contact: {
1099
- department: "Ventura County Information Technology Services \u2014 GIS Division",
1296
+ department: "Ventura County Information Technology Services, GIS Division",
1100
1297
  url: "https://venturacountydatadownloads-vcitsgis.hub.arcgis.com/",
1101
1298
  email: null
1102
1299
  },
@@ -1154,11 +1351,11 @@ var colorado_default = {
1154
1351
  }
1155
1352
  ],
1156
1353
  contact: {
1157
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1354
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1158
1355
  url: "https://gis.colorado.gov/",
1159
1356
  email: null
1160
1357
  },
1161
- 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)."
1358
+ 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)."
1162
1359
  },
1163
1360
  {
1164
1361
  id: "co-el-paso",
@@ -1201,11 +1398,11 @@ var colorado_default = {
1201
1398
  }
1202
1399
  ],
1203
1400
  contact: {
1204
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1401
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1205
1402
  url: "https://gis.colorado.gov/",
1206
1403
  email: null
1207
1404
  },
1208
- 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."
1405
+ 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."
1209
1406
  },
1210
1407
  {
1211
1408
  id: "co-jefferson",
@@ -1248,11 +1445,11 @@ var colorado_default = {
1248
1445
  }
1249
1446
  ],
1250
1447
  contact: {
1251
- department: "Colorado Governor's Office of Information Technology (OIT) \u2014 Colorado Geographic Information Systems Program",
1448
+ department: "Colorado Governor's Office of Information Technology (OIT), Colorado Geographic Information Systems Program",
1252
1449
  url: "https://gis.colorado.gov/",
1253
1450
  email: null
1254
1451
  },
1255
- 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."
1452
+ 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."
1256
1453
  }
1257
1454
  ]
1258
1455
  };
@@ -1262,7 +1459,7 @@ var connecticut_default = {
1262
1459
  stateSlug: "connecticut",
1263
1460
  stateName: "Connecticut",
1264
1461
  stateAbbrev: "CT",
1265
- lastUpdated: "2026-05-15",
1462
+ lastUpdated: "2026-06-20",
1266
1463
  counties: [
1267
1464
  {
1268
1465
  id: "ct-hartford",
@@ -1312,11 +1509,161 @@ var connecticut_default = {
1312
1509
  }
1313
1510
  ],
1314
1511
  contact: {
1315
- department: "Connecticut Office of Policy and Management (OPM) \u2014 GIS Data",
1512
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1513
+ url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1514
+ email: null
1515
+ },
1516
+ 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."
1517
+ },
1518
+ {
1519
+ id: "ct-new-haven",
1520
+ state: "CT",
1521
+ stateName: "Connecticut",
1522
+ stateSlug: "connecticut",
1523
+ county: "New Haven",
1524
+ countySlug: "new-haven-county",
1525
+ countyFips: "09009",
1526
+ hasPublicRest: true,
1527
+ endpoints: [
1528
+ {
1529
+ url: "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
1530
+ serviceType: "FeatureServer",
1531
+ layerIndex: 0,
1532
+ layerName: "Connecticut_CAMA_and_Parcel_Layer",
1533
+ supportsQuery: true,
1534
+ corsEnabled: null,
1535
+ searchFields: [
1536
+ { 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 },
1537
+ { name: "Owner", label: "Owner Name", searchable: true },
1538
+ { name: "Co_Owner", label: "Co-Owner Name", searchable: true },
1539
+ { name: "Parcel_ID", label: "Parcel ID (may be blank for some towns incl. New Haven)", searchable: true },
1540
+ { name: "Location_1", label: "Property Location / Address", searchable: true },
1541
+ { name: "Property_City", label: "Property City", searchable: false },
1542
+ { name: "Mailing_Address", label: "Mailing Address", searchable: true },
1543
+ { name: "Mailing_City", label: "Mailing City", searchable: false },
1544
+ { name: "Mailing_State", label: "Mailing State", searchable: false },
1545
+ { name: "Assessed_Total", label: "Total Assessed Value", searchable: false },
1546
+ { name: "Assessed_Land", label: "Land Assessed Value", searchable: false },
1547
+ { name: "Assessed_Building", label: "Building Assessed Value", searchable: false },
1548
+ { name: "Valuation_Year", label: "Valuation Year", searchable: false },
1549
+ { name: "Sale_Price", label: "Sale Price", searchable: false },
1550
+ { name: "Sale_Date", label: "Sale Date", searchable: false },
1551
+ { name: "State_Use_Description", label: "Use Description", searchable: false },
1552
+ { name: "Living_Area", label: "Living Area (sq ft)", searchable: false }
1553
+ ],
1554
+ 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",
1555
+ license: "public",
1556
+ licenseUrl: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1557
+ status: "live",
1558
+ lastVerified: "2026-06-20",
1559
+ verifiedBy: "manual"
1560
+ }
1561
+ ],
1562
+ contact: {
1563
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1316
1564
  url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1317
1565
  email: null
1318
1566
  },
1319
- 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."
1567
+ 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)."
1568
+ },
1569
+ {
1570
+ id: "ct-fairfield",
1571
+ state: "CT",
1572
+ stateName: "Connecticut",
1573
+ stateSlug: "connecticut",
1574
+ county: "Fairfield",
1575
+ countySlug: "fairfield-county",
1576
+ countyFips: "09001",
1577
+ hasPublicRest: true,
1578
+ endpoints: [
1579
+ {
1580
+ url: "https://services3.arcgis.com/3FL1kr7L4LvwA2Kb/arcgis/rest/services/Connecticut_CAMA_and_Parcel_Layer_2024/FeatureServer/0",
1581
+ serviceType: "FeatureServer",
1582
+ layerIndex: 0,
1583
+ layerName: "Connecticut_CAMA_and_Parcel_Layer",
1584
+ supportsQuery: true,
1585
+ corsEnabled: null,
1586
+ searchFields: [
1587
+ { name: "Town_Name", label: "Town Name (REQUIRED filter, set to a Fairfield County town, e.g. Bridgeport, Stamford, Norwalk, Danbury, Fairfield, Westport)", searchable: true },
1588
+ { name: "Owner", label: "Owner Name", searchable: true },
1589
+ { name: "Co_Owner", label: "Co-Owner Name", searchable: true },
1590
+ { name: "Parcel_ID", label: "Parcel ID (may be blank for some towns)", searchable: true },
1591
+ { name: "Location_1", label: "Property Location / Address", searchable: true },
1592
+ { name: "Property_City", label: "Property City", searchable: false },
1593
+ { name: "Mailing_Address", label: "Mailing Address", searchable: true },
1594
+ { name: "Mailing_City", label: "Mailing City", searchable: false },
1595
+ { name: "Mailing_State", label: "Mailing State", searchable: false },
1596
+ { name: "Assessed_Total", label: "Total Assessed Value", searchable: false },
1597
+ { name: "Assessed_Land", label: "Land Assessed Value", searchable: false },
1598
+ { name: "Assessed_Building", label: "Building Assessed Value", searchable: false },
1599
+ { name: "Valuation_Year", label: "Valuation Year", searchable: false },
1600
+ { name: "Sale_Price", label: "Sale Price", searchable: false },
1601
+ { name: "Sale_Date", label: "Sale Date", searchable: false },
1602
+ { name: "State_Use_Description", label: "Use Description", searchable: false },
1603
+ { name: "Living_Area", label: "Living Area (sq ft)", searchable: false }
1604
+ ],
1605
+ 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",
1606
+ license: "public",
1607
+ licenseUrl: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1608
+ status: "live",
1609
+ lastVerified: "2026-06-20",
1610
+ verifiedBy: "manual"
1611
+ }
1612
+ ],
1613
+ contact: {
1614
+ department: "Connecticut Office of Policy and Management (OPM), GIS Data",
1615
+ url: "https://portal.ct.gov/OPM/IGPP/Publications/GIS-Data",
1616
+ email: null
1617
+ },
1618
+ 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."
1619
+ }
1620
+ ]
1621
+ };
1622
+
1623
+ // data/delaware.json
1624
+ var delaware_default = {
1625
+ stateSlug: "delaware",
1626
+ stateName: "Delaware",
1627
+ stateAbbrev: "DE",
1628
+ lastUpdated: "2026-06-20",
1629
+ counties: [
1630
+ {
1631
+ id: "de-new-castle",
1632
+ state: "DE",
1633
+ stateName: "Delaware",
1634
+ stateSlug: "delaware",
1635
+ county: "New Castle",
1636
+ countySlug: "new-castle-county",
1637
+ countyFips: "10003",
1638
+ hasPublicRest: true,
1639
+ endpoints: [
1640
+ {
1641
+ url: "https://gis.nccde.org/entserver/rest/services/Foundation/Base_Layers/MapServer/0",
1642
+ serviceType: "MapServer",
1643
+ layerIndex: 0,
1644
+ layerName: "Parcels",
1645
+ supportsQuery: true,
1646
+ corsEnabled: null,
1647
+ searchFields: [
1648
+ { name: "PRCLID", label: "Parcel ID (APN)", searchable: true },
1649
+ { name: "CNTCTLAST", label: "Owner Last Name / Contact", searchable: true },
1650
+ { name: "OWNADDR", label: "Owner Mailing Address", searchable: false },
1651
+ { name: "ADDRESS", label: "Property Address", searchable: true }
1652
+ ],
1653
+ 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",
1654
+ license: "public",
1655
+ licenseUrl: "https://gis.nccde.org/",
1656
+ status: "live",
1657
+ lastVerified: "2026-06-20",
1658
+ verifiedBy: "manual"
1659
+ }
1660
+ ],
1661
+ contact: {
1662
+ department: "New Castle County Government, Office of Land Use / GIS (NCCDE)",
1663
+ url: "https://gis.nccde.org/",
1664
+ email: null
1665
+ },
1666
+ 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)."
1320
1667
  }
1321
1668
  ]
1322
1669
  };
@@ -1326,7 +1673,7 @@ var florida_default = {
1326
1673
  stateSlug: "florida",
1327
1674
  stateName: "Florida",
1328
1675
  stateAbbrev: "FL",
1329
- lastUpdated: "2026-05-15",
1676
+ lastUpdated: "2026-06-06",
1330
1677
  counties: [
1331
1678
  {
1332
1679
  id: "fl-miami-dade",
@@ -1406,7 +1753,7 @@ var florida_default = {
1406
1753
  url: "https://ocgis-datahub-ocfl.hub.arcgis.com/",
1407
1754
  email: null
1408
1755
  },
1409
- 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."
1756
+ 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."
1410
1757
  },
1411
1758
  {
1412
1759
  id: "fl-hillsborough",
@@ -1419,36 +1766,36 @@ var florida_default = {
1419
1766
  hasPublicRest: true,
1420
1767
  endpoints: [
1421
1768
  {
1422
- url: "https://www25.swfwmd.state.fl.us/arcgiswmis/rest/services/r27/LocationInfo/MapServer/71",
1769
+ url: "https://gis.hcpafl.org/arcgis/rest/services/Webmaps/HillsboroughFL_WebParcels/MapServer/0",
1423
1770
  serviceType: "MapServer",
1424
- layerIndex: 71,
1425
- layerName: "Hillsborough County Parcels",
1771
+ layerIndex: 0,
1772
+ layerName: "WebParcels_NonConfidential",
1426
1773
  supportsQuery: true,
1427
1774
  corsEnabled: null,
1428
1775
  searchFields: [
1429
- { name: "PARNO", label: "Parcel Number", searchable: true },
1430
- { name: "OWNNAME", label: "Owner Name", searchable: true },
1431
- { name: "MAILADD", label: "Mailing Address", searchable: true },
1432
- { name: "STNAME", label: "State", searchable: false },
1433
- { name: "CNTYFIPS", label: "County FIPS Code", searchable: false },
1434
- { name: "OWNTYPE", label: "Owner Type", searchable: false },
1435
- { name: "PARUSEDESC", label: "Parcel Use Description", searchable: false },
1436
- { name: "PARVAL", label: "Parcel Value", searchable: false }
1776
+ { name: "folio", label: "Folio Number (Parcel ID)", searchable: true },
1777
+ { name: "Owner1", label: "Owner Name", searchable: true },
1778
+ { name: "Owner2", label: "Owner Name 2", searchable: true },
1779
+ { name: "FullAddress", label: "Site Address", searchable: true },
1780
+ { name: "strap", label: "STRAP (alternate parcel key)", searchable: true },
1781
+ { name: "SiteCity", label: "City", searchable: false },
1782
+ { name: "SiteZip", label: "ZIP Code", searchable: false },
1783
+ { name: "Homestead", label: "Homestead Exemption", searchable: false }
1437
1784
  ],
1438
- 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",
1785
+ 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",
1439
1786
  license: "public",
1440
- licenseUrl: "https://www.swfwmd.state.fl.us/resources/data-maps",
1787
+ licenseUrl: "https://www.hcpafl.org/",
1441
1788
  status: "live",
1442
- lastVerified: "2026-05-11",
1443
- verifiedBy: "manual"
1789
+ lastVerified: "2026-06-27",
1790
+ verifiedBy: "automated"
1444
1791
  }
1445
1792
  ],
1446
1793
  contact: {
1447
- department: "Southwest Florida Water Management District (SWFWMD) \u2014 hosts the FL regional parcel layer",
1448
- url: "https://www.swfwmd.state.fl.us/resources/data-maps",
1794
+ department: "Hillsborough County Property Appraiser (HCPA)",
1795
+ url: "https://www.hcpafl.org/",
1449
1796
  email: null
1450
1797
  },
1451
- 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/."
1798
+ 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."
1452
1799
  },
1453
1800
  {
1454
1801
  id: "fl-broward",
@@ -1461,23 +1808,20 @@ var florida_default = {
1461
1808
  hasPublicRest: true,
1462
1809
  endpoints: [
1463
1810
  {
1464
- url: "https://gis.bcpa.net/bcpagis/rest/services/Public/BCPA_EXTERNAL/MapServer/0",
1811
+ url: "https://gisweb-adapters.bcpa.net/arcgis/rest/services/BCPA_EXTERNAL_JAN26/MapServer/16",
1465
1812
  serviceType: "MapServer",
1466
- layerIndex: 0,
1813
+ layerIndex: 16,
1467
1814
  layerName: "Parcels",
1468
1815
  supportsQuery: true,
1469
1816
  corsEnabled: null,
1470
1817
  searchFields: [
1471
- { name: "FOLIO", label: "Folio Number (Parcel ID)", searchable: true },
1472
- { name: "OWNER", label: "Owner Name", searchable: true },
1473
- { name: "SITE_ADDR", label: "Site Address", searchable: true },
1474
- { name: "MAILING_ADDRESS", label: "Mailing Address", searchable: true }
1818
+ { name: "FOLIO", label: "Folio Number (Parcel ID)", searchable: true }
1475
1819
  ],
1476
- 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",
1820
+ 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",
1477
1821
  license: "public",
1478
1822
  licenseUrl: "https://www.bcpa.net/",
1479
1823
  status: "live",
1480
- lastVerified: "2026-05-15",
1824
+ lastVerified: "2026-06-06",
1481
1825
  verifiedBy: "manual"
1482
1826
  }
1483
1827
  ],
@@ -1486,7 +1830,7 @@ var florida_default = {
1486
1830
  url: "https://www.bcpa.net/",
1487
1831
  email: null
1488
1832
  },
1489
- 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."
1833
+ 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."
1490
1834
  },
1491
1835
  {
1492
1836
  id: "fl-duval",
@@ -1617,7 +1961,7 @@ var florida_default = {
1617
1961
  url: "https://data-sarco.opendata.arcgis.com/",
1618
1962
  email: null
1619
1963
  },
1620
- 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."
1964
+ 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."
1621
1965
  },
1622
1966
  {
1623
1967
  id: "fl-palm-beach",
@@ -1656,7 +2000,7 @@ var florida_default = {
1656
2000
  url: "https://opendata2-pbcgov.opendata.arcgis.com/",
1657
2001
  email: null
1658
2002
  },
1659
- 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."
2003
+ 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."
1660
2004
  },
1661
2005
  {
1662
2006
  id: "fl-pinellas",
@@ -1687,8 +2031,8 @@ var florida_default = {
1687
2031
  license: "public",
1688
2032
  licenseUrl: "https://egis.pinellas.gov/",
1689
2033
  status: "live",
1690
- lastVerified: "2026-05-30",
1691
- verifiedBy: "manual"
2034
+ lastVerified: "2026-06-27",
2035
+ verifiedBy: "automated"
1692
2036
  }
1693
2037
  ],
1694
2038
  contact: {
@@ -1696,7 +2040,7 @@ var florida_default = {
1696
2040
  url: "https://www.pcpao.gov/",
1697
2041
  email: null
1698
2042
  },
1699
- 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)."
2043
+ 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."
1700
2044
  },
1701
2045
  {
1702
2046
  id: "fl-lee",
@@ -1786,7 +2130,7 @@ var georgia_default = {
1786
2130
  stateSlug: "georgia",
1787
2131
  stateName: "Georgia",
1788
2132
  stateAbbrev: "GA",
1789
- lastUpdated: "2026-05-15",
2133
+ lastUpdated: "2026-06-20",
1790
2134
  counties: [
1791
2135
  {
1792
2136
  id: "ga-fulton",
@@ -1829,91 +2173,215 @@ var georgia_default = {
1829
2173
  url: "https://fultoncountyga.gov/maps",
1830
2174
  email: null
1831
2175
  },
1832
- 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."
2176
+ 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."
2177
+ },
2178
+ {
2179
+ id: "ga-cobb",
2180
+ state: "GA",
2181
+ stateName: "Georgia",
2182
+ stateSlug: "georgia",
2183
+ county: "Cobb",
2184
+ countySlug: "cobb-county",
2185
+ countyFips: "13067",
2186
+ hasPublicRest: true,
2187
+ endpoints: [
2188
+ {
2189
+ url: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0",
2190
+ serviceType: "MapServer",
2191
+ layerIndex: 0,
2192
+ layerName: "CobbParcels",
2193
+ supportsQuery: true,
2194
+ corsEnabled: null,
2195
+ searchFields: [
2196
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
2197
+ { name: "PARID", label: "Parcel Account ID", searchable: true },
2198
+ { name: "OWNER_NAM1", label: "Owner Name 1", searchable: true },
2199
+ { name: "OWNER_NAM2", label: "Owner Name 2", searchable: false },
2200
+ { name: "SITUS_ADDR", label: "Site Address", searchable: true },
2201
+ { name: "OWNER_ADDR", label: "Owner Mailing Address", searchable: false },
2202
+ { name: "OWNER_CITY", label: "Owner City", searchable: false },
2203
+ { name: "OWNER_STAT", label: "Owner State", searchable: false },
2204
+ { name: "OWNER_ZIP", label: "Owner ZIP", searchable: false }
2205
+ ],
2206
+ 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",
2207
+ license: "public",
2208
+ licenseUrl: "https://www.cobbcounty.gov/information-technology-services/cobb-county-gis",
2209
+ status: "live",
2210
+ lastVerified: "2026-05-15",
2211
+ verifiedBy: "manual"
2212
+ }
2213
+ ],
2214
+ contact: {
2215
+ department: "Cobb County GIS (Information Technology Services)",
2216
+ url: "https://geo-cobbcountyga.hub.arcgis.com/",
2217
+ email: null
2218
+ },
2219
+ 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."
1833
2220
  },
1834
2221
  {
1835
- id: "ga-cobb",
1836
- state: "GA",
1837
- stateName: "Georgia",
1838
- stateSlug: "georgia",
1839
- county: "Cobb",
1840
- countySlug: "cobb-county",
1841
- countyFips: "13067",
2222
+ id: "ga-dekalb",
2223
+ state: "GA",
2224
+ stateName: "Georgia",
2225
+ stateSlug: "georgia",
2226
+ county: "DeKalb",
2227
+ countySlug: "dekalb-county",
2228
+ countyFips: "13089",
2229
+ hasPublicRest: true,
2230
+ endpoints: [
2231
+ {
2232
+ url: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0",
2233
+ serviceType: "MapServer",
2234
+ layerIndex: 0,
2235
+ layerName: "Tax Parcels",
2236
+ supportsQuery: true,
2237
+ corsEnabled: null,
2238
+ searchFields: [
2239
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
2240
+ { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
2241
+ { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
2242
+ { name: "SITEADDRESS", label: "Site Address", searchable: true },
2243
+ { name: "USECD", label: "Use Code", searchable: false },
2244
+ { name: "USEDSCRP", label: "Use Description", searchable: false },
2245
+ { name: "CVTTXCD", label: "City/County Tax Code", searchable: false }
2246
+ ],
2247
+ 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",
2248
+ license: "public",
2249
+ licenseUrl: "https://dcgis-dekalbgis.hub.arcgis.com/",
2250
+ status: "live",
2251
+ lastVerified: "2026-05-15",
2252
+ verifiedBy: "manual"
2253
+ }
2254
+ ],
2255
+ contact: {
2256
+ department: "DeKalb County GIS Department",
2257
+ url: "https://dcgis-dekalbgis.hub.arcgis.com/",
2258
+ email: null
2259
+ },
2260
+ 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."
2261
+ },
2262
+ {
2263
+ id: "ga-gwinnett",
2264
+ state: "GA",
2265
+ stateName: "Georgia",
2266
+ stateSlug: "georgia",
2267
+ county: "Gwinnett",
2268
+ countySlug: "gwinnett-county",
2269
+ countyFips: "13135",
2270
+ hasPublicRest: true,
2271
+ endpoints: [
2272
+ {
2273
+ url: "https://services3.arcgis.com/RfpmnkSAQleRbndX/arcgis/rest/services/Property_and_Tax/FeatureServer/3",
2274
+ serviceType: "FeatureServer",
2275
+ layerIndex: 3,
2276
+ layerName: "Tax Master Table",
2277
+ supportsQuery: true,
2278
+ corsEnabled: null,
2279
+ searchFields: [
2280
+ { name: "OWNER1", label: "Owner Name 1", searchable: true },
2281
+ { name: "OWNER2", label: "Owner Name 2", searchable: true },
2282
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
2283
+ { name: "LOCADDR", label: "Property (Location) Address", searchable: true },
2284
+ { name: "LOCCITY", label: "Property City", searchable: false },
2285
+ { name: "LOCZIP", label: "Property ZIP", searchable: false }
2286
+ ],
2287
+ 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",
2288
+ license: "public",
2289
+ licenseUrl: "https://gwin-gwinnettcounty.opendata.arcgis.com/",
2290
+ status: "live",
2291
+ lastVerified: "2026-06-20",
2292
+ verifiedBy: "manual"
2293
+ }
2294
+ ],
2295
+ contact: {
2296
+ department: "Gwinnett County GIS / Tax Assessor",
2297
+ url: "https://www.gwinnettcounty.com/web/gwinnett/departments/financialservices/taxassessorsoffice",
2298
+ email: null
2299
+ },
2300
+ 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."
2301
+ }
2302
+ ]
2303
+ };
2304
+
2305
+ // data/hawaii.json
2306
+ var hawaii_default = {
2307
+ stateSlug: "hawaii",
2308
+ stateName: "Hawaii",
2309
+ stateAbbrev: "HI",
2310
+ lastUpdated: "2026-06-20",
2311
+ counties: [
2312
+ {
2313
+ id: "hi-kauai",
2314
+ state: "HI",
2315
+ stateName: "Hawaii",
2316
+ stateSlug: "hawaii",
2317
+ county: "Kauai",
2318
+ countySlug: "kauai-county",
2319
+ countyFips: "15007",
1842
2320
  hasPublicRest: true,
1843
2321
  endpoints: [
1844
2322
  {
1845
- url: "https://gis.cobbcounty.gov/gisserver/rest/services/tax/taxassessorsdaily/MapServer/0",
2323
+ url: "https://geodata.hawaii.gov/arcgis/rest/services/ParcelsZoning/MapServer/9",
1846
2324
  serviceType: "MapServer",
1847
- layerIndex: 0,
1848
- layerName: "CobbParcels",
2325
+ layerIndex: 9,
2326
+ layerName: "Kauai County Parcels",
1849
2327
  supportsQuery: true,
1850
2328
  corsEnabled: null,
1851
2329
  searchFields: [
1852
- { name: "PIN", label: "Parcel Identification Number", searchable: true },
1853
- { name: "PARID", label: "Parcel Account ID", searchable: true },
1854
- { name: "OWNER_NAM1", label: "Owner Name 1", searchable: true },
1855
- { name: "OWNER_NAM2", label: "Owner Name 2", searchable: false },
1856
- { name: "SITUS_ADDR", label: "Site Address", searchable: true },
1857
- { name: "OWNER_ADDR", label: "Owner Mailing Address", searchable: false },
1858
- { name: "OWNER_CITY", label: "Owner City", searchable: false },
1859
- { name: "OWNER_STAT", label: "Owner State", searchable: false },
1860
- { name: "OWNER_ZIP", label: "Owner ZIP", searchable: false }
2330
+ { name: "owner", label: "Owner Name", searchable: true },
2331
+ { name: "tmk_txt", label: "Tax Map Key (9-digit TMK / APN)", searchable: true },
2332
+ { name: "cty_tmk", label: "County TMK (8-digit)", searchable: true }
1861
2333
  ],
1862
- 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",
2334
+ 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",
1863
2335
  license: "public",
1864
- licenseUrl: "https://www.cobbcounty.gov/information-technology-services/cobb-county-gis",
2336
+ licenseUrl: "https://geoportal.hawaii.gov/",
1865
2337
  status: "live",
1866
- lastVerified: "2026-05-15",
2338
+ lastVerified: "2026-06-20",
1867
2339
  verifiedBy: "manual"
1868
2340
  }
1869
2341
  ],
1870
2342
  contact: {
1871
- department: "Cobb County GIS (Information Technology Services)",
1872
- url: "https://geo-cobbcountyga.hub.arcgis.com/",
2343
+ department: "State of Hawaii Office of Planning and Sustainable Development, Statewide GIS Program",
2344
+ url: "https://planning.hawaii.gov/gis/",
1873
2345
  email: null
1874
2346
  },
1875
- 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."
2347
+ 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."
1876
2348
  },
1877
2349
  {
1878
- id: "ga-dekalb",
1879
- state: "GA",
1880
- stateName: "Georgia",
1881
- stateSlug: "georgia",
1882
- county: "DeKalb",
1883
- countySlug: "dekalb-county",
1884
- countyFips: "13089",
2350
+ id: "hi-maui",
2351
+ state: "HI",
2352
+ stateName: "Hawaii",
2353
+ stateSlug: "hawaii",
2354
+ county: "Maui",
2355
+ countySlug: "maui-county",
2356
+ countyFips: "15009",
1885
2357
  hasPublicRest: true,
1886
2358
  endpoints: [
1887
2359
  {
1888
- url: "https://dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer/0",
1889
- serviceType: "MapServer",
1890
- layerIndex: 0,
1891
- layerName: "Tax Parcels",
2360
+ url: "https://services1.arcgis.com/x4h61KaW16vFs7PM/arcgis/rest/services/Parcels_2024_Owners/FeatureServer/196",
2361
+ serviceType: "FeatureServer",
2362
+ layerIndex: 196,
2363
+ layerName: "Parcels 2024 Owners",
1892
2364
  supportsQuery: true,
1893
2365
  corsEnabled: null,
1894
2366
  searchFields: [
1895
- { name: "PARCELID", label: "Parcel ID", searchable: true },
1896
- { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
1897
- { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
1898
- { name: "SITEADDRESS", label: "Site Address", searchable: true },
1899
- { name: "USECD", label: "Use Code", searchable: false },
1900
- { name: "USEDSCRP", label: "Use Description", searchable: false },
1901
- { name: "CVTTXCD", label: "City/County Tax Code", searchable: false }
2367
+ { name: "OWNER", label: "Owner Name", searchable: true },
2368
+ { name: "tmk_txt", label: "Tax Map Key (TMK / APN)", searchable: true },
2369
+ { name: "TMK_1", label: "Tax Map Key (alternate)", searchable: true }
1902
2370
  ],
1903
- 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",
2371
+ 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",
1904
2372
  license: "public",
1905
- licenseUrl: "https://dcgis-dekalbgis.hub.arcgis.com/",
2373
+ licenseUrl: "https://www.mauicounty.gov/1933/GIS-Maps",
1906
2374
  status: "live",
1907
- lastVerified: "2026-05-15",
2375
+ lastVerified: "2026-06-20",
1908
2376
  verifiedBy: "manual"
1909
2377
  }
1910
2378
  ],
1911
2379
  contact: {
1912
- department: "DeKalb County GIS Department",
1913
- url: "https://dcgis-dekalbgis.hub.arcgis.com/",
2380
+ department: "County of Maui, GIS Division",
2381
+ url: "https://www.mauicounty.gov/1933/GIS-Maps",
1914
2382
  email: null
1915
2383
  },
1916
- 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."
2384
+ 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."
1917
2385
  }
1918
2386
  ]
1919
2387
  };
@@ -2018,7 +2486,7 @@ var illinois_default = {
2018
2486
  url: "https://www.kanecountyil.gov/pages/gis.aspx",
2019
2487
  email: null
2020
2488
  },
2021
- 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)."
2489
+ 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)."
2022
2490
  },
2023
2491
  {
2024
2492
  id: "il-cook",
@@ -2055,7 +2523,8 @@ var illinois_default = {
2055
2523
  url: "https://www.cookcountyil.gov/agency/geographic-information-systems-gis",
2056
2524
  email: null
2057
2525
  },
2058
- 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."
2526
+ 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.",
2527
+ relatedPropertyCitySlug: "chicago"
2059
2528
  },
2060
2529
  {
2061
2530
  id: "il-dupage",
@@ -2094,7 +2563,7 @@ var illinois_default = {
2094
2563
  url: "https://www.dupagecounty.gov/government/departments/gis/",
2095
2564
  email: null
2096
2565
  },
2097
- 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)."
2566
+ 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)."
2098
2567
  },
2099
2568
  {
2100
2569
  id: "il-dekalb",
@@ -2133,7 +2602,7 @@ var illinois_default = {
2133
2602
  url: "https://dekalbcounty.org/services/property-data-and-maps/",
2134
2603
  email: "gis@dekalbcounty.org"
2135
2604
  },
2136
- 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."
2605
+ 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."
2137
2606
  },
2138
2607
  {
2139
2608
  id: "il-will",
@@ -2146,20 +2615,20 @@ var illinois_default = {
2146
2615
  hasPublicRest: true,
2147
2616
  endpoints: [
2148
2617
  {
2149
- url: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0",
2618
+ url: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0",
2150
2619
  serviceType: "MapServer",
2151
2620
  layerIndex: 0,
2152
- layerName: "Parcels_21",
2621
+ layerName: "Parcels_20",
2153
2622
  supportsQuery: true,
2154
2623
  corsEnabled: null,
2155
2624
  searchFields: [
2156
2625
  { name: "PIN", label: "Parcel Identification Number", searchable: true }
2157
2626
  ],
2158
- sampleQuery: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_21/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
2627
+ sampleQuery: "https://gis.willcountyillinois.com/server/rest/services/Basemap/Parcels_20/MapServer/0/query?where=PIN%3D'1909142050020000'&outFields=*&f=json",
2159
2628
  license: "public",
2160
2629
  licenseUrl: null,
2161
2630
  status: "live",
2162
- lastVerified: "2026-05-15",
2631
+ lastVerified: "2026-06-27",
2163
2632
  verifiedBy: "automated"
2164
2633
  }
2165
2634
  ],
@@ -2168,7 +2637,7 @@ var illinois_default = {
2168
2637
  url: "https://willcounty.gov/County-Offices/Administration/GIS-Division",
2169
2638
  email: "gis@willcounty.gov"
2170
2639
  },
2171
- 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."
2640
+ 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."
2172
2641
  },
2173
2642
  {
2174
2643
  id: "il-mchenry",
@@ -2246,7 +2715,7 @@ var illinois_default = {
2246
2715
  url: "https://www.lakecountyil.gov/636/GISMaps",
2247
2716
  email: null
2248
2717
  },
2249
- 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."
2718
+ 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."
2250
2719
  },
2251
2720
  {
2252
2721
  id: "il-winnebago",
@@ -2263,7 +2732,7 @@ var illinois_default = {
2263
2732
  url: "https://wingis.org/",
2264
2733
  email: null
2265
2734
  },
2266
- 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."
2735
+ 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."
2267
2736
  },
2268
2737
  {
2269
2738
  id: "il-st-clair",
@@ -2355,7 +2824,7 @@ var indiana_default = {
2355
2824
  url: "https://www.hamiltoncounty.in.gov/442/GIS-and-Maps",
2356
2825
  email: null
2357
2826
  },
2358
- 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."
2827
+ 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."
2359
2828
  },
2360
2829
  {
2361
2830
  id: "in-allen",
@@ -2393,7 +2862,7 @@ var indiana_default = {
2393
2862
  url: "https://www.acimap.us/",
2394
2863
  email: null
2395
2864
  },
2396
- 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."
2865
+ 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."
2397
2866
  },
2398
2867
  {
2399
2868
  id: "in-marion",
@@ -2433,7 +2902,7 @@ var indiana_default = {
2433
2902
  }
2434
2903
  ],
2435
2904
  contact: {
2436
- department: "IndyGIS \u2014 City of Indianapolis / Marion County Information Services",
2905
+ department: "IndyGIS, City of Indianapolis / Marion County Information Services",
2437
2906
  url: "https://maps.indy.gov/",
2438
2907
  email: null
2439
2908
  },
@@ -2532,7 +3001,7 @@ var kansas_default = {
2532
3001
  license: "public",
2533
3002
  licenseUrl: "https://data-sncoks-gis.opendata.arcgis.com/",
2534
3003
  status: "live",
2535
- lastVerified: "2026-05-15",
3004
+ lastVerified: "2026-06-27",
2536
3005
  verifiedBy: "automated"
2537
3006
  }
2538
3007
  ],
@@ -2541,7 +3010,7 @@ var kansas_default = {
2541
3010
  url: "https://snco.gov/ap/mapping.php",
2542
3011
  email: null
2543
3012
  },
2544
- 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."
3013
+ 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."
2545
3014
  }
2546
3015
  ]
2547
3016
  };
@@ -2595,7 +3064,7 @@ var kentucky_default = {
2595
3064
  url: "https://data-lfucg.hub.arcgis.com/",
2596
3065
  email: null
2597
3066
  },
2598
- 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."
3067
+ 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."
2599
3068
  }
2600
3069
  ]
2601
3070
  };
@@ -2650,7 +3119,7 @@ var louisiana_default = {
2650
3119
  url: "https://web-ebrgis.opendata.arcgis.com/",
2651
3120
  email: null
2652
3121
  },
2653
- 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."
3122
+ 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."
2654
3123
  },
2655
3124
  {
2656
3125
  id: "la-orleans-parish",
@@ -2672,9 +3141,9 @@ var louisiana_default = {
2672
3141
  searchFields: [
2673
3142
  { name: "PARCELID", label: "Parcel ID", searchable: true },
2674
3143
  { name: "TAXBILLID", label: "Tax Bill ID", searchable: true },
2675
- { name: "OWNERNME1", label: "Owner Name 1", searchable: true },
3144
+ { name: "OWNERNME1", label: "Owner Name 1", searchable: false },
2676
3145
  { name: "OWNERNME2", label: "Owner Name 2", searchable: false },
2677
- { name: "SITEADDRESS", label: "Site Address", searchable: true },
3146
+ { name: "SITEADDRESS", label: "Site Address", searchable: false },
2678
3147
  { name: "BUILDING", label: "Building Number", searchable: false },
2679
3148
  { name: "UNIT", label: "Unit", searchable: false },
2680
3149
  { name: "PSTLADDRESS", label: "Postal (Mailing) Address", searchable: false },
@@ -2686,12 +3155,12 @@ var louisiana_default = {
2686
3155
  { name: "SQUARE", label: "Square", searchable: false },
2687
3156
  { name: "PARID", label: "Parcel Account ID", searchable: true }
2688
3157
  ],
2689
- 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",
3158
+ 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",
2690
3159
  license: "public",
2691
3160
  licenseUrl: "https://gis.nola.gov/",
2692
3161
  status: "live",
2693
- lastVerified: "2026-05-15",
2694
- verifiedBy: "manual"
3162
+ lastVerified: "2026-06-27",
3163
+ verifiedBy: "automated"
2695
3164
  }
2696
3165
  ],
2697
3166
  contact: {
@@ -2699,7 +3168,7 @@ var louisiana_default = {
2699
3168
  url: "https://gis.nola.gov/",
2700
3169
  email: null
2701
3170
  },
2702
- 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."
3171
+ 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."
2703
3172
  }
2704
3173
  ]
2705
3174
  };
@@ -2778,7 +3247,7 @@ var maine_default = {
2778
3247
  url: "https://www.maine.gov/geolib/data/index.html",
2779
3248
  email: null
2780
3249
  },
2781
- 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)."
3250
+ 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)."
2782
3251
  },
2783
3252
  {
2784
3253
  id: "me-york",
@@ -2844,6 +3313,102 @@ var maine_default = {
2844
3313
  ]
2845
3314
  };
2846
3315
 
3316
+ // data/maryland.json
3317
+ var maryland_default = {
3318
+ stateSlug: "maryland",
3319
+ stateName: "Maryland",
3320
+ stateAbbrev: "MD",
3321
+ lastUpdated: "2026-06-05",
3322
+ counties: [
3323
+ {
3324
+ id: "md-montgomery",
3325
+ state: "MD",
3326
+ stateName: "Maryland",
3327
+ stateSlug: "maryland",
3328
+ county: "Montgomery",
3329
+ countySlug: "montgomery-county",
3330
+ countyFips: "24031",
3331
+ hasPublicRest: true,
3332
+ endpoints: [
3333
+ {
3334
+ url: "https://mcmaps.org/server11/rest/services/Overlays/MCAtlas_Property_Points/FeatureServer/0",
3335
+ serviceType: "FeatureServer",
3336
+ layerIndex: 0,
3337
+ layerName: "Property Points",
3338
+ supportsQuery: true,
3339
+ corsEnabled: null,
3340
+ searchFields: [
3341
+ { name: "TAX_NO", label: "Tax Account Number", searchable: true },
3342
+ { name: "OWNERS_NAME", label: "Owner Name", searchable: true },
3343
+ { name: "OWNERS_NAME2", label: "Owner Name 2", searchable: true },
3344
+ { name: "PREMISE_ADDR_HOUSENO", label: "Site House Number", searchable: true },
3345
+ { name: "PREMISE_ADDR_STREET", label: "Site Street Name", searchable: true },
3346
+ { name: "PREMISE_ADDR_CITY", label: "Site City", searchable: true },
3347
+ { name: "OWNERS_ADDR1", label: "Owner Mailing Address", searchable: true },
3348
+ { name: "OWNERS_CITY", label: "Owner Mailing City", searchable: true }
3349
+ ],
3350
+ 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",
3351
+ license: "public",
3352
+ licenseUrl: "https://www.montgomerycountymd.gov/gis/",
3353
+ status: "live",
3354
+ lastVerified: "2026-06-05",
3355
+ verifiedBy: "automated"
3356
+ }
3357
+ ],
3358
+ contact: {
3359
+ department: "Montgomery County Maryland GIS (MCAtlas)",
3360
+ url: "https://www.montgomerycountymd.gov/gis/",
3361
+ email: null
3362
+ },
3363
+ 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."
3364
+ },
3365
+ {
3366
+ id: "md-prince-georges",
3367
+ state: "MD",
3368
+ stateName: "Maryland",
3369
+ stateSlug: "maryland",
3370
+ county: "Prince George's",
3371
+ countySlug: "prince-georges-county",
3372
+ countyFips: "24033",
3373
+ hasPublicRest: true,
3374
+ endpoints: [
3375
+ {
3376
+ url: "https://gis.princegeorgescountymd.gov/arcgis/rest/services/Property/Property_Flattened/MapServer/0",
3377
+ serviceType: "MapServer",
3378
+ layerIndex: 0,
3379
+ layerName: "Property Flattened",
3380
+ supportsQuery: true,
3381
+ corsEnabled: null,
3382
+ searchFields: [
3383
+ { name: "ACCOUNT", label: "Account Number", searchable: true },
3384
+ { name: "PROPERTY_ID", label: "Property ID", searchable: true },
3385
+ { name: "OWNER_NAME", label: "Owner Name", searchable: true },
3386
+ { name: "ICO_NAME", label: "In Care Of Name", searchable: true },
3387
+ { name: "HOUSE_NUMBER", label: "Site House Number", searchable: true },
3388
+ { name: "STREET_NAME", label: "Site Street Name", searchable: true },
3389
+ { name: "STREET_TYPE", label: "Site Street Type", searchable: true },
3390
+ { name: "MAIL_STREET", label: "Mailing Street Address", searchable: true },
3391
+ { name: "MAIL_CITY", label: "Mailing City", searchable: true },
3392
+ { name: "MAIL_ZIP5", label: "Mailing ZIP", searchable: true }
3393
+ ],
3394
+ 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",
3395
+ license: "public",
3396
+ licenseUrl: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
3397
+ status: "live",
3398
+ lastVerified: "2026-06-05",
3399
+ verifiedBy: "automated"
3400
+ }
3401
+ ],
3402
+ contact: {
3403
+ department: "Prince George's County Maryland GIS",
3404
+ url: "https://www.princegeorgescountymd.gov/665/Geographic-Information-Systems-GIS",
3405
+ email: null
3406
+ },
3407
+ 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."
3408
+ }
3409
+ ]
3410
+ };
3411
+
2847
3412
  // data/massachusetts.json
2848
3413
  var massachusetts_default = {
2849
3414
  stateSlug: "massachusetts",
@@ -2919,7 +3484,7 @@ var massachusetts_default = {
2919
3484
  url: "https://www.mass.gov/info-details/massgis-data-property-tax-parcels",
2920
3485
  email: null
2921
3486
  },
2922
- 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."
3487
+ 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."
2923
3488
  }
2924
3489
  ]
2925
3490
  };
@@ -2929,7 +3494,7 @@ var michigan_default = {
2929
3494
  stateSlug: "michigan",
2930
3495
  stateName: "Michigan",
2931
3496
  stateAbbrev: "MI",
2932
- lastUpdated: "2026-05-15",
3497
+ lastUpdated: "2026-06-06",
2933
3498
  counties: [
2934
3499
  {
2935
3500
  id: "mi-kent",
@@ -2961,9 +3526,9 @@ var michigan_default = {
2961
3526
  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",
2962
3527
  license: "public",
2963
3528
  licenseUrl: "https://www.kentcountymi-accesskent.opendata.arcgis.com/",
2964
- status: "live",
2965
- lastVerified: "2026-05-15",
2966
- verifiedBy: "automated"
3529
+ status: "unreachable",
3530
+ lastVerified: "2026-06-06",
3531
+ verifiedBy: "manual"
2967
3532
  }
2968
3533
  ],
2969
3534
  contact: {
@@ -2971,7 +3536,7 @@ var michigan_default = {
2971
3536
  url: "https://www.kentcountymi.gov/246/Geographic-Information-System-GIS",
2972
3537
  email: null
2973
3538
  },
2974
- 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."
3539
+ 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."
2975
3540
  },
2976
3541
  {
2977
3542
  id: "mi-oakland",
@@ -3023,7 +3588,7 @@ var minnesota_default = {
3023
3588
  stateSlug: "minnesota",
3024
3589
  stateName: "Minnesota",
3025
3590
  stateAbbrev: "MN",
3026
- lastUpdated: "2026-05-15",
3591
+ lastUpdated: "2026-06-06",
3027
3592
  counties: [
3028
3593
  {
3029
3594
  id: "mn-ramsey",
@@ -3099,9 +3664,9 @@ var minnesota_default = {
3099
3664
  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",
3100
3665
  license: "public",
3101
3666
  licenseUrl: "https://gis-hennepin.hub.arcgis.com/",
3102
- status: "unreachable",
3103
- lastVerified: "2026-05-15",
3104
- verifiedBy: "automated"
3667
+ status: "live",
3668
+ lastVerified: "2026-06-06",
3669
+ verifiedBy: "manual"
3105
3670
  }
3106
3671
  ],
3107
3672
  contact: {
@@ -3109,7 +3674,7 @@ var minnesota_default = {
3109
3674
  url: "https://gis-hennepin.hub.arcgis.com/",
3110
3675
  email: null
3111
3676
  },
3112
- 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."
3677
+ 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)."
3113
3678
  }
3114
3679
  ]
3115
3680
  };
@@ -3119,7 +3684,7 @@ var mississippi_default = {
3119
3684
  stateSlug: "mississippi",
3120
3685
  stateName: "Mississippi",
3121
3686
  stateAbbrev: "MS",
3122
- lastUpdated: "2026-05-15",
3687
+ lastUpdated: "2026-06-06",
3123
3688
  counties: [
3124
3689
  {
3125
3690
  id: "ms-hinds",
@@ -3162,7 +3727,7 @@ var mississippi_default = {
3162
3727
  }
3163
3728
  ],
3164
3729
  contact: {
3165
- department: "Mississippi Department of Environmental Quality (MDEQ) OPCGIS \u2014 hosts county parcel layers",
3730
+ department: "Mississippi Department of Environmental Quality (MDEQ) OPCGIS. Hosts county parcel layers",
3166
3731
  url: "https://www.gis.ms.gov/",
3167
3732
  email: null
3168
3733
  },
@@ -3179,9 +3744,9 @@ var mississippi_default = {
3179
3744
  hasPublicRest: true,
3180
3745
  endpoints: [
3181
3746
  {
3182
- url: "https://maps.desotocountyms.gov/arcgis/rest/services/Layers/MapServer/28",
3747
+ url: "https://maps.desotocountyms.gov/arcgis/rest/services/CountyWebMap/Tax_Assessors_County_Web_Map/MapServer/29",
3183
3748
  serviceType: "MapServer",
3184
- layerIndex: 28,
3749
+ layerIndex: 29,
3185
3750
  layerName: "Tax Parcels",
3186
3751
  supportsQuery: true,
3187
3752
  corsEnabled: null,
@@ -3194,15 +3759,13 @@ var mississippi_default = {
3194
3759
  { name: "STATE", label: "State", searchable: false },
3195
3760
  { name: "ZIP_CODE", label: "ZIP Code", searchable: false },
3196
3761
  { name: "FULL_ADDR", label: "Full Site Address", searchable: true },
3197
- { name: "ACREAGE", label: "Acreage", searchable: false },
3198
- { name: "DEED_BOOK1", label: "Deed Book", searchable: false },
3199
- { name: "DEED_PAGE1", label: "Deed Page", searchable: false }
3762
+ { name: "ACREAGE", label: "Acreage", searchable: false }
3200
3763
  ],
3201
- 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",
3764
+ 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",
3202
3765
  license: "public",
3203
3766
  licenseUrl: "https://www.desotocountyms.gov/205/GIS-Maps-Data",
3204
3767
  status: "live",
3205
- lastVerified: "2026-05-15",
3768
+ lastVerified: "2026-06-06",
3206
3769
  verifiedBy: "manual"
3207
3770
  }
3208
3771
  ],
@@ -3211,7 +3774,7 @@ var mississippi_default = {
3211
3774
  url: "https://desotocounty-dcms-gis.hub.arcgis.com/",
3212
3775
  email: null
3213
3776
  },
3214
- 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."
3777
+ 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."
3215
3778
  }
3216
3779
  ]
3217
3780
  };
@@ -3221,8 +3784,55 @@ var missouri_default = {
3221
3784
  stateSlug: "missouri",
3222
3785
  stateName: "Missouri",
3223
3786
  stateAbbrev: "MO",
3224
- lastUpdated: "2026-05-15",
3787
+ lastUpdated: "2026-06-20",
3225
3788
  counties: [
3789
+ {
3790
+ id: "mo-jackson",
3791
+ state: "MO",
3792
+ stateName: "Missouri",
3793
+ stateSlug: "missouri",
3794
+ county: "Jackson",
3795
+ countySlug: "jackson-county",
3796
+ countyFips: "29095",
3797
+ hasPublicRest: true,
3798
+ endpoints: [
3799
+ {
3800
+ url: "https://gis.mijackson.org/countygis/rest/services/RealEstate/RealEstateParcels/FeatureServer/0",
3801
+ serviceType: "FeatureServer",
3802
+ layerIndex: 0,
3803
+ layerName: "RealEstateParcels",
3804
+ supportsQuery: true,
3805
+ corsEnabled: null,
3806
+ searchFields: [
3807
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
3808
+ { name: "OWNER", label: "Owner Name", searchable: true },
3809
+ { name: "OWNER2", label: "Owner Name 2", searchable: false },
3810
+ { name: "O_ADDRESS", label: "Owner Address", searchable: false },
3811
+ { name: "O_CITY", label: "Owner City", searchable: false },
3812
+ { name: "O_STATE", label: "Owner State", searchable: false },
3813
+ { name: "O_ZIP", label: "Owner ZIP", searchable: false },
3814
+ { name: "P_FULLADD", label: "Property Full Address", searchable: true },
3815
+ { name: "P_CITY", label: "Property City", searchable: false },
3816
+ { name: "P_STATE", label: "Property State", searchable: false },
3817
+ { name: "P_ZIP", label: "Property ZIP", searchable: false },
3818
+ { name: "P_ACREAGE", label: "Acreage", searchable: false },
3819
+ { name: "LIBERPAGE", label: "Liber/Page (deed reference)", searchable: false }
3820
+ ],
3821
+ 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",
3822
+ license: "public",
3823
+ licenseUrl: "https://gis.mijackson.org/",
3824
+ status: "live",
3825
+ lastVerified: "2026-06-20",
3826
+ verifiedBy: "automated"
3827
+ }
3828
+ ],
3829
+ contact: {
3830
+ department: "Jackson County GIS (Assessed Services Division)",
3831
+ url: "https://jacksongov.org/residents/property-information",
3832
+ email: null
3833
+ },
3834
+ 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."
3835
+ },
3226
3836
  {
3227
3837
  id: "mo-st-louis",
3228
3838
  state: "MO",
@@ -3265,7 +3875,205 @@ var missouri_default = {
3265
3875
  url: "https://gis.stlouiscountymo.gov/",
3266
3876
  email: null
3267
3877
  },
3268
- 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."
3878
+ 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."
3879
+ }
3880
+ ]
3881
+ };
3882
+
3883
+ // data/montana.json
3884
+ var montana_default = {
3885
+ stateSlug: "montana",
3886
+ stateName: "Montana",
3887
+ stateAbbrev: "MT",
3888
+ lastUpdated: "2026-06-20",
3889
+ counties: [
3890
+ {
3891
+ id: "mt-yellowstone",
3892
+ state: "MT",
3893
+ stateName: "Montana",
3894
+ stateSlug: "montana",
3895
+ county: "Yellowstone",
3896
+ countySlug: "yellowstone-county",
3897
+ countyFips: "30111",
3898
+ hasPublicRest: true,
3899
+ endpoints: [
3900
+ {
3901
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3902
+ serviceType: "MapServer",
3903
+ layerIndex: 0,
3904
+ layerName: "Parcels",
3905
+ supportsQuery: true,
3906
+ corsEnabled: null,
3907
+ searchFields: [
3908
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
3909
+ { name: "OwnerName", label: "Owner Name", searchable: true },
3910
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
3911
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
3912
+ { name: "OwnerCity", label: "Owner City", searchable: false },
3913
+ { name: "OwnerState", label: "Owner State", searchable: false },
3914
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
3915
+ { name: "AddressLine1", label: "Property Address", searchable: true },
3916
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
3917
+ { name: "CountyName", label: "County Name (Yellowstone)", searchable: false },
3918
+ { name: "COUNTYCD", label: "County Code (3 = Yellowstone)", searchable: false },
3919
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3920
+ { name: "TaxYear", label: "Tax Year", searchable: false }
3921
+ ],
3922
+ 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",
3923
+ license: "public",
3924
+ licenseUrl: "https://gisservicemt.gov/",
3925
+ status: "live",
3926
+ lastVerified: "2026-06-20",
3927
+ verifiedBy: "automated"
3928
+ }
3929
+ ],
3930
+ contact: {
3931
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
3932
+ url: "https://msl.mt.gov/geoinfo/",
3933
+ email: null
3934
+ },
3935
+ 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)."
3936
+ },
3937
+ {
3938
+ id: "mt-missoula",
3939
+ state: "MT",
3940
+ stateName: "Montana",
3941
+ stateSlug: "montana",
3942
+ county: "Missoula",
3943
+ countySlug: "missoula-county",
3944
+ countyFips: "30063",
3945
+ hasPublicRest: true,
3946
+ endpoints: [
3947
+ {
3948
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3949
+ serviceType: "MapServer",
3950
+ layerIndex: 0,
3951
+ layerName: "Parcels",
3952
+ supportsQuery: true,
3953
+ corsEnabled: null,
3954
+ searchFields: [
3955
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
3956
+ { name: "OwnerName", label: "Owner Name", searchable: true },
3957
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
3958
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
3959
+ { name: "OwnerCity", label: "Owner City", searchable: false },
3960
+ { name: "OwnerState", label: "Owner State", searchable: false },
3961
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
3962
+ { name: "AddressLine1", label: "Property Address", searchable: true },
3963
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
3964
+ { name: "CountyName", label: "County Name (Missoula)", searchable: false },
3965
+ { name: "COUNTYCD", label: "County Code (4 = Missoula)", searchable: false },
3966
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3967
+ { name: "TaxYear", label: "Tax Year", searchable: false }
3968
+ ],
3969
+ 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",
3970
+ license: "public",
3971
+ licenseUrl: "https://gisservicemt.gov/",
3972
+ status: "live",
3973
+ lastVerified: "2026-06-20",
3974
+ verifiedBy: "automated"
3975
+ }
3976
+ ],
3977
+ contact: {
3978
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
3979
+ url: "https://msl.mt.gov/geoinfo/",
3980
+ email: null
3981
+ },
3982
+ 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."
3983
+ },
3984
+ {
3985
+ id: "mt-cascade",
3986
+ state: "MT",
3987
+ stateName: "Montana",
3988
+ stateSlug: "montana",
3989
+ county: "Cascade",
3990
+ countySlug: "cascade-county",
3991
+ countyFips: "30013",
3992
+ hasPublicRest: true,
3993
+ endpoints: [
3994
+ {
3995
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3996
+ serviceType: "MapServer",
3997
+ layerIndex: 0,
3998
+ layerName: "Parcels",
3999
+ supportsQuery: true,
4000
+ corsEnabled: null,
4001
+ searchFields: [
4002
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
4003
+ { name: "OwnerName", label: "Owner Name", searchable: true },
4004
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
4005
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
4006
+ { name: "OwnerCity", label: "Owner City", searchable: false },
4007
+ { name: "OwnerState", label: "Owner State", searchable: false },
4008
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
4009
+ { name: "AddressLine1", label: "Property Address", searchable: true },
4010
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
4011
+ { name: "CountyName", label: "County Name (Cascade)", searchable: false },
4012
+ { name: "COUNTYCD", label: "County Code (2 = Cascade)", searchable: false },
4013
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4014
+ { name: "TaxYear", label: "Tax Year", searchable: false }
4015
+ ],
4016
+ 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",
4017
+ license: "public",
4018
+ licenseUrl: "https://gisservicemt.gov/",
4019
+ status: "live",
4020
+ lastVerified: "2026-06-20",
4021
+ verifiedBy: "automated"
4022
+ }
4023
+ ],
4024
+ contact: {
4025
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
4026
+ url: "https://msl.mt.gov/geoinfo/",
4027
+ email: null
4028
+ },
4029
+ 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."
4030
+ },
4031
+ {
4032
+ id: "mt-flathead",
4033
+ state: "MT",
4034
+ stateName: "Montana",
4035
+ stateSlug: "montana",
4036
+ county: "Flathead",
4037
+ countySlug: "flathead-county",
4038
+ countyFips: "30029",
4039
+ hasPublicRest: true,
4040
+ endpoints: [
4041
+ {
4042
+ url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
4043
+ serviceType: "MapServer",
4044
+ layerIndex: 0,
4045
+ layerName: "Parcels",
4046
+ supportsQuery: true,
4047
+ corsEnabled: null,
4048
+ searchFields: [
4049
+ { name: "PARCELID", label: "Parcel ID", searchable: true },
4050
+ { name: "OwnerName", label: "Owner Name", searchable: true },
4051
+ { name: "OwnerAddress1", label: "Owner Address Line 1", searchable: false },
4052
+ { name: "OwnerAddress2", label: "Owner Address Line 2", searchable: false },
4053
+ { name: "OwnerCity", label: "Owner City", searchable: false },
4054
+ { name: "OwnerState", label: "Owner State", searchable: false },
4055
+ { name: "OwnerZipCode", label: "Owner ZIP Code", searchable: false },
4056
+ { name: "AddressLine1", label: "Property Address", searchable: true },
4057
+ { name: "CityStateZip", label: "Property City/State/ZIP", searchable: false },
4058
+ { name: "CountyName", label: "County Name (Flathead)", searchable: false },
4059
+ { name: "COUNTYCD", label: "County Code (7 = Flathead)", searchable: false },
4060
+ { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4061
+ { name: "TaxYear", label: "Tax Year", searchable: false }
4062
+ ],
4063
+ 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",
4064
+ license: "public",
4065
+ licenseUrl: "https://gisservicemt.gov/",
4066
+ status: "live",
4067
+ lastVerified: "2026-06-20",
4068
+ verifiedBy: "automated"
4069
+ }
4070
+ ],
4071
+ contact: {
4072
+ department: "Montana State Library / Montana Spatial Data Infrastructure (MSDI)",
4073
+ url: "https://msl.mt.gov/geoinfo/",
4074
+ email: null
4075
+ },
4076
+ 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."
3269
4077
  }
3270
4078
  ]
3271
4079
  };
@@ -3320,7 +4128,7 @@ var nebraska_default = {
3320
4128
  url: "https://dogis.org/",
3321
4129
  email: null
3322
4130
  },
3323
- 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."
4131
+ 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."
3324
4132
  },
3325
4133
  {
3326
4134
  id: "ne-lancaster",
@@ -3362,7 +4170,7 @@ var nebraska_default = {
3362
4170
  url: "https://www.lancaster.ne.gov/1485/GIS",
3363
4171
  email: null
3364
4172
  },
3365
- 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."
4173
+ 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."
3366
4174
  },
3367
4175
  {
3368
4176
  id: "ne-sarpy",
@@ -3404,7 +4212,7 @@ var nebraska_default = {
3404
4212
  url: "https://www.sarpy.gov/187/Geographic-Information-System-GIS",
3405
4213
  email: null
3406
4214
  },
3407
- 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."
4215
+ 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."
3408
4216
  }
3409
4217
  ]
3410
4218
  };
@@ -3504,7 +4312,7 @@ var nevada_default = {
3504
4312
  url: "https://explore-washoe.opendata.arcgis.com/",
3505
4313
  email: null
3506
4314
  },
3507
- 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."
4315
+ 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."
3508
4316
  }
3509
4317
  ]
3510
4318
  };
@@ -3648,11 +4456,11 @@ var new_jersey_default = {
3648
4456
  }
3649
4457
  ],
3650
4458
  contact: {
3651
- department: "NJ Office of GIS (NJOGIS) \u2014 Statewide MOD-IV Composite",
4459
+ department: "NJ Office of GIS (NJOGIS), Statewide MOD-IV Composite",
3652
4460
  url: "https://www.njogis.com/",
3653
4461
  email: null
3654
4462
  },
3655
- 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."
4463
+ 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."
3656
4464
  },
3657
4465
  {
3658
4466
  id: "nj-monmouth",
@@ -4030,20 +4838,71 @@ var new_jersey_default = {
4030
4838
  searchable: false
4031
4839
  }
4032
4840
  ],
4033
- 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",
4841
+ 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",
4842
+ license: "public",
4843
+ licenseUrl: "https://www.nj.gov/njgin/",
4844
+ status: "live",
4845
+ lastVerified: "2026-05-15",
4846
+ verifiedBy: "manual"
4847
+ }
4848
+ ],
4849
+ contact: {
4850
+ department: "NJ Office of Information Technology, Office of GIS (NJOGIS)",
4851
+ url: "https://www.nj.gov/njgin/",
4852
+ email: null
4853
+ },
4854
+ 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."
4855
+ }
4856
+ ]
4857
+ };
4858
+
4859
+ // data/new-mexico.json
4860
+ var new_mexico_default = {
4861
+ stateSlug: "new-mexico",
4862
+ stateName: "New Mexico",
4863
+ stateAbbrev: "NM",
4864
+ lastUpdated: "2026-06-05",
4865
+ counties: [
4866
+ {
4867
+ id: "nm-bernalillo",
4868
+ state: "NM",
4869
+ stateName: "New Mexico",
4870
+ stateSlug: "new-mexico",
4871
+ county: "Bernalillo",
4872
+ countySlug: "bernalillo-county",
4873
+ countyFips: "35001",
4874
+ hasPublicRest: true,
4875
+ endpoints: [
4876
+ {
4877
+ url: "https://assessormap.bernco.gov/server/rest/services/Enterprise_Assessment_And_Tax/Public_Access_Parcel_Data_EAT/MapServer/0",
4878
+ serviceType: "MapServer",
4879
+ layerIndex: 0,
4880
+ layerName: "Parcels",
4881
+ supportsQuery: true,
4882
+ corsEnabled: null,
4883
+ searchFields: [
4884
+ { name: "UPC", label: "Unique Parcel Code (APN)", searchable: true },
4885
+ { name: "OWNER", label: "Owner Name", searchable: true },
4886
+ { name: "SITUSADD", label: "Situs Address", searchable: true },
4887
+ { name: "SITUSCITY", label: "Situs City", searchable: true },
4888
+ { name: "OWNADD", label: "Owner Mailing Address", searchable: true },
4889
+ { name: "OWNCITY", label: "Owner Mailing City", searchable: true },
4890
+ { name: "OWNZIPCODE", label: "Owner ZIP Code", searchable: true }
4891
+ ],
4892
+ 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",
4034
4893
  license: "public",
4035
- licenseUrl: "https://www.nj.gov/njgin/",
4894
+ licenseUrl: "https://www.bernco.gov/assessor/assessors-gis-maps/",
4036
4895
  status: "live",
4037
- lastVerified: "2026-05-15",
4038
- verifiedBy: "manual"
4896
+ lastVerified: "2026-06-05",
4897
+ verifiedBy: "automated"
4039
4898
  }
4040
4899
  ],
4041
4900
  contact: {
4042
- department: "NJ Office of Information Technology, Office of GIS (NJOGIS)",
4043
- url: "https://www.nj.gov/njgin/",
4901
+ department: "Bernalillo County Assessor's Office GIS",
4902
+ url: "https://www.bernco.gov/assessor/assessors-gis-maps/",
4044
4903
  email: null
4045
4904
  },
4046
- 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."
4905
+ 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."
4047
4906
  }
4048
4907
  ]
4049
4908
  };
@@ -4124,7 +4983,7 @@ var new_york_default = {
4124
4983
  url: "https://nycplanning.github.io/db-pluto/",
4125
4984
  email: null
4126
4985
  },
4127
- 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."
4986
+ 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."
4128
4987
  },
4129
4988
  {
4130
4989
  id: "ny-erie",
@@ -4169,7 +5028,7 @@ var new_york_default = {
4169
5028
  }
4170
5029
  ],
4171
5030
  contact: {
4172
- department: "Erie County Department of Environment and Planning \u2014 GIS Division",
5031
+ department: "Erie County Department of Environment and Planning, GIS Division",
4173
5032
  url: "https://www.erie.gov/environment/gis",
4174
5033
  email: null
4175
5034
  },
@@ -4265,7 +5124,7 @@ var new_york_default = {
4265
5124
  url: "https://gisservices.its.ny.gov/arcgis/rest/services/NYS_Tax_Parcels_Public/MapServer",
4266
5125
  email: null
4267
5126
  },
4268
- 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."
5127
+ 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."
4269
5128
  },
4270
5129
  {
4271
5130
  id: "ny-suffolk",
@@ -4285,7 +5144,7 @@ var new_york_default = {
4285
5144
  supportsQuery: true,
4286
5145
  corsEnabled: null,
4287
5146
  searchFields: [
4288
- { name: "COUNTY_NAME", label: "County Name \u2014 filter with 'Suffolk'", searchable: true },
5147
+ { name: "COUNTY_NAME", label: "County Name, filter with 'Suffolk'", searchable: true },
4289
5148
  { name: "PRIMARY_OWNER", label: "Primary Owner Name", searchable: true },
4290
5149
  { name: "ADD_OWNER", label: "Additional Owner Name", searchable: true },
4291
5150
  { name: "PARCEL_ADDR", label: "Parcel Address", searchable: true },
@@ -4315,7 +5174,7 @@ var new_york_default = {
4315
5174
  url: "https://www.its.ny.gov/gis",
4316
5175
  email: null
4317
5176
  },
4318
- 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."
5177
+ 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."
4319
5178
  },
4320
5179
  {
4321
5180
  id: "ny-westchester",
@@ -4335,7 +5194,7 @@ var new_york_default = {
4335
5194
  supportsQuery: true,
4336
5195
  corsEnabled: null,
4337
5196
  searchFields: [
4338
- { name: "COUNTY_NAME", label: "County Name \u2014 filter with 'Westchester'", searchable: true },
5197
+ { name: "COUNTY_NAME", label: "County Name, filter with 'Westchester'", searchable: true },
4339
5198
  { name: "PRIMARY_OWNER", label: "Primary Owner Name", searchable: true },
4340
5199
  { name: "ADD_OWNER", label: "Additional Owner Name", searchable: true },
4341
5200
  { name: "PARCEL_ADDR", label: "Parcel Address", searchable: true },
@@ -4362,7 +5221,7 @@ var new_york_default = {
4362
5221
  url: "https://www.its.ny.gov/gis",
4363
5222
  email: null
4364
5223
  },
4365
- 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."
5224
+ 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."
4366
5225
  }
4367
5226
  ]
4368
5227
  };
@@ -4451,11 +5310,11 @@ var north_carolina_default = {
4451
5310
  }
4452
5311
  ],
4453
5312
  contact: {
4454
- department: "Mecklenburg County GIS \u2014 Geospatial Information Services (Charlotte-Mecklenburg joint GIS)",
5313
+ department: "Mecklenburg County GIS, Geospatial Information Services (Charlotte-Mecklenburg joint GIS)",
4455
5314
  url: "https://gis.mecknc.gov/",
4456
5315
  email: null
4457
5316
  },
4458
- 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."
5317
+ 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."
4459
5318
  },
4460
5319
  {
4461
5320
  id: "nc-forsyth",
@@ -4496,7 +5355,7 @@ var north_carolina_default = {
4496
5355
  }
4497
5356
  ],
4498
5357
  contact: {
4499
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5358
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4500
5359
  url: "https://www.nconemap.gov/pages/parcels",
4501
5360
  email: null
4502
5361
  },
@@ -4536,7 +5395,7 @@ var north_carolina_default = {
4536
5395
  }
4537
5396
  ],
4538
5397
  contact: {
4539
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5398
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4540
5399
  url: "https://www.nconemap.gov/pages/parcels",
4541
5400
  email: null
4542
5401
  },
@@ -4620,7 +5479,7 @@ var north_carolina_default = {
4620
5479
  }
4621
5480
  ],
4622
5481
  contact: {
4623
- department: "NC OneMap / NC Geographic Information Coordinating Council (GICC) \u2014 statewide parcel layer",
5482
+ department: "NC OneMap / NC Geographic Information Coordinating Council (GICC), statewide parcel layer",
4624
5483
  url: "https://www.nconemap.gov/pages/parcels",
4625
5484
  email: null
4626
5485
  },
@@ -4672,6 +5531,65 @@ var north_carolina_default = {
4672
5531
  ]
4673
5532
  };
4674
5533
 
5534
+ // data/north-dakota.json
5535
+ var north_dakota_default = {
5536
+ stateSlug: "north-dakota",
5537
+ stateName: "North Dakota",
5538
+ stateAbbrev: "ND",
5539
+ lastUpdated: "2026-06-20",
5540
+ counties: [
5541
+ {
5542
+ id: "nd-cass",
5543
+ state: "ND",
5544
+ stateName: "North Dakota",
5545
+ stateSlug: "north-dakota",
5546
+ county: "Cass",
5547
+ countySlug: "cass-county",
5548
+ countyFips: "38017",
5549
+ hasPublicRest: true,
5550
+ endpoints: [
5551
+ {
5552
+ url: "https://gisweb.casscountynd.gov/arcgis/rest/services/Public/CountyParcels/MapServer/0",
5553
+ serviceType: "MapServer",
5554
+ layerIndex: 0,
5555
+ layerName: "CountyParcels",
5556
+ supportsQuery: true,
5557
+ corsEnabled: null,
5558
+ searchFields: [
5559
+ { name: "GISPIN", label: "GIS Parcel ID", searchable: true },
5560
+ { name: "PIN", label: "Parcel Identification Number", searchable: true },
5561
+ { name: "DASHPIN", label: "Dash PIN", searchable: true },
5562
+ { name: "Name", label: "Owner Name", searchable: true },
5563
+ { name: "PropertyAddress", label: "Property Address", searchable: true },
5564
+ { name: "LMVENU", label: "Land Market Value (per unit)", searchable: false },
5565
+ { name: "VENUDESC", label: "Venue Description", searchable: false },
5566
+ { name: "Section", label: "Section", searchable: false },
5567
+ { name: "Lot", label: "Lot", searchable: false },
5568
+ { name: "CommRes", label: "Commercial/Residential flag", searchable: false },
5569
+ { name: "Exempt", label: "Exempt flag", searchable: false },
5570
+ { name: "ACRES", label: "Acres", searchable: false },
5571
+ { name: "LGDESC", label: "Legal Description", searchable: false },
5572
+ { name: "SchoolDistrict", label: "School District", searchable: false },
5573
+ { name: "FireDistrict", label: "Fire District", searchable: false }
5574
+ ],
5575
+ 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",
5576
+ license: "public",
5577
+ licenseUrl: "https://gisweb.casscountynd.gov/",
5578
+ status: "live",
5579
+ lastVerified: "2026-06-20",
5580
+ verifiedBy: "automated"
5581
+ }
5582
+ ],
5583
+ contact: {
5584
+ department: "Cass County GIS / Cass County Commission",
5585
+ url: "https://www.casscountynd.gov/county/depts/gis/Pages/default.aspx",
5586
+ email: null
5587
+ },
5588
+ 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."
5589
+ }
5590
+ ]
5591
+ };
5592
+
4675
5593
  // data/ohio.json
4676
5594
  var ohio_default = {
4677
5595
  stateSlug: "ohio",
@@ -4804,7 +5722,7 @@ var ohio_default = {
4804
5722
  url: "https://data-franklincova.opendata.arcgis.com/",
4805
5723
  email: null
4806
5724
  },
4807
- 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."
5725
+ 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."
4808
5726
  },
4809
5727
  {
4810
5728
  id: "oh-cuyahoga",
@@ -4849,7 +5767,7 @@ var ohio_default = {
4849
5767
  url: "https://fiscalhub.gis.cuyahogacounty.gov/",
4850
5768
  email: "gis@cuyahogacounty.us"
4851
5769
  },
4852
- 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."
5770
+ 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."
4853
5771
  },
4854
5772
  {
4855
5773
  id: "oh-hamilton",
@@ -4891,7 +5809,7 @@ var ohio_default = {
4891
5809
  }
4892
5810
  ],
4893
5811
  contact: {
4894
- department: "CAGIS (Cincinnati Area Geographic Information System) \u2014 Hamilton County Auditor",
5812
+ department: "CAGIS (Cincinnati Area Geographic Information System), Hamilton County Auditor",
4895
5813
  url: "https://www.hamilton-co.org/auditor/maps",
4896
5814
  email: null
4897
5815
  },
@@ -4978,12 +5896,63 @@ var ohio_default = {
4978
5896
  ]
4979
5897
  };
4980
5898
 
5899
+ // data/oklahoma.json
5900
+ var oklahoma_default = {
5901
+ stateSlug: "oklahoma",
5902
+ stateName: "Oklahoma",
5903
+ stateAbbrev: "OK",
5904
+ lastUpdated: "2026-06-05",
5905
+ counties: [
5906
+ {
5907
+ id: "ok-oklahoma",
5908
+ state: "OK",
5909
+ stateName: "Oklahoma",
5910
+ stateSlug: "oklahoma",
5911
+ county: "Oklahoma",
5912
+ countySlug: "oklahoma-county",
5913
+ countyFips: "40109",
5914
+ hasPublicRest: true,
5915
+ endpoints: [
5916
+ {
5917
+ url: "https://services8.arcgis.com/euhkr1dAJeQBIjV0/arcgis/rest/services/TaxParcelsPublics_view/FeatureServer/0",
5918
+ serviceType: "FeatureServer",
5919
+ layerIndex: 0,
5920
+ layerName: "TaxParcelPublic",
5921
+ supportsQuery: true,
5922
+ corsEnabled: null,
5923
+ searchFields: [
5924
+ { name: "accountno", label: "Account Number (APN)", searchable: true },
5925
+ { name: "name1", label: "Owner Name (Primary)", searchable: true },
5926
+ { name: "name2", label: "Owner Name 2", searchable: true },
5927
+ { name: "name3", label: "Owner Name 3", searchable: true },
5928
+ { name: "location", label: "Property Address", searchable: true },
5929
+ { name: "locationcity", label: "Property City", searchable: true },
5930
+ { name: "mailingaddress1", label: "Mailing Address", searchable: true }
5931
+ ],
5932
+ 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",
5933
+ license: "public",
5934
+ licenseUrl: "https://ok-county-gis-hub-ok-co.hub.arcgis.com/",
5935
+ status: "live",
5936
+ lastVerified: "2026-06-05",
5937
+ verifiedBy: "automated"
5938
+ }
5939
+ ],
5940
+ contact: {
5941
+ department: "Oklahoma County GIS",
5942
+ url: "https://ok-county-gis-hub-ok-co.hub.arcgis.com/",
5943
+ email: null
5944
+ },
5945
+ 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."
5946
+ }
5947
+ ]
5948
+ };
5949
+
4981
5950
  // data/oregon.json
4982
5951
  var oregon_default = {
4983
5952
  stateSlug: "oregon",
4984
5953
  stateName: "Oregon",
4985
5954
  stateAbbrev: "OR",
4986
- lastUpdated: "2026-05-15",
5955
+ lastUpdated: "2026-06-06",
4987
5956
  counties: [
4988
5957
  {
4989
5958
  id: "or-multnomah",
@@ -5015,7 +5984,7 @@ var oregon_default = {
5015
5984
  { name: "SITUS_CITY", label: "Situs City", searchable: true },
5016
5985
  { name: "SITUS_ZIP", label: "Situs ZIP", searchable: false },
5017
5986
  { name: "RMV_PROPER", label: "Real Market Value (Property)", searchable: false },
5018
- { name: "PROP_TYPE", label: "Property Type", searchable: false }
5987
+ { name: "PROPERTY_C", label: "Property Class", searchable: false }
5019
5988
  ],
5020
5989
  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",
5021
5990
  license: "public",
@@ -5026,11 +5995,11 @@ var oregon_default = {
5026
5995
  }
5027
5996
  ],
5028
5997
  contact: {
5029
- department: "Multnomah County Department of Assessment, Recording and Taxation \u2014 GIS",
5998
+ department: "Multnomah County Department of Assessment, Recording and Taxation, GIS",
5030
5999
  url: "https://gis-multco.opendata.arcgis.com/",
5031
6000
  email: null
5032
6001
  },
5033
- 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."
6002
+ 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."
5034
6003
  },
5035
6004
  {
5036
6005
  id: "or-lane",
@@ -5043,7 +6012,7 @@ var oregon_default = {
5043
6012
  hasPublicRest: true,
5044
6013
  endpoints: [
5045
6014
  {
5046
- url: "http://lcmaps.lanecounty.org/arcgis/rest/services/AT/AddressParcelSales/MapServer/2",
6015
+ url: "https://lcgispubags.lanecountyor.gov/arcgis/rest/services/LaneCountyMaps/AddressParcel/MapServer/2",
5047
6016
  serviceType: "MapServer",
5048
6017
  layerIndex: 2,
5049
6018
  layerName: "Parcels",
@@ -5058,28 +6027,22 @@ var oregon_default = {
5058
6027
  { name: "ADDR3", label: "Owner Address Line 3", searchable: true },
5059
6028
  { name: "OWNERCITY", label: "Owner City", searchable: false },
5060
6029
  { name: "OWNERPRVST", label: "Owner State", searchable: false },
5061
- { name: "OWNERZIP", label: "Owner ZIP", searchable: false },
5062
- { name: "SITUS", label: "Situs Address", searchable: true },
5063
- { name: "GEOCITY", label: "Geographic City", searchable: true },
5064
- { name: "MAPACRES", label: "Map Acreage", searchable: false },
5065
- { name: "RMVLND", label: "Real Market Value (Land)", searchable: false },
5066
- { name: "RMVIMP", label: "Real Market Value (Improvements)", searchable: false },
5067
- { name: "RMVTOTAL", label: "Real Market Value (Total)", searchable: false }
6030
+ { name: "OWNERZIP", label: "Owner ZIP", searchable: false }
5068
6031
  ],
5069
- 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",
6032
+ 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",
5070
6033
  license: "public",
5071
6034
  licenseUrl: "https://www.lanecounty.org/business/maps",
5072
6035
  status: "live",
5073
- lastVerified: "2026-05-15",
6036
+ lastVerified: "2026-06-06",
5074
6037
  verifiedBy: "manual"
5075
6038
  }
5076
6039
  ],
5077
6040
  contact: {
5078
- department: "Lane County Information Services \u2014 Maps & GIS",
6041
+ department: "Lane County Information Services, Maps & GIS",
5079
6042
  url: "https://www.lanecounty.org/business/maps",
5080
6043
  email: null
5081
6044
  },
5082
- 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."
6045
+ 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."
5083
6046
  },
5084
6047
  {
5085
6048
  id: "or-marion",
@@ -5167,11 +6130,11 @@ var pennsylvania_default = {
5167
6130
  }
5168
6131
  ],
5169
6132
  contact: {
5170
- department: "Allegheny County Department of Information Technology \u2014 GIS Division",
6133
+ department: "Allegheny County Department of Information Technology, GIS Division",
5171
6134
  url: "https://openac-alcogis.opendata.arcgis.com/",
5172
6135
  email: "gis@alleghenycounty.us"
5173
6136
  },
5174
- 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."
6137
+ 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."
5175
6138
  },
5176
6139
  {
5177
6140
  id: "pa-philadelphia",
@@ -5209,7 +6172,7 @@ var pennsylvania_default = {
5209
6172
  }
5210
6173
  ],
5211
6174
  contact: {
5212
- department: "City of Philadelphia \u2014 Office of Innovation and Technology (OIT) CityGeo / Philadelphia Water Department",
6175
+ department: "City of Philadelphia, Office of Innovation and Technology (OIT) CityGeo / Philadelphia Water Department",
5213
6176
  url: "https://data-phl.opendata.arcgis.com/",
5214
6177
  email: null
5215
6178
  },
@@ -5240,7 +6203,7 @@ var rhode_island_default = {
5240
6203
  url: "https://www.rigis.org/",
5241
6204
  email: null
5242
6205
  },
5243
- 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."
6206
+ 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."
5244
6207
  }
5245
6208
  ]
5246
6209
  };
@@ -5250,7 +6213,7 @@ var south_carolina_default = {
5250
6213
  stateSlug: "south-carolina",
5251
6214
  stateName: "South Carolina",
5252
6215
  stateAbbrev: "SC",
5253
- lastUpdated: "2026-05-15",
6216
+ lastUpdated: "2026-06-06",
5254
6217
  counties: [
5255
6218
  {
5256
6219
  id: "sc-greenville",
@@ -5298,7 +6261,7 @@ var south_carolina_default = {
5298
6261
  url: "https://www.gcgis.org/",
5299
6262
  email: "gis@greenvillecounty.org"
5300
6263
  },
5301
- 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."
6264
+ 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."
5302
6265
  },
5303
6266
  {
5304
6267
  id: "sc-charleston",
@@ -5311,31 +6274,30 @@ var south_carolina_default = {
5311
6274
  hasPublicRest: true,
5312
6275
  endpoints: [
5313
6276
  {
5314
- url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/Parcel_Search/MapServer/4",
6277
+ url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/61",
5315
6278
  serviceType: "MapServer",
5316
- layerIndex: 4,
6279
+ layerIndex: 61,
5317
6280
  layerName: "Parcels",
5318
6281
  supportsQuery: true,
5319
6282
  corsEnabled: null,
5320
6283
  searchFields: [
5321
- { name: "PID", label: "Parcel ID (FEATURES.SDE.P_POLY_PARCEL.PID)", searchable: true },
5322
- { name: "GPIN", label: "GIS Parcel ID (FEATURES.SDE.P_POLY_PARCEL.GPIN)", searchable: true },
5323
- { name: "OWNER1", label: "Owner Name 1 (FEATURES.SDE.CAMA.OWNER1)", searchable: true },
5324
- { name: "OWNER2", label: "Owner Name 2 (FEATURES.SDE.CAMA.OWNER2)", searchable: false },
5325
- { name: "MAIL_ST_NAME", label: "Mailing Street Name (FEATURES.SDE.CAMA.MAIL_ST_NAME)", searchable: false },
5326
- { name: "MAIL_ST_NO", label: "Mailing Street Number (FEATURES.SDE.CAMA.MAIL_ST_NO)", searchable: false },
5327
- { name: "MAIL_CITY", label: "Mailing City (FEATURES.SDE.CAMA.MAIL_CITY)", searchable: false },
5328
- { name: "MAIL_STATE", label: "Mailing State (FEATURES.SDE.CAMA.MAIL_STATE)", searchable: false },
5329
- { name: "MAIL_ZIP", label: "Mailing ZIP (FEATURES.SDE.CAMA.MAIL_ZIP)", searchable: false },
5330
- { name: "TAX_DISTRICT", label: "Tax District (FEATURES.SDE.CAMA.TAX_DISTRICT)", searchable: false },
5331
- { name: "LEGAL_DESCR", label: "Legal Description (FEATURES.SDE.CAMA.LEGAL_DESCR)", searchable: false },
5332
- { name: "SUBDIVISION", label: "Subdivision (FEATURES.SDE.CAMA.SUBDIVISION)", searchable: false }
6284
+ { name: "PID", label: "Parcel ID", searchable: true },
6285
+ { name: "OWNER1", label: "Owner Name 1", searchable: true },
6286
+ { name: "OWNER2", label: "Owner Name 2", searchable: false },
6287
+ { name: "MAIL_ST_NAME", label: "Mailing Street Name", searchable: false },
6288
+ { name: "MAIL_ST_NO", label: "Mailing Street Number", searchable: false },
6289
+ { name: "MAIL_CITY", label: "Mailing City", searchable: false },
6290
+ { name: "MAIL_STATE", label: "Mailing State", searchable: false },
6291
+ { name: "MAIL_ZIP", label: "Mailing ZIP", searchable: false },
6292
+ { name: "TAX_DISTRICT", label: "Tax District", searchable: false },
6293
+ { name: "LEGAL_DESCR", label: "Legal Description", searchable: false },
6294
+ { name: "SUBDIVISION", label: "Subdivision", searchable: false }
5333
6295
  ],
5334
- 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",
6296
+ 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",
5335
6297
  license: "public",
5336
6298
  licenseUrl: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
5337
6299
  status: "live",
5338
- lastVerified: "2026-05-15",
6300
+ lastVerified: "2026-06-06",
5339
6301
  verifiedBy: "manual"
5340
6302
  }
5341
6303
  ],
@@ -5344,7 +6306,67 @@ var south_carolina_default = {
5344
6306
  url: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
5345
6307
  email: null
5346
6308
  },
5347
- 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.'
6309
+ 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.'
6310
+ }
6311
+ ]
6312
+ };
6313
+
6314
+ // data/south-dakota.json
6315
+ var south_dakota_default = {
6316
+ stateSlug: "south-dakota",
6317
+ stateName: "South Dakota",
6318
+ stateAbbrev: "SD",
6319
+ lastUpdated: "2026-06-20",
6320
+ counties: [
6321
+ {
6322
+ id: "sd-minnehaha",
6323
+ state: "SD",
6324
+ stateName: "South Dakota",
6325
+ stateSlug: "south-dakota",
6326
+ county: "Minnehaha",
6327
+ countySlug: "minnehaha-county",
6328
+ countyFips: "46099",
6329
+ hasPublicRest: true,
6330
+ endpoints: [
6331
+ {
6332
+ url: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0",
6333
+ serviceType: "MapServer",
6334
+ layerIndex: 0,
6335
+ layerName: "Parcels",
6336
+ supportsQuery: true,
6337
+ corsEnabled: null,
6338
+ searchFields: [
6339
+ { name: "TAG", label: "Parcel Tag (Parcel ID)", searchable: true },
6340
+ { name: "MRTNM1", label: "Owner Name 1", searchable: true },
6341
+ { name: "MRTNM2", label: "Owner Name 2", searchable: false },
6342
+ { name: "MRTCTY", label: "Owner City", searchable: false },
6343
+ { name: "MRTSTATE", label: "Owner State", searchable: false },
6344
+ { name: "MRTZPC", label: "Owner ZIP", searchable: false },
6345
+ { name: "FULL_ADDRESS", label: "Property Full Address", searchable: true },
6346
+ { name: "NWLOCN", label: "New Location (property street number)", searchable: false },
6347
+ { name: "NWPRED", label: "Street Pre-directional", searchable: false },
6348
+ { name: "NWLOCS", label: "Street Name", searchable: true },
6349
+ { name: "NWSTYP", label: "Street Type", searchable: false },
6350
+ { name: "MAP_ID", label: "Map ID", searchable: false },
6351
+ { name: "LOT", label: "Lot", searchable: false },
6352
+ { name: "BLOCK", label: "Block", searchable: false },
6353
+ { name: "TRACT", label: "Tract", searchable: false },
6354
+ { name: "SUBDIVISION", label: "Subdivision", searchable: false }
6355
+ ],
6356
+ 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",
6357
+ license: "public",
6358
+ licenseUrl: "https://gis.minnehahacounty.org/",
6359
+ status: "live",
6360
+ lastVerified: "2026-06-20",
6361
+ verifiedBy: "automated"
6362
+ }
6363
+ ],
6364
+ contact: {
6365
+ department: "Minnehaha County GIS / Minnehaha County Equalization",
6366
+ url: "https://www.minnehahacounty.org/dept/eq/eq.php",
6367
+ email: null
6368
+ },
6369
+ 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."
5348
6370
  }
5349
6371
  ]
5350
6372
  };
@@ -5354,7 +6376,7 @@ var tennessee_default = {
5354
6376
  stateSlug: "tennessee",
5355
6377
  stateName: "Tennessee",
5356
6378
  stateAbbrev: "TN",
5357
- lastUpdated: "2026-05-15",
6379
+ lastUpdated: "2026-06-06",
5358
6380
  counties: [
5359
6381
  {
5360
6382
  id: "tn-davidson",
@@ -5405,11 +6427,12 @@ var tennessee_default = {
5405
6427
  }
5406
6428
  ],
5407
6429
  contact: {
5408
- department: "Metro Nashville GIS \u2014 Planning Department",
6430
+ department: "Metro Nashville GIS, Planning Department",
5409
6431
  url: "https://maps.nashville.gov/",
5410
6432
  email: null
5411
6433
  },
5412
- 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."
6434
+ 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.",
6435
+ relatedPropertyCitySlug: "nashville"
5413
6436
  },
5414
6437
  {
5415
6438
  id: "tn-shelby",
@@ -5447,7 +6470,7 @@ var tennessee_default = {
5447
6470
  license: "public",
5448
6471
  licenseUrl: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
5449
6472
  status: "live",
5450
- lastVerified: "2026-05-15",
6473
+ lastVerified: "2026-06-06",
5451
6474
  verifiedBy: "manual"
5452
6475
  }
5453
6476
  ],
@@ -5456,7 +6479,7 @@ var tennessee_default = {
5456
6479
  url: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
5457
6480
  email: null
5458
6481
  },
5459
- 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."
6482
+ 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."
5460
6483
  },
5461
6484
  {
5462
6485
  id: "tn-hamilton",
@@ -5489,8 +6512,8 @@ var tennessee_default = {
5489
6512
  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",
5490
6513
  license: "public",
5491
6514
  licenseUrl: "https://gis.hamiltontn.gov/",
5492
- status: "live",
5493
- lastVerified: "2026-05-15",
6515
+ status: "unreachable",
6516
+ lastVerified: "2026-06-06",
5494
6517
  verifiedBy: "manual"
5495
6518
  }
5496
6519
  ],
@@ -5499,7 +6522,7 @@ var tennessee_default = {
5499
6522
  url: "https://gis.hamiltontn.gov/",
5500
6523
  email: null
5501
6524
  },
5502
- 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."
6525
+ 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."
5503
6526
  }
5504
6527
  ]
5505
6528
  };
@@ -5509,7 +6532,7 @@ var texas_default = {
5509
6532
  stateSlug: "texas",
5510
6533
  stateName: "Texas",
5511
6534
  stateAbbrev: "TX",
5512
- lastUpdated: "2026-05-14",
6535
+ lastUpdated: "2026-06-06",
5513
6536
  counties: [
5514
6537
  {
5515
6538
  id: "tx-harris",
@@ -5552,7 +6575,7 @@ var texas_default = {
5552
6575
  url: "https://geo-harriscounty.opendata.arcgis.com/",
5553
6576
  email: null
5554
6577
  },
5555
- 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."
6578
+ 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."
5556
6579
  },
5557
6580
  {
5558
6581
  id: "tx-travis",
@@ -5565,26 +6588,22 @@ var texas_default = {
5565
6588
  hasPublicRest: true,
5566
6589
  endpoints: [
5567
6590
  {
5568
- url: "https://gis.traviscountytx.gov/server1/rest/services/Boundaries_and_Jurisdictions/TCAD_public/MapServer/0",
5569
- serviceType: "MapServer",
6591
+ url: "https://services.arcgis.com/0L95CJ0VTaxqcmED/arcgis/rest/services/EXTERNAL_tcad_parcel/FeatureServer/0",
6592
+ serviceType: "FeatureServer",
5570
6593
  layerIndex: 0,
5571
6594
  layerName: "TCAD Parcels",
5572
6595
  supportsQuery: true,
5573
6596
  corsEnabled: null,
5574
6597
  searchFields: [
5575
6598
  { name: "PROP_ID", label: "Property ID", searchable: true },
5576
- { name: "geo_id", label: "Geo ID", searchable: true },
5577
- { name: "situs_address", label: "Situs Address (combined)", searchable: true },
5578
- { name: "situs_num", label: "Situs Street Number", searchable: true },
5579
- { name: "situs_street", label: "Situs Street Name", searchable: true },
5580
- { name: "situs_city", label: "Situs City", searchable: true },
5581
- { name: "situs_zip", label: "Situs ZIP", searchable: true }
6599
+ { name: "PID_10", label: "Parcel ID (10-char)", searchable: true },
6600
+ { name: "SITUS", label: "Situs Address", searchable: true }
5582
6601
  ],
5583
- 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",
6602
+ 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",
5584
6603
  license: "public",
5585
6604
  licenseUrl: "https://tnr-traviscountytx.opendata.arcgis.com/",
5586
6605
  status: "live",
5587
- lastVerified: "2026-05-11",
6606
+ lastVerified: "2026-06-20",
5588
6607
  verifiedBy: "manual"
5589
6608
  }
5590
6609
  ],
@@ -5593,7 +6612,13 @@ var texas_default = {
5593
6612
  url: "https://tnr-traviscountytx.opendata.arcgis.com/",
5594
6613
  email: null
5595
6614
  },
5596
- 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."
6615
+ 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.`,
6616
+ ownerFieldNote: {
6617
+ 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.",
6618
+ source: { label: "Owner search at traviscad.org", url: "https://traviscad.org/propertysearch/" }
6619
+ },
6620
+ relatedZoningCitySlug: "austin",
6621
+ relatedPropertyCitySlug: "austin"
5597
6622
  },
5598
6623
  {
5599
6624
  id: "tx-tarrant",
@@ -5634,7 +6659,7 @@ var texas_default = {
5634
6659
  url: "https://gis-tad.opendata.arcgis.com/",
5635
6660
  email: null
5636
6661
  },
5637
- 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."
6662
+ 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."
5638
6663
  },
5639
6664
  {
5640
6665
  id: "tx-dallas",
@@ -5682,7 +6707,12 @@ var texas_default = {
5682
6707
  url: "https://www.dallascad.org/",
5683
6708
  email: null
5684
6709
  },
5685
- 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."
6710
+ 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.",
6711
+ dataVintage: {
6712
+ 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.",
6713
+ source: { label: "Current records at dallascad.org", url: "https://www.dallascad.org/" }
6714
+ },
6715
+ relatedPropertyCitySlug: "dallas"
5686
6716
  },
5687
6717
  {
5688
6718
  id: "tx-bexar",
@@ -5727,11 +6757,11 @@ var texas_default = {
5727
6757
  }
5728
6758
  ],
5729
6759
  contact: {
5730
- department: "Bexar County Information Technology \u2014 GIS Division / Bexar County Appraisal District (BCAD)",
6760
+ department: "Bexar County Information Technology, GIS Division / Bexar County Appraisal District (BCAD)",
5731
6761
  url: "https://www.bexar.org/2720/GIS-Data",
5732
6762
  email: null
5733
6763
  },
5734
- 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."
6764
+ 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."
5735
6765
  },
5736
6766
  {
5737
6767
  id: "tx-collin",
@@ -5769,7 +6799,7 @@ var texas_default = {
5769
6799
  url: "https://www.collincad.org/",
5770
6800
  email: null
5771
6801
  },
5772
- 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."
6802
+ 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."
5773
6803
  },
5774
6804
  {
5775
6805
  id: "tx-denton",
@@ -5807,7 +6837,7 @@ var texas_default = {
5807
6837
  url: "https://gis.dentoncounty.gov/",
5808
6838
  email: null
5809
6839
  },
5810
- 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."
6840
+ 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."
5811
6841
  },
5812
6842
  {
5813
6843
  id: "tx-el-paso",
@@ -5857,25 +6887,25 @@ var texas_default = {
5857
6887
  hasPublicRest: true,
5858
6888
  endpoints: [
5859
6889
  {
5860
- url: "https://gisweb.fortbendcountytx.gov/arcgis/rest/services/General/Parcels/MapServer/0",
5861
- serviceType: "MapServer",
5862
- layerIndex: 0,
6890
+ url: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1",
6891
+ serviceType: "FeatureServer",
6892
+ layerIndex: 1,
5863
6893
  layerName: "Parcels",
5864
6894
  supportsQuery: true,
5865
6895
  corsEnabled: null,
5866
6896
  searchFields: [
5867
- { name: "CAD_Reference_Number", label: "CAD Reference Number (R-number)", searchable: true },
6897
+ { name: "CADReferenceNumber", label: "CAD Reference Number (R-number)", searchable: true },
5868
6898
  { name: "PropertyNumber", label: "Property Number", searchable: true },
5869
6899
  { name: "OwnerName", label: "Owner Name", searchable: true },
5870
6900
  { name: "Situs", label: "Situs Address", searchable: true },
5871
6901
  { name: "OwnerAddress1", label: "Owner Mailing Address", searchable: false },
5872
6902
  { name: "OwnerCity", label: "Owner City", searchable: false }
5873
6903
  ],
5874
- 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",
6904
+ 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",
5875
6905
  license: "public",
5876
6906
  licenseUrl: "https://fbcad-open-data-hub-fortbend.hub.arcgis.com/",
5877
6907
  status: "live",
5878
- lastVerified: "2026-05-30",
6908
+ lastVerified: "2026-06-06",
5879
6909
  verifiedBy: "manual"
5880
6910
  }
5881
6911
  ],
@@ -5884,7 +6914,7 @@ var texas_default = {
5884
6914
  url: "https://www.fbcad.org/",
5885
6915
  email: null
5886
6916
  },
5887
- 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."
6917
+ 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)."
5888
6918
  },
5889
6919
  {
5890
6920
  id: "tx-williamson",
@@ -5979,7 +7009,7 @@ var utah_default = {
5979
7009
  url: "https://gis.utah.gov/data/cadastre/parcels/",
5980
7010
  email: null
5981
7011
  },
5982
- 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."
7012
+ 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."
5983
7013
  },
5984
7014
  {
5985
7015
  id: "ut-davis",
@@ -6025,7 +7055,7 @@ var utah_default = {
6025
7055
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6026
7056
  email: null
6027
7057
  },
6028
- 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."
7058
+ 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."
6029
7059
  },
6030
7060
  {
6031
7061
  id: "ut-utah",
@@ -6071,7 +7101,7 @@ var utah_default = {
6071
7101
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6072
7102
  email: null
6073
7103
  },
6074
- 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."
7104
+ 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."
6075
7105
  },
6076
7106
  {
6077
7107
  id: "ut-weber",
@@ -6117,7 +7147,7 @@ var utah_default = {
6117
7147
  url: "https://gis.utah.gov/data/cadastre/parcels/",
6118
7148
  email: null
6119
7149
  },
6120
- 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."
7150
+ 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."
6121
7151
  }
6122
7152
  ]
6123
7153
  };
@@ -6147,7 +7177,7 @@ var vermont_default = {
6147
7177
  supportsQuery: true,
6148
7178
  corsEnabled: null,
6149
7179
  searchFields: [
6150
- { name: "SPAN", label: "School Property Account Number (SPAN) \u2014 VT parcel key", searchable: true },
7180
+ { name: "SPAN", label: "School Property Account Number (SPAN), VT parcel key", searchable: true },
6151
7181
  { name: "TOWN", label: "Town Numeric ID", searchable: true },
6152
7182
  { name: "TNAME", label: "Town Name", searchable: true },
6153
7183
  { name: "OWNER1", label: "Owner Name (line 1)", searchable: true },
@@ -6178,7 +7208,7 @@ var vermont_default = {
6178
7208
  url: "https://vcgi.vermont.gov/data-and-programs/parcel-program",
6179
7209
  email: null
6180
7210
  },
6181
- 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."
7211
+ 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."
6182
7212
  }
6183
7213
  ]
6184
7214
  };
@@ -6188,7 +7218,7 @@ var virginia_default = {
6188
7218
  stateSlug: "virginia",
6189
7219
  stateName: "Virginia",
6190
7220
  stateAbbrev: "VA",
6191
- lastUpdated: "2026-05-11",
7221
+ lastUpdated: "2026-06-20",
6192
7222
  counties: [
6193
7223
  {
6194
7224
  id: "va-fairfax",
@@ -6227,6 +7257,48 @@ var virginia_default = {
6227
7257
  email: null
6228
7258
  },
6229
7259
  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."
7260
+ },
7261
+ {
7262
+ id: "va-prince-william",
7263
+ state: "VA",
7264
+ stateName: "Virginia",
7265
+ stateSlug: "virginia",
7266
+ county: "Prince William",
7267
+ countySlug: "prince-william-county",
7268
+ countyFips: "51153",
7269
+ hasPublicRest: true,
7270
+ endpoints: [
7271
+ {
7272
+ url: "https://gisweb.pwcva.gov/arcgis/rest/services/OpenData/OpenData/MapServer/0",
7273
+ serviceType: "MapServer",
7274
+ layerIndex: 0,
7275
+ layerName: "Parcels",
7276
+ supportsQuery: true,
7277
+ corsEnabled: null,
7278
+ searchFields: [
7279
+ { name: "CAMA_OWNER_CUR", label: "Owner Name (current, from CAMA)", searchable: true },
7280
+ { name: "CAMA_DEEDOWNER", label: "Deed Owner Name", searchable: true },
7281
+ { name: "GPIN", label: "GPIN (Geographic Parcel ID, e.g. 7201-09-8851)", searchable: true },
7282
+ { name: "ST_NO", label: "Street Number", searchable: true },
7283
+ { name: "ST_NAME", label: "Street Name", searchable: true },
7284
+ { name: "ST_TYPE", label: "Street Type", searchable: false },
7285
+ { name: "CITY", label: "City", searchable: false },
7286
+ { name: "ZIP", label: "ZIP Code", searchable: false }
7287
+ ],
7288
+ 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",
7289
+ license: "public",
7290
+ licenseUrl: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7291
+ status: "live",
7292
+ lastVerified: "2026-06-20",
7293
+ verifiedBy: "manual"
7294
+ }
7295
+ ],
7296
+ contact: {
7297
+ department: "Prince William County GIS",
7298
+ url: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7299
+ email: null
7300
+ },
7301
+ 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."
6230
7302
  }
6231
7303
  ]
6232
7304
  };
@@ -6236,7 +7308,7 @@ var washington_default = {
6236
7308
  stateSlug: "washington",
6237
7309
  stateName: "Washington",
6238
7310
  stateAbbrev: "WA",
6239
- lastUpdated: "2026-05-15",
7311
+ lastUpdated: "2026-06-06",
6240
7312
  counties: [
6241
7313
  {
6242
7314
  id: "wa-king",
@@ -6263,8 +7335,8 @@ var washington_default = {
6263
7335
  sampleQuery: "https://gismaps.kingcounty.gov/arcgis/rest/services/Property/KingCo_Parcels/MapServer/0/query?where=PIN%3D%270000200001%27&outFields=*&f=json",
6264
7336
  license: "public",
6265
7337
  licenseUrl: "https://kingcounty.gov/services/gis/GISData.aspx",
6266
- status: "unverified",
6267
- lastVerified: "2026-05-07",
7338
+ status: "live",
7339
+ lastVerified: "2026-06-06",
6268
7340
  verifiedBy: "manual"
6269
7341
  }
6270
7342
  ],
@@ -6273,7 +7345,8 @@ var washington_default = {
6273
7345
  url: "https://kingcounty.gov/services/gis.aspx",
6274
7346
  email: null
6275
7347
  },
6276
- 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."
7348
+ 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.",
7349
+ relatedPropertyCitySlug: "seattle"
6277
7350
  },
6278
7351
  {
6279
7352
  id: "wa-spokane",
@@ -6317,7 +7390,7 @@ var washington_default = {
6317
7390
  url: "https://gisdatacatalog-spokanecounty.opendata.arcgis.com/",
6318
7391
  email: null
6319
7392
  },
6320
- 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."
7393
+ 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."
6321
7394
  },
6322
7395
  {
6323
7396
  id: "wa-snohomish",
@@ -6338,7 +7411,6 @@ var washington_default = {
6338
7411
  corsEnabled: null,
6339
7412
  searchFields: [
6340
7413
  { name: "PARCEL_ID", label: "Parcel ID", searchable: true },
6341
- { name: "LRSN", label: "LRSN (Assessor Account Number)", searchable: true },
6342
7414
  { name: "OWNERNAME", label: "Owner Name", searchable: true },
6343
7415
  { name: "TAXPRNAME", label: "Taxpayer Name", searchable: true },
6344
7416
  { name: "SITUSHOUSE", label: "Situs House Number", searchable: false },
@@ -6355,8 +7427,8 @@ var washington_default = {
6355
7427
  license: "public",
6356
7428
  licenseUrl: "https://snohomish-county-open-data-portal-snoco-gis.hub.arcgis.com/",
6357
7429
  status: "live",
6358
- lastVerified: "2026-05-15",
6359
- verifiedBy: "manual"
7430
+ lastVerified: "2026-06-27",
7431
+ verifiedBy: "automated"
6360
7432
  }
6361
7433
  ],
6362
7434
  contact: {
@@ -6364,7 +7436,7 @@ var washington_default = {
6364
7436
  url: "https://snohomish-county-open-data-portal-snoco-gis.hub.arcgis.com/",
6365
7437
  email: null
6366
7438
  },
6367
- 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."
7439
+ 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."
6368
7440
  },
6369
7441
  {
6370
7442
  id: "wa-thurston",
@@ -6416,6 +7488,184 @@ var washington_default = {
6416
7488
  ]
6417
7489
  };
6418
7490
 
7491
+ // data/west-virginia.json
7492
+ var west_virginia_default = {
7493
+ stateSlug: "west-virginia",
7494
+ stateName: "West Virginia",
7495
+ stateAbbrev: "WV",
7496
+ lastUpdated: "2026-06-20",
7497
+ counties: [
7498
+ {
7499
+ id: "wv-kanawha",
7500
+ state: "WV",
7501
+ stateName: "West Virginia",
7502
+ stateSlug: "west-virginia",
7503
+ county: "Kanawha",
7504
+ countySlug: "kanawha-county",
7505
+ countyFips: "54039",
7506
+ hasPublicRest: true,
7507
+ endpoints: [
7508
+ {
7509
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7510
+ serviceType: "MapServer",
7511
+ layerIndex: 0,
7512
+ layerName: "WVParcels",
7513
+ supportsQuery: true,
7514
+ corsEnabled: null,
7515
+ searchFields: [
7516
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7517
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7518
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7519
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7520
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7521
+ { name: "CountyID", label: "County ID string ('20' = Kanawha)", searchable: false },
7522
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7523
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7524
+ ],
7525
+ 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",
7526
+ license: "public",
7527
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7528
+ status: "live",
7529
+ lastVerified: "2026-06-20",
7530
+ verifiedBy: "automated"
7531
+ }
7532
+ ],
7533
+ contact: {
7534
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7535
+ url: "https://www.mapwv.gov/",
7536
+ email: null
7537
+ },
7538
+ 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."
7539
+ },
7540
+ {
7541
+ id: "wv-monongalia",
7542
+ state: "WV",
7543
+ stateName: "West Virginia",
7544
+ stateSlug: "west-virginia",
7545
+ county: "Monongalia",
7546
+ countySlug: "monongalia-county",
7547
+ countyFips: "54061",
7548
+ hasPublicRest: true,
7549
+ endpoints: [
7550
+ {
7551
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7552
+ serviceType: "MapServer",
7553
+ layerIndex: 0,
7554
+ layerName: "WVParcels",
7555
+ supportsQuery: true,
7556
+ corsEnabled: null,
7557
+ searchFields: [
7558
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7559
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7560
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7561
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7562
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7563
+ { name: "CountyID", label: "County ID string ('31' = Monongalia)", searchable: false },
7564
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7565
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7566
+ ],
7567
+ 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",
7568
+ license: "public",
7569
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7570
+ status: "live",
7571
+ lastVerified: "2026-06-20",
7572
+ verifiedBy: "automated"
7573
+ }
7574
+ ],
7575
+ contact: {
7576
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7577
+ url: "https://www.mapwv.gov/",
7578
+ email: null
7579
+ },
7580
+ 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."
7581
+ },
7582
+ {
7583
+ id: "wv-raleigh",
7584
+ state: "WV",
7585
+ stateName: "West Virginia",
7586
+ stateSlug: "west-virginia",
7587
+ county: "Raleigh",
7588
+ countySlug: "raleigh-county",
7589
+ countyFips: "54081",
7590
+ hasPublicRest: true,
7591
+ endpoints: [
7592
+ {
7593
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7594
+ serviceType: "MapServer",
7595
+ layerIndex: 0,
7596
+ layerName: "WVParcels",
7597
+ supportsQuery: true,
7598
+ corsEnabled: null,
7599
+ searchFields: [
7600
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7601
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7602
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7603
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7604
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7605
+ { name: "CountyID", label: "County ID string ('40' = Raleigh)", searchable: false },
7606
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7607
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7608
+ ],
7609
+ 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",
7610
+ license: "public",
7611
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7612
+ status: "live",
7613
+ lastVerified: "2026-06-20",
7614
+ verifiedBy: "automated"
7615
+ }
7616
+ ],
7617
+ contact: {
7618
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7619
+ url: "https://www.mapwv.gov/",
7620
+ email: null
7621
+ },
7622
+ 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."
7623
+ },
7624
+ {
7625
+ id: "wv-cabell",
7626
+ state: "WV",
7627
+ stateName: "West Virginia",
7628
+ stateSlug: "west-virginia",
7629
+ county: "Cabell",
7630
+ countySlug: "cabell-county",
7631
+ countyFips: "54011",
7632
+ hasPublicRest: true,
7633
+ endpoints: [
7634
+ {
7635
+ url: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0",
7636
+ serviceType: "MapServer",
7637
+ layerIndex: 0,
7638
+ layerName: "WVParcels",
7639
+ supportsQuery: true,
7640
+ corsEnabled: null,
7641
+ searchFields: [
7642
+ { name: "CleanParcelID", label: "Parcel ID (20-digit compound)", searchable: true },
7643
+ { name: "FullOwnerName", label: "Full Owner Name", searchable: true },
7644
+ { name: "FullPhysicalAddress", label: "Physical (Situs) Address", searchable: true },
7645
+ { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7646
+ { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7647
+ { name: "CountyID", label: "County ID string ('06' = Cabell)", searchable: false },
7648
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7649
+ { name: "Acres_C", label: "Calculated Acres", searchable: false }
7650
+ ],
7651
+ 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",
7652
+ license: "public",
7653
+ licenseUrl: "https://www.mapwv.gov/parcel/",
7654
+ status: "live",
7655
+ lastVerified: "2026-06-20",
7656
+ verifiedBy: "automated"
7657
+ }
7658
+ ],
7659
+ contact: {
7660
+ department: "WV GIS Technical Center (WVGISTC) / West Virginia University",
7661
+ url: "https://www.mapwv.gov/",
7662
+ email: null
7663
+ },
7664
+ 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."
7665
+ }
7666
+ ]
7667
+ };
7668
+
6419
7669
  // data/wisconsin.json
6420
7670
  var wisconsin_default = {
6421
7671
  stateSlug: "wisconsin",
@@ -6787,7 +8037,67 @@ var wisconsin_default = {
6787
8037
  url: "https://www.browncountywi.gov/departments/planning-and-land-services/land-information-office/",
6788
8038
  email: null
6789
8039
  },
6790
- 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."
8040
+ 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."
8041
+ }
8042
+ ]
8043
+ };
8044
+
8045
+ // data/wyoming.json
8046
+ var wyoming_default = {
8047
+ stateSlug: "wyoming",
8048
+ stateName: "Wyoming",
8049
+ stateAbbrev: "WY",
8050
+ lastUpdated: "2026-06-20",
8051
+ counties: [
8052
+ {
8053
+ id: "wy-laramie",
8054
+ state: "WY",
8055
+ stateName: "Wyoming",
8056
+ stateSlug: "wyoming",
8057
+ county: "Laramie",
8058
+ countySlug: "laramie-county",
8059
+ countyFips: "56021",
8060
+ hasPublicRest: true,
8061
+ endpoints: [
8062
+ {
8063
+ url: "https://maps.laramiecounty.com/arcgis/rest/services/Planning/SmartGovParcels/MapServer/1",
8064
+ serviceType: "MapServer",
8065
+ layerIndex: 1,
8066
+ layerName: "SmartGovParcels",
8067
+ supportsQuery: true,
8068
+ corsEnabled: null,
8069
+ searchFields: [
8070
+ { name: "statepidn", label: "State Parcel ID Number", searchable: true },
8071
+ { name: "accountno", label: "Account Number", searchable: true },
8072
+ { name: "owner_name1", label: "Owner Name 1", searchable: true },
8073
+ { name: "owner_name2", label: "Owner Name 2", searchable: false },
8074
+ { name: "owner_address", label: "Owner Address", searchable: false },
8075
+ { name: "owner_town", label: "Owner Town", searchable: false },
8076
+ { name: "owner_state", label: "Owner State", searchable: false },
8077
+ { name: "owner_zip", label: "Owner ZIP", searchable: false },
8078
+ { name: "site_address1", label: "Site Address", searchable: true },
8079
+ { name: "site_address2", label: "Site Address 2", searchable: false },
8080
+ { name: "site_town", label: "Site Town", searchable: false },
8081
+ { name: "site_state", label: "Site State", searchable: false },
8082
+ { name: "site_zip", label: "Site ZIP", searchable: false },
8083
+ { name: "trsec", label: "Township/Range/Section", searchable: false },
8084
+ { name: "fema_zone", label: "FEMA Flood Zone", searchable: false },
8085
+ { name: "latitude", label: "Latitude", searchable: false }
8086
+ ],
8087
+ 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",
8088
+ license: "public",
8089
+ licenseUrl: "https://maps.laramiecounty.com/",
8090
+ status: "live",
8091
+ lastVerified: "2026-06-20",
8092
+ verifiedBy: "automated"
8093
+ }
8094
+ ],
8095
+ contact: {
8096
+ department: "Laramie County GIS / Laramie County Planning and Development",
8097
+ url: "https://www.laramiecounty.com/171/GIS",
8098
+ email: null
8099
+ },
8100
+ 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."
6791
8101
  }
6792
8102
  ]
6793
8103
  };
@@ -6798,11 +8108,14 @@ var POPULATED_STATES = {
6798
8108
  alabama: alabama_default,
6799
8109
  alaska: alaska_default,
6800
8110
  arizona: arizona_default,
8111
+ arkansas: arkansas_default,
6801
8112
  california: california_default,
6802
8113
  colorado: colorado_default,
6803
8114
  connecticut: connecticut_default,
8115
+ delaware: delaware_default,
6804
8116
  florida: florida_default,
6805
8117
  georgia: georgia_default,
8118
+ hawaii: hawaii_default,
6806
8119
  idaho: idaho_default,
6807
8120
  illinois: illinois_default,
6808
8121
  indiana: indiana_default,
@@ -6811,29 +8124,37 @@ var POPULATED_STATES = {
6811
8124
  kentucky: kentucky_default,
6812
8125
  louisiana: louisiana_default,
6813
8126
  maine: maine_default,
8127
+ maryland: maryland_default,
6814
8128
  massachusetts: massachusetts_default,
6815
8129
  michigan: michigan_default,
6816
8130
  minnesota: minnesota_default,
6817
8131
  mississippi: mississippi_default,
6818
8132
  missouri: missouri_default,
8133
+ montana: montana_default,
6819
8134
  nebraska: nebraska_default,
6820
8135
  nevada: nevada_default,
6821
8136
  "new-hampshire": new_hampshire_default,
6822
8137
  "new-jersey": new_jersey_default,
8138
+ "new-mexico": new_mexico_default,
6823
8139
  "new-york": new_york_default,
6824
8140
  "north-carolina": north_carolina_default,
8141
+ "north-dakota": north_dakota_default,
6825
8142
  ohio: ohio_default,
8143
+ oklahoma: oklahoma_default,
6826
8144
  oregon: oregon_default,
6827
8145
  pennsylvania: pennsylvania_default,
6828
8146
  "rhode-island": rhode_island_default,
6829
8147
  "south-carolina": south_carolina_default,
8148
+ "south-dakota": south_dakota_default,
6830
8149
  tennessee: tennessee_default,
6831
8150
  texas: texas_default,
6832
8151
  utah: utah_default,
6833
8152
  vermont: vermont_default,
6834
8153
  virginia: virginia_default,
6835
8154
  washington: washington_default,
6836
- wisconsin: wisconsin_default
8155
+ "west-virginia": west_virginia_default,
8156
+ wisconsin: wisconsin_default,
8157
+ wyoming: wyoming_default
6837
8158
  };
6838
8159
  var atlas = {
6839
8160
  version: atlasIndex.version,