@urbankitstudio/atlas 0.6.9 → 0.6.10

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
@@ -134,9 +134,9 @@ Omit `?fips=` to get every tracked county in one call.
134
134
 
135
135
  ## Coverage today
136
136
 
137
- The atlas bundles **235 counties across all 50 US states and DC** (247 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
137
+ The atlas bundles **239 counties across all 50 US states and DC** (251 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
138
138
 
139
- Every state has at least one county on record, and 229 of the 235 carry a verified endpoint. The other 6 have `hasPublicRest: false` and an empty `endpoints` array, with `notes` recording the reason and who to contact. Those reasons vary: a subscription-only regional GIS partner, a statewide server that requires an auth token, a state with no county-level parcel authority, a county viewer with no public query API, a county that does not publish owner names online. They ship rather than being omitted, so `findCounty()` still resolves them. **Check `hasPublicRest`** rather than assuming every county has an endpoint; `totals.countiesWithEndpoint` gives the queryable count directly.
139
+ Every state has at least one county on record, and 233 of the 239 carry a verified endpoint. The other 6 have `hasPublicRest: false` and an empty `endpoints` array, with `notes` recording the reason and who to contact. Those reasons vary: a subscription-only regional GIS partner, a statewide server that requires an auth token, a state with no county-level parcel authority, a county viewer with no public query API, a county that does not publish owner names online. They ship rather than being omitted, so `findCounty()` still resolves them. **Check `hasPublicRest`** rather than assuming every county has an endpoint; `totals.countiesWithEndpoint` gives the queryable count directly.
140
140
 
141
141
  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.
142
142
 
package/data/alabama.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "alabama",
3
3
  "stateName": "Alabama",
4
4
  "stateAbbrev": "AL",
5
- "lastUpdated": "2026-06-20",
5
+ "lastUpdated": "2026-10-03",
6
6
  "counties": [
7
7
  {
8
8
  "id": "al-shelby",
@@ -98,6 +98,48 @@
98
98
  "email": null
99
99
  },
100
100
  "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 (×2), 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."
101
+ },
102
+ {
103
+ "id": "al-mobile",
104
+ "state": "AL",
105
+ "stateName": "Alabama",
106
+ "stateSlug": "alabama",
107
+ "county": "Mobile",
108
+ "countySlug": "mobile-county",
109
+ "countyFips": "01097",
110
+ "hasPublicRest": true,
111
+ "endpoints": [
112
+ {
113
+ "url": "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0",
114
+ "serviceType": "FeatureServer",
115
+ "layerIndex": 0,
116
+ "layerName": "MCRC_Public_Parcels",
117
+ "supportsQuery": true,
118
+ "corsEnabled": true,
119
+ "searchFields": [
120
+ { "name": "Name1", "label": "Owner Name 1", "searchable": true },
121
+ { "name": "Name2", "label": "Owner Name 2", "searchable": true },
122
+ { "name": "Parcel_Number", "label": "Parcel ID", "searchable": true },
123
+ { "name": "Account_Number", "label": "Account Number", "searchable": true },
124
+ { "name": "PropAddr1", "label": "Site Address", "searchable": true },
125
+ { "name": "PropCity", "label": "Site City", "searchable": true },
126
+ { "name": "PropZip", "label": "Site ZIP", "searchable": false },
127
+ { "name": "Acreage", "label": "Acres", "searchable": false }
128
+ ],
129
+ "sampleQuery": "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0/query?where=UPPER(Name1)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
130
+ "license": "unknown",
131
+ "licenseUrl": "https://www.arcgis.com/home/item.html?id=07c93ca64bbf4fb8a8d49b7ea80ef067",
132
+ "status": "live",
133
+ "lastVerified": "2026-10-03",
134
+ "verifiedBy": "manual"
135
+ }
136
+ ],
137
+ "contact": {
138
+ "department": "Mapping Department, Mobile County Revenue Commission",
139
+ "url": null,
140
+ "email": null
141
+ },
142
+ "notes": "Mobile County, Alabama (Mobile; FIPS 01097) publishes its parcels as the 'Mobile County Alabama Tax Parcels' FeatureServer, authored by the Mobile County Revenue Commission's Mapping Department and updated 2026-09-22. 214,040 parcels, countywide. The owner is in Name1 (and Name2), the parcel id in Parcel_Number (ParcelNo is the formatted form), and the site address in PropAddr1 with PropCity and PropZip. The layer has NO owner mailing-address fields (its columns are OBJECTID, Parcel_Number, Account_Number, ParcelNo, Name1, Name2, PropAddr1, PropAddr2, PropCity, PropState, PropZip, Acreage, Sqft, KeyNum), so it serves owner names and site addresses, not mailing addresses. String fields are heavily space padded (Name1 is 255 wide), so trim them and search with UPPER(Name1) LIKE 'SMITH%', never equality. The spatial reference is wkid 102630, so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only an informational-use disclaimer. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH BONNIE G, 0104430000006.000, 20240 HIGHWAY 43, Mount Vernon)."
101
143
  }
102
144
  ]
103
145
  }
package/data/georgia.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "georgia",
3
3
  "stateName": "Georgia",
4
4
  "stateAbbrev": "GA",
5
- "lastUpdated": "2026-08-25",
5
+ "lastUpdated": "2026-10-03",
6
6
  "counties": [
7
7
  {
8
8
  "id": "ga-fulton",
@@ -369,6 +369,51 @@
369
369
  "email": null
370
370
  },
371
371
  "notes": "Savannah and Chatham County, published by SAGIS. 125,326 parcels with owner names on 124,952 rows (99.7 percent), and the fullest field set in this batch: parcel id, two owner columns, a complete mailing address, a combined situs and split situs parts. IMPORTANT for maintenance: this service holds 28 year-versioned layers, 0 to 17 being Historic Parcels 1998 to 2015 and 18 to 27 being Parcel Digest 2016 to 2025. Layer 27 is the newest today. When SAGIS publishes Parcel Digest 2026 it will be layer 28 and this entry will silently go a year stale, so the layer index needs checking whenever this record is reverified."
372
+ },
373
+ {
374
+ "id": "ga-dougherty",
375
+ "state": "GA",
376
+ "stateName": "Georgia",
377
+ "stateSlug": "georgia",
378
+ "county": "Dougherty",
379
+ "countySlug": "dougherty-county",
380
+ "countyFips": "13095",
381
+ "hasPublicRest": true,
382
+ "endpoints": [
383
+ {
384
+ "url": "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0",
385
+ "serviceType": "FeatureServer",
386
+ "layerIndex": 0,
387
+ "layerName": "Parcels",
388
+ "supportsQuery": true,
389
+ "corsEnabled": true,
390
+ "searchFields": [
391
+ { "name": "Name", "label": "Owner Name", "searchable": true },
392
+ { "name": "ParcelNum", "label": "Parcel ID", "searchable": true },
393
+ { "name": "Address", "label": "Site Address", "searchable": true },
394
+ { "name": "SiteCity", "label": "Site City", "searchable": true },
395
+ { "name": "SiteZip", "label": "Site ZIP", "searchable": false },
396
+ { "name": "MailAddress1", "label": "Owner Mailing Address", "searchable": true },
397
+ { "name": "MailCity", "label": "Owner Mailing City", "searchable": true },
398
+ { "name": "MailState", "label": "Owner Mailing State", "searchable": false },
399
+ { "name": "MailZip", "label": "Owner Mailing ZIP", "searchable": false },
400
+ { "name": "Jurisdiction", "label": "Jurisdiction (City or County)", "searchable": false },
401
+ { "name": "TotalAcerage", "label": "Acres", "searchable": false }
402
+ ],
403
+ "sampleQuery": "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0/query?where=UPPER(Name)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
404
+ "license": "unknown",
405
+ "licenseUrl": "https://www.arcgis.com/home/item.html?id=9729f520dfab47fab85484908994ef1f",
406
+ "status": "live",
407
+ "lastVerified": "2026-10-03",
408
+ "verifiedBy": "manual"
409
+ }
410
+ ],
411
+ "contact": {
412
+ "department": "Albany GIS (Albany-Dougherty Geographic Information System)",
413
+ "url": null,
414
+ "email": null
415
+ },
416
+ "notes": "Dougherty County, Georgia (county seat Albany) publishes its parcels as the 'Dougherty County Land Parcels Dataset' FeatureServer, maintained by Albany GIS, covering both the CITY and COUNTY jurisdictions (the Jurisdiction column says which). 38,007 parcels as of 2026-10-03. The owner is in Name, the parcel id in ParcelNum, the site address in Address (with SiteCity and SiteZip) and the owner mailing address in MailAddress1/MailCity/MailState/MailZip; MailAddress1 was empty on the first rows sampled. String fields are space padded to their full width, so trim them and search with UPPER(Name) LIKE 'SMITH%', never equality. The layer's spatial reference is wkid 102667 (latestWkid 2240), so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only a disclaimer that Albany GIS makes every effort at accuracy and that all data is subject to change. A third-party count of 39,443 parcels is slightly higher than the layer's, so the public view may be a subset. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH SHIRLEY PEARL, 0000S/00003/03A, 2803 ELTON ST, Albany)."
372
417
  }
