@urbankitstudio/atlas 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,49 @@
1
+ {
2
+ "stateSlug": "kansas",
3
+ "stateName": "Kansas",
4
+ "stateAbbrev": "KS",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "ks-shawnee",
9
+ "state": "KS",
10
+ "stateName": "Kansas",
11
+ "stateSlug": "kansas",
12
+ "county": "Shawnee",
13
+ "countySlug": "shawnee-county",
14
+ "countyFips": "20177",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://gis.sncoapps.us/arcgis2/rest/services/Appraiser/AppraisalDataPro/MapServer/4",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 4,
21
+ "layerName": "Current Parcels",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "PARCELNUM", "label": "Parcel Number", "searchable": true },
26
+ { "name": "PID", "label": "Parcel ID", "searchable": true },
27
+ { "name": "QUICKREFID", "label": "Quick Reference ID", "searchable": true },
28
+ { "name": "ONAME", "label": "Owner Name", "searchable": true },
29
+ { "name": "PADDRESS", "label": "Property Address", "searchable": true },
30
+ { "name": "PADDRESS2", "label": "Property Address 2", "searchable": true },
31
+ { "name": "TAXUNIT", "label": "Tax Unit", "searchable": false }
32
+ ],
33
+ "sampleQuery": "https://gis.sncoapps.us/arcgis2/rest/services/Appraiser/AppraisalDataPro/MapServer/4/query?where=UPPER(ONAME)%20LIKE%20UPPER('%25SMITH%25')&outFields=PARCELNUM,ONAME,PADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
34
+ "license": "public",
35
+ "licenseUrl": "https://data-sncoks-gis.opendata.arcgis.com/",
36
+ "status": "live",
37
+ "lastVerified": "2026-05-15",
38
+ "verifiedBy": "automated"
39
+ }
40
+ ],
41
+ "contact": {
42
+ "department": "Shawnee County Appraiser's Office GIS",
43
+ "url": "https://snco.gov/ap/mapping.php",
44
+ "email": null
45
+ },
46
+ "notes": "Shawnee County KS (Topeka metro, county seat and state capital Topeka) provides AppraisalDataPro/MapServer/4 (Current Parcels) via the county appraiser's GIS server. This is a 20-field service: OBJECTID, PARCELNUM, ACRES, PID, QUICKREFID, ONAME (owner name), PADDRESS, PADDRESS2, DBOOKPAGE, SUBS (subdivision), NBHD (neighborhood), TAXUNIT, USD (unified school district), LBCSFUNCTION, LBCSACTIVITY, LDVAL, BLDGVAL, TOTVAL, Shape, Shape area. Query confirmed live: UPPER(ONAME) LIKE '%SMITH%' returns real results (e.g., 'SMITH, NEIL K & JONI' on SE 105TH ST). The same service has layer 0 (Parcel Information with Labels), layer 3 (Parcels 1-1-2024 — prior year snapshot), and layer 4 (Current Parcels). The Shawnee County Open Data Portal at data-sncoks-gis.opendata.arcgis.com provides additional datasets. The property search app is at gis.sncoapps.us/propertysearch/. Shawnee County KS (FIPS 20177) must not be confused with Shawnee County Ohio or Shawnee Township."
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "stateSlug": "kentucky",
3
+ "stateName": "Kentucky",
4
+ "stateAbbrev": "KY",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "ky-fayette",
9
+ "state": "KY",
10
+ "stateName": "Kentucky",
11
+ "stateSlug": "kentucky",
12
+ "county": "Fayette",
13
+ "countySlug": "fayette-county",
14
+ "countyFips": "21067",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://services.arcgis.com/f4rR7WnIfGBdVYFd/arcgis/rest/services/Tax_Parcels/FeatureServer/0",
19
+ "serviceType": "FeatureServer",
20
+ "layerIndex": 0,
21
+ "layerName": "Tax_Parcels",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "PAN", "label": "Parcel Account Number (Parcel ID)", "searchable": true },
26
+ { "name": "Owner1", "label": "Owner Name 1", "searchable": true },
27
+ { "name": "Owner2", "label": "Owner Name 2", "searchable": false },
28
+ { "name": "Owner3", "label": "Owner Name 3", "searchable": false },
29
+ { "name": "Mailing_Address", "label": "Mailing Address", "searchable": false },
30
+ { "name": "PARCEL_SUB", "label": "Parcel Sub-Identifier", "searchable": false },
31
+ { "name": "PARCEL_BLOCK", "label": "Block", "searchable": false },
32
+ { "name": "PARCEL_LOT", "label": "Lot", "searchable": false },
33
+ { "name": "PARCEL_TYPE", "label": "Parcel Type", "searchable": false },
34
+ { "name": "RecordDate", "label": "Record Date", "searchable": false }
35
+ ],
36
+ "sampleQuery": "https://services.arcgis.com/f4rR7WnIfGBdVYFd/arcgis/rest/services/Tax_Parcels/FeatureServer/0/query?where=UPPER(Owner1)+LIKE+UPPER('%25SMITH%25')&outFields=PAN,Owner1,Mailing_Address,PARCEL_TYPE&returnGeometry=false&f=json&resultRecordCount=10",
37
+ "license": "public",
38
+ "licenseUrl": "https://data-lfucg.hub.arcgis.com/",
39
+ "status": "live",
40
+ "lastVerified": "2026-05-15",
41
+ "verifiedBy": "manual"
42
+ }
43
+ ],
44
+ "contact": {
45
+ "department": "Lexington-Fayette Urban County Government (LFUCG) GIS",
46
+ "url": "https://data-lfucg.hub.arcgis.com/",
47
+ "email": null
48
+ },
49
+ "notes": "Fayette County (Lexington, pop. 322,000; consolidated city-county) Tax Parcels FeatureServer hosted on ArcGIS Online (LFUCG org). Fayette County is a merged urban county government — the Lexington-Fayette Urban County Government (LFUCG). Fields confirmed: PAN (numeric parcel account number), PARCEL_SUB, PARCEL_BLOCK, PARCEL_LOT, LRM_GEOM_DOC, RecordDate, LRM_GEOM_DOC_AREA/UNITS, PARCEL_TYPE, PARCEL_POLY_NAME, Owner1/2/3, Mailing_Address. Note: PARCEL_POLY_NAME may be null; PAN is the numeric parcel identifier. Mailing_Address is a single concatenated field. Verified 2026-05-15: Owner1 SMITH returns Lexington-area addresses (e.g., '3875 GEIST RD STE E469', '4951 E JOHN JOHN CT'). A separate Parcels FeatureServer exists at the same org but has no owner fields — Tax_Parcels is the correct service. Note: distinct from Jefferson County KY (Louisville, FIPS 21111) already in atlas."
50
+ }
51
+ ]
52
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "stateSlug": "louisiana",
3
+ "stateName": "Louisiana",
4
+ "stateAbbrev": "LA",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "la-east-baton-rouge-parish",
9
+ "state": "LA",
10
+ "stateName": "Louisiana",
11
+ "stateSlug": "louisiana",
12
+ "county": "East Baton Rouge Parish",
13
+ "countySlug": "east-baton-rouge-parish",
14
+ "countyFips": "22033",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://maps.brla.gov/gis/rest/services/Cadastral/Tax_Parcel/MapServer/0",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 0,
21
+ "layerName": "Tax Parcel",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "ASSESSMENT_NUM", "label": "Assessment Number (Parcel ID)", "searchable": true },
26
+ { "name": "PRONO", "label": "Property Number", "searchable": true },
27
+ { "name": "OWNER", "label": "Owner Name", "searchable": true },
28
+ { "name": "OWNER_ADDRESS", "label": "Owner Address", "searchable": false },
29
+ { "name": "OWNER_CITY_STATE_ZIP", "label": "Owner City/State/ZIP", "searchable": false },
30
+ { "name": "PHYSICAL_ADDRESS", "label": "Physical Address", "searchable": true },
31
+ { "name": "SUBDIVISION", "label": "Subdivision", "searchable": false },
32
+ { "name": "WARD_SECTION", "label": "Ward/Section", "searchable": false },
33
+ { "name": "SALE_YEAR", "label": "Sale Year", "searchable": false },
34
+ { "name": "SUM_FAIR_MARKET_VALUE", "label": "Fair Market Value", "searchable": false },
35
+ { "name": "SUM_ASSESSED_VALUE", "label": "Assessed Value", "searchable": false }
36
+ ],
37
+ "sampleQuery": "https://maps.brla.gov/gis/rest/services/Cadastral/Tax_Parcel/MapServer/0/query?where=UPPER(OWNER)+LIKE+UPPER('%25SMITH%25')&outFields=ASSESSMENT_NUM,OWNER,OWNER_ADDRESS,PHYSICAL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
38
+ "license": "public",
39
+ "licenseUrl": "https://web-ebrgis.opendata.arcgis.com/",
40
+ "status": "live",
41
+ "lastVerified": "2026-05-15",
42
+ "verifiedBy": "manual"
43
+ }
44
+ ],
45
+ "contact": {
46
+ "department": "East Baton Rouge Parish / City of Baton Rouge GIS Program (EBRGIS)",
47
+ "url": "https://web-ebrgis.opendata.arcgis.com/",
48
+ "email": null
49
+ },
50
+ "notes": "East Baton Rouge Parish (Baton Rouge, pop. 456,000; state capital) Tax Parcel layer. Louisiana uses 'parish' instead of 'county' — East Baton Rouge Parish is the combined city/parish government. 21 fields confirmed: ID, ASSESSMENT_NUM, PRONO, OWNER, OWNER_ADDRESS, OWNER_CITY_STATE_ZIP, PHYSICAL_ADDRESS, SUBDIVISION, WARD_SECTION, LOT, BLOCK, LEGAL_DESCRIPTION, FLOOD_ZONE, SALE_YEAR, STATUS, SUM_HOMESTEAD_EXEMPTION, SUM_LOT_VALUE, SUM_LAND_VALUE, SUM_IMPROVEMENT_VALUE, SUM_FAIR_MARKET_VALUE, SUM_ASSESSED_VALUE. Verified 2026-05-15: SMITH returns Baton Rouge addresses (e.g., '12523 MERLIN AVE', '9758 W TAMS DR'). EBRGIS manages 200+ public datasets."
51
+ },
52
+ {
53
+ "id": "la-orleans-parish",
54
+ "state": "LA",
55
+ "stateName": "Louisiana",
56
+ "stateSlug": "louisiana",
57
+ "county": "Orleans Parish",
58
+ "countySlug": "orleans-parish",
59
+ "countyFips": "22071",
60
+ "hasPublicRest": true,
61
+ "endpoints": [
62
+ {
63
+ "url": "https://gis.nola.gov/arcgis/rest/services/apps/property3/MapServer/15",
64
+ "serviceType": "MapServer",
65
+ "layerIndex": 15,
66
+ "layerName": "Property Information [Parcels]",
67
+ "supportsQuery": true,
68
+ "corsEnabled": null,
69
+ "searchFields": [
70
+ { "name": "PARCELID", "label": "Parcel ID", "searchable": true },
71
+ { "name": "TAXBILLID", "label": "Tax Bill ID", "searchable": true },
72
+ { "name": "OWNERNME1", "label": "Owner Name 1", "searchable": true },
73
+ { "name": "OWNERNME2", "label": "Owner Name 2", "searchable": false },
74
+ { "name": "SITEADDRESS", "label": "Site Address", "searchable": true },
75
+ { "name": "BUILDING", "label": "Building Number", "searchable": false },
76
+ { "name": "UNIT", "label": "Unit", "searchable": false },
77
+ { "name": "PSTLADDRESS", "label": "Postal (Mailing) Address", "searchable": false },
78
+ { "name": "PSTLCITY", "label": "Postal City", "searchable": false },
79
+ { "name": "PSTLSTATE", "label": "Postal State", "searchable": false },
80
+ { "name": "PSTLZIP5", "label": "Postal ZIP", "searchable": false },
81
+ { "name": "USECD", "label": "Use Code", "searchable": false },
82
+ { "name": "LOT", "label": "Lot", "searchable": false },
83
+ { "name": "SQUARE", "label": "Square", "searchable": false },
84
+ { "name": "PARID", "label": "Parcel Account ID", "searchable": true }
85
+ ],
86
+ "sampleQuery": "https://gis.nola.gov/arcgis/rest/services/apps/property3/MapServer/15/query?where=UPPER(OWNERNME1)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OWNERNME1,SITEADDRESS,PSTLADDRESS,PSTLCITY&returnGeometry=false&f=json&resultRecordCount=10",
87
+ "license": "public",
88
+ "licenseUrl": "https://gis.nola.gov/",
89
+ "status": "live",
90
+ "lastVerified": "2026-05-15",
91
+ "verifiedBy": "manual"
92
+ }
93
+ ],
94
+ "contact": {
95
+ "department": "City of New Orleans GIS (NOLA GIS)",
96
+ "url": "https://gis.nola.gov/",
97
+ "email": null
98
+ },
99
+ "notes": "Orleans Parish (New Orleans, pop. 383,000) Property Information layer at index 15 of the apps/property3 composite MapServer. Note: the 'LandBase/Parcels' MapServer at gis.nola.gov only exposes GEOPIN (parcel geometry key, no attributes). For owner + address data, use apps/property3/MapServer/15 which is an assessor join. 20 fields confirmed: OBJECTID, BUILDING, UNIT, SITEADDRESS, OWNERNME1/2, PSTLADDRESS/CITY/STATE/ZIP5/ZIP4, USECD, PRPRTYDSCRP, PARCELID, TAXBILLID, LOT, SQUARE, BLOCK, PARID. New Orleans uses a Square/Lot system (not typical street address) for legal parcel identification. Verified 2026-05-15: SMITH returns New Orleans addresses. The countySlug 'orleans-parish' matches countySlugFromName('Orleans Parish') per atlas slugify rules."
100
+ }
101
+ ]
102
+ }
@@ -0,0 +1,138 @@
1
+ {
2
+ "stateSlug": "maine",
3
+ "stateName": "Maine",
4
+ "stateAbbrev": "ME",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "me-cumberland",
9
+ "state": "ME",
10
+ "stateName": "Maine",
11
+ "stateSlug": "maine",
12
+ "county": "Cumberland",
13
+ "countySlug": "cumberland-county",
14
+ "countyFips": "23005",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/10",
19
+ "serviceType": "FeatureServer",
20
+ "layerIndex": 10,
21
+ "layerName": "Maine Parcels Organized Towns (polygon)",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "COUNTY", "label": "County Name (e.g. CUMBERLAND)", "searchable": true },
26
+ { "name": "TOWN", "label": "Municipality Name", "searchable": true },
27
+ { "name": "PROP_LOC", "label": "Property Location / Address", "searchable": true },
28
+ { "name": "MAP_BK_LOT", "label": "Map-Book-Lot Parcel ID", "searchable": true },
29
+ { "name": "STATE_ID", "label": "State Parcel ID", "searchable": true },
30
+ { "name": "GEOCODE", "label": "Geocode", "searchable": true },
31
+ { "name": "TYPE", "label": "Polygon Type", "searchable": false },
32
+ { "name": "FMUPDAT", "label": "Last Update Date", "searchable": false }
33
+ ],
34
+ "sampleQuery": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/10/query?where=COUNTY%3D'CUMBERLAND'+AND+UPPER(PROP_LOC)+LIKE+UPPER('%25MAIN%25')&outFields=COUNTY,TOWN,PROP_LOC,MAP_BK_LOT,STATE_ID&returnGeometry=false&f=json&resultRecordCount=10",
35
+ "license": "public",
36
+ "licenseUrl": "https://www.maine.gov/geolib/data/index.html",
37
+ "status": "live",
38
+ "lastVerified": "2026-05-15",
39
+ "verifiedBy": "manual"
40
+ },
41
+ {
42
+ "url": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/9",
43
+ "serviceType": "FeatureServer",
44
+ "layerIndex": 9,
45
+ "layerName": "Maine Parcels Organized Towns ADB (assessor table)",
46
+ "supportsQuery": true,
47
+ "corsEnabled": null,
48
+ "searchFields": [
49
+ { "name": "MAP_BK_LOT", "label": "Map-Book-Lot (join key to polygon layer 10)", "searchable": true },
50
+ { "name": "OWNER1", "label": "Owner Name (line 1)", "searchable": true },
51
+ { "name": "OWNER2", "label": "Owner Name (line 2)", "searchable": true },
52
+ { "name": "OWN_ADDR1", "label": "Owner Mailing Address Line 1", "searchable": false },
53
+ { "name": "OWN_CITY", "label": "Owner Mailing City", "searchable": false },
54
+ { "name": "OWN_STATE", "label": "Owner Mailing State", "searchable": false },
55
+ { "name": "OWN_ZIP", "label": "Owner Mailing ZIP", "searchable": false },
56
+ { "name": "LAND_VAL", "label": "Land Value", "searchable": false },
57
+ { "name": "BLDG_VAL", "label": "Building Value", "searchable": false },
58
+ { "name": "LOT_SIZE", "label": "Lot Size", "searchable": false },
59
+ { "name": "LAND_USE", "label": "Land Use Code", "searchable": false }
60
+ ],
61
+ "sampleQuery": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/9/query?where=UPPER(OWNER1)+LIKE+UPPER('%25SMITH%25')&outFields=OWNER1,OWN_ADDR1,OWN_CITY,OWN_STATE,MAP_BK_LOT,LAND_VAL,BLDG_VAL&returnGeometry=false&f=json&resultRecordCount=10",
62
+ "license": "public",
63
+ "licenseUrl": "https://www.maine.gov/geolib/data/index.html",
64
+ "status": "live",
65
+ "lastVerified": "2026-05-15",
66
+ "verifiedBy": "manual"
67
+ }
68
+ ],
69
+ "contact": {
70
+ "department": "Maine Office of GIS (MEGIS) / Maine GeoLibrary",
71
+ "url": "https://www.maine.gov/geolib/data/index.html",
72
+ "email": null
73
+ },
74
+ "notes": "Maine GeoLibrary statewide organized-towns parcel service. Layer 10 carries polygon geometry with COUNTY, TOWN, and location fields. Layer 9 is the assessor attribute table (no geometry) with OWNER1/OWNER2 and mailing address — join on MAP_BK_LOT. Filter Cumberland County with COUNTY='CUMBERLAND'; includes Portland, South Portland, Westbrook, Scarborough, Gorham, Windham, etc. Note: submissions are voluntary from municipalities and some towns may have stale data (updated irregularly). Unorganized territories use a separate service (gis.maine.gov/mapservices)."
75
+ },
76
+ {
77
+ "id": "me-york",
78
+ "state": "ME",
79
+ "stateName": "Maine",
80
+ "stateSlug": "maine",
81
+ "county": "York",
82
+ "countySlug": "york-county",
83
+ "countyFips": "23031",
84
+ "hasPublicRest": true,
85
+ "endpoints": [
86
+ {
87
+ "url": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/10",
88
+ "serviceType": "FeatureServer",
89
+ "layerIndex": 10,
90
+ "layerName": "Maine Parcels Organized Towns (polygon)",
91
+ "supportsQuery": true,
92
+ "corsEnabled": null,
93
+ "searchFields": [
94
+ { "name": "COUNTY", "label": "County Name (use 'YORK')", "searchable": true },
95
+ { "name": "TOWN", "label": "Municipality Name", "searchable": true },
96
+ { "name": "PROP_LOC", "label": "Property Location / Address", "searchable": true },
97
+ { "name": "MAP_BK_LOT", "label": "Map-Book-Lot Parcel ID", "searchable": true },
98
+ { "name": "STATE_ID", "label": "State Parcel ID", "searchable": true }
99
+ ],
100
+ "sampleQuery": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/10/query?where=COUNTY%3D'YORK'&outFields=COUNTY,TOWN,PROP_LOC,MAP_BK_LOT,STATE_ID&returnGeometry=false&f=json&resultRecordCount=10",
101
+ "license": "public",
102
+ "licenseUrl": "https://www.maine.gov/geolib/data/index.html",
103
+ "status": "live",
104
+ "lastVerified": "2026-05-15",
105
+ "verifiedBy": "manual"
106
+ },
107
+ {
108
+ "url": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/9",
109
+ "serviceType": "FeatureServer",
110
+ "layerIndex": 9,
111
+ "layerName": "Maine Parcels Organized Towns ADB (assessor table)",
112
+ "supportsQuery": true,
113
+ "corsEnabled": null,
114
+ "searchFields": [
115
+ { "name": "MAP_BK_LOT", "label": "Map-Book-Lot (join key to polygon layer 10)", "searchable": true },
116
+ { "name": "OWNER1", "label": "Owner Name (line 1)", "searchable": true },
117
+ { "name": "OWNER2", "label": "Owner Name (line 2)", "searchable": true },
118
+ { "name": "OWN_ADDR1", "label": "Owner Mailing Address Line 1", "searchable": false },
119
+ { "name": "OWN_CITY", "label": "Owner Mailing City", "searchable": false },
120
+ { "name": "LAND_VAL", "label": "Land Value", "searchable": false }
121
+ ],
122
+ "sampleQuery": "https://services1.arcgis.com/RbMX0mRVOFNTdLzd/arcgis/rest/services/Maine_Parcels_Organized_Towns/FeatureServer/9/query?where=UPPER(OWNER1)+LIKE+UPPER('%25SMITH%25')&outFields=OWNER1,OWN_ADDR1,OWN_CITY,OWN_STATE,MAP_BK_LOT,LAND_VAL&returnGeometry=false&f=json&resultRecordCount=10",
123
+ "license": "public",
124
+ "licenseUrl": "https://www.maine.gov/geolib/data/index.html",
125
+ "status": "live",
126
+ "lastVerified": "2026-05-15",
127
+ "verifiedBy": "manual"
128
+ }
129
+ ],
130
+ "contact": {
131
+ "department": "Maine Office of GIS (MEGIS) / Maine GeoLibrary",
132
+ "url": "https://www.maine.gov/geolib/data/index.html",
133
+ "email": null
134
+ },
135
+ "notes": "Same statewide Maine GeoLibrary service as Cumberland County. Filter York County with COUNTY='YORK'; includes Biddeford, Saco, Sanford, Kennebunk, York, Kittery, etc. Layer 10 for geometry, layer 9 (ADB) for owner/assessment data joined by MAP_BK_LOT."
136
+ }
137
+ ]
138
+ }
@@ -0,0 +1,78 @@
1
+ {
2
+ "stateSlug": "massachusetts",
3
+ "stateName": "Massachusetts",
4
+ "stateAbbrev": "MA",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "ma-statewide",
9
+ "state": "MA",
10
+ "stateName": "Massachusetts",
11
+ "stateSlug": "massachusetts",
12
+ "county": "Statewide (Suffolk / Middlesex / Worcester / Norfolk / Essex / Plymouth)",
13
+ "countySlug": "statewide",
14
+ "countyFips": null,
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://arcgisserver.digital.mass.gov/arcgisserver/rest/services/AGOL/MassachusettsPropertyTaxParcels/FeatureServer/1",
19
+ "serviceType": "FeatureServer",
20
+ "layerIndex": 1,
21
+ "layerName": "Tax Parcels",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "TOWN_ID", "label": "Town/City Numeric ID (filter by municipality)", "searchable": true },
26
+ { "name": "MAP_PAR_ID", "label": "Map-Parcel Identifier", "searchable": true },
27
+ { "name": "LOC_ID", "label": "Location ID (links to L3_ASSESS table)", "searchable": true },
28
+ { "name": "POLY_TYPE", "label": "Polygon Type Code", "searchable": false },
29
+ { "name": "LU_CODES", "label": "Land Use Codes", "searchable": false }
30
+ ],
31
+ "sampleQuery": "https://arcgisserver.digital.mass.gov/arcgisserver/rest/services/AGOL/MassachusettsPropertyTaxParcels/FeatureServer/1/query?where=TOWN_ID%3D274&outFields=TOWN_ID,MAP_PAR_ID,LOC_ID,LU_CODES&returnGeometry=false&f=json&resultRecordCount=10",
32
+ "license": "public",
33
+ "licenseUrl": "https://www.mass.gov/info-details/massgis-data-property-tax-parcels",
34
+ "status": "live",
35
+ "lastVerified": "2026-05-15",
36
+ "verifiedBy": "manual"
37
+ },
38
+ {
39
+ "url": "https://arcgisserver.digital.mass.gov/arcgisserver/rest/services/AGOL/MassachusettsPropertyTaxParcels/FeatureServer/4",
40
+ "serviceType": "FeatureServer",
41
+ "layerIndex": 4,
42
+ "layerName": "GISDATA.L3_ASSESS (Assessor Table)",
43
+ "supportsQuery": true,
44
+ "corsEnabled": null,
45
+ "searchFields": [
46
+ { "name": "LOC_ID", "label": "Location ID (join key to Tax Parcels layer 1)", "searchable": true },
47
+ { "name": "PROP_ID", "label": "Property ID", "searchable": true },
48
+ { "name": "MA_PROP_ID", "label": "Statewide Property ID", "searchable": true },
49
+ { "name": "OWNER1", "label": "Owner Name", "searchable": true },
50
+ { "name": "SITE_ADDR", "label": "Site Address", "searchable": true },
51
+ { "name": "FULL_STR", "label": "Full Street Name", "searchable": true },
52
+ { "name": "CITY", "label": "City / Town", "searchable": true },
53
+ { "name": "ZIP", "label": "ZIP Code", "searchable": false },
54
+ { "name": "TOTAL_VAL", "label": "Total Assessed Value", "searchable": false },
55
+ { "name": "LAND_VAL", "label": "Land Value", "searchable": false },
56
+ { "name": "BLDG_VAL", "label": "Building Value", "searchable": false },
57
+ { "name": "USE_CODE", "label": "Use Code", "searchable": false },
58
+ { "name": "YEAR_BUILT", "label": "Year Built", "searchable": false },
59
+ { "name": "ZONING", "label": "Zoning Code", "searchable": false },
60
+ { "name": "TOWN_ID", "label": "Town Numeric ID", "searchable": true }
61
+ ],
62
+ "sampleQuery": "https://arcgisserver.digital.mass.gov/arcgisserver/rest/services/AGOL/MassachusettsPropertyTaxParcels/FeatureServer/4/query?where=UPPER(OWNER1)+LIKE+UPPER('%25SMITH%25')&outFields=OWNER1,SITE_ADDR,CITY,ZIP,TOTAL_VAL,MA_PROP_ID,TOWN_ID&returnGeometry=false&f=json&resultRecordCount=10",
63
+ "license": "public",
64
+ "licenseUrl": "https://www.mass.gov/info-details/massgis-data-property-tax-parcels",
65
+ "status": "live",
66
+ "lastVerified": "2026-05-15",
67
+ "verifiedBy": "manual"
68
+ }
69
+ ],
70
+ "contact": {
71
+ "department": "MassGIS (Bureau of Geographic Information), Executive Office of Technology Services and Security",
72
+ "url": "https://www.mass.gov/info-details/massgis-data-property-tax-parcels",
73
+ "email": null
74
+ },
75
+ "notes": "MassGIS Level 3 (L3) Standardized Assessors' Parcel data — a single statewide service covering all 351 Massachusetts municipalities including all 6 target counties: Suffolk (Boston), Middlesex, Worcester, Norfolk, Essex, and Plymouth. Parcels are organized by municipality (TOWN_ID numeric code), not by county. To filter by county: Suffolk towns include Boston (274), Chelsea (54), Revere (223), Winthrop (349); Middlesex includes Cambridge (49), Lowell (168), Newton (195); use the MassGIS town-code lookup at mass.gov for the full list. Two-layer workflow: layer 1 (Tax Parcels) carries polygon geometry and parcel ID; layer 4 (L3_ASSESS table, no geometry) carries owner name, address, and assessment data — join on LOC_ID. OWNER_NAME field is public."
76
+ }
77
+ ]
78
+ }
@@ -0,0 +1,92 @@
1
+ {
2
+ "stateSlug": "michigan",
3
+ "stateName": "Michigan",
4
+ "stateAbbrev": "MI",
5
+ "lastUpdated": "2026-05-15",
6
+ "counties": [
7
+ {
8
+ "id": "mi-kent",
9
+ "state": "MI",
10
+ "stateName": "Michigan",
11
+ "stateSlug": "michigan",
12
+ "county": "Kent",
13
+ "countySlug": "kent-county",
14
+ "countyFips": "26081",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://gis.kentcountymi.gov/agisprod/rest/services/ParcelsWithCondos/MapServer/0",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 0,
21
+ "layerName": "Parcels With Condos",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "PPN", "label": "Parcel Permanent Number", "searchable": true },
26
+ { "name": "OWNERNAME1", "label": "Owner Name (Primary)", "searchable": true },
27
+ { "name": "OWNERNAME2", "label": "Owner Name 2", "searchable": true },
28
+ { "name": "OWNERADDRESS", "label": "Owner Address", "searchable": true },
29
+ { "name": "OWNERCITY", "label": "Owner City", "searchable": true },
30
+ { "name": "PROPERTYADDRESS", "label": "Property Address", "searchable": true },
31
+ { "name": "PROPADDRESSCITY", "label": "Property Address City", "searchable": true },
32
+ { "name": "PROPERTYCLASS", "label": "Property Class", "searchable": false }
33
+ ],
34
+ "sampleQuery": "https://gis.kentcountymi.gov/agisprod/rest/services/ParcelsWithCondos/MapServer/0/query?where=UPPER(OWNERNAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=PPN,OWNERNAME1,PROPERTYADDRESS,PROPADDRESSCITY&returnGeometry=false&f=json&resultRecordCount=10",
35
+ "license": "public",
36
+ "licenseUrl": "https://www.kentcountymi-accesskent.opendata.arcgis.com/",
37
+ "status": "live",
38
+ "lastVerified": "2026-05-15",
39
+ "verifiedBy": "automated"
40
+ }
41
+ ],
42
+ "contact": {
43
+ "department": "Kent County GIS",
44
+ "url": "https://www.kentcountymi.gov/246/Geographic-Information-System-GIS",
45
+ "email": null
46
+ },
47
+ "notes": "Kent County (Grand Rapids metro) hosts ParcelsWithCondos/MapServer/0 — a countywide parcel layer including condominium units. 22 fields: PPN, TAXPARCEL_FLAG, OWNERNAME1, OWNERNAME2, OWNERCAREOF, OWNERADDRESS, OWNERCITY, OWNERZIPCODE, PROPERTYADDRESS, PROPADDRESSCITY, PROPADDRESSSTATE_ZIPCODE, PROPERTYCLASS, GOVERNMENTALUNIT, SCHOOLDISTRICT, SEV/TAXABLE fields (2 tribunals), ACREAGE, PNUM, geometry. Query confirmed live: UPPER(OWNERNAME1) LIKE '%SMITH%' returns real owner names (e.g., 'SMITH TIMOTHY J & STARKS-SMITH MARY'). Owner mailing address is in OWNERADDRESS/OWNERCITY/OWNERZIPCODE. The county's open data hub at kentcountymi-accesskent.opendata.arcgis.com mirrors the same data. Michigan parcel ID (PPN) format is 10-digit county-township-parcel."
48
+ },
49
+ {
50
+ "id": "mi-oakland",
51
+ "state": "MI",
52
+ "stateName": "Michigan",
53
+ "stateSlug": "michigan",
54
+ "county": "Oakland",
55
+ "countySlug": "oakland-county",
56
+ "countyFips": "26125",
57
+ "hasPublicRest": true,
58
+ "endpoints": [
59
+ {
60
+ "url": "https://gisservices.oakgov.com/arcgis/rest/services/Enterprise/EnterpriseOpenParcelDataMapService/MapServer/1",
61
+ "serviceType": "MapServer",
62
+ "layerIndex": 1,
63
+ "layerName": "Tax Parcel Plus",
64
+ "supportsQuery": true,
65
+ "corsEnabled": null,
66
+ "searchFields": [
67
+ { "name": "KEYPIN", "label": "Key PIN", "searchable": true },
68
+ { "name": "PIN", "label": "Parcel Identification Number", "searchable": true },
69
+ { "name": "NAME1", "label": "Owner Name 1 (redacted on public layer)", "searchable": false },
70
+ { "name": "NAME2", "label": "Owner Name 2 (redacted on public layer)", "searchable": false },
71
+ { "name": "SITEADDRESS", "label": "Site Address", "searchable": true },
72
+ { "name": "SITECITY", "label": "Site City", "searchable": true },
73
+ { "name": "CVTTAXDESCRIPTION", "label": "City/Village/Township Tax Description", "searchable": false },
74
+ { "name": "CLASSCODE", "label": "Property Class Code", "searchable": false }
75
+ ],
76
+ "sampleQuery": "https://gisservices.oakgov.com/arcgis/rest/services/Enterprise/EnterpriseOpenParcelDataMapService/MapServer/1/query?where=PIN%3D'2536483012'&outFields=PIN,NAME1,SITEADDRESS,SITECITY&returnGeometry=false&f=json",
77
+ "license": "public",
78
+ "licenseUrl": "https://accessoakland.oakgov.com/",
79
+ "status": "live",
80
+ "lastVerified": "2026-05-15",
81
+ "verifiedBy": "automated"
82
+ }
83
+ ],
84
+ "contact": {
85
+ "department": "Oakland County Enterprise GIS",
86
+ "url": "https://www.oakgov.com/government/information-technology/enterprise-gis",
87
+ "email": "servicecenter@oakgov.com"
88
+ },
89
+ "notes": "Oakland County (Detroit metro NW, county seat Pontiac) serves 332k+ parcels via EnterpriseOpenParcelDataMapService/MapServer/1 (branded 'Tax Parcel Plus'). The public layer exposes PIN, KEYPIN, SITEADDRESS, SITECITY, SITESTATE, SITEZIP5, POSTALADDRESS, CLASSCODE, CVTTAXCODE, CVTTAXDESCRIPTION, ASSESSEDVALUE, TAXABLEVALUE, STRUCTURE_DESC, LIVING_AREA_SQFT, NUM_BEDS, NUM_BATHS. OWNER NAME REDACTED: NAME1 and NAME2 fields are present in the schema but return null in all public query results as of 2026-05-15. Full owner data is available only through the fee-based Property Gateway at gis.oakgov.com/PropertyGateway/. The public Access Oakland portal (accessoakland.oakgov.com) hosts the same OC Tax Parcels (Public) dataset. PIN format is 10-digit Michigan standard. For parcel-boundary-only use cases (without owner), this endpoint is fully functional."
90
+ }
91
+ ]
92
+ }
@@ -4,6 +4,50 @@
4
4
  "stateAbbrev": "MN",
