@urbankitstudio/atlas 0.3.0 → 0.4.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.
package/README.md CHANGED
@@ -45,7 +45,20 @@ if (kane) {
45
45
  }
46
46
  ```
47
47
 
48
- ### 3. Build a parcel-lookup deep-link
48
+ ### 3. Look up a county by FIPS code
49
+
50
+ ```ts
51
+ import { findCountyByFips } from "@urbankitstudio/atlas";
52
+
53
+ const kane = findCountyByFips("17089"); // 5-digit county FIPS (state + county)
54
+ if (kane) {
55
+ console.log(kane.county, kane.stateSlug);
56
+ // → Kane illinois
57
+ }
58
+ // Unknown, malformed, or non-5-digit input returns undefined (never throws).
59
+ ```
60
+
61
+ ### 4. Build a parcel-lookup deep-link
49
62
 
50
63
  ```ts
51
64
  import { findCounty, buildParcelLookupDeepLink } from "@urbankitstudio/atlas";
@@ -62,6 +75,7 @@ const link = buildParcelLookupDeepLink(kane.endpoints[0]);
62
75
  | `listStates()` | `StateIndexEntry[]` — all 50 states + `populated` flag |
63
76
  | `findState(stateSlug)` | `StateFile \| undefined` |
64
77
  | `findCounty(stateSlug, countySlug)` | `CountyRecord \| undefined` |
78
+ | `findCountyByFips(fips)` | `CountyRecord \| undefined` — match by 5-digit county FIPS |
65
79
  | `listCountiesByState(stateSlug)` | `CountyRecord[]` |
66
80
  | `buildParcelLookupDeepLink(endpoint)` | URL string into the UrbanKit lookup tool |
67
81
  | `slugify(s)`, `countySlugFromName(s)` | string helpers matching the atlas slug convention |
@@ -80,7 +94,7 @@ atlas.byStateSlug; // Map<stateSlug, StateFile>
80
94
 
81
95
  ## Coverage today
82
96
 
83
- The atlas currently bundles 15 populated states (Arizona, California, Colorado, Florida, Georgia, Illinois, Minnesota, Nevada, New York, North Carolina, Ohio, Pennsylvania, Texas, Virginia, Washington) covering the largest counties in each. The remaining states are listed in the index with `populated: false`.
97
+ The atlas currently bundles **128 counties across 39 populated states**, covering the largest counties in each. Call `listStates()` and filter on `populated` for the live set; the remaining states are listed in the index with `populated: false`.
84
98
 
85
99
  Counties are added as their public REST endpoints are verified. Package versions bump when data refreshes — pin to a minor range (`^0.x`) to receive new counties without breaking changes.
86
100
 
@@ -38,7 +38,7 @@
38
38
  "url": "https://egis-lacounty.hub.arcgis.com/",
39
39
  "email": null
40
40
  },
41
- "notes": "Los Angeles County uses the 10-digit AIN format. The public LACounty_Cache MapServer is the long-standing endpoint exposed via the Parcel Lookup example URLs. Owner names are not on this public layer — for owner search, use the Assessor's portal."
41
+ "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 — owner name is not included, per California Government Code §7928.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 — 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)."
42
42
  },
43
43
  {
44
44
  "id": "ca-sonoma",
@@ -76,7 +76,7 @@
76
76
  "url": "https://gis-sonomacounty.hub.arcgis.com/",
77
77
  "email": null
78
78
  },
79
- "notes": "Sonoma County publishes parcels through the OWTSPublic FeatureService. APN format is XXX-XXX-XXX with hyphens. Owner names are not exposed on this public layer. The address schema was refactored 2026 — the old single SitusAddress field was replaced by SitusFormatted1/SitusFormatted2 plus structured parts (SitusStreetNo, SitusDirection, SitusStreetName, SitusStreetType, SitusUnitNumber, SitusCity)."
79
+ "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 §7928.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."
80
80
  },
81
81
  {
82
82
  "id": "ca-orange",
@@ -154,7 +154,7 @@
154
154
  "url": "https://data-sbcounty.opendata.arcgis.com/",
155
155
  "email": null
156
156
  },
157
- "notes": "21 fields confirmed including ParcelNumber, OwnerName, LandValue, ImprovementValue, PersonalPropertyValue, ExemptionValue, HomeOwnerExemption, Acreage, TaxStatus, TaxRateArea, Zoning, ZoningDescription, Jurisdiction. IMPORTANT: The OwnerName field exists but is redacted on all public records ('Protected Per CA Gov Code 7928.205') per California Assembly Bill 1785 (effective January 2023). Parcel Number and value fields remain accessible. Hosted on ArcGIS Online (services.arcgis.com/aA3snZwJfFkVyDuP). For owner name data, use the county assessor portal at arc.sbcounty.gov/property-information/."
157
+ "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."
158
158
  },
159
159
  {
160
160
  "id": "ca-san-diego",
@@ -97,7 +97,7 @@
97
97
  "url": "https://gis.colorado.gov/",
98
98
  "email": null
99
99
  },
100
- "notes": "El Paso County (Colorado Springs metro, pop. 730,000) is the second-most populous Colorado county. Uses the same Colorado statewide composite endpoint as Denver — query by countyName='El Paso' or countyFips='041'. Owner query confirmed: returns real El Paso County results (e.g., 'SMITH CHERYL LYNNE'). See the Denver entry for full field list. Colorado OIT 3-digit FIPS for El Paso is '041' (full 5-digit is '08041')."
100
+ "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."
101
101
  },
102
102
  {
103
103
  "id": "co-jefferson",
@@ -144,7 +144,7 @@
144
144
  "url": "https://gis.colorado.gov/",
145
145
  "email": null
146
146
  },
147
- "notes": "Jefferson County (Lakewood/Arvada/Golden, Denver west suburbs, pop. 582,000). Uses the same Colorado statewide composite endpoint as Denver — query by countyName='Jefferson' or countyFips='059'. Owner query confirmed: returns real Jefferson County results (e.g., 'SMITH STEVEN W' at '7347 W FREMONT DR LITTLETON'). Colorado OIT 3-digit FIPS for Jefferson is '059' (full 5-digit is '08059')."
147
+ "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."
148
148
  }
149
149
  ]
150
150
  }
package/data/florida.json CHANGED
@@ -44,7 +44,7 @@
44
44
  "url": "https://gis-mdc.opendata.arcgis.com/",
45
45
  "email": null
46
46
  },
