@urbankitstudio/atlas 0.6.2 → 0.6.4
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/LICENSE +1 -1
- package/README.md +12 -2
- package/data/california.json +27 -15
- package/data/new-york.json +4 -4
- package/data/south-carolina.json +5 -5
- package/data/texas.json +8 -8
- package/dist/index.cjs +44 -32
- package/dist/index.js +44 -32
- package/package.json +8 -6
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# @urbankitstudio/atlas
|
|
2
2
|
|
|
3
|
+
[](https://socket.dev/npm/package/@urbankitstudio/atlas)
|
|
4
|
+
|
|
3
5
|
JS SDK for the **UrbanKit County Parcel REST API Atlas** — a curated index of public ArcGIS REST endpoints for US county parcel data, with searchable field metadata, sample queries, and license info.
|
|
4
6
|
|
|
5
7
|
Use it to:
|
|
@@ -132,15 +134,23 @@ Omit `?fips=` to get every tracked county in one call.
|
|
|
132
134
|
|
|
133
135
|
## Coverage today
|
|
134
136
|
|
|
135
|
-
The atlas bundles **171 counties across all 50 US states** (174 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
|
|
137
|
+
The atlas bundles **171 counties across all 50 US states** (174 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
|
|
138
|
+
|
|
139
|
+
Every state has at least one county on record, and 166 of the 171 carry a verified endpoint. The other 5 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. 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.
|
|
136
140
|
|
|
137
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.
|
|
138
142
|
|
|
139
143
|
The live, browseable atlas lives at [urbankitstudio.com/parcel-atlas](https://urbankitstudio.com/parcel-atlas).
|
|
140
144
|
|
|
145
|
+
## Socket flags `urlStrings` — that's the atlas, not a leak
|
|
146
|
+
|
|
147
|
+
[Socket](https://socket.dev/npm/package/@urbankitstudio/atlas)'s supply-chain scanner flags this package for `urlStrings`: code and data containing many literal URLs. That flag is doing its job correctly, and the answer is not to hide the URLs — **they are the product.** Every one is a public, government-run ArcGIS REST endpoint for county parcel data, plus the two `urbankitstudio.com` URLs this SDK references for live status (`LIVE_STATUS_URL`, above) and parcel-lookup deep links. The package does not call any of them itself; it hands them to you as data (`sideEffects: false`, zero runtime dependencies).
|
|
148
|
+
|
|
149
|
+
Socket also flags `unpopularPackage` — a download-count signal, not a code issue, that install growth resolves on its own.
|
|
150
|
+
|
|
141
151
|
## License
|
|
142
152
|
|
|
143
|
-
MIT — see [LICENSE](./LICENSE). © 2026
|
|
153
|
+
MIT — see [LICENSE](./LICENSE). © 2026 UrbanKit Studio.
|
|
144
154
|
|
|
145
155
|
This package's atlas dataset (the open **discovery layer** — county → REST endpoint
|
|
146
156
|
mappings and field metadata) is provided under MIT. Live, always-fresh and enriched
|
package/data/california.json
CHANGED
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
"status": "restricted",
|
|
219
219
|
"basis": {
|
|
220
220
|
"type": "county_cited_statute",
|
|
221
|
-
"note": "Every row's OwnerName value is the literal string \"Protected Per CA Gov Code 7928.205\" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule
|
|
221
|
+
"note": "Every row's OwnerName value is the literal string \"Protected Per CA Gov Code 7928.205\" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule. Read narrowly, the section would cover a small number of parcels. The county applies it to every one.",
|
|
222
222
|
"citation": "Cal. Gov. Code 7928.205",
|
|
223
223
|
"attributedTo": "San Bernardino County",
|
|
224
224
|
"sourceUrl": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=7928.205&lawCode=GOV"
|
|
@@ -238,38 +238,50 @@
|
|
|
238
238
|
"hasPublicRest": true,
|
|
239
239
|
"endpoints": [
|
|
240
240
|
{
|
|
241
|
-
"url": "https://
|
|
241
|
+
"url": "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0",
|
|
242
242
|
"serviceType": "MapServer",
|
|
243
|
-
"layerIndex":
|
|
244
|
-
"layerName": "
|
|
243
|
+
"layerIndex": 0,
|
|
244
|
+
"layerName": "Parcels",
|
|
245
245
|
"supportsQuery": true,
|
|
246
246
|
"corsEnabled": null,
|
|
247
247
|
"searchFields": [
|
|
248
248
|
{ "name": "APN", "label": "Assessor Parcel Number", "searchable": true },
|
|
249
249
|
{ "name": "APN_8", "label": "APN (8-digit)", "searchable": true },
|
|
250
|
-
{ "name": "OWN_NAME1", "label": "Owner Name (Primary)", "searchable": true },
|
|
251
|
-
{ "name": "OWN_NAME2", "label": "Owner Name 2", "searchable": true },
|
|
252
|
-
{ "name": "OWN_NAME3", "label": "Owner Name 3", "searchable": true },
|
|
253
|
-
{ "name": "OWN_ADDR1", "label": "Owner Address 1", "searchable": true },
|
|
254
250
|
{ "name": "SITUS_ADDRESS", "label": "Situs Street Number", "searchable": true },
|
|
255
251
|
{ "name": "SITUS_STREET", "label": "Situs Street Name", "searchable": true },
|
|
256
|
-
{ "name": "
|
|
257
|
-
{ "name": "
|
|
252
|
+
{ "name": "SITUS_SUFFIX", "label": "Situs Street Suffix", "searchable": false },
|
|
253
|
+
{ "name": "SITUS_PRE_DIR", "label": "Situs Pre-direction", "searchable": false },
|
|
254
|
+
{ "name": "SITUS_POST_DIR", "label": "Situs Post-direction", "searchable": false },
|
|
255
|
+
{ "name": "SITUS_BUILDING", "label": "Situs Building", "searchable": false },
|
|
256
|
+
{ "name": "SITUS_SUITE", "label": "Situs Suite", "searchable": false },
|
|
257
|
+
{ "name": "SITUS_ZIP", "label": "Situs ZIP", "searchable": true },
|
|
258
|
+
{ "name": "SITUS_JURIS", "label": "Situs Jurisdiction Code", "searchable": false },
|
|
259
|
+
{ "name": "ACREAGE", "label": "Acreage", "searchable": false }
|
|
258
260
|
],
|
|
259
|
-
"sampleQuery": "https://
|
|
261
|
+
"sampleQuery": "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0/query?where=APN%3D%274982603900%27&outFields=APN,APN_8,SITUS_ADDRESS,SITUS_STREET,SITUS_SUFFIX,SITUS_ZIP&returnGeometry=false&f=json&resultRecordCount=10",
|
|
260
262
|
"license": "public",
|
|
261
|
-
"licenseUrl": "
|
|
263
|
+
"licenseUrl": "http://web.sangis.org/Legal_Notice.htm",
|
|
262
264
|
"status": "live",
|
|
263
|
-
"lastVerified": "2026-
|
|
265
|
+
"lastVerified": "2026-09-03",
|
|
264
266
|
"verifiedBy": "manual"
|
|
265
267
|
}
|
|
266
268
|
],
|
|
267
269
|
"contact": {
|
|
268
|
-
"department": "SanGIS / San Diego
|
|
270
|
+
"department": "SanGIS / County of San Diego Assessor",
|
|
269
271
|
"url": "https://gis-public.sandiegocounty.gov/",
|
|
270
272
|
"email": null
|
|
271
273
|
},
|
|
272
|
-
"notes": "
|
|
274
|
+
"notes": "16 fields confirmed 2026-09-03 on the County of San Diego's public parcel layer (service copyright 'SanGIS, County of San Diego Assessor', service description 'County of San Diego Assessors Parcels (PARCELS_ALL) redacted for public use', ~1.09M rows, maxRecordCount 1000, native State Plane feet, add outSR=4326 for lon/lat): APN, APN_8, SITUS_ADDRESS (house number), SITUS_PRE_DIR, SITUS_STREET, SITUS_SUFFIX, SITUS_POST_DIR, SITUS_FRACTION, SITUS_BUILDING, SITUS_SUITE, SITUS_ZIP, SITUS_JURIS, ACREAGE, QUAL_CLASS_SHAPE and geometry. No owner name, mailing address, sale date, value or community name: the county redacts them on every public derivative. Until 2026-09-03 this entry pointed at the City of San Diego's GeocoderMerged/MapServer/1, which then served owner names (OWN_NAME1-3, OWN_ADDR1-4) and answered ArcGIS error 500 'Service GeocoderMerged/MapServer not started' from 2026-09-02 20:45Z (autoheal #581); a made-up service name on that host errored differently, so the service existed and was stopped. Probed 2026-09-17: the city service is RUNNING again, reports 56 fields, and no longer serves owner names. Asking it for OWN_NAME1/2/3 returns ArcGIS error 400 'Failed to execute query' while the identical request for APN and ASR_TOTAL returns a feature, so the field was withdrawn rather than the service being down. It still reports displayFieldName 'OWN_NAME1' in every response, so a metadata-only or liveness-only check reads this endpoint as owner-bearing and healthy. Do not restore it as the owner source on a restart signal alone: ask for the field.",
|
|
275
|
+
"capabilityOverrides": {
|
|
276
|
+
"owner_name": {
|
|
277
|
+
"status": "not_published",
|
|
278
|
+
"basis": {
|
|
279
|
+
"type": "endpoint_schema",
|
|
280
|
+
"note": "The County of San Diego's public parcel layer (cosd_warehouse/parcels_all_for_public_use) carries APN and situs address only; owner name, owner mailing address, sale date and assessed value are removed by county policy. The county's owner-attributed layer exists but its own metadata says it is not authorized for public use, so the atlas does not point at it.",
|
|
281
|
+
"sourceUrl": "http://web.sangis.org/Legal_Notice.htm"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
273
285
|
},
|
|
274
286
|
{
|
|
275
287
|
"id": "ca-santa-clara",
|
package/data/new-york.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"lastUpdated": "2026-05-14",
|
|
6
6
|
"counties": [
|
|
7
7
|
{
|
|
8
|
-
"id": "ny-
|
|
8
|
+
"id": "ny-bronx",
|
|
9
9
|
"state": "NY",
|
|
10
10
|
"stateName": "New York",
|
|
11
11
|
"stateSlug": "new-york",
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
"notes": "54 fields confirmed. Includes PIN (21-char unique parcel ID), SBL (section-block-lot key), OWNER1, OWNER2, mailing address (MAILAD1/MAILAD2), property address (STREET, CITY, ZIP, ZIP4), property class (CLASS), property type/description, school district (SCHOOL, SCHL_DIST), SWIS code, lot dimensions (FRONT, DEPTH), acreage (ASSESSACRE, CALCACRES). Owner query tested and confirmed: UPPER(OWNER1) LIKE UPPER('%SMITH%') returns real residential parcels. This is the 2023 vintage Erie County parcel dataset. Erie County, NY is the Buffalo metropolitan area (FIPS 36029)."
|
|
272
272
|
},
|
|
273
273
|
{
|
|
274
|
-
"id": "ny-
|
|
274
|
+
"id": "ny-kings",
|
|
275
275
|
"state": "NY",
|
|
276
276
|
"stateName": "New York",
|
|
277
277
|
"stateSlug": "new-york",
|
|
@@ -776,7 +776,7 @@
|
|
|
776
776
|
"capabilityOverrides": null
|
|
777
777
|
},
|
|
778
778
|
{
|
|
779
|
-
"id": "ny-
|
|
779
|
+
"id": "ny-queens",
|
|
780
780
|
"state": "NY",
|
|
781
781
|
"stateName": "New York",
|
|
782
782
|
"stateSlug": "new-york",
|
|
@@ -933,7 +933,7 @@
|
|
|
933
933
|
"notes": "Queens is served by the same citywide MAPPLUTO layer as the other four boroughs; the registry scopes this county to Borough='QN' so an owner search here does not return another borough's parcels. Address lookups are scoped by geography already."
|
|
934
934
|
},
|
|
935
935
|
{
|
|
936
|
-
"id": "ny-
|
|
936
|
+
"id": "ny-richmond",
|
|
937
937
|
"state": "NY",
|
|
938
938
|
"stateName": "New York",
|
|
939
939
|
"stateSlug": "new-york",
|
package/data/south-carolina.json
CHANGED
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"hasPublicRest": true,
|
|
64
64
|
"endpoints": [
|
|
65
65
|
{
|
|
66
|
-
"url": "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
66
|
+
"url": "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4",
|
|
67
67
|
"serviceType": "MapServer",
|
|
68
|
-
"layerIndex":
|
|
68
|
+
"layerIndex": 4,
|
|
69
69
|
"layerName": "Parcels",
|
|
70
70
|
"supportsQuery": true,
|
|
71
71
|
"corsEnabled": null,
|
|
@@ -82,11 +82,11 @@
|
|
|
82
82
|
{ "name": "LEGAL_DESCR", "label": "Legal Description", "searchable": false },
|
|
83
83
|
{ "name": "SUBDIVISION", "label": "Subdivision", "searchable": false }
|
|
84
84
|
],
|
|
85
|
-
"sampleQuery": "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
85
|
+
"sampleQuery": "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4/query?where=UPPER(OWNER1)+LIKE+UPPER(%27%25SMITH%25%27)&outFields=PID,OWNER1,OWNER2,MAIL_ST_NAME&returnGeometry=false&f=json&resultRecordCount=10",
|
|
86
86
|
"license": "public",
|
|
87
87
|
"licenseUrl": "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
88
88
|
"status": "live",
|
|
89
|
-
"lastVerified": "2026-
|
|
89
|
+
"lastVerified": "2026-09-17",
|
|
90
90
|
"verifiedBy": "manual"
|
|
91
91
|
}
|
|
92
92
|
],
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"url": "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
96
96
|
"email": null
|
|
97
97
|
},
|
|
98
|
-
"notes": "Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant)
|
|
98
|
+
"notes": "Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant). Parcels live on GIS_VIEWER/New_Parcel_Search/MapServer layer 4. Field names are unqualified (PID, OWNER1, ...); the FEATURES.SDE.* prefixes an older revision of this entry described no longer apply, and neither GPIN nor ACRES_CAL exists here. Layer 4 carries 27 fields, including several the registry does not map: ACREAGE, CLASS_CODE, DEED_BOOK_PAGE, PLAT_BOOK_PAGE, SALE_PRICE, RECORDED_DATE and DOC_DATE. WATCH THIS COUNTY: it has now renumbered its parcel layer twice. 2026-06-06 moved Parcel_Search/4 to New_Parcel_Search/61 after the old service 404'd; 2026-09-17 moved it again to New_Parcel_Search/4, which is why the endpoint sat down with last_ok_at null. Both times the service name and the field names survived and only the layer index changed, so an index-only drift check would catch the next one. Re-verified live 2026-09-17: layer 61 answers ArcGIS error 404 'Layer not found' while layer 4 returns features for both query shapes the tool sends, UPPER(OWNER1) LIKE and PID LIKE."
|
|
99
99
|
}
|
|
100
100
|
]
|
|
101
101
|
}
|
package/data/texas.json
CHANGED
|
@@ -365,18 +365,18 @@
|
|
|
365
365
|
"supportsQuery": true,
|
|
366
366
|
"corsEnabled": null,
|
|
367
367
|
"searchFields": [
|
|
368
|
-
{ "name": "
|
|
369
|
-
{ "name": "
|
|
370
|
-
{ "name": "
|
|
368
|
+
{ "name": "CAD_Reference_Number", "label": "CAD Reference Number (R-number)", "searchable": true },
|
|
369
|
+
{ "name": "Property_Number", "label": "Property Number", "searchable": true },
|
|
370
|
+
{ "name": "Owner_Name", "label": "Owner Name", "searchable": true },
|
|
371
371
|
{ "name": "Situs", "label": "Situs Address", "searchable": true },
|
|
372
|
-
{ "name": "
|
|
373
|
-
{ "name": "
|
|
372
|
+
{ "name": "Owner_Address_1", "label": "Owner Mailing Address", "searchable": false },
|
|
373
|
+
{ "name": "Owner_City", "label": "Owner City", "searchable": false }
|
|
374
374
|
],
|
|
375
|
-
"sampleQuery": "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(
|
|
375
|
+
"sampleQuery": "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(Owner_Name)%20LIKE%20UPPER('%25SMITH%25')&outFields=CAD_Reference_Number,Owner_Name,Situs&returnGeometry=false&f=json&resultRecordCount=10",
|
|
376
376
|
"license": "public",
|
|
377
377
|
"licenseUrl": "https://fbcad-open-data-hub-fortbend.hub.arcgis.com/",
|
|
378
378
|
"status": "live",
|
|
379
|
-
"lastVerified": "2026-
|
|
379
|
+
"lastVerified": "2026-09-12",
|
|
380
380
|
"verifiedBy": "manual"
|
|
381
381
|
}
|
|
382
382
|
],
|
|
@@ -385,7 +385,7 @@
|
|
|
385
385
|
"url": "https://www.fbcad.org/",
|
|
386
386
|
"email": null
|
|
387
387
|
},
|
|
388
|
-
"notes": "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is
|
|
388
|
+
"notes": "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is Owner_Name (the layer display field); owner mailing is Owner_Address_1/2/3 with Owner_City/Owner_State/Owner_Zip; the site address is Situs; identifiers are CAD_Reference_Number (R-number, e.g. R328356) and Property_Number. Owner search uses UPPER(Owner_Name) LIKE. Verified live 2026-05-30 (OwnerName = Shimmel John). Under Texas Tax Code §25.025, protected persons (peace officers, judges, family-violence victims) may have their owner/address records withheld. MIGRATED 2026-06-06: gisweb.fortbendcountytx.gov was decommissioned (Cloudflare 522) -- the public service moved to gisportal.fortbendcountytx.gov InteractiveMap/Parcels_Public/FeatureServer/1 (ArcGIS 11.3, 359,954 parcels; OwnerName search re-verified live), and at that point the field names had dropped their underscores (CADReferenceNumber, OwnerName). RENAMED BACK 2026-09-12: the same layer (the service's only layer) publishes the underscore names again (Owner_Name, CAD_Reference_Number, Property_Number, Owner_Address_1, Owner_City; 49 fields, displayField Owner_Name). The liveness probe read that rename as field-drift on 2026-09-10 and autoheal PR #632 tried to drop the five fields; nothing was removed upstream, so the fields were re-pointed at the current names and owner search re-verified live (10 rows for %SMITH%, e.g. R100208)."
|
|
389
389
|
},
|
|
390
390
|
{
|
|
391
391
|
"id": "tx-williamson",
|
package/dist/index.cjs
CHANGED
|
@@ -1235,7 +1235,7 @@ var california_default = {
|
|
|
1235
1235
|
status: "restricted",
|
|
1236
1236
|
basis: {
|
|
1237
1237
|
type: "county_cited_statute",
|
|
1238
|
-
note: `Every row's OwnerName value is the literal string "Protected Per CA Gov Code 7928.205" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule
|
|
1238
|
+
note: `Every row's OwnerName value is the literal string "Protected Per CA Gov Code 7928.205" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule. Read narrowly, the section would cover a small number of parcels. The county applies it to every one.`,
|
|
1239
1239
|
citation: "Cal. Gov. Code 7928.205",
|
|
1240
1240
|
attributedTo: "San Bernardino County",
|
|
1241
1241
|
sourceUrl: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=7928.205&lawCode=GOV"
|
|
@@ -1255,38 +1255,50 @@ var california_default = {
|
|
|
1255
1255
|
hasPublicRest: true,
|
|
1256
1256
|
endpoints: [
|
|
1257
1257
|
{
|
|
1258
|
-
url: "https://
|
|
1258
|
+
url: "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0",
|
|
1259
1259
|
serviceType: "MapServer",
|
|
1260
|
-
layerIndex:
|
|
1261
|
-
layerName: "
|
|
1260
|
+
layerIndex: 0,
|
|
1261
|
+
layerName: "Parcels",
|
|
1262
1262
|
supportsQuery: true,
|
|
1263
1263
|
corsEnabled: null,
|
|
1264
1264
|
searchFields: [
|
|
1265
1265
|
{ name: "APN", label: "Assessor Parcel Number", searchable: true },
|
|
1266
1266
|
{ name: "APN_8", label: "APN (8-digit)", searchable: true },
|
|
1267
|
-
{ name: "OWN_NAME1", label: "Owner Name (Primary)", searchable: true },
|
|
1268
|
-
{ name: "OWN_NAME2", label: "Owner Name 2", searchable: true },
|
|
1269
|
-
{ name: "OWN_NAME3", label: "Owner Name 3", searchable: true },
|
|
1270
|
-
{ name: "OWN_ADDR1", label: "Owner Address 1", searchable: true },
|
|
1271
1267
|
{ name: "SITUS_ADDRESS", label: "Situs Street Number", searchable: true },
|
|
1272
1268
|
{ name: "SITUS_STREET", label: "Situs Street Name", searchable: true },
|
|
1273
|
-
{ name: "
|
|
1274
|
-
{ name: "
|
|
1269
|
+
{ name: "SITUS_SUFFIX", label: "Situs Street Suffix", searchable: false },
|
|
1270
|
+
{ name: "SITUS_PRE_DIR", label: "Situs Pre-direction", searchable: false },
|
|
1271
|
+
{ name: "SITUS_POST_DIR", label: "Situs Post-direction", searchable: false },
|
|
1272
|
+
{ name: "SITUS_BUILDING", label: "Situs Building", searchable: false },
|
|
1273
|
+
{ name: "SITUS_SUITE", label: "Situs Suite", searchable: false },
|
|
1274
|
+
{ name: "SITUS_ZIP", label: "Situs ZIP", searchable: true },
|
|
1275
|
+
{ name: "SITUS_JURIS", label: "Situs Jurisdiction Code", searchable: false },
|
|
1276
|
+
{ name: "ACREAGE", label: "Acreage", searchable: false }
|
|
1275
1277
|
],
|
|
1276
|
-
sampleQuery: "https://
|
|
1278
|
+
sampleQuery: "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0/query?where=APN%3D%274982603900%27&outFields=APN,APN_8,SITUS_ADDRESS,SITUS_STREET,SITUS_SUFFIX,SITUS_ZIP&returnGeometry=false&f=json&resultRecordCount=10",
|
|
1277
1279
|
license: "public",
|
|
1278
|
-
licenseUrl: "
|
|
1280
|
+
licenseUrl: "http://web.sangis.org/Legal_Notice.htm",
|
|
1279
1281
|
status: "live",
|
|
1280
|
-
lastVerified: "2026-
|
|
1282
|
+
lastVerified: "2026-09-03",
|
|
1281
1283
|
verifiedBy: "manual"
|
|
1282
1284
|
}
|
|
1283
1285
|
],
|
|
1284
1286
|
contact: {
|
|
1285
|
-
department: "SanGIS / San Diego
|
|
1287
|
+
department: "SanGIS / County of San Diego Assessor",
|
|
1286
1288
|
url: "https://gis-public.sandiegocounty.gov/",
|
|
1287
1289
|
email: null
|
|
1288
1290
|
},
|
|
1289
|
-
notes: "
|
|
1291
|
+
notes: "16 fields confirmed 2026-09-03 on the County of San Diego's public parcel layer (service copyright 'SanGIS, County of San Diego Assessor', service description 'County of San Diego Assessors Parcels (PARCELS_ALL) redacted for public use', ~1.09M rows, maxRecordCount 1000, native State Plane feet, add outSR=4326 for lon/lat): APN, APN_8, SITUS_ADDRESS (house number), SITUS_PRE_DIR, SITUS_STREET, SITUS_SUFFIX, SITUS_POST_DIR, SITUS_FRACTION, SITUS_BUILDING, SITUS_SUITE, SITUS_ZIP, SITUS_JURIS, ACREAGE, QUAL_CLASS_SHAPE and geometry. No owner name, mailing address, sale date, value or community name: the county redacts them on every public derivative. Until 2026-09-03 this entry pointed at the City of San Diego's GeocoderMerged/MapServer/1, which then served owner names (OWN_NAME1-3, OWN_ADDR1-4) and answered ArcGIS error 500 'Service GeocoderMerged/MapServer not started' from 2026-09-02 20:45Z (autoheal #581); a made-up service name on that host errored differently, so the service existed and was stopped. Probed 2026-09-17: the city service is RUNNING again, reports 56 fields, and no longer serves owner names. Asking it for OWN_NAME1/2/3 returns ArcGIS error 400 'Failed to execute query' while the identical request for APN and ASR_TOTAL returns a feature, so the field was withdrawn rather than the service being down. It still reports displayFieldName 'OWN_NAME1' in every response, so a metadata-only or liveness-only check reads this endpoint as owner-bearing and healthy. Do not restore it as the owner source on a restart signal alone: ask for the field.",
|
|
1292
|
+
capabilityOverrides: {
|
|
1293
|
+
owner_name: {
|
|
1294
|
+
status: "not_published",
|
|
1295
|
+
basis: {
|
|
1296
|
+
type: "endpoint_schema",
|
|
1297
|
+
note: "The County of San Diego's public parcel layer (cosd_warehouse/parcels_all_for_public_use) carries APN and situs address only; owner name, owner mailing address, sale date and assessed value are removed by county policy. The county's owner-attributed layer exists but its own metadata says it is not authorized for public use, so the atlas does not point at it.",
|
|
1298
|
+
sourceUrl: "http://web.sangis.org/Legal_Notice.htm"
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1290
1302
|
},
|
|
1291
1303
|
{
|
|
1292
1304
|
id: "ca-santa-clara",
|
|
@@ -7806,7 +7818,7 @@ var new_york_default = {
|
|
|
7806
7818
|
lastUpdated: "2026-05-14",
|
|
7807
7819
|
counties: [
|
|
7808
7820
|
{
|
|
7809
|
-
id: "ny-
|
|
7821
|
+
id: "ny-bronx",
|
|
7810
7822
|
state: "NY",
|
|
7811
7823
|
stateName: "New York",
|
|
7812
7824
|
stateSlug: "new-york",
|
|
@@ -8072,7 +8084,7 @@ var new_york_default = {
|
|
|
8072
8084
|
notes: "54 fields confirmed. Includes PIN (21-char unique parcel ID), SBL (section-block-lot key), OWNER1, OWNER2, mailing address (MAILAD1/MAILAD2), property address (STREET, CITY, ZIP, ZIP4), property class (CLASS), property type/description, school district (SCHOOL, SCHL_DIST), SWIS code, lot dimensions (FRONT, DEPTH), acreage (ASSESSACRE, CALCACRES). Owner query tested and confirmed: UPPER(OWNER1) LIKE UPPER('%SMITH%') returns real residential parcels. This is the 2023 vintage Erie County parcel dataset. Erie County, NY is the Buffalo metropolitan area (FIPS 36029)."
|
|
8073
8085
|
},
|
|
8074
8086
|
{
|
|
8075
|
-
id: "ny-
|
|
8087
|
+
id: "ny-kings",
|
|
8076
8088
|
state: "NY",
|
|
8077
8089
|
stateName: "New York",
|
|
8078
8090
|
stateSlug: "new-york",
|
|
@@ -8577,7 +8589,7 @@ var new_york_default = {
|
|
|
8577
8589
|
capabilityOverrides: null
|
|
8578
8590
|
},
|
|
8579
8591
|
{
|
|
8580
|
-
id: "ny-
|
|
8592
|
+
id: "ny-queens",
|
|
8581
8593
|
state: "NY",
|
|
8582
8594
|
stateName: "New York",
|
|
8583
8595
|
stateSlug: "new-york",
|
|
@@ -8734,7 +8746,7 @@ var new_york_default = {
|
|
|
8734
8746
|
notes: "Queens is served by the same citywide MAPPLUTO layer as the other four boroughs; the registry scopes this county to Borough='QN' so an owner search here does not return another borough's parcels. Address lookups are scoped by geography already."
|
|
8735
8747
|
},
|
|
8736
8748
|
{
|
|
8737
|
-
id: "ny-
|
|
8749
|
+
id: "ny-richmond",
|
|
8738
8750
|
state: "NY",
|
|
8739
8751
|
stateName: "New York",
|
|
8740
8752
|
stateSlug: "new-york",
|
|
@@ -10622,9 +10634,9 @@ var south_carolina_default = {
|
|
|
10622
10634
|
hasPublicRest: true,
|
|
10623
10635
|
endpoints: [
|
|
10624
10636
|
{
|
|
10625
|
-
url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
10637
|
+
url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4",
|
|
10626
10638
|
serviceType: "MapServer",
|
|
10627
|
-
layerIndex:
|
|
10639
|
+
layerIndex: 4,
|
|
10628
10640
|
layerName: "Parcels",
|
|
10629
10641
|
supportsQuery: true,
|
|
10630
10642
|
corsEnabled: null,
|
|
@@ -10641,11 +10653,11 @@ var south_carolina_default = {
|
|
|
10641
10653
|
{ name: "LEGAL_DESCR", label: "Legal Description", searchable: false },
|
|
10642
10654
|
{ name: "SUBDIVISION", label: "Subdivision", searchable: false }
|
|
10643
10655
|
],
|
|
10644
|
-
sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
10656
|
+
sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4/query?where=UPPER(OWNER1)+LIKE+UPPER(%27%25SMITH%25%27)&outFields=PID,OWNER1,OWNER2,MAIL_ST_NAME&returnGeometry=false&f=json&resultRecordCount=10",
|
|
10645
10657
|
license: "public",
|
|
10646
10658
|
licenseUrl: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
10647
10659
|
status: "live",
|
|
10648
|
-
lastVerified: "2026-
|
|
10660
|
+
lastVerified: "2026-09-17",
|
|
10649
10661
|
verifiedBy: "manual"
|
|
10650
10662
|
}
|
|
10651
10663
|
],
|
|
@@ -10654,7 +10666,7 @@ var south_carolina_default = {
|
|
|
10654
10666
|
url: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
10655
10667
|
email: null
|
|
10656
10668
|
},
|
|
10657
|
-
notes:
|
|
10669
|
+
notes: "Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant). Parcels live on GIS_VIEWER/New_Parcel_Search/MapServer layer 4. Field names are unqualified (PID, OWNER1, ...); the FEATURES.SDE.* prefixes an older revision of this entry described no longer apply, and neither GPIN nor ACRES_CAL exists here. Layer 4 carries 27 fields, including several the registry does not map: ACREAGE, CLASS_CODE, DEED_BOOK_PAGE, PLAT_BOOK_PAGE, SALE_PRICE, RECORDED_DATE and DOC_DATE. WATCH THIS COUNTY: it has now renumbered its parcel layer twice. 2026-06-06 moved Parcel_Search/4 to New_Parcel_Search/61 after the old service 404'd; 2026-09-17 moved it again to New_Parcel_Search/4, which is why the endpoint sat down with last_ok_at null. Both times the service name and the field names survived and only the layer index changed, so an index-only drift check would catch the next one. Re-verified live 2026-09-17: layer 61 answers ArcGIS error 404 'Layer not found' while layer 4 returns features for both query shapes the tool sends, UPPER(OWNER1) LIKE and PID LIKE."
|
|
10658
10670
|
}
|
|
10659
10671
|
]
|
|
10660
10672
|
};
|
|
@@ -11243,18 +11255,18 @@ var texas_default = {
|
|
|
11243
11255
|
supportsQuery: true,
|
|
11244
11256
|
corsEnabled: null,
|
|
11245
11257
|
searchFields: [
|
|
11246
|
-
{ name: "
|
|
11247
|
-
{ name: "
|
|
11248
|
-
{ name: "
|
|
11258
|
+
{ name: "CAD_Reference_Number", label: "CAD Reference Number (R-number)", searchable: true },
|
|
11259
|
+
{ name: "Property_Number", label: "Property Number", searchable: true },
|
|
11260
|
+
{ name: "Owner_Name", label: "Owner Name", searchable: true },
|
|
11249
11261
|
{ name: "Situs", label: "Situs Address", searchable: true },
|
|
11250
|
-
{ name: "
|
|
11251
|
-
{ name: "
|
|
11262
|
+
{ name: "Owner_Address_1", label: "Owner Mailing Address", searchable: false },
|
|
11263
|
+
{ name: "Owner_City", label: "Owner City", searchable: false }
|
|
11252
11264
|
],
|
|
11253
|
-
sampleQuery: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(
|
|
11265
|
+
sampleQuery: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(Owner_Name)%20LIKE%20UPPER('%25SMITH%25')&outFields=CAD_Reference_Number,Owner_Name,Situs&returnGeometry=false&f=json&resultRecordCount=10",
|
|
11254
11266
|
license: "public",
|
|
11255
11267
|
licenseUrl: "https://fbcad-open-data-hub-fortbend.hub.arcgis.com/",
|
|
11256
11268
|
status: "live",
|
|
11257
|
-
lastVerified: "2026-
|
|
11269
|
+
lastVerified: "2026-09-12",
|
|
11258
11270
|
verifiedBy: "manual"
|
|
11259
11271
|
}
|
|
11260
11272
|
],
|
|
@@ -11263,7 +11275,7 @@ var texas_default = {
|
|
|
11263
11275
|
url: "https://www.fbcad.org/",
|
|
11264
11276
|
email: null
|
|
11265
11277
|
},
|
|
11266
|
-
notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is
|
|
11278
|
+
notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is Owner_Name (the layer display field); owner mailing is Owner_Address_1/2/3 with Owner_City/Owner_State/Owner_Zip; the site address is Situs; identifiers are CAD_Reference_Number (R-number, e.g. R328356) and Property_Number. Owner search uses UPPER(Owner_Name) LIKE. Verified live 2026-05-30 (OwnerName = Shimmel John). Under Texas Tax Code \xA725.025, protected persons (peace officers, judges, family-violence victims) may have their owner/address records withheld. MIGRATED 2026-06-06: gisweb.fortbendcountytx.gov was decommissioned (Cloudflare 522) -- the public service moved to gisportal.fortbendcountytx.gov InteractiveMap/Parcels_Public/FeatureServer/1 (ArcGIS 11.3, 359,954 parcels; OwnerName search re-verified live), and at that point the field names had dropped their underscores (CADReferenceNumber, OwnerName). RENAMED BACK 2026-09-12: the same layer (the service's only layer) publishes the underscore names again (Owner_Name, CAD_Reference_Number, Property_Number, Owner_Address_1, Owner_City; 49 fields, displayField Owner_Name). The liveness probe read that rename as field-drift on 2026-09-10 and autoheal PR #632 tried to drop the five fields; nothing was removed upstream, so the fields were re-pointed at the current names and owner search re-verified live (10 rows for %SMITH%, e.g. R100208)."
|
|
11267
11279
|
},
|
|
11268
11280
|
{
|
|
11269
11281
|
id: "tx-williamson",
|
package/dist/index.js
CHANGED
|
@@ -1233,7 +1233,7 @@ var california_default = {
|
|
|
1233
1233
|
status: "restricted",
|
|
1234
1234
|
basis: {
|
|
1235
1235
|
type: "county_cited_statute",
|
|
1236
|
-
note: `Every row's OwnerName value is the literal string "Protected Per CA Gov Code 7928.205" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule
|
|
1236
|
+
note: `Every row's OwnerName value is the literal string "Protected Per CA Gov Code 7928.205" rather than a name. The county applies the redaction server-side to the whole layer and cites that section itself. The section protects the home address of elected and appointed officials, so this is the county's own reading applied to every parcel, not a statewide rule. Read narrowly, the section would cover a small number of parcels. The county applies it to every one.`,
|
|
1237
1237
|
citation: "Cal. Gov. Code 7928.205",
|
|
1238
1238
|
attributedTo: "San Bernardino County",
|
|
1239
1239
|
sourceUrl: "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=7928.205&lawCode=GOV"
|
|
@@ -1253,38 +1253,50 @@ var california_default = {
|
|
|
1253
1253
|
hasPublicRest: true,
|
|
1254
1254
|
endpoints: [
|
|
1255
1255
|
{
|
|
1256
|
-
url: "https://
|
|
1256
|
+
url: "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0",
|
|
1257
1257
|
serviceType: "MapServer",
|
|
1258
|
-
layerIndex:
|
|
1259
|
-
layerName: "
|
|
1258
|
+
layerIndex: 0,
|
|
1259
|
+
layerName: "Parcels",
|
|
1260
1260
|
supportsQuery: true,
|
|
1261
1261
|
corsEnabled: null,
|
|
1262
1262
|
searchFields: [
|
|
1263
1263
|
{ name: "APN", label: "Assessor Parcel Number", searchable: true },
|
|
1264
1264
|
{ name: "APN_8", label: "APN (8-digit)", searchable: true },
|
|
1265
|
-
{ name: "OWN_NAME1", label: "Owner Name (Primary)", searchable: true },
|
|
1266
|
-
{ name: "OWN_NAME2", label: "Owner Name 2", searchable: true },
|
|
1267
|
-
{ name: "OWN_NAME3", label: "Owner Name 3", searchable: true },
|
|
1268
|
-
{ name: "OWN_ADDR1", label: "Owner Address 1", searchable: true },
|
|
1269
1265
|
{ name: "SITUS_ADDRESS", label: "Situs Street Number", searchable: true },
|
|
1270
1266
|
{ name: "SITUS_STREET", label: "Situs Street Name", searchable: true },
|
|
1271
|
-
{ name: "
|
|
1272
|
-
{ name: "
|
|
1267
|
+
{ name: "SITUS_SUFFIX", label: "Situs Street Suffix", searchable: false },
|
|
1268
|
+
{ name: "SITUS_PRE_DIR", label: "Situs Pre-direction", searchable: false },
|
|
1269
|
+
{ name: "SITUS_POST_DIR", label: "Situs Post-direction", searchable: false },
|
|
1270
|
+
{ name: "SITUS_BUILDING", label: "Situs Building", searchable: false },
|
|
1271
|
+
{ name: "SITUS_SUITE", label: "Situs Suite", searchable: false },
|
|
1272
|
+
{ name: "SITUS_ZIP", label: "Situs ZIP", searchable: true },
|
|
1273
|
+
{ name: "SITUS_JURIS", label: "Situs Jurisdiction Code", searchable: false },
|
|
1274
|
+
{ name: "ACREAGE", label: "Acreage", searchable: false }
|
|
1273
1275
|
],
|
|
1274
|
-
sampleQuery: "https://
|
|
1276
|
+
sampleQuery: "https://gis-public.sandiegocounty.gov/arcgis/rest/services/cosd_warehouse/parcels_all_for_public_use/MapServer/0/query?where=APN%3D%274982603900%27&outFields=APN,APN_8,SITUS_ADDRESS,SITUS_STREET,SITUS_SUFFIX,SITUS_ZIP&returnGeometry=false&f=json&resultRecordCount=10",
|
|
1275
1277
|
license: "public",
|
|
1276
|
-
licenseUrl: "
|
|
1278
|
+
licenseUrl: "http://web.sangis.org/Legal_Notice.htm",
|
|
1277
1279
|
status: "live",
|
|
1278
|
-
lastVerified: "2026-
|
|
1280
|
+
lastVerified: "2026-09-03",
|
|
1279
1281
|
verifiedBy: "manual"
|
|
1280
1282
|
}
|
|
1281
1283
|
],
|
|
1282
1284
|
contact: {
|
|
1283
|
-
department: "SanGIS / San Diego
|
|
1285
|
+
department: "SanGIS / County of San Diego Assessor",
|
|
1284
1286
|
url: "https://gis-public.sandiegocounty.gov/",
|
|
1285
1287
|
email: null
|
|
1286
1288
|
},
|
|
1287
|
-
notes: "
|
|
1289
|
+
notes: "16 fields confirmed 2026-09-03 on the County of San Diego's public parcel layer (service copyright 'SanGIS, County of San Diego Assessor', service description 'County of San Diego Assessors Parcels (PARCELS_ALL) redacted for public use', ~1.09M rows, maxRecordCount 1000, native State Plane feet, add outSR=4326 for lon/lat): APN, APN_8, SITUS_ADDRESS (house number), SITUS_PRE_DIR, SITUS_STREET, SITUS_SUFFIX, SITUS_POST_DIR, SITUS_FRACTION, SITUS_BUILDING, SITUS_SUITE, SITUS_ZIP, SITUS_JURIS, ACREAGE, QUAL_CLASS_SHAPE and geometry. No owner name, mailing address, sale date, value or community name: the county redacts them on every public derivative. Until 2026-09-03 this entry pointed at the City of San Diego's GeocoderMerged/MapServer/1, which then served owner names (OWN_NAME1-3, OWN_ADDR1-4) and answered ArcGIS error 500 'Service GeocoderMerged/MapServer not started' from 2026-09-02 20:45Z (autoheal #581); a made-up service name on that host errored differently, so the service existed and was stopped. Probed 2026-09-17: the city service is RUNNING again, reports 56 fields, and no longer serves owner names. Asking it for OWN_NAME1/2/3 returns ArcGIS error 400 'Failed to execute query' while the identical request for APN and ASR_TOTAL returns a feature, so the field was withdrawn rather than the service being down. It still reports displayFieldName 'OWN_NAME1' in every response, so a metadata-only or liveness-only check reads this endpoint as owner-bearing and healthy. Do not restore it as the owner source on a restart signal alone: ask for the field.",
|
|
1290
|
+
capabilityOverrides: {
|
|
1291
|
+
owner_name: {
|
|
1292
|
+
status: "not_published",
|
|
1293
|
+
basis: {
|
|
1294
|
+
type: "endpoint_schema",
|
|
1295
|
+
note: "The County of San Diego's public parcel layer (cosd_warehouse/parcels_all_for_public_use) carries APN and situs address only; owner name, owner mailing address, sale date and assessed value are removed by county policy. The county's owner-attributed layer exists but its own metadata says it is not authorized for public use, so the atlas does not point at it.",
|
|
1296
|
+
sourceUrl: "http://web.sangis.org/Legal_Notice.htm"
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1288
1300
|
},
|
|
1289
1301
|
{
|
|
1290
1302
|
id: "ca-santa-clara",
|
|
@@ -7804,7 +7816,7 @@ var new_york_default = {
|
|
|
7804
7816
|
lastUpdated: "2026-05-14",
|
|
7805
7817
|
counties: [
|
|
7806
7818
|
{
|
|
7807
|
-
id: "ny-
|
|
7819
|
+
id: "ny-bronx",
|
|
7808
7820
|
state: "NY",
|
|
7809
7821
|
stateName: "New York",
|
|
7810
7822
|
stateSlug: "new-york",
|
|
@@ -8070,7 +8082,7 @@ var new_york_default = {
|
|
|
8070
8082
|
notes: "54 fields confirmed. Includes PIN (21-char unique parcel ID), SBL (section-block-lot key), OWNER1, OWNER2, mailing address (MAILAD1/MAILAD2), property address (STREET, CITY, ZIP, ZIP4), property class (CLASS), property type/description, school district (SCHOOL, SCHL_DIST), SWIS code, lot dimensions (FRONT, DEPTH), acreage (ASSESSACRE, CALCACRES). Owner query tested and confirmed: UPPER(OWNER1) LIKE UPPER('%SMITH%') returns real residential parcels. This is the 2023 vintage Erie County parcel dataset. Erie County, NY is the Buffalo metropolitan area (FIPS 36029)."
|
|
8071
8083
|
},
|
|
8072
8084
|
{
|
|
8073
|
-
id: "ny-
|
|
8085
|
+
id: "ny-kings",
|
|
8074
8086
|
state: "NY",
|
|
8075
8087
|
stateName: "New York",
|
|
8076
8088
|
stateSlug: "new-york",
|
|
@@ -8575,7 +8587,7 @@ var new_york_default = {
|
|
|
8575
8587
|
capabilityOverrides: null
|
|
8576
8588
|
},
|
|
8577
8589
|
{
|
|
8578
|
-
id: "ny-
|
|
8590
|
+
id: "ny-queens",
|
|
8579
8591
|
state: "NY",
|
|
8580
8592
|
stateName: "New York",
|
|
8581
8593
|
stateSlug: "new-york",
|
|
@@ -8732,7 +8744,7 @@ var new_york_default = {
|
|
|
8732
8744
|
notes: "Queens is served by the same citywide MAPPLUTO layer as the other four boroughs; the registry scopes this county to Borough='QN' so an owner search here does not return another borough's parcels. Address lookups are scoped by geography already."
|
|
8733
8745
|
},
|
|
8734
8746
|
{
|
|
8735
|
-
id: "ny-
|
|
8747
|
+
id: "ny-richmond",
|
|
8736
8748
|
state: "NY",
|
|
8737
8749
|
stateName: "New York",
|
|
8738
8750
|
stateSlug: "new-york",
|
|
@@ -10620,9 +10632,9 @@ var south_carolina_default = {
|
|
|
10620
10632
|
hasPublicRest: true,
|
|
10621
10633
|
endpoints: [
|
|
10622
10634
|
{
|
|
10623
|
-
url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
10635
|
+
url: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4",
|
|
10624
10636
|
serviceType: "MapServer",
|
|
10625
|
-
layerIndex:
|
|
10637
|
+
layerIndex: 4,
|
|
10626
10638
|
layerName: "Parcels",
|
|
10627
10639
|
supportsQuery: true,
|
|
10628
10640
|
corsEnabled: null,
|
|
@@ -10639,11 +10651,11 @@ var south_carolina_default = {
|
|
|
10639
10651
|
{ name: "LEGAL_DESCR", label: "Legal Description", searchable: false },
|
|
10640
10652
|
{ name: "SUBDIVISION", label: "Subdivision", searchable: false }
|
|
10641
10653
|
],
|
|
10642
|
-
sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/
|
|
10654
|
+
sampleQuery: "https://gisccapps.charlestoncounty.org/arcgis/rest/services/GIS_VIEWER/New_Parcel_Search/MapServer/4/query?where=UPPER(OWNER1)+LIKE+UPPER(%27%25SMITH%25%27)&outFields=PID,OWNER1,OWNER2,MAIL_ST_NAME&returnGeometry=false&f=json&resultRecordCount=10",
|
|
10643
10655
|
license: "public",
|
|
10644
10656
|
licenseUrl: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
10645
10657
|
status: "live",
|
|
10646
|
-
lastVerified: "2026-
|
|
10658
|
+
lastVerified: "2026-09-17",
|
|
10647
10659
|
verifiedBy: "manual"
|
|
10648
10660
|
}
|
|
10649
10661
|
],
|
|
@@ -10652,7 +10664,7 @@ var south_carolina_default = {
|
|
|
10652
10664
|
url: "https://charleston-county-gis-chascogis.hub.arcgis.com/",
|
|
10653
10665
|
email: null
|
|
10654
10666
|
},
|
|
10655
|
-
notes:
|
|
10667
|
+
notes: "Charleston County (pop. 430,000; includes Charleston, North Charleston, Mount Pleasant). Parcels live on GIS_VIEWER/New_Parcel_Search/MapServer layer 4. Field names are unqualified (PID, OWNER1, ...); the FEATURES.SDE.* prefixes an older revision of this entry described no longer apply, and neither GPIN nor ACRES_CAL exists here. Layer 4 carries 27 fields, including several the registry does not map: ACREAGE, CLASS_CODE, DEED_BOOK_PAGE, PLAT_BOOK_PAGE, SALE_PRICE, RECORDED_DATE and DOC_DATE. WATCH THIS COUNTY: it has now renumbered its parcel layer twice. 2026-06-06 moved Parcel_Search/4 to New_Parcel_Search/61 after the old service 404'd; 2026-09-17 moved it again to New_Parcel_Search/4, which is why the endpoint sat down with last_ok_at null. Both times the service name and the field names survived and only the layer index changed, so an index-only drift check would catch the next one. Re-verified live 2026-09-17: layer 61 answers ArcGIS error 404 'Layer not found' while layer 4 returns features for both query shapes the tool sends, UPPER(OWNER1) LIKE and PID LIKE."
|
|
10656
10668
|
}
|
|
10657
10669
|
]
|
|
10658
10670
|
};
|
|
@@ -11241,18 +11253,18 @@ var texas_default = {
|
|
|
11241
11253
|
supportsQuery: true,
|
|
11242
11254
|
corsEnabled: null,
|
|
11243
11255
|
searchFields: [
|
|
11244
|
-
{ name: "
|
|
11245
|
-
{ name: "
|
|
11246
|
-
{ name: "
|
|
11256
|
+
{ name: "CAD_Reference_Number", label: "CAD Reference Number (R-number)", searchable: true },
|
|
11257
|
+
{ name: "Property_Number", label: "Property Number", searchable: true },
|
|
11258
|
+
{ name: "Owner_Name", label: "Owner Name", searchable: true },
|
|
11247
11259
|
{ name: "Situs", label: "Situs Address", searchable: true },
|
|
11248
|
-
{ name: "
|
|
11249
|
-
{ name: "
|
|
11260
|
+
{ name: "Owner_Address_1", label: "Owner Mailing Address", searchable: false },
|
|
11261
|
+
{ name: "Owner_City", label: "Owner City", searchable: false }
|
|
11250
11262
|
],
|
|
11251
|
-
sampleQuery: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(
|
|
11263
|
+
sampleQuery: "https://gisportal.fortbendcountytx.gov/arcgis/rest/services/InteractiveMap/Parcels_Public/FeatureServer/1/query?where=UPPER(Owner_Name)%20LIKE%20UPPER('%25SMITH%25')&outFields=CAD_Reference_Number,Owner_Name,Situs&returnGeometry=false&f=json&resultRecordCount=10",
|
|
11252
11264
|
license: "public",
|
|
11253
11265
|
licenseUrl: "https://fbcad-open-data-hub-fortbend.hub.arcgis.com/",
|
|
11254
11266
|
status: "live",
|
|
11255
|
-
lastVerified: "2026-
|
|
11267
|
+
lastVerified: "2026-09-12",
|
|
11256
11268
|
verifiedBy: "manual"
|
|
11257
11269
|
}
|
|
11258
11270
|
],
|
|
@@ -11261,7 +11273,7 @@ var texas_default = {
|
|
|
11261
11273
|
url: "https://www.fbcad.org/",
|
|
11262
11274
|
email: null
|
|
11263
11275
|
},
|
|
11264
|
-
notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is
|
|
11276
|
+
notes: "Fort Bend County, Texas (Katy / Sugar Land / Missouri City, southwest Houston metro, pop. ~880K) serves parcels from a Fort Bend County GIS MapServer sourced from Fort Bend Central Appraisal District (FBCAD). Owner name is Owner_Name (the layer display field); owner mailing is Owner_Address_1/2/3 with Owner_City/Owner_State/Owner_Zip; the site address is Situs; identifiers are CAD_Reference_Number (R-number, e.g. R328356) and Property_Number. Owner search uses UPPER(Owner_Name) LIKE. Verified live 2026-05-30 (OwnerName = Shimmel John). Under Texas Tax Code \xA725.025, protected persons (peace officers, judges, family-violence victims) may have their owner/address records withheld. MIGRATED 2026-06-06: gisweb.fortbendcountytx.gov was decommissioned (Cloudflare 522) -- the public service moved to gisportal.fortbendcountytx.gov InteractiveMap/Parcels_Public/FeatureServer/1 (ArcGIS 11.3, 359,954 parcels; OwnerName search re-verified live), and at that point the field names had dropped their underscores (CADReferenceNumber, OwnerName). RENAMED BACK 2026-09-12: the same layer (the service's only layer) publishes the underscore names again (Owner_Name, CAD_Reference_Number, Property_Number, Owner_Address_1, Owner_City; 49 fields, displayField Owner_Name). The liveness probe read that rename as field-drift on 2026-09-10 and autoheal PR #632 tried to drop the five fields; nothing was removed upstream, so the fields were re-pointed at the current names and owner search re-verified live (10 rows for %SMITH%, e.g. R100208)."
|
|
11265
11277
|
},
|
|
11266
11278
|
{
|
|
11267
11279
|
id: "tx-williamson",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@urbankitstudio/atlas",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "JS SDK for the UrbanKit County Parcel REST API Atlas: 171 counties across all 50 US states, 174 verified public ArcGIS REST endpoints for county parcel data, with searchable field metadata, sample queries and license info.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"parcel",
|
|
@@ -12,18 +12,19 @@
|
|
|
12
12
|
"api",
|
|
13
13
|
"geojson",
|
|
14
14
|
"featureserver",
|
|
15
|
-
"mapserver"
|
|
15
|
+
"mapserver",
|
|
16
|
+
"real-estate",
|
|
17
|
+
"property"
|
|
16
18
|
],
|
|
17
19
|
"homepage": "https://urbankitstudio.com/parcel-atlas",
|
|
18
20
|
"repository": {
|
|
19
21
|
"type": "git",
|
|
20
|
-
"url": "git+https://github.com/
|
|
21
|
-
"directory": "packages/atlas"
|
|
22
|
+
"url": "git+https://github.com/urbankitstudio/atlas.git"
|
|
22
23
|
},
|
|
23
24
|
"bugs": {
|
|
24
|
-
"url": "https://github.com/
|
|
25
|
+
"url": "https://github.com/urbankitstudio/atlas/issues"
|
|
25
26
|
},
|
|
26
|
-
"author": "
|
|
27
|
+
"author": "UrbanKit Studio <urbankitstudio@gmail.com>",
|
|
27
28
|
"license": "MIT",
|
|
28
29
|
"type": "module",
|
|
29
30
|
"main": "./dist/index.cjs",
|
|
@@ -55,6 +56,7 @@
|
|
|
55
56
|
"prepublishOnly": "npm run typecheck && npm run test && npm run build"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
59
|
+
"@types/node": "^26.0.0",
|
|
58
60
|
"tsup": "^8.3.5",
|
|
59
61
|
"typescript": "^5.8.3",
|
|
60
62
|
"vitest": "^4.1.10"
|