373
418
  ]
374
419
  }
package/data/index.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "version": "0.3.0",
3
- "lastUpdated": "2026-09-26",
3
+ "lastUpdated": "2026-10-03",
4
4
  "totals": {
5
5
  "states": 51,
6
- "counties": 235,
7
- "endpoints": 247,
8
- "countiesWithEndpoint": 229,
6
+ "counties": 239,
7
+ "endpoints": 251,
8
+ "countiesWithEndpoint": 233,
9
9
  "countiesUnprobeable": 1
10
10
  },
11
11
  "states": [
@@ -13,8 +13,8 @@
13
13
  "slug": "alabama",
14
14
  "name": "Alabama",
15
15
  "abbrev": "AL",
16
- "countyCount": 2,
17
- "endpointCount": 2,
16
+ "countyCount": 3,
17
+ "endpointCount": 3,
18
18
  "populated": true
19
19
  },
20
20
  {
@@ -93,8 +93,8 @@
93
93
  "slug": "georgia",
94
94
  "name": "Georgia",
95
95
  "abbrev": "GA",
96
- "countyCount": 5,
97
- "endpointCount": 5,
96
+ "countyCount": 6,
97
+ "endpointCount": 6,
98
98
  "populated": true
99
99
  },
100
100
  {
@@ -309,8 +309,8 @@
309
309
  "slug": "oregon",
310
310
  "name": "Oregon",
311
311
  "abbrev": "OR",
312
- "countyCount": 6,
313
- "endpointCount": 5,
312
+ "countyCount": 7,
313
+ "endpointCount": 6,
314
314
  "populated": true
315
315
  },
316
316
  {
@@ -389,8 +389,8 @@
389
389
  "slug": "washington",
390
390
  "name": "Washington",
391
391
  "abbrev": "WA",
392
- "countyCount": 4,
393
- "endpointCount": 4,
392
+ "countyCount": 5,
393
+ "endpointCount": 5,
394
394
  "populated": true
395
395
  },
396
396
  {
package/data/oregon.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "oregon",
3
3
  "stateName": "Oregon",
4
4
  "stateAbbrev": "OR",
5
- "lastUpdated": "2026-09-26",
5
+ "lastUpdated": "2026-10-03",
6
6
  "counties": [
7
7
  {
8
8
  "id": "or-multnomah",
@@ -250,6 +250,51 @@
250
250
  "email": "gisquestions@clackamas.us"
251
251
  },
252
252
  "notes": "No public REST parcel layer with owner names was found for Clackamas County (county seat Oregon City) as of 2026-09-26. The county states that it does not publish property owner names online and directs owner-information requests to Assessment and Taxation, and its GIS shapefile downloads require accepting a data licensing agreement. No county-hosted ArcGIS REST catalog was found; the public tools, CMap and AscendWeb, are interactive viewers. Two statewide layers cover the county but neither can serve an owner search: the Oregon Department of Forestry's taxlot layer named 'Clackamas County' declares owner fields but has query disabled, and the Oregon Department of Transportation's taxlot layer is queryable but carries only map and taxlot numbers. Metro's regional RLIS 'Taxlots (Public)' dataset, per its listing, excludes ownership."
253
+ },
254
+ {
255
+ "id": "or-malheur",
256
+ "state": "OR",
257
+ "stateName": "Oregon",
258
+ "stateSlug": "oregon",
259
+ "county": "Malheur",
260
+ "countySlug": "malheur-county",
261
+ "countyFips": "41045",
262
+ "hasPublicRest": true,
263
+ "endpoints": [
264
+ {
265
+ "url": "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16",
266
+ "serviceType": "FeatureServer",
267
+ "layerIndex": 16,
268
+ "layerName": "TL Jun2026",
269
+ "supportsQuery": true,
270
+ "corsEnabled": true,
271
+ "searchFields": [
272
+ { "name": "OWNERSNAME", "label": "Owner Name", "searchable": true },
273
+ { "name": "MapTaxlot", "label": "Map and Taxlot ID", "searchable": true },
274
+ { "name": "Taxlot", "label": "Taxlot", "searchable": false },
275
+ { "name": "SITUSADD", "label": "Site Address", "searchable": true },
276
+ { "name": "CITY", "label": "Site City", "searchable": true },
277
+ { "name": "ADD1", "label": "Owner Mailing Address Line 1", "searchable": true },
278
+ { "name": "ADD2", "label": "Owner Mailing Address Line 2", "searchable": false },
279
+ { "name": "CITYSTATE", "label": "Owner Mailing City and State", "searchable": true },
280
+ { "name": "ZIP", "label": "Owner Mailing ZIP", "searchable": false },
281
+ { "name": "ZONING", "label": "Zoning", "searchable": false },
282
+ { "name": "TOTACRE", "label": "Total Acres", "searchable": false }
283
+ ],
284
+ "sampleQuery": "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16/query?where=UPPER(OWNERSNAME)%20LIKE%20'SMITH%25'&outFields=MapTaxlot,OWNERSNAME,ADD1,CITYSTATE,SITUSADD,CITY&returnGeometry=false&resultRecordCount=10&f=json",
285
+ "license": "unknown",
286
+ "licenseUrl": "https://www.malheurco.org/gis/",
287
+ "status": "live",
288
+ "lastVerified": "2026-10-03",
289
+ "verifiedBy": "manual"
290
+ }
291
+ ],
292
+ "contact": {
293
+ "department": "Malheur County GIS (GIS Specialist), 251 B St W #2, Vale, OR 97918, (541) 473-5574",
294
+ "url": "https://www.malheurco.org/gis/",
295
+ "email": null
296
+ },
297
+ "notes": "Malheur County, Oregon (county seat Vale) publishes its tax lots as a layer of the County_GIS_Portal_WFL1 FeatureServer, the data source of the county's public Malheur County Tax Lot Map experience (linked from malheurco.org/gis). 20,570 features as of 2026-10-03. The owner is OWNERSNAME, the parcel id MapTaxlot (for example 15S47E28B04702), the site address SITUSADD with CITY, and the owner mailing address ADD1/ADD2/CITYSTATE/ZIP. SITUSADD is sometimes a bare zero and ADD1 is often null. MAINTENANCE QUIRK: the layer name and index are month-stamped (currently layer 16, 'TL Jun2026'; the siblings are 'NonTL Jun2026' at 17 and Zoning_2026 at 25) and the county republishes monthly, so the name or index can change. When the liveness probe flags this record, re-resolve it: list the FeatureServer's layers, pick the one whose name starts with 'TL ' and which carries an OWNERSNAME field, then update layerIndex, layerName and the url. Do not hard-code 16 forever. Named outFields are accepted. CORS answers Access-Control-Allow-Origin *. The layer states no license; the county GIS page links a Data Licensing Agreement for bulk data. The statewide ODF layer for Malheur has an owner line but query disabled, and Malheur is not in the OWRD layer, so there is no usable fallback. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, JAMIE LEE, 15S47E28B04702, Ontario)."
253
298
  }
254
299
  ]