47
- "notes": "44 fields confirmed. Layer 26 is within the 80-layer MD_LandInformation MapServer. Fields include TRUE_OWNER1/2/3, TRUE_SITE_ADDR, TRUE_MAILING_ADDR1-3, DOR_CODE_CUR, DOR_DESC, PRIMARY_ZONE, SUBDIVISION, BEDROOM_COUNT, BATHROOM_COUNT, YEAR_BUILT, LAND_VAL_CUR, BUILDING_VAL_CUR, TOTAL_VAL_CUR, SALE_DATE, SALE_PRICE, LOT_SIZE. Owner search works via UPPER() LIKE on TRUE_OWNER1. Folio number is the Miami-Dade parcel identifier (13 digits). Also in this service: Property @ PaGis (layer 24) — point layer, fewer fields."
47
+ "notes": "Miami-Dade County (pop. 2.7 million) uses a folio number as its parcel identifier -- a 13-digit code, not an APN; the county abbreviates its Property Appraiser office as PA or MDPA. The parcel layer is at gisweb.miamidade.gov (MD_LandInformation MapServer, layer 26) and exposes 44 confirmed fields. Owner-name search uses UPPER() LIKE on TRUE_OWNER1; the fields TRUE_OWNER1/2/3 cover up to three named owners. TRUE_SITE_ADDR is the formatted site address. TRUE_MAILING_ADDR1-3 holds the mailing address lines. Valuation fields include LAND_VAL_CUR, BUILDING_VAL_CUR, and TOTAL_VAL_CUR (all current-year). DOR_CODE_CUR and DOR_DESC identify the Florida Department of Revenue land-use classification. A sibling layer (Property @ PaGis, layer 24 of the same service) is a point layer with fewer fields -- use layer 26 for full attribute access. The MDPA portal at miamidade.gov/pa provides the authoritative full-record view including exemptions, appeals, and prior-year values not available on the REST layer. For folio-based lookups, the PA's PAPA search at miamidade.gov/pa/property_search.asp is publicly accessible."
48
48
  },
49
49
  {
50
50
  "id": "fl-orange",
@@ -249,7 +249,7 @@
249
249
  "url": "https://www.manateepao.com/",
250
250
  "email": null
251
251
  },
252
- "notes": "Manatee County Property Appraiser GIS Parcel Search layer. This is an exceptionally rich dataset — 200+ fields confirmed including PAR_OWNER_NAME1/2, PARID, SITUS_ADDRESS, SITUS_POSTAL_CITY/ZIP, PAR_MAIL_ADDR1/2/CITY/STATE/POSTALCD, CAD_JUST_VALUE, CAD_ASSESSED_CTY, SALE_PRICE_LAST, SALE_DATE_LAST, LAND_ACREAGE_CAMA, PAR_ZONING, PAR_SUBDIV_NAME, PAR_TYPE, BLDG_R1_YRBUILT, BLDG_R1_SQFTLIVNG, BLDG_R1_BEDRMS. Verified 2026-05-15: SMITH returns Bradenton addresses (SITUS_POSTAL_CITY: BRADENTON). Manatee County seat is Bradenton (pop. 370,000 county-wide)."
252
+ "notes": "Manatee County (Bradenton metro, pop. 420,000) Property Appraiser publishes one of the richest public parcel REST layers in Florida, with 200+ confirmed fields on the PARID-keyed parcel service. Owner fields: PAR_OWNER_NAME1/2. Site address: SITUS_ADDRESS, SITUS_POSTAL_CITY, SITUS_ZIP. Mailing address: PAR_MAIL_ADDR1/2/CITY/STATE/POSTALCD. Valuation: CAD_JUST_VALUE (just value), CAD_ASSESSED_CTY (county assessed), SALE_PRICE_LAST, SALE_DATE_LAST. Land: LAND_ACREAGE_CAMA, PAR_ZONING, PAR_SUBDIV_NAME, PAR_TYPE. Building (prefix BLDG_R1_): YRBUILT, SQFTLIVNG, BEDRMS, BATHSF (full), BATHSH (half), GRGEUNITS, HTDAREA, STORIES. Verified 2026-05-15: owner-name queries return Bradenton and Palmetto area results (SITUS_POSTAL_CITY). Unlike many county layers, Manatee exposes CAMA-grade building detail without requiring a separate records request. The Manatee County Property Appraiser portal at manateepao.com provides the full assessor record view for exemptions and prior-year values not surfaced in the REST layer."
253
253
  },
254
254
  {
255
255
  "id": "fl-sarasota",
@@ -294,6 +294,165 @@
294
294
  "email": null
295
295
  },
296
296
  "notes": "Sarasota County Property Appraiser parcel dataset hosted on ArcGIS Online (Sarasota County Enterprise GIS). Fields include ACCOUNT (parcel account number), NAME1/NAME_ADD2/3/4/5 (owner name lines), LOCN (street number), LOCD/LOCS/LOCT (direction/name/type), CITY, STATE, ZIP, UNIT. Mailing address uses NAME_ADD lines. Verified 2026-05-15: SMITH returns Sarasota-area addresses (LONGBOAT KEY, SUNAPEE NH mailing). Note CITY field contains mailing city not site city — for site address the LOCN+LOCS+LOCT fields must be concatenated. Sarasota County pop. 464,000."