5
5
  "lastUpdated": "2026-05-15",
6
6
  "counties": [
7
+ {
8
+ "id": "mn-ramsey",
9
+ "state": "MN",
10
+ "stateName": "Minnesota",
11
+ "stateSlug": "minnesota",
12
+ "county": "Ramsey",
13
+ "countySlug": "ramsey-county",
14
+ "countyFips": "27123",
15
+ "hasPublicRest": true,
16
+ "endpoints": [
17
+ {
18
+ "url": "https://maps.co.ramsey.mn.us/arcgis/rest/services/ParcelData/AttributedData/MapServer/0",
19
+ "serviceType": "MapServer",
20
+ "layerIndex": 0,
21
+ "layerName": "Parcels MultiUse",
22
+ "supportsQuery": true,
23
+ "corsEnabled": null,
24
+ "searchFields": [
25
+ { "name": "ParcelID", "label": "Parcel ID", "searchable": true },
26
+ { "name": "OwnerName", "label": "Owner Name", "searchable": true },
27
+ { "name": "OwnerName1", "label": "Owner Name 1", "searchable": true },
28
+ { "name": "OwnerName2", "label": "Owner Name 2", "searchable": true },
29
+ { "name": "OwnerLastName", "label": "Owner Last Name", "searchable": true },
30
+ { "name": "SiteAddress", "label": "Site Address", "searchable": true },
31
+ { "name": "SiteCityName", "label": "Site City", "searchable": true },
32
+ { "name": "TaxName1", "label": "Tax Name 1", "searchable": true },
33
+ { "name": "TaxName2", "label": "Tax Name 2", "searchable": true },
34
+ { "name": "LandUseCodeDescription", "label": "Land Use Code Description", "searchable": false }
35
+ ],
36
+ "sampleQuery": "https://maps.co.ramsey.mn.us/arcgis/rest/services/ParcelData/AttributedData/MapServer/0/query?where=UPPER(OwnerName)%20LIKE%20UPPER('%25SMITH%25')&outFields=ParcelID,OwnerName,SiteAddress,SiteCityName&returnGeometry=false&f=json&resultRecordCount=10",
37
+ "license": "public",
38
+ "licenseUrl": "https://www.ramseycounty.us/residents/property/property-information",
39
+ "status": "live",
40
+ "lastVerified": "2026-05-15",
41
+ "verifiedBy": "automated"
42
+ }
43
+ ],
44
+ "contact": {
45
+ "department": "Ramsey County GIS",
46
+ "url": "https://maps.co.ramsey.mn.us/MapRamsey/",
47
+ "email": null
48
+ },
49
+ "notes": "Ramsey County (St. Paul metro, county seat St. Paul) hosts one of the richest public parcel REST layers in Minnesota. ParcelData/AttributedData/MapServer/0 (Parcels MultiUse) exposes 90+ fields including OwnerName/OwnerName1/OwnerName2/OwnerLastName, OwnerAddress1/2, OwnerCityStateZIP, TaxName1/2, TaxAddress1/2, TaxCityStateZIP, HomesteadName1/2, SiteAddress, SiteCityName, SiteZIP, EMV Land/Building/Total, TotalTax, LandUseCodeDescription, DwellingType, LivingAreaSquareFeet, YearBuilt, GarageYN, LastSaleDate, SalePrice, ParcelAcresDeed, SchoolDistrictName, WatershedDistrictNameTax. maxRecordCount is 1000. Query confirmed live: UPPER(OwnerName) LIKE '%SMITH%' returns real results (e.g., 'KING SMITH LLC' at '598 SMITH AVE S' in Saint Paul). Ramsey County is adjacent to Hennepin to the west and contains the state capital."
50
+ },
7
51
  {
8
52
  "id": "mn-hennepin",
9
53
  "state": "MN",