255
300
  }
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "washington",
3
3
  "stateName": "Washington",
4
4
  "stateAbbrev": "WA",
5
- "lastUpdated": "2026-06-06",
5
+ "lastUpdated": "2026-10-03",
6
6
  "counties": [
7
7
  {
8
8
  "id": "wa-king",
@@ -178,6 +178,52 @@
178
178
  "email": null
179
179
  },
180
180
  "notes": "45 fields confirmed including PARCEL_NO, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, SITUS_STRE, SITUS_CITY, SITUS_ZIP, SD_NAME, LEGAL_DESC, TOTAL_ACRES, BLDG_VALUE, LAND_VALUE, TOTAL_VALUE, ANNUAL_TAX, STATUS_IND, PROP_SUBTY, O_NEIGHBOR, PROP_TYPE, INSPCT_CYC, REGION, MULT_PARCL, SALE_DATE, SALE_PRICE, SALE_VRFY, USE_CODE, SIGMA_YEAR, TAXABLE, EXEMPT_TY, LOCAL_IND, TCA, CURR_USE, INCORP, YEAR_BUILT, EFF_YR_BUI, RES_QUAL, RES_COND, REC_VOLPAG, SECTTIE, PARENT, MapSource, GlobalID. Live query confirmed: PARCEL_NO LIKE '%21820%' returns Thurston County parcels with mailing address and value data. NOTE: Owner name is NOT on this public layer per WA State law; ADDRESS1/2 is the mailing address (generally owner's address). Data from ASCEND and SIGMA databases. Item ID: 4ca0091703b345f8a72f68a4d173d9be. maxRecordCount=1000."
181
+ },
182
+ {
183
+ "id": "wa-island",
184
+ "state": "WA",
185
+ "stateName": "Washington",
186
+ "stateSlug": "washington",
187
+ "county": "Island",
188
+ "countySlug": "island-county",
189
+ "countyFips": "53029",
190
+ "hasPublicRest": true,
191
+ "endpoints": [
192
+ {
193
+ "url": "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0",
194
+ "serviceType": "MapServer",
195
+ "layerIndex": 0,
196
+ "layerName": "Parcels",
197
+ "supportsQuery": true,
198
+ "corsEnabled": true,
199
+ "searchFields": [
200
+ { "name": "taxpayer", "label": "Owner Name (Taxpayer)", "searchable": true },
201
+ { "name": "ParcelNo", "label": "Parcel ID", "searchable": true },
202
+ { "name": "physical_addr", "label": "Site Address", "searchable": true },
203
+ { "name": "physical_addr_city", "label": "Site City", "searchable": true },
204
+ { "name": "physical_addr_zip", "label": "Site ZIP", "searchable": false },
205
+ { "name": "mailing_addr1", "label": "Owner Mailing Address Line 1", "searchable": true },
206
+ { "name": "mailing_addr2", "label": "Owner Mailing Address Line 2", "searchable": false },
207
+ { "name": "mailing_addr_city", "label": "Owner Mailing City", "searchable": true },
208
+ { "name": "mailing_addr_state", "label": "Owner Mailing State", "searchable": false },
209
+ { "name": "mailing_addr_zip", "label": "Owner Mailing ZIP", "searchable": false },
210
+ { "name": "property_land_use_code", "label": "Land Use Code", "searchable": false },
211
+ { "name": "legal_acreage", "label": "Legal Acreage", "searchable": false }
212
+ ],
213
+ "sampleQuery": "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0/query?where=UPPER(taxpayer)%20LIKE%20'SMITH%25'&outFields=ParcelNo,taxpayer,physical_addr,mailing_addr1&returnGeometry=false&resultRecordCount=10&f=json",
214
+ "license": "unknown",
215
+ "licenseUrl": "https://maps.islandcountywa.gov",
216
+ "status": "live",
217
+ "lastVerified": "2026-10-03",
218
+ "verifiedBy": "manual"
219
+ }
220
+ ],
221
+ "contact": {
222
+ "department": "Island County Assessor / GIS",
223
+ "url": "https://maps.islandcountywa.gov",
224
+ "email": null
225
+ },
226
+ "notes": "Island County, Washington (county seat Coupeville) serves its parcels from the Assessor's own ArcGIS Server, joined to the PACS assessor data and exported nightly per the service description. The owner field is called taxpayer, the parcel id ParcelNo (for example R03213-384-4950), the site address physical_addr with its city, state and ZIP parts, and the owner mailing address mailing_addr1 to mailing_addr3 with city, state and ZIP. ParcelNo and taxpayer values carry trailing spaces, so trim on display, and some parcels (vacant land) have a blank physical_addr. Named outFields are accepted. CORS reflects the request Origin and sends Access-Control-Allow-Credentials true, so it is not a wildcard. maxRecordCount is 60000. The layer's copyright text reads DO NOT USE AS LEGAL DOCUMENT and no license is stated. Two sibling services carry the same data and serve as fallbacks: SmartGov/Parcels MapServer and Auditor/BaseMap MapServer layer 0. The contact URL is the county map server root, which answered HTTP 200 on 2026-10-03; no separate Assessor contact page was retrieved. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, COLIN, R13334-372-1430)."
181
227
  }
182
228
  ]
183
229
  }
package/dist/index.cjs CHANGED
@@ -15,12 +15,12 @@ var LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
15
15
  // data/index.json