297
+ },
298
+ {
299
+ "id": "fl-palm-beach",
300
+ "state": "FL",
301
+ "stateName": "Florida",
302
+ "stateSlug": "florida",
303
+ "county": "Palm Beach",
304
+ "countySlug": "palm-beach-county",
305
+ "countyFips": "12099",
306
+ "hasPublicRest": true,
307
+ "endpoints": [
308
+ {
309
+ "url": "https://services1.arcgis.com/ZWOoUZbtaYePLlPw/arcgis/rest/services/Parcels_and_Property_Details_WebMercator/FeatureServer/0",
310
+ "serviceType": "FeatureServer",
311
+ "layerIndex": 0,
312
+ "layerName": "Parcels and Property Details",
313
+ "supportsQuery": true,
314
+ "corsEnabled": null,
315
+ "searchFields": [
316
+ { "name": "OWNER_NAME1", "label": "Owner Name (Primary)", "searchable": true },
317
+ { "name": "OWNER_NAME2", "label": "Owner Name 2", "searchable": true },
318
+ { "name": "SITE_ADDR_STR", "label": "Site Address", "searchable": true },
319
+ { "name": "PARID", "label": "Parcel Control Number (PCN)", "searchable": true },
320
+ { "name": "MUNICIPALITY", "label": "Municipality", "searchable": true }
321
+ ],
322
+ "sampleQuery": "https://services1.arcgis.com/ZWOoUZbtaYePLlPw/arcgis/rest/services/Parcels_and_Property_Details_WebMercator/FeatureServer/0/query?where=UPPER(OWNER_NAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=PARID,OWNER_NAME1,SITE_ADDR_STR,MUNICIPALITY&returnGeometry=false&f=json&resultRecordCount=10",
323
+ "license": "public",
324
+ "licenseUrl": "https://opendata2-pbcgov.opendata.arcgis.com/",
325
+ "status": "live",
326
+ "lastVerified": "2026-05-30",
327
+ "verifiedBy": "manual"
328
+ }
329
+ ],
330
+ "contact": {
331
+ "department": "Palm Beach County Property Appraiser (PAPA) / PBCGOV GIS",
332
+ "url": "https://opendata2-pbcgov.opendata.arcgis.com/",
333
+ "email": null
334
+ },
335
+ "notes": "Palm Beach County, Florida (West Palm Beach / Boca Raton, pop. ~1.49M — 3rd most populous FL county) publishes a Property Appraiser parcels FeatureServer through the PBCGOV open-data portal. Owner search uses OWNER_NAME1 (with OWNER_NAME2 as a second owner slot); the combined site address is SITE_ADDR_STR; the parcel control number is PARID; MUNICIPALITY filters by city. Owner LIKE query confirmed live 2026-05-30. Records flagged CONFIDENTIAL under Florida public-records exemptions (s. 119.071, F.S. — for law enforcement, judges, and similar protected persons) have owner/mailing data suppressed; the majority of parcels are public."
336
+ },
337
+ {
338
+ "id": "fl-pinellas",
339
+ "state": "FL",
340
+ "stateName": "Florida",
341
+ "stateSlug": "florida",
342
+ "county": "Pinellas",
343
+ "countySlug": "pinellas-county",
344
+ "countyFips": "12103",
345
+ "hasPublicRest": true,
346
+ "endpoints": [
347
+ {
348
+ "url": "https://egis.pinellas.gov/gis/rest/services/PublicWebGIS/Parcels/MapServer/1",
349
+ "serviceType": "MapServer",
350
+ "layerIndex": 1,
351
+ "layerName": "Parcels",
352
+ "supportsQuery": true,
353
+ "corsEnabled": null,
354
+ "searchFields": [
355
+ { "name": "PARCELID", "label": "Parcel ID (18-digit)", "searchable": true },
356
+ { "name": "STRAP", "label": "STRAP Number", "searchable": true },
357
+ { "name": "OWNER1", "label": "Owner Name (Primary)", "searchable": true },
358
+ { "name": "OWNER2", "label": "Owner Name 2", "searchable": true },
359
+ { "name": "SITE_ADDRESS", "label": "Site Address", "searchable": true },
360
+ { "name": "OWNADD_1", "label": "Mailing Address", "searchable": false }
361
+ ],
362
+ "sampleQuery": "https://egis.pinellas.gov/gis/rest/services/PublicWebGIS/Parcels/MapServer/1/query?where=UPPER(OWNER1)%20LIKE%20UPPER('%25SMITH%25')&outFields=PARCELID,OWNER1,SITE_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
363
+ "license": "public",
364
+ "licenseUrl": "https://egis.pinellas.gov/",
365
+ "status": "live",
366
+ "lastVerified": "2026-05-30",
367
+ "verifiedBy": "manual"
368
+ }
369
+ ],
370
+ "contact": {
371
+ "department": "Pinellas County Property Appraiser (PCPAO) / Pinellas County Enterprise GIS",
372
+ "url": "https://www.pcpao.gov/",
373
+ "email": null
374
+ },
375
+ "notes": "Pinellas County, Florida (St. Petersburg / Clearwater, pop. ~960K) serves parcels through the Pinellas eGIS PublicWebGIS folder. The sibling AGO/Parcels/MapServer/0 layer on the same host exposes only survey/title fields (PGIS.ParcelsPublic.*) with no mailable owner name -- use PublicWebGIS/Parcels/MapServer/1, which carries OWNER1/OWNER2 plus owner mailing (OWNADD_1/OWNADD_2/OWNCITY/OWNSTATE/OWNZIP), SITE_ADDRESS, PARCELID (18-digit), STRAP, TAXABLE_VALUE, HOMESTEAD_EXEMP, USE_CODE, LAND_VALUE, IMP_VALUE, SALEDATE1, SALEPRICE1. Owner search uses UPPER(OWNER1) LIKE. Verified live 2026-05-30 (OWNER1 = FOUNDATION REALTY LLC). Source data is the Pinellas County Property Appraiser (PCPAO)."
376
+ },
377
+ {
378
+ "id": "fl-lee",
379
+ "state": "FL",
380
+ "stateName": "Florida",
381
+ "stateSlug": "florida",
382
+ "county": "Lee",
383
+ "countySlug": "lee-county",
384
+ "countyFips": "12071",
385
+ "hasPublicRest": true,
386
+ "endpoints": [
387
+ {
388
+ "url": "https://services2.arcgis.com/LvWGAAhHwbCJ2GMP/arcgis/rest/services/Lee_County_Parcels/FeatureServer/0",
389
+ "serviceType": "FeatureServer",
390
+ "layerIndex": 0,
391
+ "layerName": "Lee County Parcels",
392
+ "supportsQuery": true,
393
+ "corsEnabled": null,
394
+ "searchFields": [
395
+ { "name": "STRAP", "label": "STRAP Number (16-char)", "searchable": true },
396
+ { "name": "FOLIOID", "label": "Folio ID", "searchable": true },
397
+ { "name": "O_NAME", "label": "Owner Name", "searchable": true },
398
+ { "name": "O_OTHERS", "label": "Other Owners", "searchable": false },
399
+ { "name": "SITEADDR", "label": "Site Address", "searchable": true },
400
+ { "name": "O_ADDR1", "label": "Owner Mailing Address", "searchable": false }
401
+ ],
402
+ "sampleQuery": "https://services2.arcgis.com/LvWGAAhHwbCJ2GMP/arcgis/rest/services/Lee_County_Parcels/FeatureServer/0/query?where=UPPER(O_NAME)%20LIKE%20UPPER('%25SMITH%25')&outFields=STRAP,O_NAME,SITEADDR&returnGeometry=false&f=json&resultRecordCount=10",
403
+ "license": "public",
404
+ "licenseUrl": "https://hub.arcgis.com/datasets/LeeGIS::lee-county-parcels/explore",
405
+ "status": "live",
406
+ "lastVerified": "2026-05-30",
407
+ "verifiedBy": "manual"
408
+ }
409
+ ],
410
+ "contact": {
411
+ "department": "Lee County Property Appraiser / Lee County GIS (LeeGIS)",
412
+ "url": "https://www.leepa.org/",
413
+ "email": null
414
+ },
415
+ "notes": "Lee County, Florida (Fort Myers / Cape Coral, pop. ~760K) publishes parcels via an ArcGIS Online FeatureServer hosted by Lee County GIS (org LvWGAAhHwbCJ2GMP). Owner name is O_NAME (with O_OTHERS for additional owners); owner mailing is O_ADDR1/O_ADDR2/O_CITY/O_STATE/O_ZIP; the site address is SITEADDR/SITECITY; the parcel identifier is STRAP (16-character) with a numeric FOLIOID. Owner search uses UPPER(O_NAME) LIKE. Verified live 2026-05-30 (O_NAME = BECK DEAN R TR). The authoritative full record (exemptions, prior-year values) is at the Lee County Property Appraiser, leepa.org."
416
+ },
417
+ {
418
+ "id": "fl-pasco",
419
+ "state": "FL",
420
+ "stateName": "Florida",
421
+ "stateSlug": "florida",
422
+ "county": "Pasco",
423
+ "countySlug": "pasco-county",
424
+ "countyFips": "12101",
425
+ "hasPublicRest": true,
426
+ "endpoints": [
427
+ {
428
+ "url": "https://maps.pascopa.com/arcgis/rest/services/Parcels/MapServer/3",
429
+ "serviceType": "MapServer",
430
+ "layerIndex": 3,
431
+ "layerName": "Parcels",
432
+ "supportsQuery": true,
433
+ "corsEnabled": null,
434
+ "searchFields": [
435
+ { "name": "ParcelID", "label": "Parcel ID", "searchable": true },
436
+ { "name": "NAD_NAME_1", "label": "Owner Name 1", "searchable": true },
437
+ { "name": "NAD_NAME_2", "label": "Owner Name 2", "searchable": true },
438
+ { "name": "PHYS_STREET", "label": "Site Street Address", "searchable": true },
439
+ { "name": "PHYS_CITY", "label": "Site City", "searchable": false },
440
+ { "name": "NAD_ADD_1", "label": "Mailing Address", "searchable": false }
441
+ ],
442
+ "sampleQuery": "https://maps.pascopa.com/arcgis/rest/services/Parcels/MapServer/3/query?where=UPPER(NAD_NAME_1)%20LIKE%20UPPER('%25SMITH%25')&outFields=ParcelID,NAD_NAME_1,PHYS_STREET&returnGeometry=false&f=json&resultRecordCount=10",
443
+ "license": "public",
444
+ "licenseUrl": "https://maps.pascopa.com/",
445
+ "status": "live",
446
+ "lastVerified": "2026-05-30",
447
+ "verifiedBy": "manual"
448
+ }
449
+ ],
450
+ "contact": {
451
+ "department": "Pasco County Property Appraiser (PA) GIS",
452
+ "url": "https://pascopa.com/",
453
+ "email": null
454
+ },
455
+ "notes": "Pasco County, Florida (New Port Richey / Wesley Chapel / Zephyrhills, pop. ~600K) serves parcels from the Pasco County Property Appraiser GIS (maps.pascopa.com). Owner names are NAD_NAME_1/NAD_NAME_2; owner mailing is NAD_ADD_1/NAD_ADD_2/NAD_CITY/NAD_STATE/NAD_ZIP; the site address is PHYS_STREET/PHYS_CITY/PHYS_STATE; the parcel identifier is ParcelID (format 12-26-15-0020-05200-0220). Owner search uses UPPER(NAD_NAME_1) LIKE. Verified live 2026-05-30 (NAD_NAME_1 = PWS HOLDINGS LLC)."
297
456
  }
298
457
  ]
299
458
  }
package/data/georgia.json CHANGED
@@ -88,7 +88,7 @@
88
88
  "url": "https://geo-cobbcountyga.hub.arcgis.com/",
89
89
  "email": null
90
90
  },
91
- "notes": "Cobb County Tax Assessor daily-refreshed parcel layer. Service name 'taxassessorsdaily' confirms it is updated nightly from CAMA data. 36+ fields including PIN, PARID, PARCEL_TYPE, OWNER_NAM1/2, SITUS_ADDR, OWNER_ADDR/CITY/STAT/ZIP, TAXDIST, ACRES, FMV_LAND, FMV_BLDG, FMV_TOTAL, ASV_LAND, ASV_BLDG, ASV_TOTAL, CLASS, NBHOOD_NUM. Verified 2026-05-15: SMITH returns Acworth/Marietta area addresses. Cobb County (Marietta seat, pop. 766,000) is the Atlanta metro NW county — one of the wealthiest counties in the SE US."
91
+ "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."
92
92
  },
93
93
  {
94
94
  "id": "ga-dekalb",
@@ -129,7 +129,7 @@
129
129
  "url": "https://dcgis-dekalbgis.hub.arcgis.com/",
130
130
  "email": null
131
131
  },
132
- "notes": "DeKalb County (Atlanta metro east core, pop. 764,000) tax parcel layer. PARCELID is an 11-digit parcel identifier (e.g., '06 249 03 007'). 20+ fields confirmed including PARCELID, OWNERNME1/2, SITEADDRESS, CVTTXCD, CVTTXDSCRP, SCHLTXCD, SCHLDSCRP, USECD, USEDSCRP, NGHBRHDCD, CLASSCD, CLASSDSCRP, PRPRTYDSCRP, CNVYNAME, LOWPARCELID, BUILDING, UNIT, STATEDAREA, LGLSTARTDT. Verified 2026-05-15: SMITH returns Doraville/Atlanta area addresses. Note: distinct from DeKalb County IL (FIPS 17037) and DeKalb County IN in the atlas."
132
+ "notes": "DeKalb County (pop. 764,000; Atlanta metro east and north core) should not be confused with DeKalb County IL (FIPS 17037) or DeKalb County IN in the atlas. The GA DeKalb parcel REST layer at dcgis.dekalbcountyga.gov/hosted/rest/services/Parcels/MapServer exposes 20+ confirmed fields. PARCELID is an 11-digit identifier with spaces (e.g., '06 249 03 007') reflecting district, map sheet, block, and parcel components. Owner fields: OWNERNME1/2. Site address: SITEADDRESS. The CVTTXCD and CVTTXDSCRP fields identify the city/tax district, which matters because several cities -- Decatur, Brookhaven, Dunwoody, Tucker, Doraville, Stone Mountain -- maintain separate municipal boundaries within the county. SCHLTXCD and SCHLDSCRP identify the school tax district. Classification: USECD, USEDSCRP, CLASSCD, CLASSDSCRP, and PRPRTYDSCRP. Verified 2026-05-15: SMITH returns Doraville and Atlanta-DeKalb addresses. For full assessment and exemption records, the DeKalb County Tax Commissioner portal at tax.dekalbcountyga.gov is the authoritative lookup."
133
133
  }