16
16
  var data_default = {
17
17
  version: "0.3.0",
18
- lastUpdated: "2026-09-26",
18
+ lastUpdated: "2026-10-03",
19
19
  totals: {
20
20
  states: 51,
21
- counties: 235,
22
- endpoints: 247,
23
- countiesWithEndpoint: 229,
21
+ counties: 239,
22
+ endpoints: 251,
23
+ countiesWithEndpoint: 233,
24
24
  countiesUnprobeable: 1
25
25
  },
26
26
  states: [
@@ -28,8 +28,8 @@ var data_default = {
28
28
  slug: "alabama",
29
29
  name: "Alabama",
30
30
  abbrev: "AL",
31
- countyCount: 2,
32
- endpointCount: 2,
31
+ countyCount: 3,
32
+ endpointCount: 3,
33
33
  populated: true
34
34
  },
35
35
  {
@@ -108,8 +108,8 @@ var data_default = {
108
108
  slug: "georgia",
109
109
  name: "Georgia",
110
110
  abbrev: "GA",
111
- countyCount: 5,
112
- endpointCount: 5,
111
+ countyCount: 6,
112
+ endpointCount: 6,
113
113
  populated: true
114
114
  },
115
115
  {
@@ -324,8 +324,8 @@ var data_default = {
324
324
  slug: "oregon",
325
325
  name: "Oregon",
326
326
  abbrev: "OR",
327
- countyCount: 6,
328
- endpointCount: 5,
327
+ countyCount: 7,
328
+ endpointCount: 6,
329
329
  populated: true
330
330
  },
331
331
  {
@@ -404,8 +404,8 @@ var data_default = {
404
404
  slug: "washington",
405
405
  name: "Washington",
406
406
  abbrev: "WA",
407
- countyCount: 4,
408
- endpointCount: 4,
407
+ countyCount: 5,
408
+ endpointCount: 5,
409
409
  populated: true
410
410
  },
411
411
  {
@@ -440,7 +440,7 @@ var alabama_default = {
440
440
  stateSlug: "alabama",
441
441
  stateName: "Alabama",
442
442
  stateAbbrev: "AL",
443
- lastUpdated: "2026-06-20",
443
+ lastUpdated: "2026-10-03",
444
444
  counties: [
445
445
  {
446
446
  id: "al-shelby",
@@ -536,6 +536,48 @@ var alabama_default = {
536
536
  email: null
537
537
  },
538
538
  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."
539
+ },
540
+ {
541
+ id: "al-mobile",
542
+ state: "AL",
543
+ stateName: "Alabama",
544
+ stateSlug: "alabama",
545
+ county: "Mobile",
546
+ countySlug: "mobile-county",
547
+ countyFips: "01097",
548
+ hasPublicRest: true,
549
+ endpoints: [
550
+ {
551
+ url: "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0",
552
+ serviceType: "FeatureServer",
553
+ layerIndex: 0,
554
+ layerName: "MCRC_Public_Parcels",
555
+ supportsQuery: true,
556
+ corsEnabled: true,
557
+ searchFields: [
558
+ { name: "Name1", label: "Owner Name 1", searchable: true },
559
+ { name: "Name2", label: "Owner Name 2", searchable: true },
560
+ { name: "Parcel_Number", label: "Parcel ID", searchable: true },
561
+ { name: "Account_Number", label: "Account Number", searchable: true },
562
+ { name: "PropAddr1", label: "Site Address", searchable: true },
563
+ { name: "PropCity", label: "Site City", searchable: true },
564
+ { name: "PropZip", label: "Site ZIP", searchable: false },
565
+ { name: "Acreage", label: "Acres", searchable: false }
566
+ ],
567
+ sampleQuery: "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0/query?where=UPPER(Name1)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
568
+ license: "unknown",
569
+ licenseUrl: "https://www.arcgis.com/home/item.html?id=07c93ca64bbf4fb8a8d49b7ea80ef067",
570
+ status: "live",
571
+ lastVerified: "2026-10-03",
572
+ verifiedBy: "manual"
573
+ }
574
+ ],
575
+ contact: {
576
+ department: "Mapping Department, Mobile County Revenue Commission",
577
+ url: null,
578
+ email: null
579
+ },
580
+ notes: "Mobile County, Alabama (Mobile; FIPS 01097) publishes its parcels as the 'Mobile County Alabama Tax Parcels' FeatureServer, authored by the Mobile County Revenue Commission's Mapping Department and updated 2026-09-22. 214,040 parcels, countywide. The owner is in Name1 (and Name2), the parcel id in Parcel_Number (ParcelNo is the formatted form), and the site address in PropAddr1 with PropCity and PropZip. The layer has NO owner mailing-address fields (its columns are OBJECTID, Parcel_Number, Account_Number, ParcelNo, Name1, Name2, PropAddr1, PropAddr2, PropCity, PropState, PropZip, Acreage, Sqft, KeyNum), so it serves owner names and site addresses, not mailing addresses. String fields are heavily space padded (Name1 is 255 wide), so trim them and search with UPPER(Name1) LIKE 'SMITH%', never equality. The spatial reference is wkid 102630, so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only an informational-use disclaimer. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH BONNIE G, 0104430000006.000, 20240 HIGHWAY 43, Mount Vernon)."
539
581
  }
540
582
  ]
541
583
  };
@@ -12815,7 +12857,7 @@ var georgia_default = {
12815
12857
  stateSlug: "georgia",
12816
12858
  stateName: "Georgia",
12817
12859
  stateAbbrev: "GA",
12818
- lastUpdated: "2026-08-25",
12860
+ lastUpdated: "2026-10-03",
12819
12861
  counties: [
12820
12862
  {
12821
12863
  id: "ga-fulton",
@@ -13182,6 +13224,51 @@ var georgia_default = {
13182
13224
  email: null
13183
13225
  },
13184
13226
  notes: "Savannah and Chatham County, published by SAGIS. 125,326 parcels with owner names on 124,952 rows (99.7 percent), and the fullest field set in this batch: parcel id, two owner columns, a complete mailing address, a combined situs and split situs parts. IMPORTANT for maintenance: this service holds 28 year-versioned layers, 0 to 17 being Historic Parcels 1998 to 2015 and 18 to 27 being Parcel Digest 2016 to 2025. Layer 27 is the newest today. When SAGIS publishes Parcel Digest 2026 it will be layer 28 and this entry will silently go a year stale, so the layer index needs checking whenever this record is reverified."
13227
+ },
13228
+ {
13229
+ id: "ga-dougherty",
13230
+ state: "GA",
13231
+ stateName: "Georgia",
13232
+ stateSlug: "georgia",
13233
+ county: "Dougherty",
13234
+ countySlug: "dougherty-county",
13235
+ countyFips: "13095",
13236
+ hasPublicRest: true,
13237
+ endpoints: [
13238
+ {
13239
+ url: "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0",
13240
+ serviceType: "FeatureServer",
13241
+ layerIndex: 0,
13242
+ layerName: "Parcels",
13243
+ supportsQuery: true,
13244
+ corsEnabled: true,
13245
+ searchFields: [
13246
+ { name: "Name", label: "Owner Name", searchable: true },
13247
+ { name: "ParcelNum", label: "Parcel ID", searchable: true },
13248
+ { name: "Address", label: "Site Address", searchable: true },
13249
+ { name: "SiteCity", label: "Site City", searchable: true },
13250
+ { name: "SiteZip", label: "Site ZIP", searchable: false },
13251
+ { name: "MailAddress1", label: "Owner Mailing Address", searchable: true },
13252
+ { name: "MailCity", label: "Owner Mailing City", searchable: true },
13253
+ { name: "MailState", label: "Owner Mailing State", searchable: false },
13254
+ { name: "MailZip", label: "Owner Mailing ZIP", searchable: false },
13255
+ { name: "Jurisdiction", label: "Jurisdiction (City or County)", searchable: false },
13256
+ { name: "TotalAcerage", label: "Acres", searchable: false }
13257
+ ],
13258
+ sampleQuery: "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0/query?where=UPPER(Name)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
13259
+ license: "unknown",
13260
+ licenseUrl: "https://www.arcgis.com/home/item.html?id=9729f520dfab47fab85484908994ef1f",
13261
+ status: "live",
13262
+ lastVerified: "2026-10-03",
13263
+ verifiedBy: "manual"
13264
+ }
13265
+ ],
13266
+ contact: {
13267
+ department: "Albany GIS (Albany-Dougherty Geographic Information System)",
13268
+ url: null,
13269
+ email: null
13270
+ },
13271
+ notes: "Dougherty County, Georgia (county seat Albany) publishes its parcels as the 'Dougherty County Land Parcels Dataset' FeatureServer, maintained by Albany GIS, covering both the CITY and COUNTY jurisdictions (the Jurisdiction column says which). 38,007 parcels as of 2026-10-03. The owner is in Name, the parcel id in ParcelNum, the site address in Address (with SiteCity and SiteZip) and the owner mailing address in MailAddress1/MailCity/MailState/MailZip; MailAddress1 was empty on the first rows sampled. String fields are space padded to their full width, so trim them and search with UPPER(Name) LIKE 'SMITH%', never equality. The layer's spatial reference is wkid 102667 (latestWkid 2240), so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only a disclaimer that Albany GIS makes every effort at accuracy and that all data is subject to change. A third-party count of 39,443 parcels is slightly higher than the layer's, so the public view may be a subset. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH SHIRLEY PEARL, 0000S/00003/03A, 2803 ELTON ST, Albany)."
13185
13272
  }
13186
13273
  ]
13187
13274
  };
@@ -19369,7 +19456,7 @@ var oregon_default = {
19369
19456
  stateSlug: "oregon",
19370
19457
  stateName: "Oregon",
19371
19458
  stateAbbrev: "OR",
19372
- lastUpdated: "2026-09-26",
19459
+ lastUpdated: "2026-10-03",
19373
19460
  counties: [
19374
19461
  {
19375
19462
  id: "or-multnomah",
@@ -19617,6 +19704,51 @@ var oregon_default = {
19617
19704
  email: "gisquestions@clackamas.us"
19618
19705
  },
19619
19706
  notes: "No public REST parcel layer with owner names was found for Clackamas County (county seat Oregon City) as of 2026-09-26. The county states that it does not publish property owner names online and directs owner-information requests to Assessment and Taxation, and its GIS shapefile downloads require accepting a data licensing agreement. No county-hosted ArcGIS REST catalog was found; the public tools, CMap and AscendWeb, are interactive viewers. Two statewide layers cover the county but neither can serve an owner search: the Oregon Department of Forestry's taxlot layer named 'Clackamas County' declares owner fields but has query disabled, and the Oregon Department of Transportation's taxlot layer is queryable but carries only map and taxlot numbers. Metro's regional RLIS 'Taxlots (Public)' dataset, per its listing, excludes ownership."
19707
+ },
19708
+ {
19709
+ id: "or-malheur",
19710
+ state: "OR",
19711
+ stateName: "Oregon",
19712
+ stateSlug: "oregon",
19713
+ county: "Malheur",
19714
+ countySlug: "malheur-county",
19715
+ countyFips: "41045",
19716
+ hasPublicRest: true,
19717
+ endpoints: [
19718
+ {
19719
+ url: "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16",
19720
+ serviceType: "FeatureServer",
19721
+ layerIndex: 16,
19722
+ layerName: "TL Jun2026",
19723
+ supportsQuery: true,
19724
+ corsEnabled: true,
19725
+ searchFields: [
19726
+ { name: "OWNERSNAME", label: "Owner Name", searchable: true },
19727
+ { name: "MapTaxlot", label: "Map and Taxlot ID", searchable: true },
19728
+ { name: "Taxlot", label: "Taxlot", searchable: false },
19729
+ { name: "SITUSADD", label: "Site Address", searchable: true },
19730
+ { name: "CITY", label: "Site City", searchable: true },
19731
+ { name: "ADD1", label: "Owner Mailing Address Line 1", searchable: true },
19732
+ { name: "ADD2", label: "Owner Mailing Address Line 2", searchable: false },
19733
+ { name: "CITYSTATE", label: "Owner Mailing City and State", searchable: true },
19734
+ { name: "ZIP", label: "Owner Mailing ZIP", searchable: false },
19735
+ { name: "ZONING", label: "Zoning", searchable: false },
19736
+ { name: "TOTACRE", label: "Total Acres", searchable: false }
19737
+ ],
19738
+ sampleQuery: "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16/query?where=UPPER(OWNERSNAME)%20LIKE%20'SMITH%25'&outFields=MapTaxlot,OWNERSNAME,ADD1,CITYSTATE,SITUSADD,CITY&returnGeometry=false&resultRecordCount=10&f=json",
19739
+ license: "unknown",
19740
+ licenseUrl: "https://www.malheurco.org/gis/",
19741
+ status: "live",
19742
+ lastVerified: "2026-10-03",
19743
+ verifiedBy: "manual"
19744
+ }
19745
+ ],
19746
+ contact: {
19747
+ department: "Malheur County GIS (GIS Specialist), 251 B St W #2, Vale, OR 97918, (541) 473-5574",
19748
+ url: "https://www.malheurco.org/gis/",
19749
+ email: null
19750
+ },
19751
+ notes: "Malheur County, Oregon (county seat Vale) publishes its tax lots as a layer of the County_GIS_Portal_WFL1 FeatureServer, the data source of the county's public Malheur County Tax Lot Map experience (linked from malheurco.org/gis). 20,570 features as of 2026-10-03. The owner is OWNERSNAME, the parcel id MapTaxlot (for example 15S47E28B04702), the site address SITUSADD with CITY, and the owner mailing address ADD1/ADD2/CITYSTATE/ZIP. SITUSADD is sometimes a bare zero and ADD1 is often null. MAINTENANCE QUIRK: the layer name and index are month-stamped (currently layer 16, 'TL Jun2026'; the siblings are 'NonTL Jun2026' at 17 and Zoning_2026 at 25) and the county republishes monthly, so the name or index can change. When the liveness probe flags this record, re-resolve it: list the FeatureServer's layers, pick the one whose name starts with 'TL ' and which carries an OWNERSNAME field, then update layerIndex, layerName and the url. Do not hard-code 16 forever. Named outFields are accepted. CORS answers Access-Control-Allow-Origin *. The layer states no license; the county GIS page links a Data Licensing Agreement for bulk data. The statewide ODF layer for Malheur has an owner line but query disabled, and Malheur is not in the OWRD layer, so there is no usable fallback. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, JAMIE LEE, 15S47E28B04702, Ontario)."
19620
19752
  }
19621
19753
  ]
19622
19754
  };
@@ -21015,7 +21147,7 @@ var washington_default = {
21015
21147
  stateSlug: "washington",
21016
21148
  stateName: "Washington",
21017
21149
  stateAbbrev: "WA",
21018
- lastUpdated: "2026-06-06",
21150
+ lastUpdated: "2026-10-03",
21019
21151
  counties: [
21020
21152
  {
21021
21153
  id: "wa-king",
@@ -21191,6 +21323,52 @@ var washington_default = {
21191
21323
  email: null
21192
21324
  },
21193
21325
  notes: "45 fields confirmed including PARCEL_NO, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, SITUS_STRE, SITUS_CITY, SITUS_ZIP, SD_NAME, LEGAL_DESC, TOTAL_ACRES, BLDG_VALUE, LAND_VALUE, TOTAL_VALUE, ANNUAL_TAX, STATUS_IND, PROP_SUBTY, O_NEIGHBOR, PROP_TYPE, INSPCT_CYC, REGION, MULT_PARCL, SALE_DATE, SALE_PRICE, SALE_VRFY, USE_CODE, SIGMA_YEAR, TAXABLE, EXEMPT_TY, LOCAL_IND, TCA, CURR_USE, INCORP, YEAR_BUILT, EFF_YR_BUI, RES_QUAL, RES_COND, REC_VOLPAG, SECTTIE, PARENT, MapSource, GlobalID. Live query confirmed: PARCEL_NO LIKE '%21820%' returns Thurston County parcels with mailing address and value data. NOTE: Owner name is NOT on this public layer per WA State law; ADDRESS1/2 is the mailing address (generally owner's address). Data from ASCEND and SIGMA databases. Item ID: 4ca0091703b345f8a72f68a4d173d9be. maxRecordCount=1000."
21326
+ },
21327
+ {
21328
+ id: "wa-island",
21329
+ state: "WA",
21330
+ stateName: "Washington",
21331
+ stateSlug: "washington",
21332
+ county: "Island",
21333
+ countySlug: "island-county",
21334
+ countyFips: "53029",
21335
+ hasPublicRest: true,
21336
+ endpoints: [
21337
+ {
21338
+ url: "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0",
21339
+ serviceType: "MapServer",
21340
+ layerIndex: 0,
21341
+ layerName: "Parcels",
21342
+ supportsQuery: true,
21343
+ corsEnabled: true,
21344
+ searchFields: [
21345
+ { name: "taxpayer", label: "Owner Name (Taxpayer)", searchable: true },
21346
+ { name: "ParcelNo", label: "Parcel ID", searchable: true },
21347
+ { name: "physical_addr", label: "Site Address", searchable: true },
21348
+ { name: "physical_addr_city", label: "Site City", searchable: true },
21349
+ { name: "physical_addr_zip", label: "Site ZIP", searchable: false },
21350
+ { name: "mailing_addr1", label: "Owner Mailing Address Line 1", searchable: true },
21351
+ { name: "mailing_addr2", label: "Owner Mailing Address Line 2", searchable: false },
21352
+ { name: "mailing_addr_city", label: "Owner Mailing City", searchable: true },
21353
+ { name: "mailing_addr_state", label: "Owner Mailing State", searchable: false },
21354
+ { name: "mailing_addr_zip", label: "Owner Mailing ZIP", searchable: false },
21355
+ { name: "property_land_use_code", label: "Land Use Code", searchable: false },
21356
+ { name: "legal_acreage", label: "Legal Acreage", searchable: false }
21357
+ ],
21358
+ sampleQuery: "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0/query?where=UPPER(taxpayer)%20LIKE%20'SMITH%25'&outFields=ParcelNo,taxpayer,physical_addr,mailing_addr1&returnGeometry=false&resultRecordCount=10&f=json",
21359
+ license: "unknown",
21360
+ licenseUrl: "https://maps.islandcountywa.gov",
21361
+ status: "live",
21362
+ lastVerified: "2026-10-03",
21363
+ verifiedBy: "manual"
21364
+ }
21365
+ ],
21366
+ contact: {
21367
+ department: "Island County Assessor / GIS",
21368
+ url: "https://maps.islandcountywa.gov",
21369
+ email: null
21370
+ },
21371
+ notes: "Island County, Washington (county seat Coupeville) serves its parcels from the Assessor's own ArcGIS Server, joined to the PACS assessor data and exported nightly per the service description. The owner field is called taxpayer, the parcel id ParcelNo (for example R03213-384-4950), the site address physical_addr with its city, state and ZIP parts, and the owner mailing address mailing_addr1 to mailing_addr3 with city, state and ZIP. ParcelNo and taxpayer values carry trailing spaces, so trim on display, and some parcels (vacant land) have a blank physical_addr. Named outFields are accepted. CORS reflects the request Origin and sends Access-Control-Allow-Credentials true, so it is not a wildcard. maxRecordCount is 60000. The layer's copyright text reads DO NOT USE AS LEGAL DOCUMENT and no license is stated. Two sibling services carry the same data and serve as fallbacks: SmartGov/Parcels MapServer and Auditor/BaseMap MapServer layer 0. The contact URL is the county map server root, which answered HTTP 200 on 2026-10-03; no separate Assessor contact page was retrieved. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, COLIN, R13334-372-1430)."
21194
21372
  }
21195
21373
  ]
21196
21374
  };
package/dist/index.js CHANGED
@@ -13,12 +13,12 @@ var LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
13
13
  // data/index.json
14
14
  var data_default = {
15
15
  version: "0.3.0",
16
- lastUpdated: "2026-09-26",
16
+ lastUpdated: "2026-10-03",
17
17
  totals: {
18
18
  states: 51,
19
- counties: 235,
20
- endpoints: 247,
21
- countiesWithEndpoint: 229,
19
+ counties: 239,
20
+ endpoints: 251,
21
+ countiesWithEndpoint: 233,
22
22
  countiesUnprobeable: 1
23
23
  },
24
24
  states: [
@@ -26,8 +26,8 @@ var data_default = {
26
26
  slug: "alabama",
27
27
  name: "Alabama",
28
28
  abbrev: "AL",
29
- countyCount: 2,
30
- endpointCount: 2,
29
+ countyCount: 3,
30
+ endpointCount: 3,
31
31
  populated: true
32
32
  },
33
33
  {
@@ -106,8 +106,8 @@ var data_default = {
106
106
  slug: "georgia",
107
107
  name: "Georgia",
108
108
  abbrev: "GA",
109
- countyCount: 5,
110
- endpointCount: 5,
109
+ countyCount: 6,
110
+ endpointCount: 6,
111
111
  populated: true
112
112
  },
113
113
  {
@@ -322,8 +322,8 @@ var data_default = {
322
322
  slug: "oregon",
323
323
  name: "Oregon",
324
324
  abbrev: "OR",
325
- countyCount: 6,
326
- endpointCount: 5,
325
+ countyCount: 7,
326
+ endpointCount: 6,
327
327
  populated: true
328
328
  },
329
329
  {
@@ -402,8 +402,8 @@ var data_default = {
402
402
  slug: "washington",
403
403
  name: "Washington",
404
404
  abbrev: "WA",
405
- countyCount: 4,
406
- endpointCount: 4,
405
+ countyCount: 5,
406
+ endpointCount: 5,
407
407
  populated: true
408
408
  },
409
409
  {
@@ -438,7 +438,7 @@ var alabama_default = {
438
438
  stateSlug: "alabama",
439
439
  stateName: "Alabama",
440
440
  stateAbbrev: "AL",
441
- lastUpdated: "2026-06-20",
441
+ lastUpdated: "2026-10-03",
442
442
  counties: [
443
443
  {
444
444
  id: "al-shelby",
@@ -534,6 +534,48 @@ var alabama_default = {
534
534
  email: null
535
535
  },
536
536
  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."
537
+ },
538
+ {
539
+ id: "al-mobile",
540
+ state: "AL",
541
+ stateName: "Alabama",
542
+ stateSlug: "alabama",
543
+ county: "Mobile",
544
+ countySlug: "mobile-county",
545
+ countyFips: "01097",
546
+ hasPublicRest: true,
547
+ endpoints: [
548
+ {
549
+ url: "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0",
550
+ serviceType: "FeatureServer",
551
+ layerIndex: 0,
552
+ layerName: "MCRC_Public_Parcels",
553
+ supportsQuery: true,
554
+ corsEnabled: true,
555
+ searchFields: [
556
+ { name: "Name1", label: "Owner Name 1", searchable: true },
557
+ { name: "Name2", label: "Owner Name 2", searchable: true },
558
+ { name: "Parcel_Number", label: "Parcel ID", searchable: true },
559
+ { name: "Account_Number", label: "Account Number", searchable: true },
560
+ { name: "PropAddr1", label: "Site Address", searchable: true },
561
+ { name: "PropCity", label: "Site City", searchable: true },
562
+ { name: "PropZip", label: "Site ZIP", searchable: false },
563
+ { name: "Acreage", label: "Acres", searchable: false }
564
+ ],
565
+ sampleQuery: "https://services8.arcgis.com/HND1NcQt6vgOGn1z/arcgis/rest/services/MCRC_Public_Parcels/FeatureServer/0/query?where=UPPER(Name1)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
566
+ license: "unknown",
567
+ licenseUrl: "https://www.arcgis.com/home/item.html?id=07c93ca64bbf4fb8a8d49b7ea80ef067",
568
+ status: "live",
569
+ lastVerified: "2026-10-03",
570
+ verifiedBy: "manual"
571
+ }
572
+ ],
573
+ contact: {
574
+ department: "Mapping Department, Mobile County Revenue Commission",
575
+ url: null,
576
+ email: null
577
+ },
578
+ notes: "Mobile County, Alabama (Mobile; FIPS 01097) publishes its parcels as the 'Mobile County Alabama Tax Parcels' FeatureServer, authored by the Mobile County Revenue Commission's Mapping Department and updated 2026-09-22. 214,040 parcels, countywide. The owner is in Name1 (and Name2), the parcel id in Parcel_Number (ParcelNo is the formatted form), and the site address in PropAddr1 with PropCity and PropZip. The layer has NO owner mailing-address fields (its columns are OBJECTID, Parcel_Number, Account_Number, ParcelNo, Name1, Name2, PropAddr1, PropAddr2, PropCity, PropState, PropZip, Acreage, Sqft, KeyNum), so it serves owner names and site addresses, not mailing addresses. String fields are heavily space padded (Name1 is 255 wide), so trim them and search with UPPER(Name1) LIKE 'SMITH%', never equality. The spatial reference is wkid 102630, so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only an informational-use disclaimer. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH BONNIE G, 0104430000006.000, 20240 HIGHWAY 43, Mount Vernon)."
537
579
  }
538
580
  ]
539
581
  };
@@ -12813,7 +12855,7 @@ var georgia_default = {
12813
12855
  stateSlug: "georgia",
12814
12856
  stateName: "Georgia",
12815
12857
  stateAbbrev: "GA",
12816
- lastUpdated: "2026-08-25",
12858
+ lastUpdated: "2026-10-03",
12817
12859
  counties: [
12818
12860
  {
12819
12861
  id: "ga-fulton",
@@ -13180,6 +13222,51 @@ var georgia_default = {
13180
13222
  email: null
13181
13223
  },
13182
13224
  notes: "Savannah and Chatham County, published by SAGIS. 125,326 parcels with owner names on 124,952 rows (99.7 percent), and the fullest field set in this batch: parcel id, two owner columns, a complete mailing address, a combined situs and split situs parts. IMPORTANT for maintenance: this service holds 28 year-versioned layers, 0 to 17 being Historic Parcels 1998 to 2015 and 18 to 27 being Parcel Digest 2016 to 2025. Layer 27 is the newest today. When SAGIS publishes Parcel Digest 2026 it will be layer 28 and this entry will silently go a year stale, so the layer index needs checking whenever this record is reverified."
13225
+ },
13226
+ {
13227
+ id: "ga-dougherty",
13228
+ state: "GA",
13229
+ stateName: "Georgia",
13230
+ stateSlug: "georgia",
13231
+ county: "Dougherty",
13232
+ countySlug: "dougherty-county",
13233
+ countyFips: "13095",
13234
+ hasPublicRest: true,
13235
+ endpoints: [
13236
+ {
13237
+ url: "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0",
13238
+ serviceType: "FeatureServer",
13239
+ layerIndex: 0,
13240
+ layerName: "Parcels",
13241
+ supportsQuery: true,
13242
+ corsEnabled: true,
13243
+ searchFields: [
13244
+ { name: "Name", label: "Owner Name", searchable: true },
13245
+ { name: "ParcelNum", label: "Parcel ID", searchable: true },
13246
+ { name: "Address", label: "Site Address", searchable: true },
13247
+ { name: "SiteCity", label: "Site City", searchable: true },
13248
+ { name: "SiteZip", label: "Site ZIP", searchable: false },
13249
+ { name: "MailAddress1", label: "Owner Mailing Address", searchable: true },
13250
+ { name: "MailCity", label: "Owner Mailing City", searchable: true },
13251
+ { name: "MailState", label: "Owner Mailing State", searchable: false },
13252
+ { name: "MailZip", label: "Owner Mailing ZIP", searchable: false },
13253
+ { name: "Jurisdiction", label: "Jurisdiction (City or County)", searchable: false },
13254
+ { name: "TotalAcerage", label: "Acres", searchable: false }
13255
+ ],
13256
+ sampleQuery: "https://services6.arcgis.com/VKHi8CC6pMIyYUIs/arcgis/rest/services/Parcels_Public_View/FeatureServer/0/query?where=UPPER(Name)%20LIKE%20%27SMITH%25%27&outFields=*&returnGeometry=false&resultRecordCount=10&f=json",
13257
+ license: "unknown",
13258
+ licenseUrl: "https://www.arcgis.com/home/item.html?id=9729f520dfab47fab85484908994ef1f",
13259
+ status: "live",
13260
+ lastVerified: "2026-10-03",
13261
+ verifiedBy: "manual"
13262
+ }
13263
+ ],
13264
+ contact: {
13265
+ department: "Albany GIS (Albany-Dougherty Geographic Information System)",
13266
+ url: null,
13267
+ email: null
13268
+ },
13269
+ notes: "Dougherty County, Georgia (county seat Albany) publishes its parcels as the 'Dougherty County Land Parcels Dataset' FeatureServer, maintained by Albany GIS, covering both the CITY and COUNTY jurisdictions (the Jurisdiction column says which). 38,007 parcels as of 2026-10-03. The owner is in Name, the parcel id in ParcelNum, the site address in Address (with SiteCity and SiteZip) and the owner mailing address in MailAddress1/MailCity/MailState/MailZip; MailAddress1 was empty on the first rows sampled. String fields are space padded to their full width, so trim them and search with UPPER(Name) LIKE 'SMITH%', never equality. The layer's spatial reference is wkid 102667 (latestWkid 2240), so send outSR=4326 if you need longitude and latitude. CORS answers Access-Control-Allow-Origin *. No open-data license is stated; the item carries only a disclaimer that Albany GIS makes every effort at accuracy and that all data is subject to change. A third-party count of 39,443 parcels is slightly higher than the layer's, so the public view may be a subset. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH SHIRLEY PEARL, 0000S/00003/03A, 2803 ELTON ST, Albany)."
13183
13270
  }
13184
13271
  ]
13185
13272
  };
@@ -19367,7 +19454,7 @@ var oregon_default = {
19367
19454
  stateSlug: "oregon",
19368
19455
  stateName: "Oregon",
19369
19456
  stateAbbrev: "OR",
19370
- lastUpdated: "2026-09-26",
19457
+ lastUpdated: "2026-10-03",
19371
19458
  counties: [
19372
19459
  {
19373
19460
  id: "or-multnomah",
@@ -19615,6 +19702,51 @@ var oregon_default = {
19615
19702
  email: "gisquestions@clackamas.us"
19616
19703
  },
19617
19704
  notes: "No public REST parcel layer with owner names was found for Clackamas County (county seat Oregon City) as of 2026-09-26. The county states that it does not publish property owner names online and directs owner-information requests to Assessment and Taxation, and its GIS shapefile downloads require accepting a data licensing agreement. No county-hosted ArcGIS REST catalog was found; the public tools, CMap and AscendWeb, are interactive viewers. Two statewide layers cover the county but neither can serve an owner search: the Oregon Department of Forestry's taxlot layer named 'Clackamas County' declares owner fields but has query disabled, and the Oregon Department of Transportation's taxlot layer is queryable but carries only map and taxlot numbers. Metro's regional RLIS 'Taxlots (Public)' dataset, per its listing, excludes ownership."
19705
+ },
19706
+ {
19707
+ id: "or-malheur",
19708
+ state: "OR",
19709
+ stateName: "Oregon",
19710
+ stateSlug: "oregon",
19711
+ county: "Malheur",
19712
+ countySlug: "malheur-county",
19713
+ countyFips: "41045",
19714
+ hasPublicRest: true,
19715
+ endpoints: [
19716
+ {
19717
+ url: "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16",
19718
+ serviceType: "FeatureServer",
19719
+ layerIndex: 16,
19720
+ layerName: "TL Jun2026",
19721
+ supportsQuery: true,
19722
+ corsEnabled: true,
19723
+ searchFields: [
19724
+ { name: "OWNERSNAME", label: "Owner Name", searchable: true },
19725
+ { name: "MapTaxlot", label: "Map and Taxlot ID", searchable: true },
19726
+ { name: "Taxlot", label: "Taxlot", searchable: false },
19727
+ { name: "SITUSADD", label: "Site Address", searchable: true },
19728
+ { name: "CITY", label: "Site City", searchable: true },
19729
+ { name: "ADD1", label: "Owner Mailing Address Line 1", searchable: true },
19730
+ { name: "ADD2", label: "Owner Mailing Address Line 2", searchable: false },
19731
+ { name: "CITYSTATE", label: "Owner Mailing City and State", searchable: true },
19732
+ { name: "ZIP", label: "Owner Mailing ZIP", searchable: false },
19733
+ { name: "ZONING", label: "Zoning", searchable: false },
19734
+ { name: "TOTACRE", label: "Total Acres", searchable: false }
19735
+ ],
19736
+ sampleQuery: "https://services5.arcgis.com/ZfBm5CKxbEBYLP3J/arcgis/rest/services/County_GIS_Portal_WFL1/FeatureServer/16/query?where=UPPER(OWNERSNAME)%20LIKE%20'SMITH%25'&outFields=MapTaxlot,OWNERSNAME,ADD1,CITYSTATE,SITUSADD,CITY&returnGeometry=false&resultRecordCount=10&f=json",
19737
+ license: "unknown",
19738
+ licenseUrl: "https://www.malheurco.org/gis/",
19739
+ status: "live",
19740
+ lastVerified: "2026-10-03",
19741
+ verifiedBy: "manual"
19742
+ }
19743
+ ],
19744
+ contact: {
19745
+ department: "Malheur County GIS (GIS Specialist), 251 B St W #2, Vale, OR 97918, (541) 473-5574",
19746
+ url: "https://www.malheurco.org/gis/",
19747
+ email: null
19748
+ },
19749
+ notes: "Malheur County, Oregon (county seat Vale) publishes its tax lots as a layer of the County_GIS_Portal_WFL1 FeatureServer, the data source of the county's public Malheur County Tax Lot Map experience (linked from malheurco.org/gis). 20,570 features as of 2026-10-03. The owner is OWNERSNAME, the parcel id MapTaxlot (for example 15S47E28B04702), the site address SITUSADD with CITY, and the owner mailing address ADD1/ADD2/CITYSTATE/ZIP. SITUSADD is sometimes a bare zero and ADD1 is often null. MAINTENANCE QUIRK: the layer name and index are month-stamped (currently layer 16, 'TL Jun2026'; the siblings are 'NonTL Jun2026' at 17 and Zoning_2026 at 25) and the county republishes monthly, so the name or index can change. When the liveness probe flags this record, re-resolve it: list the FeatureServer's layers, pick the one whose name starts with 'TL ' and which carries an OWNERSNAME field, then update layerIndex, layerName and the url. Do not hard-code 16 forever. Named outFields are accepted. CORS answers Access-Control-Allow-Origin *. The layer states no license; the county GIS page links a Data Licensing Agreement for bulk data. The statewide ODF layer for Malheur has an owner line but query disabled, and Malheur is not in the OWRD layer, so there is no usable fallback. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, JAMIE LEE, 15S47E28B04702, Ontario)."
19618
19750
  }
19619
19751
  ]
19620
19752
  };
@@ -21013,7 +21145,7 @@ var washington_default = {
21013
21145
  stateSlug: "washington",
21014
21146
  stateName: "Washington",
21015
21147
  stateAbbrev: "WA",
21016
- lastUpdated: "2026-06-06",
21148
+ lastUpdated: "2026-10-03",
21017
21149
  counties: [
21018
21150
  {
21019
21151
  id: "wa-king",
@@ -21189,6 +21321,52 @@ var washington_default = {
21189
21321
  email: null
21190
21322
  },
21191
21323
  notes: "45 fields confirmed including PARCEL_NO, ADDRESS1, ADDRESS2, CITY, STATE, ZIP, COUNTRY, SITUS_STRE, SITUS_CITY, SITUS_ZIP, SD_NAME, LEGAL_DESC, TOTAL_ACRES, BLDG_VALUE, LAND_VALUE, TOTAL_VALUE, ANNUAL_TAX, STATUS_IND, PROP_SUBTY, O_NEIGHBOR, PROP_TYPE, INSPCT_CYC, REGION, MULT_PARCL, SALE_DATE, SALE_PRICE, SALE_VRFY, USE_CODE, SIGMA_YEAR, TAXABLE, EXEMPT_TY, LOCAL_IND, TCA, CURR_USE, INCORP, YEAR_BUILT, EFF_YR_BUI, RES_QUAL, RES_COND, REC_VOLPAG, SECTTIE, PARENT, MapSource, GlobalID. Live query confirmed: PARCEL_NO LIKE '%21820%' returns Thurston County parcels with mailing address and value data. NOTE: Owner name is NOT on this public layer per WA State law; ADDRESS1/2 is the mailing address (generally owner's address). Data from ASCEND and SIGMA databases. Item ID: 4ca0091703b345f8a72f68a4d173d9be. maxRecordCount=1000."
21324
+ },
21325
+ {
21326
+ id: "wa-island",
21327
+ state: "WA",
21328
+ stateName: "Washington",
21329
+ stateSlug: "washington",
21330
+ county: "Island",
21331
+ countySlug: "island-county",
21332
+ countyFips: "53029",
21333
+ hasPublicRest: true,
21334
+ endpoints: [
21335
+ {
21336
+ url: "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0",
21337
+ serviceType: "MapServer",
21338
+ layerIndex: 0,
21339
+ layerName: "Parcels",
21340
+ supportsQuery: true,
21341
+ corsEnabled: true,
21342
+ searchFields: [
21343
+ { name: "taxpayer", label: "Owner Name (Taxpayer)", searchable: true },
21344
+ { name: "ParcelNo", label: "Parcel ID", searchable: true },
21345
+ { name: "physical_addr", label: "Site Address", searchable: true },
21346
+ { name: "physical_addr_city", label: "Site City", searchable: true },
21347
+ { name: "physical_addr_zip", label: "Site ZIP", searchable: false },
21348
+ { name: "mailing_addr1", label: "Owner Mailing Address Line 1", searchable: true },
21349
+ { name: "mailing_addr2", label: "Owner Mailing Address Line 2", searchable: false },
21350
+ { name: "mailing_addr_city", label: "Owner Mailing City", searchable: true },
21351
+ { name: "mailing_addr_state", label: "Owner Mailing State", searchable: false },
21352
+ { name: "mailing_addr_zip", label: "Owner Mailing ZIP", searchable: false },
21353
+ { name: "property_land_use_code", label: "Land Use Code", searchable: false },
21354
+ { name: "legal_acreage", label: "Legal Acreage", searchable: false }
21355
+ ],
21356
+ sampleQuery: "https://maps.islandcountywa.gov/arcgis/rest/services/Geocortex/Base/MapServer/0/query?where=UPPER(taxpayer)%20LIKE%20'SMITH%25'&outFields=ParcelNo,taxpayer,physical_addr,mailing_addr1&returnGeometry=false&resultRecordCount=10&f=json",
21357
+ license: "unknown",
21358
+ licenseUrl: "https://maps.islandcountywa.gov",
21359
+ status: "live",
21360
+ lastVerified: "2026-10-03",
21361
+ verifiedBy: "manual"
21362
+ }
21363
+ ],
21364
+ contact: {
21365
+ department: "Island County Assessor / GIS",
21366
+ url: "https://maps.islandcountywa.gov",
21367
+ email: null
21368
+ },
21369
+ notes: "Island County, Washington (county seat Coupeville) serves its parcels from the Assessor's own ArcGIS Server, joined to the PACS assessor data and exported nightly per the service description. The owner field is called taxpayer, the parcel id ParcelNo (for example R03213-384-4950), the site address physical_addr with its city, state and ZIP parts, and the owner mailing address mailing_addr1 to mailing_addr3 with city, state and ZIP. ParcelNo and taxpayer values carry trailing spaces, so trim on display, and some parcels (vacant land) have a blank physical_addr. Named outFields are accepted. CORS reflects the request Origin and sends Access-Control-Allow-Credentials true, so it is not a wildcard. maxRecordCount is 60000. The layer's copyright text reads DO NOT USE AS LEGAL DOCUMENT and no license is stated. Two sibling services carry the same data and serve as fallbacks: SmartGov/Parcels MapServer and Auditor/BaseMap MapServer layer 0. The contact URL is the county map server root, which answered HTTP 200 on 2026-10-03; no separate Assessor contact page was retrieved. Verified live 2026-10-03: owner SMITH returned rows (first owner SMITH, COLIN, R13334-372-1430)."
21192
21370
  }
21193
21371
  ]
21194
21372
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@urbankitstudio/atlas",
3
- "version": "0.6.9",
4
- "description": "JS SDK for the UrbanKit County Parcel REST API Atlas: 235 counties across all 50 US states and DC, 247 verified public ArcGIS REST endpoints for county parcel data, with searchable field metadata, sample queries and license info.",
3
+ "version": "0.6.10",
4
+ "description": "JS SDK for the UrbanKit County Parcel REST API Atlas: 239 counties across all 50 US states and DC, 251 verified public ArcGIS REST endpoints for county parcel data, with searchable field metadata, sample queries and license info.",
5
5
  "keywords": [
6
6
  "parcel",
7
7
  "arcgis",
@@ -24,7 +24,7 @@
24
24
  "bugs": {
25
25
  "url": "https://github.com/urbankitstudio/atlas/issues"
26
26
  },
27
- "author": "UrbanKit Studio <urbankitstudio@gmail.com>",
27
+ "author": "UrbanKit Studio <contact@urbankitstudio.com>",
28
28
  "license": "MIT",
29
29
  "type": "module",
30
30
  "main": "./dist/index.cjs",