134
134
  ]
135
135
  }
@@ -78,7 +78,7 @@
78
78
  "url": "https://www.cookcountyil.gov/agency/geographic-information-systems-gis",
79
79
  "email": null
80
80
  },
81
- "notes": "Cook County uses the 14-digit PIN format (XX-XX-XXX-XXX-XXXX) — exposed as PIN14_dash on this layer. The legacy cookVwHosted/Cook_County_Parcels/FeatureServer was retired in 2026; the active replacement is CookViewer3Parcels/MapServer/0 (1.86M+ parcels, geometry + PIN10/PIN14_dash + street_address only). Owner name lookups happen through the separate Cook County Assessor's portal, not this layer. For owner-name searches, point the Parcel Lookup tool at the Assessor's REST endpoint instead."
81
+ "notes": "Cook County uses the 14-digit PIN format (XX-XX-XXX-XXX-XXXX) — exposed as PIN14_dash on this layer. The legacy cookVwHosted/Cook_County_Parcels/FeatureServer was retired in 2026; the active replacement is CookViewer3Parcels/MapServer/0 (1.86M+ parcels). Public fields are geometry, PIN10, PIN14_dash, and street_address only — owner name is NOT on this layer. For ownership lookups, use the Cook County Property Tax Portal at cookcountypropertyinfo.com, keyed by PIN. Cook County reassesses on a triennial cycle divided into three geographic triads: the City of Chicago triad, the north suburban triad, and the south/west suburban triad — each triad goes through a full reassessment every three years on a rotating schedule (north triad reassessed 2025, south/west triad 2026). The county has 5.2M+ residents and 1.86M taxable parcels — the largest county in Illinois by both metrics. The Assessor's office is the valuation authority; the Treasurer's office (cookcountytreasurer.com) handles tax payment records."
82
82
  },
83
83
  {
84
84
  "id": "il-dupage",
@@ -117,7 +117,7 @@
117
117
  "url": "https://www.dupagecounty.gov/government/departments/gis/",
118
118
  "email": null
119
119
  },
120
- "notes": "DuPage County migrated their public GIS server from gis.dupagecounty.gov to gis.dupageco.org in 2026 — the old hostname now NXDOMAINs. The ParcelsWithRealEstateCC MapServer joins the parcel polygon layer to the weekly real estate file, exposing 60+ fields including PIN, BILLNAME (taxpayer billing name), BILLSTNUM/BILLSTNAME (billing address), PROPSTNUM/PROPSTNAME/PROPCITY (property address), BILLVALUE, TAXAMOUNT, MUNICIPALITY, and taxing district fields. 337k features. The open-data portal at gisdata-dupage.opendata.arcgis.com mirrors the same data."
120
+ "notes": "DuPage County migrated their public GIS server from gis.dupagecounty.gov to gis.dupageco.org in 2026 — the old hostname now NXDOMAINs. The ParcelsWithRealEstateCC MapServer joins the parcel polygon layer to the weekly real estate file, exposing 60+ fields including PIN, BILLNAME (taxpayer billing name), BILLSTNUM/BILLSTNAME (billing address), PROPSTNUM/PROPSTNAME/PROPCITY (property address), BILLVALUE, TAXAMOUNT, MUNICIPALITY, and taxing district fields. 337k features. The open-data portal at gisdata-dupage.opendata.arcgis.com mirrors the same data. Note on BILLNAME: this is the taxpayer of record for the current tax bill — it can differ from the legal owner when a recent sale has been deeded but the billing file has not yet been updated, or when a trust holds title but the trustee name appears as BILLNAME. For the chain-of-title legal owner, cross-reference the DuPage County Recorder's instrument search at recorder.dupageco.org. DuPage is Illinois's third-most populous county (pop. 930,000, county seat Wheaton)."
121
121
  },
122
122
  {
123
123
  "id": "il-dekalb",
@@ -156,7 +156,7 @@
156
156
  "url": "https://dekalbcounty.org/services/property-data-and-maps/",
157
157
  "email": "gis@dekalbcounty.org"
158
158
  },
159
- "notes": "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 works. The public-facing viewer at spatial.dekalbcounty.org uses VertiGIS/Geocortex as the front-end."
159
+ "notes": "This is DeKalb County, Illinois (county seat Sycamore, home to Northern Illinois University in DeKalb city) — not to be confused with DeKalb County, Georgia (Atlanta metro, FIPS 13089). The Illinois county (FIPS 17037) is an outer-collar county roughly 60 miles west of Chicago. Hosted on ArcGIS Online (services7.arcgis.com) — the county's WAB viewer config points at this FeatureServer as the backing data layer. 27 fields total including Parcel_Number, Owner, SiteAddress, MailingAddress, tax_code, net_taxable_value, Zone_Code, and QTAS/Compass hyperlinks. Owner-name search by UPPER() LIKE on the Owner field works directly; no token required. The public-facing viewer at spatial.dekalbcounty.org uses VertiGIS/Geocortex as its front-end but queries the same FeatureServer. DeKalb County GIS is administered by the county's Information Management Office (gis@dekalbcounty.org). Owner and TaxBillMailedTo are distinct fields — TaxBillMailedTo reflects the current billing addressee, which may differ from the recorded owner in cases involving trusts or recent transfers."
160
160
  },
161
161
  {
162
162
  "id": "il-will",
@@ -231,7 +231,7 @@
231
231
  "url": "https://data-mchenrycountygis.opendata.arcgis.com/",
232
232
  "email": "gis@mchenrycountyil.gov"
233
233
  },
234
- "notes": "McHenry County's legacy on-prem server at mchenrycountygis.org/arcgis/rest/services/parcels/MapServer was firewalled (HTTP 403) in early 2026. The replacement now lives on the county's ArcGIS Online open-data hub at data-mchenrycountygis.opendata.arcgis.com, with the McHenry_County_TaxParcels FeatureServer (services1.arcgis.com/6iYC5AXXYapRVNzl/...) as the canonical public endpoint. 150k parcels, 50+ fields including ParcelNumber, Owner, MailToAddress1-2, MailToCity/State/Zip, SiteAddress, SiteAddressHouseNumber/StreetName/Suffix, SiteAddressCity/Zip, PropertyClass, TaxStatus, plus taxing-district fields (Library, ParkDistrict, FireDistrict, GradeSchool/HighSchool, etc.). Owner-name search via UPPER() LIKE on Owner works."
234
+ "notes": "McHenry County (northernmost Illinois collar county, bordering Wisconsin; county seat Woodstock, pop. 315,000) includes Crystal Lake, Elgin (partial), and the Fox River corridor. The legacy on-prem server at mchenrycountygis.org/arcgis/rest/services/parcels/MapServer was firewalled (HTTP 403) in early 2026. The replacement is now hosted on the county's ArcGIS Online open-data hub at data-mchenrycountygis.opendata.arcgis.com, with the McHenry_County_TaxParcels FeatureServer (services1.arcgis.com/6iYC5AXXYapRVNzl) as the canonical public endpoint. The license is 'open-data', permitting unrestricted use. Roughly 150k parcels, 50+ fields including ParcelNumber, Owner (owner name, searchable via UPPER() LIKE), MailToAddress1, MailToAddress2, MailToCity, MailToState, MailToZip, SiteAddress, SiteAddressHouseNumber, SiteAddressStreetName, SiteAddressStreetType, SiteAddressSuffix, SiteAddressCity, SiteAddressZip, PropertyClass, TaxStatus, and taxing-district assignment fields (Library, ParkDistrict, FireDistrict, GradeSchoolDistrict, HighSchoolDistrict). Owner field exposes the legal owner name; MailToAddress reflects the billing addressee, which may differ for trusts and entities. The open-data hub at data-mchenrycountygis.opendata.arcgis.com has bulk download links for the same dataset."
235
235
  },
236
236
  {
237
237
  "id": "il-lake",
@@ -269,7 +269,7 @@
269
269
  "url": "https://www.lakecountyil.gov/636/GISMaps",
270
270
  "email": null
271
271
  },
272
- "notes": "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 taxpayer_name. 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."
272
+ "notes": "Lake County is the northernmost Illinois collar county, bordering Wisconsin (county seat Waukegan, pop. 710,000). WABParcels/MapServer is a 13-layer service; layer 12 (Tax Parcel Information) is the rich parcel polygon layer with 190+ fields covering PIN, taxpayer_name, situs address, assessment values, building characteristics, flood zone, and political boundaries. Owner-name search works via UPPER() LIKE on the taxpayer_name field. The county also exposes CCAO/TaxParcelViewer/MapServer but its layer 14 has only a Name field — WABParcels/12 is the correct layer for rich queries. Key fields beyond PIN and taxpayer_name include situs_addr_line_1, situs_addr_city, situs_zip, mail_addr_line_1, mail_city, mail_zip, property_class, tax_rate, tot_assessed_val, year_built, liv_area_sqft, zoning_district, flood_zone, and multiple political-boundary fields (congressional_district, state_rep_district, school_district, fire_district). The endpoint is at maps.lakecountyil.gov — not to be confused with Lake County Indiana or Lake County Ohio, which use separate GIS systems."
273
273
  },
274
274
  {
275
275
  "id": "il-winnebago",
package/data/index.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "0.3.0",
3
- "lastUpdated": "2026-05-16",
2
+ "version": "0.4.0",
3
+ "lastUpdated": "2026-05-31",
4
4
  "totals": {
5
5
  "states": 50,
6
- "counties": 117,
7
- "endpoints": 117
6
+ "counties": 128,
7
+ "endpoints": 128
8
8
  },
9
9
  "states": [
10
10
  {
@@ -75,8 +75,8 @@
75
75
  "slug": "florida",
76
76
  "name": "Florida",
77
77
  "abbrev": "FL",
78
- "countyCount": 7,
79
- "endpointCount": 7,
78
+ "countyCount": 11,
79
+ "endpointCount": 11,
80
80
  "populated": true
81
81
  },
82
82
  {
@@ -283,8 +283,8 @@
283
283
  "slug": "ohio",
284
284
  "name": "Ohio",
285
285
  "abbrev": "OH",
286
- "countyCount": 5,
287
- "endpointCount": 5,
286
+ "countyCount": 7,
287
+ "endpointCount": 7,
288
288
  "populated": true
289
289
  },
290
290
  {
@@ -347,8 +347,8 @@
347
347
  "slug": "texas",
348
348
  "name": "Texas",
349
349
  "abbrev": "TX",
350
- "countyCount": 5,
351
- "endpointCount": 5,
350
+ "countyCount": 10,
351
+ "endpointCount": 10,
352
352
  "populated": true
353
353
  },
354
354
  {
package/data/maine.json CHANGED
@@ -132,7 +132,7 @@
132
132
  "url": "https://www.maine.gov/geolib/data/index.html",
133
133
  "email": null
134
134
  },
135
- "notes": "Same statewide Maine GeoLibrary service as Cumberland County. Filter York County with COUNTY='YORK'; includes Biddeford, Saco, Sanford, Kennebunk, York, Kittery, etc. Layer 10 for geometry, layer 9 (ADB) for owner/assessment data joined by MAP_BK_LOT."
135
+ "notes": "York County is Maine's southernmost county and its most densely populated outside the Portland area, with seasonal coastal communities driving heavy property-lookup demand. The data comes from the same Maine GeoLibrary statewide organized-towns service used by Cumberland County. Layer 10 (FeatureServer/10) carries polygon geometry with COUNTY, TOWN, PROP_LOC, MAP_BK_LOT, and STATE_ID. Layer 9 (FeatureServer/9) is the assessor attribute table -- no geometry -- carrying OWNER1/OWNER2 and mailing address fields; join to layer 10 on MAP_BK_LOT. Filter to York County with COUNTY='YORK'; municipalities include Biddeford, Saco, Sanford, Kennebunk, York, Kittery, Wells, and Berwick. Important caveat: GeoLibrary submissions are voluntary and asynchronous -- some towns update quarterly, others lag by a year or more. For current ownership or assessment, check the individual town assessor's office or the Maine Revenue Services PAS database. Unorganized territories in York County use a separate MEGIS service."
136
136
  }
137
137
  ]
138
138
  }
@@ -9,7 +9,7 @@
9
9
  "state": "MA",
10
10
  "stateName": "Massachusetts",
11
11
  "stateSlug": "massachusetts",
12
- "county": "Statewide (Suffolk / Middlesex / Worcester / Norfolk / Essex / Plymouth)",
12
+ "county": "Statewide",
13
13
  "countySlug": "statewide",
14
14
  "countyFips": null,
15
15
  "hasPublicRest": true,
@@ -94,7 +94,7 @@
94
94
  "url": "https://desotocounty-dcms-gis.hub.arcgis.com/",
95
95
  "email": null
96
96
  },
97
- "notes": "DeSoto County (Southaven/Olive Branch, pop. 185,000; Memphis metro south) Tax Parcels layer at index 28 of the DeSoto County Layers MapServer. 15 fields confirmed: PIN, ACREAGE, FULL_ADDR, OWNER_NAME, SECOND_OWNER, OWNER_ADDRESS, CITY, STATE, ZIP_CODE, DEED_BOOK1, DEED_PAGE1, WD_Link, Tax_Info, Tax_Map. Verified 2026-05-15: SMITH returns Olive Branch MS addresses. DeSoto County is the fastest-growing MS county (Memphis exurb), making it the highest-value parcel-lookup target in the state."
97
+ "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."
98
98
  }
99
99
  ]
100
100
  }
package/data/nevada.json CHANGED
@@ -41,7 +41,7 @@
41
41
  "url": "https://www.clarkcountynv.gov/government/departments/geographic_info_systems/",
42
42
  "email": null
43
43
  },
44
- "notes": "947,045 polygon parcels covering Las Vegas, Henderson, North Las Vegas, Boulder City, and unincorporated Clark County. Verified 2026-05-11: APN LIKE '138%' wildcard query returns parcels. APN is an 11-digit Assessor Parcel Number with no internal punctuation in this layer. No owner-name on this AssessorMapv2/MapServer/1 layer; owner data lives on separate Clark County Assessor systems (paid bulk data subscription). For boundary geometry + APN-based queries, this layer is fully open."
44
+ "notes": "Clark County, Nevada (Las Vegas metro, pop. 2.3M, county seat Las Vegas) contains roughly 73% of Nevada's total population. The AssessorMapv2/MapServer is the public parcel geometry layer published by the Clark County Geographic Information Systems Management Office (GISMO). 947,045 polygon parcels covering Las Vegas, Henderson, North Las Vegas, Boulder City, Mesquite, and unincorporated Clark County. Verified 2026-05-11: APN LIKE '138%' wildcard query returns parcels. APN is an 11-digit Assessor Parcel Number with no internal punctuation in this layer (no dashes or spaces). Layer 1 of AssessorMapv2 is the parcel polygon layer; layer 0 is a label annotation layer. Owner name is NOT on this public REST layer. For owner-name lookups, use the Clark County Assessor's web portal at maps.clarkcountynv.gov/assessor/AssessorParcelDetail/ownr.aspx (search by owner name) or the Real Property Records Search at clarkcountynv.gov/government/assessor/property_search/real-property-records; both are free browser tools. Bulk ownership data from the Assessor requires a paid subscription. GISMO open-data hub: clarkcountygis-ccgismo.hub.arcgis.com."
45
45
  },
46
46
  {
47
47
  "id": "nv-washoe",
@@ -36,7 +36,7 @@
36
36
  "url": "https://granit.unh.edu/",
37
37
  "email": null
38
38
  },
39
- "notes": "Same restriction as Hillsborough County. NH GRANIT ParcelMosaic requires authentication. Rockingham County includes Manchester-area suburbs, Salem, Derry, Portsmouth — all relying on municipal-level Vision Government Solutions or AxisGIS portals, none of which expose a standard ArcGIS REST FeatureServer. Monitor granit.unh.edu for any move to open public access; as of 2024 GRANIT updated their statewide mosaic but kept it token-gated."
39
+ "notes": "No token-free public REST endpoint exists for Rockingham County parcel data. The same authentication barrier that blocks Hillsborough County applies here: NH GRANIT's statewide NH Parcel Mosaic (nhgeodata.unh.edu/nhgeodata/rest/services/CAD/ParcelMosiac/MapServer) returns HTTP 499 without a valid GRANIT token. Rockingham is New Hampshire's most populous county (pop. 330,000), covering Portsmouth, Salem, Derry, Londonderry, and the southern tier of Manchester suburbs. Individual municipalities use fragmented vendor solutions -- Vision Government Solutions hosts assessor data for Salem, Derry, and several others; AxisGIS serves Rye, Deerfield, and others -- but none expose a standard queryable ArcGIS FeatureServer. For programmatic owner-level access, a GRANIT account (granit.unh.edu) is required. Regrid covers NH at commercial tier. The Rockingham County Registry of Deeds (ecourt.rockinghamregistry.com) is publicly searchable for recorded instruments but does not expose a REST parcel layer."
40
40
  }
41
41
  ]
42
42
  }
@@ -220,7 +220,7 @@
220
220
  "url": "https://gis-monmouthnj.opendata.arcgis.com/",
221
221
  "email": null
222
222
  },
223
- "notes": "County-direct FeatureServer from Monmouth County GIS. Layer ID is 9 (the only layer in this service). Rich MOD-IV attribute set including owner name, address, full assessment data, sale history, and zoning. PAMS_PIN format: county-municipality-block-lot-qualifier. OwnersName is public. Note: NJ Daniel's Law restricts certain owner-address combinations for protected individuals — the county layer may redact mailing addresses for eligible registrants."
223
+ "notes": "Monmouth County (pop. 643,000; Jersey Shore and inland suburbs) uses a county-direct FeatureServer separate from the NJOGIS statewide layer. The service at services9.arcgis.com (GEO_MC_Parcels, layer 9) reflects Monmouth County GIS's own MOD-IV data pull. PAMS_PIN is the statewide identifier, structured as county code + municipality code + block + lot + qualifier code (QCODE). OwnersName is public and queryable. Assessment fields include TotalAssmnt, LandAssmnt, BuildingAssmnt, SaleDate, SalePrice, and YrBuilt. CityStateZip is a single concatenated field for owner mailing address. The MUN and MUN_NAME fields identify the 53-municipality breakdown within the county (e.g., Freehold Borough, Long Branch, Red Bank, Asbury Park). Note: NJ Daniel's Law (P.L. 2021, c.371) allows protected individuals -- judges, law enforcement, domestic-violence victims -- to suppress their address from public records; the county layer may return null or redacted values for mailing addresses on affected parcels. For unredacted deed and transfer records, the Monmouth County Clerk's office portal at mcgifts.co.monmouth.nj.us is the authoritative source."
224
224
  },
225
225
  {
226
226
  "id": "nj-ocean",
@@ -319,7 +319,7 @@
319
319
  "url": "https://www.nj.gov/njgin/",
320
320
  "email": null
321
321
  },
322
- "notes": "Uses the NJOGIS statewide cadastral MapServer (maps.nj.gov). Filter by COUNTY='OCEAN'. This NJ.gov-hosted service is the authoritative state layer covering all 21 NJ counties. OWNER_NAME is present but note NJ Daniel's Law (P.L. 2021, c.371) allows protected individuals (judges, law enforcement, domestic violence victims) to have address information withheld — redacted entries may appear as null or generic. Same endpoint used for Camden and Morris counties below."
322
+ "notes": "Ocean County (pop. 637,000; Pine Barrens and Jersey Shore barrier islands) has no county-direct REST parcel layer. Parcel and owner data route through the NJOGIS statewide cadastral MapServer at maps.nj.gov (Framework/Cadastral/MapServer/0). Filter with COUNTY='OCEAN'. Key fields: OWNER_NAME (public, queryable), PAMS_PIN (county-municipality-block-lot-qualifier format), PROP_LOC (property street address), MUN_NAME (municipality), PROP_CLASS, LAND_VAL, IMPRVT_VAL, NET_VALUE, SALE_PRICE, YR_CONSTR, and DEED_DATE. NJ Daniel's Law (P.L. 2021, c.371) applies: certain registrants -- judges, law enforcement, domestic-violence victims -- can suppress address information; expect null or generic mailing-address entries for affected parcels. Ocean County's 33 municipalities range from Toms River to barrier-island towns like Long Beach Township and Seaside Heights. The NJOGIS layer is updated quarterly from county submissions to the MOD-IV tax-assessment system. For recorded deeds and chain-of-title, the Ocean County Clerk's document search at oceanrecorder.com is publicly accessible."
323
323
  },
324
324
  {
325
325
  "id": "nj-camden",
@@ -403,7 +403,7 @@
403
403
  "url": "https://www.nj.gov/njgin/",
404
404
  "email": null
405
405
  },
406
- "notes": "Same NJOGIS statewide cadastral service as Ocean County. Filter by COUNTY='CAMDEN'. Camden County includes Camden City, Cherry Hill, Gloucester City, Haddonfield, and 34 other municipalities."
406
+ "notes": "Camden County (pop. 521,000; Philadelphia metro east bank) has no county-direct REST parcel layer. Data routes through the NJOGIS statewide cadastral MapServer at maps.nj.gov (Framework/Cadastral/MapServer/0). Filter with COUNTY='CAMDEN'. Fields include OWNER_NAME, PAMS_PIN (block-lot-qualifier MOD-IV identifier), PROP_LOC, MUN_NAME, PROP_CLASS, LAND_VAL, IMPRVT_VAL, NET_VALUE, SALE_PRICE, and CALC_ACRE. The county spans 37 municipalities from the dense urban core of Camden City through inner suburbs (Cherry Hill, Gloucester Township) to smaller boroughs like Haddonfield and Barrington. Camden City often has high parcel-change velocity; the NJOGIS layer captures these at the quarterly MOD-IV update cycle. NJ Daniel's Law address-redaction rules apply countywide. For deed-level detail, the Camden County Clerk's office maintains online document search. The county also participates in NJ Treasury's Property Tax Administration system, which cross-references the same PAMS_PIN identifiers used in this REST layer."
407
407
  },
408
408
  {
409
409
  "id": "nj-morris",
@@ -487,7 +487,7 @@
487
487
  "url": "https://www.nj.gov/njgin/",
488
488
  "email": null
489
489
  },
490
- "notes": "Same NJOGIS statewide cadastral service as Ocean and Camden counties. Filter by COUNTY='MORRIS'. Morris County includes Morristown, Parsippany, Dover, Rockaway, Randolph, and 36 other municipalities. Morris County also maintains a local GIS server at morrisgisapps.co.morris.nj.us but the county-direct MapServer has only PAMS_PIN and shape — insufficient for owner/address search. The NJOGIS statewide layer is the better choice."
490
+ "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."
491
491
  }
492
492
  ]
493
493
  }
@@ -170,7 +170,7 @@
170
170
  "url": "https://www.monroecounty.gov/planning-gis",
171
171
  "email": null
172
172
  },
173
- "notes": "67 fields confirmed. Includes COUNTYSBL (full county SBL identifier), PRINTKEY, SWIS, OWNERNAME1, OWNERNAME2, mailing address (OWNERSTREETADDRESS, OWNERPOBOX, OWNERCITYSTATEZIPCODE), property address (PARCELADDRESS, PARCELADDRESSCITY, PARCELADDRESSZIPCODE), PROPERTYCLASS/PROPERTYCLASSDESCRIPTION, assessed values (TOTALASSESSEDVALUE, LANDASSESSEDVALUE), building details (YEARBUILT, BUILDINGSTYLE, EXTERIORWALLMATERIAL, NUMBEROFSTORIES, SQUAREFEETLIVINGAREA, NUMBEROFBEDROOMS, NUMBEROFFULLBATHROOMS, NUMBEROFHALFBATHROOMS, NUMBEROFKITCHENS, NUMBEROFFIREPLACES, BASEMENTTYPE, CENTRALAIR, HEATTYPE), utilities (SEWERTYPE, WATERSUPPLY), school district, neighborhood code, grid coordinates. Owner query confirmed returning real residential parcels. Monroe County, NY is the Rochester metropolitan area (FIPS 36055)."
173
+ "notes": "Monroe County is the Rochester metropolitan area (FIPS 36055, pop. 745,000 county-wide). The county-direct FeatureServer at services1.arcgis.com returns 67 confirmed fields on the BASE_MC_Parcels layer, maintained by the Monroe County Planning Department. Key identifiers: COUNTYSBL (full county SBL string, e.g. '141.03-2-47'), PRINTKEY (the formatted print key used on tax maps), and SWIS (the 6-digit State-Wide Information System code that identifies the assessing municipality within Monroe). Owner fields OWNERNAME1/OWNERNAME2 are public. Mailing address is in OWNERSTREETADDRESS, OWNERPOBOX, and OWNERCITYSTATEZIPCODE as a single concatenated field. Building detail fields include BUILDINGSTYLE, EXTERIORWALLMATERIAL, NUMBEROFSTORIES, SQUAREFEETLIVINGAREA, NUMBEROFBEDROOMS, BASEMENTTYPE, CENTRALAIR, and HEATTYPE -- unusually granular for a county REST layer. SEWERTYPE and WATERSUPPLY distinguish municipal vs. private systems. Owner-name queries confirmed live. For current deed and sale records, Monroe County's property lookup is at monroecounty.gov/gis."
174
174
  },
175
175
  {
176
176
  "id": "ny-onondaga",