{
 "generated": "2026-11-05",
 "source": "BetaNYC/grounding-ai-with-ny-open-data resources/ny-data-portal-registry.md",
 "fields": [
  "tier",
  "entity",
  "entity_type",
  "region",
  "portal_name",
  "url",
  "platform",
  "api_type",
  "api_endpoint",
  "key_required",
  "dataset_count",
  "status",
  "last_verified",
  "evidence",
  "notes",
  "registry_id",
  "page",
  "example_request"
 ],
 "rows": [
  {
   "tier": 1,
   "entity": "NYS Department of Health",
   "entity_type": "state-portal",
   "region": "Statewide",
   "portal_name": "Health Data NY (health.data.ny.gov)",
   "url": "https://health.data.ny.gov/",
   "platform": "Socrata (Tyler Data & Insights)",
   "api_type": "SODA 2.x",
   "api_endpoint": "https://health.data.ny.gov/resource/<4x4>.json",
   "key_required": "N",
   "dataset_count": 324,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; Discovery API only=dataset with search_context=health.data.ny.gov resultSetSize=324; SODA query on sp9t-e36z returned a row; metadata attribution 'New York State Department of Health'",
   "notes": "DOH's own catalog, separate Socrata domain from data.ny.gov. DOH statistics pages (health.ny.gov/statistics) are mostly reports and dashboards; SPARCS microdata is by application only (not verified this pass, no row). Key: N (app token optional).",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://health.data.ny.gov/resource/sp9t-e36z.json?$limit=1'"
  },
  {
   "tier": 1,
   "entity": "NYS Office of Information Technology Services (GIS Program Office)",
   "entity_type": "state-portal",
   "region": "Statewide",
   "portal_name": "NYS GIS Clearinghouse (gis.ny.gov + data.gis.ny.gov)",
   "url": "https://data.gis.ny.gov/",
   "platform": "ArcGIS Hub (ArcGIS Online org 'ShareGIS NY', urlKey sharegisny); gis.ny.gov is the HTML front site",
   "api_type": "ArcGIS Hub / DCAT-US 1.1 feed; ArcGIS REST (hosted feature services)",
   "api_endpoint": "https://data.gis.ny.gov/api/feed/dcat-us/1.1.json",
   "key_required": "N",
   "dataset_count": 389,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "gis.ny.gov HTTP 200, title 'NYS GIS Clearinghouse', links its.ny.gov; hub.arcgis.com domain record: siteTitle 'NYS GIS Clearinghouse', orgTitle 'ShareGIS NY', orgId EbVsqZ18sv1kVJ3k; DCAT feed 389 datasets, contact its.dl.sharegis@its.ny.gov, bbox -79.65,40.41,-71.65,44.97 (NY)",
   "notes": "DCAT publishers: ShareGIS NY 153, DEC 132, DOS 22, Thruway 14, NY Natural Heritage Program 11, OPRHP 9, plus some county layers (e.g. Oswego 6) and 40 items with an unfilled '{{source}}' publisher. ShareGIS org has 58 public feature services. Same org runs infrastructure.ny.gov ('NY State Infrastructure Dashboard', dashboards, not a catalog; no row). ITS's own ArcGIS Server is a separate tier-2 row.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://data.gis.ny.gov/api/feed/dcat-us/1.1.json'"
  },
  {
   "tier": 1,
   "entity": "NYS Office of Information Technology Services (Open NY program)",
   "entity_type": "state-portal",
   "region": "Statewide",
   "portal_name": "Open NY (data.ny.gov)",
   "url": "https://data.ny.gov/",
   "platform": "Socrata (Tyler Data & Insights)",
   "api_type": "SODA 2.x (+ Socrata Discovery API)",
   "api_endpoint": "https://data.ny.gov/resource/<4x4>.json",
   "key_required": "N",
   "dataset_count": 1036,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; Discovery API resultSetSize=1036 for only=dataset with search_context=data.ny.gov (all asset types incl. filters/maps/charts: 1639); SODA query on mxu7-dpdx returned rows; CSV export 200 text/csv",
   "notes": "Agencies publishing here without their own data service (asset counts from the Dataset-Information_Agency facet, all asset types, 2026-11-05): Environmental Conservation 194, Taxation & Finance 88, Budget 75 (OpenBudget.ny.gov links here for its data), Transportation 58, COELIG (lobbying) 54, Labor 49, DMV 49, State 36, Agriculture & Markets 31, Empire State Development 29, OCFS 28, OMH 26, Gaming Commission 22, ITS 20, OPRHP 19, DCJS 18, OTDA 18, Aging 17, HCR 17, PSC 12, DFS 9, OPWDD 9, OGS 8, WCB 8, DOCCS 7, Board of Elections 7, OCM 5, DHSES 4, Justice Center 4, SLA 3, Civil Service 1, Court Administration 1, PERB 1, Victim Services 1. Authorities also publish here (MTA 243, NYSERDA 166, Thruway 50, Port Authority 23 etc.; covered by B2). Local Data Index = mxu7-dpdx. Always pass search_context=data.ny.gov to the Discovery API. Key: N (app token optional, raises rate limits).",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://data.ny.gov/resource/mxu7-dpdx.json?$limit=1'"
  },
  {
   "tier": 1,
   "entity": "State of New York (as harvested by data.gov)",
   "entity_type": "federal-cross-reference",
   "region": "Statewide",
   "portal_name": "catalog.data.gov organization: State of New York",
   "url": "https://catalog.data.gov/organization/new-york",
   "platform": "CKAN-derived catalog (data.gov, GSA)",
   "api_type": "none verified (old CKAN action API at /api/3/action/* returns 404)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 1164,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; org page shows 'Type: State Government', 'Total datasets: 1164'. The slug is new-york (state-of-new-york is 404). /api/3/action/organization_show and package_search returned 404 {'message':'Not Found'}",
   "notes": "Cross-reference only: what the federal catalog harvests from NYS (likely data.ny.gov / health.data.ny.gov). NYC is a separate org at /organization/nyc-ny. The data.gov API for the rebuilt catalog was not identified; UNCONFIRMED.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Port Authority of New York and New Jersey",
   "entity_type": "authority",
   "region": "Bi-state (NY–NJ)",
   "portal_name": "RidePATH real-time arrivals JSON",
   "url": "https://www.panynj.gov/bin/portauthority/ridepath.json",
   "platform": "AEM (panynj.gov)",
   "api_type": "REST/JSON (undocumented; no developer docs)",
   "api_endpoint": "https://www.panynj.gov/bin/portauthority/ridepath.json",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "Live and keyless, but PANYNJ publishes no documentation or terms for it. It appears to power the agency's own site. The official static GTFS is listed in the Mobility Database (mdb-517, \"Official Feed\") with producer URL `http://data.trilliumtransit.com/gtfs/path-nj-us/path-nj-us.zip`. That zip last changed 2025-06-06, and its service dates end 2026-06-01, so **it is currently expired**. The old `panynj.gov/path/developers.html` redirects to `old.panynj.gov`, which did not answer. The new-site `/path/en/developers.html` is 404.",
   "registry_id": "panynj",
   "page": null,
   "example_request": "curl -s https://www.panynj.gov/bin/portauthority/ridepath.json"
  },
  {
   "tier": 2,
   "entity": "Capital District Transportation Authority (CDTA)",
   "entity_type": "authority",
   "region": "Capital Region",
   "portal_name": "CDTA Developer: Route and Schedule API + GTFS",
   "url": "https://www.cdta.org/developer",
   "platform": "custom",
   "api_type": "REST + GTFS / GTFS-Realtime",
   "api_endpoint": "https://api.cdta.org/api",
   "key_required": "UNCONFIRMED",
   "dataset_count": 3,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "cdta.org/developer 200 (curl): 'Route and Schedule API - static and real time route and stop data' and 'real-time and static schedule and fare data in GTFS'; links api.cdta.org/api (301) and cdta.org/gtfs.",
   "notes": "Regional public authority; outside the Statewide/NYC region values, flagged. Key requirement not determined. dataset_count=3 = data.ny.gov (Capital District Transit Authority).",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Metropolitan Transportation Authority",
   "entity_type": "authority",
   "region": "NYC Metro / Long Island",
   "portal_name": "MTA Real-time Data Feeds and static GTFS",
   "url": "https://api.mta.info/",
   "platform": "custom (GTFS / GTFS-Realtime)",
   "api_type": "GTFS-Realtime (protobuf) + JSON alerts + static GTFS ZIP",
   "api_endpoint": "https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "api.mta.info (JS app) read via browser: 'Accounts and API keys are no longer required to access these feeds' (read in a browser; feed tests below are curl). GET nyct%2Fgtfs-ace -> 200, 118 KB protobuf; camsys%2Fsubway-alerts.json -> 200 JSON. Static rrgtfsfeeds.s3.amazonaws.com/gtfs_subway.zip -> 200 (5.6 MB). mta.info/developers read in a browser.",
   "notes": "Feeds: subway, LIRR, Metro-North, service alerts, elevator/escalator. dataset_count=210 = MTA datasets on data.ny.gov (separate). Region set to NYC Metro (MTA also serves Hudson Valley/CT). MTA's data.ny.gov datasets are counted under Open NY.",
   "registry_id": "mta",
   "page": null,
   "example_request": "curl -s -o ace.pb 'https://api-endpoint.mta.info/Dataservice/mtagtfsfeeds/nyct%2Fgtfs-ace'"
  },
  {
   "tier": 2,
   "entity": "Metropolitan Transportation Authority (NYCT / MTA Bus)",
   "entity_type": "authority",
   "region": "NYC Metro / Long Island",
   "portal_name": "MTA Bus Time API (SIRI)",
   "url": "https://bustime.mta.info/developers",
   "platform": "OneBusAway / SIRI",
   "api_type": "REST (SIRI JSON/XML)",
   "api_endpoint": "https://bustime.mta.info/api/siri/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "GET bustime.mta.info/api/siri/vehicle-monitoring.json without key returned SIRI ErrorText 'API key required.'; wiki/Developers/Index -> /developers 200. curl.",
   "notes": "Real-time bus locations and stop monitoring. Key not requested.",
   "registry_id": "nyct",
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "New York State Assembly",
   "entity_type": "legislature",
   "region": "Statewide",
   "portal_name": "Assembly Bill Search and Legislative Information",
   "url": "https://nyassembly.gov/leg/",
   "platform": "custom HTML",
   "api_type": "none (HTML query only)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'Bill Search and Legislative Information'; no API or bulk links found on page. curl.",
   "notes": "Edge case: queryable by a person but no machine API found. For structured Assembly bill data use the Senate Open Legislation API (covers both houses). public.leginfo.state.ny.us (LRS) did not respond (connection failed) - LRS is a subscription service, not counted.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "New York State Energy Research and Development Authority (NYSERDA)",
   "entity_type": "authority",
   "region": "Statewide",
   "portal_name": "DER Integrated Data System",
   "url": "https://der.nyserda.ny.gov/",
   "platform": "custom web app",
   "api_type": "bulk download (CSV) + web query",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 91,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "curl 403 (Cloudflare). a browser re-verified: title 'NYSERDA DER Integrated Data System'; /data/performance/ says 'All data is available for download as a .csv'; refreshed daily.",
   "notes": "Solar, storage, CHP, fuel cell performance/characteristic data. Has a LOGIN for data submitters; public data needs no login. dataset_count=91 = NYSERDA datasets on data.ny.gov. No documented API found. Earlier guess URL nyserda.ny.gov/About/Open-Data is 'File Not Found' - not used.",
   "registry_id": "nyserda",
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "New York State Senate",
   "entity_type": "legislature",
   "region": "Statewide",
   "portal_name": "Open Legislation API",
   "url": "https://legislation.nysenate.gov/",
   "platform": "custom (NYS Senate OpenLeg)",
   "api_type": "REST/JSON",
   "api_endpoint": "https://legislation.nysenate.gov/api/3/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 on homepage and docs (static/docs/html/index.html); unauthenticated GET /api/3/bills/2025/S1 returned 'A valid API key is needed' (errorCode 701). Docs: free key from homepage; 10 req/s, 4 concurrent per key. curl.",
   "notes": "Covers bills, laws, agendas, calendars, floor/hearing transcripts, members for both houses. BetaNYC's nys-openlegislation-mcp wraps it. Key not requested per rules.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "NYS Adirondack Park Agency",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "Adirondack Park Agency ArcGIS Online organization and Hub",
   "url": "https://adirondack-park-agency-adirondack.hub.arcgis.com/",
   "platform": "ArcGIS Online / ArcGIS Hub",
   "api_type": "ArcGIS REST (hosted FeatureServer)",
   "api_endpoint": "https://services2.arcgis.com/8krRUWgifzA4cgL3/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 25,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "hub domain record orgTitle 'New York State Adirondack Park Agency', orgId 8krRUWgifzA4cgL3; search total 25 public Feature Services (e.g. AdirondackParkBoundary, WetlandClassFeatures); count query on AdirondackParkBoundary returned 107; Hub DCAT feed returned no 'dataset' key",
   "notes": "Regional state agency (Executive Department); region is the Adirondack Park, not statewide. dataset_count = public Feature Service items.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://services2.arcgis.com/8krRUWgifzA4cgL3/arcgis/rest/services/AdirondackParkBoundary/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Board of Elections",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "Voter enrollment statistics (elections.ny.gov)",
   "url": "https://elections.ny.gov/enrollment-county",
   "platform": "Drupal (webny)",
   "api_type": "Bulk download (XLSX per snapshot); no API",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "curl 403 (bot block). read in a browser (URL confirmed elections.ny.gov/enrollment-county in the evaluate result): title 'Enrollment by County | New York State Board of Elections', 68 snapshots back to 1994, plus Congressional/Senate/Assembly/Election District pages. Re-verified 2026-11-05 ~09:46 ET in a fresh isolated tab: https://elections.ny.gov/voters-registered-county-11012026 serves a direct download, county_nov26.xlsx (22 KB, Excel 2007+), header 'NYSVoter Enrollment by County, Party Affiliation and Status / Voters Registered as of November 01, 2026', columns REGION, COUNTY, STATUS, DEM, REP, CON, WOR, OTH, BLANK, TOTAL.",
   "notes": "Each snapshot URL (pattern /voters-registered-county-MMDDYYYY) downloads an XLSX directly; no HTML page in between. Only the county series was format-checked; the district series are assumed to work the same way (UNCONFIRMED). Campaign finance public reporting (publicreporting.elections.ny.gov) returned 403 to curl and was not checked in the browser; UNCONFIRMED, no row. BOE publishes 7 assets on data.ny.gov.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "NYS Commission on Ethics and Lobbying in Government (COELIG)",
   "entity_type": "commission",
   "region": "Statewide",
   "portal_name": "Lobbying Public Search Query (PSQ)",
   "url": "https://reports.ethics.ny.gov/publicquery",
   "platform": "ASP.NET web app",
   "api_type": "web query (no API) + Open NY datasets",
   "api_endpoint": "https://reports.ethics.ny.gov/publicquery",
   "key_required": "N",
   "dataset_count": 14,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "reports.ethics.ny.gov/PublicQuery HTTP 200 (curl). ethics.ny.gov 403 to curl; a browser read /lobbying-data-0: 'Search lobbying data in real time (PSQ)' and 'Query and download all lobbying data since 2019 (Open NY)'; also publicreports/Default.aspx list reports.",
   "notes": "dataset_count=14 = COELIG datasets on data.ny.gov (Socrata catalog, agency metadata). COELIG says 278M+ lobbying records on Open NY. Bulk/API access is via data.ny.gov SODA; PSQ is the near-real-time query. Financial disclosure and enforcement data pages also exist (/financial-disclosure-statement-data). Old URL ethics.ny.gov/lobbying-data returns 403 'Access denied' in browser too.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "NYS Department of Environmental Conservation",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYSDEC ArcGIS Online organization (nysdec)",
   "url": "https://services6.arcgis.com/DZHaqZm9cxOD4CWM/arcgis/rest/services",
   "platform": "ArcGIS Online",
   "api_type": "ArcGIS REST (hosted FeatureServer)",
   "api_endpoint": "https://services6.arcgis.com/DZHaqZm9cxOD4CWM/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 842,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "arcgis.com portals/DZHaqZm9cxOD4CWM: name 'New York State Department of Environmental Conservation', urlKey nysdec; search orgid:DZHaqZm9cxOD4CWM type:'Feature Service' total=842; count query on NYS_DEC_Lands returned 3238",
   "notes": "dataset_count = public Feature Service items in the org (search total), not curated datasets. DEC also publishes 132 datasets via the Clearinghouse DCAT and 194 assets on data.ny.gov. DEC's own ArcGIS Server gisservices.dec.ny.gov (behind DECinfo Locator / Environmental Resource Mapper): DNS resolves and port 443 opens, but /arcgis/rest/services returned 404 and earlier requests timed out, so its REST root is UNCONFIRMED. Hub site conservationcollaborative-nysdec.hub.arcgis.com (Division of Lands and Forests) has an empty DCAT feed. The orgKey-style URL nysdec.maps.arcgis.com was not fetched; UNCONFIRMED.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://services6.arcgis.com/DZHaqZm9cxOD4CWM/arcgis/rest/services/NYS_DEC_Lands/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Department of Labor",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "Labor Statistics (statistics.labor.ny.gov)",
   "url": "https://dol.ny.gov/labor-data",
   "platform": "Drupal (dol.ny.gov) + embedded Tableau dashboards + file downloads",
   "api_type": "Bulk download (ZIP/XLS) + Tableau dashboards; no API found",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "statistics.labor.ny.gov reads only \"We've moved! See ... https://dol.ny.gov/labor-data\". The program pages (LAUS, CES, QCEW, Occupational Wages, Projections) are under https://dol.ny.gov/occupational-and-industry-data. LAUS publishes a monthly ZIP and a seasonally adjusted XLS, and the October 2026 files are current. I checked only the LAUS page for files; I did not check whether CES, QCEW and wages have the same downloads. DOL also has 49 assets on data.ny.gov. API: example file: https://dol.ny.gov/lauszip → `/system/files/documents/2026/10/laus.zip`. Datasets: not stated.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "NYS Department of State",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "New York Geographic Information Gateway (opdgig.dos.ny.gov)",
   "url": "https://opdgig.dos.ny.gov/",
   "platform": "ArcGIS Hub (ArcGIS Online org NYSDOS)",
   "api_type": "ArcGIS Hub / DCAT-US 1.1 feed; ArcGIS REST",
   "api_endpoint": "https://opdgig.dos.ny.gov/api/feed/dcat-us/1.1.json",
   "key_required": "N",
   "dataset_count": 1888,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'New York Geographic Information Gateway'; hub domain record orgTitle 'New York State Department of State', orgId okXm0pb6aWH6XOGI; DCAT 1888 items, contact a contact email at dos.ny.gov, bbox -76.4,34.0,-65.0,45.0 (Atlantic coast and offshore); org has 641 public Feature Services",
   "notes": "Run by DOS Office of Planning, Development and Community Infrastructure (coastal and waterfront planning). The DCAT count is mostly re-shared third-party data (NOAA 707, Rutgers 235, CT DEEP 119); DOS's own items = 321. Flag that the bbox extends to offshore Atlantic, not just NY.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://opdgig.dos.ny.gov/api/feed/dcat-us/1.1.json'"
  },
  {
   "tier": 2,
   "entity": "NYS Department of Transportation",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "511NY developer API",
   "url": "https://511ny.org/help/24 (title: \"Requesting Access\")",
   "platform": "511NY traveler information platform",
   "api_type": "Data feeds: traffic events (JSON), camera inventory (XML), winter road conditions (JSON), message signs (JSON)",
   "api_endpoint": null,
   "key_required": "Y",
   "dataset_count": 4,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "The rebuilt 511ny.org is a single-page map app. `/developers/help`, `/developers/doc`, `/developers/resources` and `/api/getevents` all return the same map shell (HTTP 200, 9,499 bytes), not docs. Access needs the \"511NY Data Feed Request Form\" (a Google Form), and requests \"are reviewed and granted on a weekly basis\". The Developer Access Agreement is dated September 18, 2026. The site menu's \"Developers\" link points to `demo.511ny.org/help/24`, while `511ny.org/help/24` serves the same page. Search engines still index the old `/developers/doc` text: key query parameter, 10 calls per 60 s, GetEvents and so on. **That text describes the retired site and should not be cited.** API: endpoints and docs are sent only after approval. Key: access by application; no fee. Datasets: feeds listed on the access page.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "NYS Department of Transportation",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYSDOT GIS ArcGIS Server (gis.dot.ny.gov/hostingny)",
   "url": "https://gis.dot.ny.gov/hostingny/rest/services",
   "platform": "Esri ArcGIS Server 11.5",
   "api_type": "ArcGIS REST (MapServer/FeatureServer)",
   "api_endpoint": "https://gis.dot.ny.gov/hostingny/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "?f=json 200, currentVersion 11.5, folders Agile, Asset, Environmental, Framework, Geocortex, Hosted, HWP, Maintenance, Projects, Roadways, Safety, Utilities; Roadways includes RDM_Traffic_Stations FeatureServer; count query returned 58181",
   "notes": "Roadway inventory and traffic count stations (AADT) are the main civic-data layers. Bare https://gis.dot.ny.gov/ returns an IIS default page. Related viewer: Traffic Data Viewer https://www.dot.ny.gov/tdv (HTTP 200, title 'Traffic Data Viewer'). DOT also publishes 58 assets on data.ny.gov.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://gis.dot.ny.gov/hostingny/rest/services/Roadways/RDM_Traffic_Stations/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Education Department",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYSED Data Site (data.nysed.gov) downloads",
   "url": "https://data.nysed.gov/downloads.php",
   "platform": "Custom PHP site",
   "api_type": "Bulk download (ZIP of Access/Excel databases); no API found",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 101,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "downloads.php HTTP 200, title 'Downloads | NYSED Data Site'; 101 file links (.zip/.xlsx etc.), e.g. /files/essa/24-25/SRC2025.zip HEAD 200 application/zip, 390 MB",
   "notes": "School report card, enrollment, ELL, assessment and graduation databases by school year. dataset_count = number of download file links on the page, not distinct datasets. Not on data.ny.gov in any volume (no NYSED entry in the agency facet).",
   "registry_id": null,
   "page": null,
   "example_request": "curl -I 'https://data.nysed.gov/files/essa/24-25/SRC2025.zip'"
  },
  {
   "tier": 2,
   "entity": "NYS Office of Information Technology Services (GIS Program Office)",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYS ITS GIS ArcGIS Server (gisservices.its.ny.gov), incl. Street and Address Composite geocoder",
   "url": "https://gisservices.its.ny.gov/arcgis/rest/services",
   "platform": "Esri ArcGIS Server",
   "api_type": "ArcGIS REST (MapServer/FeatureServer/GeocodeServer)",
   "api_endpoint": "https://gisservices.its.ny.gov/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; ?f=json lists folders Locators, Utilities and 35 root services (BuildingFootprints, NYS_Civil_Boundaries, NYS_Tax_Parcels_Public, NYS_Senate/Assembly/Congressional_Districts, NYS_Streets, NYS_Schools, NYSTaxAssessmentLookup…); count query on NYS_Civil_Boundaries/FeatureServer/2 returned 62 (counties); geocode of '1 Centre St, New York, NY' returned score 100",
   "notes": "Statewide framework layers behind the Clearinghouse. Free public geocoder (Street_and_Address_Composite, NAD83 UTM 18N by default, pass outSR=4326 for lat/lon). Service count = 35 root entries (MapServer and FeatureServer pairs counted separately), not datasets.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://gisservices.its.ny.gov/arcgis/rest/services/Locators/Street_and_Address_Composite/GeocodeServer/findAddressCandidates?SingleLine=1+Centre+St,+New+York,+NY&maxLocations=1&f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Office of Information Technology Services (GIS Program Office)",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYS Orthoimagery services (orthos.its.ny.gov)",
   "url": "https://orthos.its.ny.gov/arcgis/rest/services",
   "platform": "Esri ArcGIS Server",
   "api_type": "ArcGIS REST MapServer; WMS",
   "api_endpoint": "https://orthos.its.ny.gov/arcgis/rest/services/wms",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; ?f=json lists folders Dynamic, Utilities, vector, wms; wms folder lists year services from wms/2000 onward",
   "notes": "Statewide aerial imagery by year. Imagery, not tabular datasets.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://orthos.its.ny.gov/arcgis/rest/services/wms?f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Office of Parks, Recreation and Historic Preservation",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "NYS OPRHP ArcGIS Online organization (nysparks)",
   "url": "https://services.arcgis.com/1xFZPtKn1wKC6POA/arcgis/rest/services",
   "platform": "ArcGIS Online",
   "api_type": "ArcGIS REST (hosted FeatureServer)",
   "api_endpoint": "https://services.arcgis.com/1xFZPtKn1wKC6POA/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 172,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "arcgis.com portals/1xFZPtKn1wKC6POA: name 'NYS OPRHP', urlKey nysparks; search total 172 public Feature Services; count query on Regions returned 13",
   "notes": "dataset_count = public Feature Service items. CRIS (cris.parks.ny.gov, Cultural Resource Information System) redirects to a login page; excluded as login-gated. Parks also publishes 19 assets on data.ny.gov and 9 via the Clearinghouse.",
   "registry_id": null,
   "page": null,
   "example_request": "curl 'https://services.arcgis.com/1xFZPtKn1wKC6POA/arcgis/rest/services/Regions/FeatureServer/0/query?where=1%3D1&returnCountOnly=true&f=json'"
  },
  {
   "tier": 2,
   "entity": "NYS Unified Court System (Office of Court Administration)",
   "entity_type": "judiciary",
   "region": "Statewide",
   "portal_name": "Division of Technology & Court Research - Court Data and Statistics",
   "url": "https://www.nycourts.gov/division-technology-court-research",
   "platform": "Drupal + dashboards",
   "api_type": "bulk download (CSV/XLSX) + dashboards",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 1,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "curl gets 403 (bot block); a browser loaded page; /court-research redirects here. Pretrial Release Data page lists CSVs 2020-2025 (e.g. legacypdfs/court-research/Pretrial-Release-Data/NYS%20for%20Web%202025.csv) + data dictionaries. Direct CSV via curl 403, not downloaded.",
   "notes": "Topics: caseload trends (daily), pretrial release, detained pretrial, OCA-STAT, discovery reform, evictions (weekly), landlord-tenant, ERPO, family court, orders of protection. dataset_count=1 is datasets attributed to Office of Court Administration on data.ny.gov, not the site total. eCourts/WebCivil are case lookups (403 to curl), not counted.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Office of the State Comptroller",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "Financial Data for Local Governments",
   "url": "https://wwe1.osc.state.ny.us/localgov/findata/financial-data-for-local-governments.cfm",
   "platform": "ColdFusion web app",
   "api_type": "bulk download (CSV/ZIP via form POST)",
   "api_endpoint": "https://wwe1.osc.state.ny.us/localgov/findata/detailedzip.cfm",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Page text: 'Revenue, expenditure, balance sheet and debt data are available for bulk download ... zipped or standalone .csv files'; years 1996-2024; form action detailedzip.cfm. curl.",
   "notes": "Covers cities, counties, towns, villages, fire districts, schools, IDAs, LDCs. NYC data stops at 2010 (page points to Checkbook NYC). Download is form-POST, not a stable GET URL. Hub page: https://www.osc.ny.gov/local-government/data.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Office of the State Comptroller",
   "entity_type": "agency",
   "region": "Statewide",
   "portal_name": "Open Book New York (state checkbook, contracts, PARIS)",
   "url": "https://www.osc.ny.gov/open-book-new-york",
   "platform": "ColdFusion web apps (wwe2.osc.state.ny.us/transparency/)",
   "api_type": "web query + export (tab-delimited download)",
   "api_endpoint": "https://wwe2.osc.state.ny.us/transparency/checkbook/chkbkMain.cfm",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "openbooknewyork.com 301 -> osc.ny.gov/open-book-new-york (200). Apps chkbkMain.cfm, contractsearch.cfm, parisMain.cfm, LocalGovIntro.cfm all 200. Checkbook page text: 'Export Data Options ... download tab-delimited files of payment data'. curl.",
   "notes": "No REST API found. Old wwe1 contract-search URL is 404; current host is wwe2. OSC has no datasets attributed to it on data.ny.gov (catalog check). PARIS = public authority reporting data.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Niagara Frontier Transportation Authority (NFTA)",
   "entity_type": "authority",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "NFTA Metro Developer Tools (GTFS)",
   "url": "https://metro.nfta.com/about/developer-tools",
   "platform": "Drupal",
   "api_type": "GTFS static (ZIP) + GIS files",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "200 (curl): 'NFTA provides schedule data in GTFS ... read and accept the terms of our GTFS License Agreement'; static bus and rail feeds, route/stop shapefiles Fall 2026.",
   "notes": "Regional public authority, flagged. Real-time feed not seen on page. License acceptance, no key.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 2,
   "entity": "Rochester-Genesee Regional Transportation Authority (RTS)",
   "entity_type": "authority",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "RGRTA API (real-time + static)",
   "url": "https://www.myrts.com/RGRTA-API",
   "platform": "custom",
   "api_type": "REST (JSON or XML; JSON-P and CORS), static schedule + real-time",
   "api_endpoint": "http://api.rgrta.com/ (e.g. `/rtvehicles`, per the docs)",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "The docs list 14 real-time methods (RTRoutes, RTVehicles, RTPredictions, RTStopArrivals, RTServiceAlerts …) and 21 static methods (Lines, Stops, StopTimes, Trips, Calendars …). Their example timestamps are from 2015, so the docs may be stale, but the host answers. I did not look for a separate static GTFS zip. Key: issued individually via a request form; Terms of Use apply.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Albany County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "Albany County NY Open Data",
   "url": "https://albany-county-ny-open-data-albcountygis.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records + DCAT) / ArcGIS REST",
   "api_endpoint": "https://albany-county-ny-open-data-albcountygis.hub.arcgis.com/api/search/v1/collections/dataset/items (OGC API Records); DCAT https://albany-county-ny-open-data-albcountygis.hub.arcgis.com/api/feed/dcat-us/1.1.json; layers on ArcGIS REST",
   "key_required": "N",
   "dataset_count": 41,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain record: org `mBzcjj7yrA6fBe9F` \"Albany County NY GIS\". DCAT publishers are \"Albany County NY GIS\" and \"Department of Real Property\". The contact is albanycounty.com Real Property Tax Service Agency. 49 of 49 bboxes fall in NY.",
   "notes": "Run by the County GIS Coordinator (Real Property Tax Services). The Hub site owner is `Ken.Galluccio_rptsa`. | The DCAT contactPoint is a URL, not an email.",
   "registry_id": null,
   "page": "portals/albany-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Albany",
   "entity_type": "city",
   "region": "Capital Region",
   "portal_name": "openAlbany (offline)",
   "url": null,
   "platform": "Socrata (retired)",
   "api_type": "None (portal offline)",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "dead",
   "last_verified": "2026-11-05",
   "evidence": "`data.albanyny.gov`: NXDOMAIN via 8.8.8.8 (host, 2026-11-05); Socrata Discovery API returns \"Domain not found: data.albanyny.gov\".",
   "notes": "openAlbany (Socrata) is gone. WAMC (2026-08-13, https://www.wamc.org/news/2026-08-13/albany-works-towards-open-data-policy) reports it has been offline since about mid-January 2026; a Local Law \"K\" of 2026 is proposed. That press report was not re-read this pass. | The city does still publish GIS layers through ArcGIS Online, but not as a curated catalog. Org `JJzptGyn7EDStgyp` (\"City of Albany GIS Services\") has 115 public Feature Service items with extents inside Albany, NY (e.g. \"Zoning in Albany New York for Public View\", \"Tax Parcel Dataset for Public View\"), mostly last modified 2020–2021. Its only Hub site, https://city-albanyny-gis.hub.arcgis.com/, is titled \"test - 1\" and lists 16 \"datasets\", most of them Esri Living Atlas layers (ACS, COVID-19), not city data. | A second org, `0sUXe1ZlggF9tBHD` (\"City of Albany, New York\", urlKey `albanynewyork`), has 9 public feature services from 2019 (Wards, Street Lights, Historic Districts). Its Hub site https://gis-albanynewyork.hub.arcgis.com/ lists 1 dataset (Opportunity Zones). | Traps: `albany.data.socrata.com` (\"Catalog | City of Albany\", 6 assets, last real update 2019) could not be tied to Albany NY versus Albany GA or OR; do not cite it. Hub sites owned by `rosmith_albgis` / `ShHawkins_albgis` (\"Affordable Housing in Albany\", geohub.albanyga.gov) are Albany, **Georgia**. | The Albany Police Department's separate portal was not checked.",
   "registry_id": null,
   "page": "portals/city-of-albany.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Schenectady",
   "entity_type": "city",
   "region": "Capital Region",
   "portal_name": "\"Open Data Portal\" page (PDF reports only)",
   "url": "https://www.cityofschenectady.gov/605/Open-Data-Portal",
   "platform": "City web page (CivicPlus), PDF reports",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "The page returns HTTP 200 (http redirects to https), titled \"Open Data Portal | Schenectady, NY\". Its body lists only monthly departmental data reports (PDF) from 2019 to July 2021 and a yearly report for 2020, with no dataset or API links. An ArcGIS Online Hub Site title search found no City of Schenectady site.",
   "notes": "**Status settled** (was UNCONFIRMED): despite its name, the page is a list of PDF reports, last updated July 2021. It is not a data catalog. | The earlier pass's \"portal in Rochester's ArcGIS Hub namespace\" lead was not re-traced. The Hub search found only \"Housing ONE Schenectady Together (HOST)\", a University of Denver-owned project site. Do not cite either as a city catalog. | The Interactive Parking Regulation Map (/676) is a viewer. | The city is commonly conflated with Schenectady County, which has no portal either.",
   "registry_id": null,
   "page": "portals/city-of-schenectady.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Troy",
   "entity_type": "city",
   "region": "Capital Region",
   "portal_name": "No portal found",
   "url": null,
   "platform": null,
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "https://www.troyny.gov/ returns HTTP 200 (\"Troy, NY | Official Website\"). A homepage and sitemap scan found no open data, GIS or ArcGIS links, only Assessor and Assessment Roll pages and registries. A Hub Site title search found only out-of-state \"Troy\" sites.",
   "notes": "The earlier note says \"only static PDF maps\". The PDF maps were not re-located this pass. | Traps: \"Lead Safe Community - Troy\" (`townoftroync`) is the Town of Troy, **North Carolina**. \"Town of Troy Project Hub Site\" (CedarCorp) is not the City of Troy, NY.",
   "registry_id": null,
   "page": "portals/city-of-troy.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Columbia County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "Columbia County Geo-Data",
   "url": "https://geodata-cc-ny.opendata.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records + DCAT) / ArcGIS REST",
   "api_endpoint": "https://geodata-cc-ny.opendata.arcgis.com/api/search/v1/collections/dataset/items (OGC API Records); DCAT https://geodata-cc-ny.opendata.arcgis.com/api/feed/dcat-us/1.1.json; layers on ArcGIS REST",
   "key_required": "N",
   "dataset_count": 55,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `F5762GA30C3SyZFy` \"Columbia County Planning\", site \"Columbia County Geo Data Hub Site\". All 131 DCAT contacts are columbiacountyny.gov/494/planning. 124 of 131 bboxes fall in NY.",
   "notes": "Run by the County Planning Department. | Excluded: `opendata-cclid.opendata.arcgis.com` is the Columbia County Land Information Dept., **Wisconsin** (Audit 2026-11-05). `columbia-county-green-guide-ColumbiaGAGIS` is Columbia County, **Georgia**. | Many items in the feed are USGS layers redistributed by the county, not county-produced data.",
   "registry_id": null,
   "page": "portals/columbia-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Greene County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No portal found (web map viewer)",
   "url": "https://gis.gcgovny.com/greenewebmap/",
   "platform": "Esri web map (viewer) on ArcGIS Server 10.91",
   "api_type": "ArcGIS REST (raw services behind the viewer; no catalog)",
   "api_endpoint": "https://gis.gcgovny.com/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Viewer: HTTP 200, rendered in a browser as \"Greene County Web Map … Greene County, New York\". It is linked as \"GIS Map\" from greenecountyny.gov. The REST County Boundary layer returns County_ID `36039`, Greene County NY's FIPS code.",
   "notes": "Excluded: `gishub-gimsoh29.opendata.arcgis.com` (\"Greene County GIS Hub\") is Greene County, **Ohio** (Audit 2026-11-05). | There is no catalog, but the ArcGIS Server REST directory behind the viewer is public. Folders are AGOL, Hosted, Utilities and WebMap_2026. The `2025_WebMap` MapServer has parcels, municipal boundaries, fire, school and election districts. This is machine-readable but undocumented, so treat it as Partial API access. | `gis.gcgovny.com/server/rest/services` returns 500; use the `/arcgis/` path.",
   "registry_id": null,
   "page": "portals/greene-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Rensselaer County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No dedicated portal",
   "url": "https://www.rensco.com/487/Geographic-Information-System-GIS---Mapp",
   "platform": "County web page (links out)",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "The county GIS page returns HTTP 200 (\"Rensselaer County, NY | Official Website\"). It says county GIS data \"is available online on the New York State GIS Clearinghouse\" and links to gis.ny.gov, CDRPC and CUGIR.",
   "notes": "County GIS data flows through the NYS GIS Clearinghouse (https://data.gis.ny.gov/), not a county-run portal. | The assessment database is at https://rensselaercounty.prosgar.com/. | \"Rensselaer Clean Mobility\" (a LaBella-owned Hub) is a consultant project site, not a county catalog. The City of Rensselaer is a separate place.",
   "registry_id": null,
   "page": "portals/rensselaer-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Saratoga County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No dedicated portal",
   "url": "https://www.saratogacountyny.gov/departments/real-property-tax-service/",
   "platform": "Vendor map viewer (VHB) + assessment database",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "The Real Property Tax Service page returns HTTP 200 (\"County of Saratoga, New York\"). It links a VHB map viewer (https://spatial.vhb.com/SaratogaMapViewer/) and the assessment database (https://saratogacounty.prosgar.com/). No open data or catalog link was found on the homepage or the RPTS page.",
   "notes": "Parcel and map viewer plus the Assessment Database only. | \"Saratoga County Community Health Hub\" (org `L31p4Kvi5t2HjDqc` \"Saratoga County\") is a topical public-health Hub site, not a general data catalog. The Hub search API returned no dataset collection for it. | The county also publishes a \"New York State County Comparisons Data\" report page (administrator's office). It is a report, not a dataset.",
   "registry_id": null,
   "page": "portals/saratoga-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Schenectady County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No dedicated county-level portal",
   "url": "https://www.schenectadycountyny.gov/taxmaps",
   "platform": "Schneider Beacon (parcel search); SIMS (login-gated)",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "schenectadycounty.com redirects to schenectadycountyny.gov (HTTP 200). The Real Property Tax Service Agency page (/taxmaps) links Beacon (`beacon.schneidercorp.com/Application.aspx?AppID=1277…`). simsgis.org redirects (302) to /Projects/SIMS/Login.aspx.",
   "notes": "GIS work runs through SIMS (simsgis.org), which requires a login. | Public property lookup is through Schneider Beacon. That is a parcel search, not a dataset catalog. | See City of Schenectady, which is commonly conflated with the county.",
   "registry_id": null,
   "page": "portals/schenectady-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Schoharie County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No portal found",
   "url": "https://spatial.vhb.com/SchoharieMapViewer/",
   "platform": "Vendor map viewer (VHB) + Schneider Beacon",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "The county homepage https://www.schohariecounty-ny.gov/ returns HTTP 200 (\"Schoharie County, NY\"). It links \"GIS Maps\" to spatial.vhb.com/SchoharieMapViewer and \"Real Property Search\" to Beacon (AppID=1296). The VHB viewer itself was not opened.",
   "notes": "Parcel viewer only. | `www5.schohariecounty-ny.gov` does not respond; use `www.`. Tax bills are PDFs on `www4.`.",
   "registry_id": null,
   "page": "portals/schoharie-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Warren County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "Warren County NY GIS",
   "url": "https://warren-county-gis-warrencountyny.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records + DCAT) / ArcGIS REST",
   "api_endpoint": "https://warren-county-gis-warrencountyny.hub.arcgis.com/api/search/v1/collections/dataset/items (OGC API Records); DCAT https://warren-county-gis-warrencountyny.hub.arcgis.com/api/feed/dcat-us/1.1.json; layers on ArcGIS REST",
   "key_required": "N",
   "dataset_count": 4,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `Fg3XpDIUTR3JZZES` \"Warren County NY\", site \"Warren County GIS\". DCAT has 259 of 259 items published by \"Warren County NY\". 13 of 13 bboxes fall in NY.",
   "notes": "**Thin as a data catalog:** of the first 100 items in the `all` collection, 83 are PDFs (trail maps and similar). Only 4 items are typed as datasets, such as town zoning view layers. The DCAT count overstates the machine-readable data. | Also cross-listed on the NYS GIS Clearinghouse. That was not re-checked.",
   "registry_id": null,
   "page": "portals/warren-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Washington County",
   "entity_type": "county",
   "region": "Capital Region",
   "portal_name": "No open data catalog (parcel viewer)",
   "url": "https://gis.washingtoncountyny.gov/webmap/",
   "platform": "Esri web map (viewer) on ArcGIS Server 10.9",
   "api_type": "ArcGIS REST (raw services behind the viewer; no catalog)",
   "api_endpoint": "https://gis.washingtoncountyny.gov/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Viewer HTTP 200 (Angular app; a browser check read \"Washington County Parcel Viewer … Washington County, NY … Fort Edward\"). The REST Towns layer returns 17 features with SWIS codes 53xxxx, including the towns of Argyle, Cambridge and Dresden (Washington County, NY).",
   "notes": "**Caution:** searches for \"Washington County open data\" surface Washington County **Wisconsin** (`washington-county-open-data-WashingtonCoWI`), **Minnesota**, **Maryland**, **Pennsylvania** and **Ohio** Hub sites. All are excluded. | The ArcGIS Server REST directory behind the viewer is public: folders Broadband, Hosted and Utilities, and MapServers Layers / Layers2. The Layers service has parcels, towns, villages, hamlets and roads. This is Partial API access, undocumented.",
   "registry_id": null,
   "page": "portals/washington-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Cayuga County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "No dedicated portal (Interactive GIS page)",
   "url": "https://www.cayugacounty.gov/687/Interactive-GIS",
   "platform": "ArcGIS Experience Builder viewer + ArcGIS Server (county-hosted)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://ccgis2.cayugacounty.us/arcgis/rest/services (also https://ccgis.cayugacounty.us/arcgis/rest/services)",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "cayugacounty.us redirects to cayugacounty.gov, which is Cloudflare-blocked to curl; read with a browser: title 'Interactive GIS | Cayuga County, NY'. REST directories on ccgis/ccgis2.cayugacounty.us live via curl (HTTP); Tax Map Online Experience item 5a16328d… is public, owner STwork, whose services point at ccgis*.cayugacounty.us.",
   "notes": "Offers: 'Cayuga County Online Mapping Website' (Tax Map Online, https://experience.arcgis.com/experience/5a16328d4b3b41688110fcaafc7e0624), PROS property records (with GAR Associates), a parcel shapefile ZIP (https://www.cayugacounty.gov/DocumentCenter/View/5489/Cayuga-County-Shapefile-ZIP), hard-copy maps, tax maps. No catalog UI. The REST directories are public: ccgis2 (v12.1, folders Basemap, DisLoc, ECO, Hosted, Print, TMO, Utilities) and ccgis (v10.81). Trap: a third-party ArcGIS item 'Cayuga County NY Parcels' (owner wharcgisdeveloper) is not county-published.",
   "registry_id": null,
   "page": "portals/cayuga-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Syracuse",
   "entity_type": "city",
   "region": "Central NY",
   "portal_name": "Open Data Syracuse",
   "url": "https://data.syr.gov/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search, DCAT-US) + ArcGIS REST",
   "api_endpoint": "https://data.syr.gov/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 136,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'City of Syracuse Open Data Portal'. Hub domain record: orgId bdPqSfflsdgFRVVM, org 'City of Syracuse'. DCAT: 75 entries publisher 'City of Syracuse', 91 {{source}} placeholders; null and US-wide bboxes account for the non-NY ones. 362 public feature services in the org. Verified by curl (HTTP).",
   "notes": "Not Socrata: the Socrata catalog API reports 'Domain not found: data.syr.gov'. Trap: 'Syracuse University' Hub (data-SyrUniv.opendata.arcgis.com) is the university, not the city.",
   "registry_id": null,
   "page": "portals/city-of-syracuse.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Utica",
   "entity_type": "city",
   "region": "Central NY",
   "portal_name": "No dedicated portal (GIS Maps page)",
   "url": "https://www.cityofutica.com/maps/gis-maps/index",
   "platform": "ArcGIS Experience Builder viewer + Schneider Beacon",
   "api_type": "ArcGIS REST (org feature services)",
   "api_endpoint": "https://services1.arcgis.com/MBcb1JDktb5ipmv9/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "cityofutica.com GIS Maps page 200; links 'City of Utica GIS' Experience (00397527…, owner aalix_utica, org MBcb1JDktb5ipmv9 = 'The City of Utica, NY') and Beacon App=CityOfUticaNY. Verified by curl (HTTP).",
   "notes": "Offers: City of Utica GIS web experience, Beacon property search (directory's 'Image Mate Online' is now Beacon), street maps. Public feature services exist (71, e.g. 'Common Council Districts View Layer', 'Building Footprints View Layer') but no catalog site. Trap: 'Lead Safe Community - Utica' Hub (lead-service-line-inventory-uticamn) is Utica, **Minnesota**. Excluded. The homepage also links a DCJS-hosted UPD crisis-response Hub (upd-crisis-response-dcjs.hub.arcgis.com), a state site, not a city catalog.",
   "registry_id": null,
   "page": "portals/city-of-utica.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Cortland County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "Cortland County GIS Portal",
   "url": "https://cortland-county-gis-portal-cortlandplanning.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search, DCAT-US) + ArcGIS REST",
   "api_endpoint": "https://cortland-county-gis-portal-cortlandplanning.hub.arcgis.com/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 28,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId fRWb1mz1huf3Aqyy, org 'Cortland County Planning Department'. DCAT: 55/56 bboxes centered in NY. Publisher/contact fields are unfilled placeholders ({{source}} on 60/61, {{orgContactEmail}} on 61/61). 73 public feature services in the org. Verified by curl (HTTP).",
   "notes": "Directory says 51 datasets; the earlier audit said 61. Counts differ by method: Hub 'dataset' collection 28, Hub 'all' 44, DCAT 61. Metadata placeholders ({{source}}, {{orgContactEmail}}) mean publisher and email cannot prove jurisdiction; org name and NY bboxes do.",
   "registry_id": null,
   "page": "portals/cortland-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Herkimer County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "No dedicated portal (County Maps page)",
   "url": "https://www.herkimercountyny.gov/county-maps/",
   "platform": "Schneider Beacon (property) + static map pages",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "herkimercounty.org redirects to herkimercountyny.gov ('Welcome to Herkimer County NY!'); County Maps page 200 (election, highway, legislative district maps); RPTS page links Beacon App=HerkimerCountyNY. Verified by curl (HTTP).",
   "notes": "Offers: Beacon property lookup, static county map pages. The directory's 'GIS Cloud viewer' was not found on this pass (UNCONFIRMED). Herkimer tax parcels are served as 'HC_TAX_PARCELS' (41,660 features) from Oneida County's ArcGIS Server (maps.oneidacountyny.gov), likely via the joint Herkimer-Oneida planning program (HOCCPP). Who maintains it was not confirmed. See [[oneida-county]].",
   "registry_id": null,
   "page": "portals/herkimer-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Madison County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "No dedicated portal",
   "url": "https://www.madisoncounty.ny.gov/254/Prices-for-Map-Copies-GIS-Data",
   "platform": "Static map pages + paid data request; Schneider Beacon (property)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "madisoncounty.ny.gov 200 ('Madison County, NY | Official Website'). Site search 'GIS' (read with a browser) returns 'Prices for Map Copies & GIS Data', Maps, Reference Maps, Legislative Maps and Beacon App=MadisonCountyNY.",
   "notes": "GIS data is sold, per the 'Prices for Map Copies & GIS Data' page (page title only; prices not read). Name collisions on ArcGIS: Madison County KY GeoHub, Madison County IL, Madison WI, MN. All excluded.",
   "registry_id": null,
   "page": "portals/madison-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Oneida County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "No catalog; public ArcGIS Enterprise",
   "url": "https://oneidacountyny.gov/departments/planning/gis-servicesmapping-resources/",
   "platform": "ArcGIS Enterprise 11.5 (county-hosted, maps.oneidacountyny.gov)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://maps.oneidacountyny.gov/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "ocgov.net redirects to oneidacountyny.gov ('Welcome To Oneida County'). GIS Services and Interactive Mapping pages 200. REST directory on maps.oneidacountyny.gov live (v11.5, 32 folders incl. PARCELS, E911, ZONING, Census); portal/sharing/rest/portals/self reports access 'public'. Verified by curl (HTTP).",
   "notes": "The directory says 'map viewers + Beacon, not a centralized catalog'. True of the UI, but the county runs a public ArcGIS Enterprise with a queryable REST directory and 118 public feature services. Suggest API = Y. The Tax Parcel Viewer linked from the county site (Experience 228579a2…) is owned by HOCCPP16, in the 'HOCCPP - Regional Planning' org (6x801hFkTeoDflcw, 48 public feature services), the Herkimer-Oneida joint planning program. The PARCELS folder also holds Herkimer County parcels (HC_TAX_PARCELS). Other HOCCPP hubs: hoctc-hoccpp.hub.arcgis.com (0 items), hoctc-safety-action-plan-hoccpp.hub.arcgis.com. Likely name collision: 'Oneida County COVID-19 Update' Hub (owner OCHDWI) reads as Oneida County, WI from the owner name; not verified. Excluded either way (not a catalog).",
   "registry_id": null,
   "page": "portals/oneida-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Onondaga County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "No dedicated portal (GIS Division page)",
   "url": "https://onondaga.gov/planning/gis/",
   "platform": "Hosted web viewer (spatial.vhb.com) + Map Gallery",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "https://www.ongov.net refuses HTTPS connections (curl and a browser: ERR_CONNECTION_REFUSED); http://ongov.net redirects to https://onondaga.gov/ ('Home - Onondaga County'). GIS Division page 200; it links 'Syracuse – Onondaga County GIS on the Web' at https://spatial.vhb.com/onondaga/ (title 'Onondaga County GIS On The Web', read with a browser). Verified by curl (HTTP).",
   "notes": "Domain change: the county moved from ongov.net to onondaga.gov. Old https://www.ongov.net/... links are dead (connection refused); update any references. Offers: joint City-County viewer 'GIS on the Web' (hosted by VHB), Map Gallery (https://onondaga.gov/planning/map_gallery/). The GIS Division supports the City of Syracuse too; see [[city-of-syracuse]] for the city's open-data Hub. Scattered ArcGIS items about Onondaga (e.g. 'Onondaga County Legislative Districts') are owned by the account 'CommGeog', not a county org. Owner identity not confirmed.",
   "registry_id": null,
   "page": "portals/onondaga-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Oswego County",
   "entity_type": "county",
   "region": "Central NY",
   "portal_name": "Oswego County Data / GIS",
   "url": "https://data-oswegogis.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search, DCAT-US) + ArcGIS REST",
   "api_endpoint": "https://data-oswegogis.hub.arcgis.com/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 23,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId 0dC3T96jvK0z64NH, org 'Oswego County GIS'. DCAT: 216/216 publisher 'Oswego County GIS', emails at oswegocounty.com. Out-of-NY bboxes are world/US basemaps. Verified by curl (HTTP).",
   "notes": "Directory says 26 datasets. Live counts: Hub dataset collection 23; DCAT 216 entries (includes basemaps and services). 216 public feature services in the org.",
   "registry_id": null,
   "page": "portals/oswego-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Dutchess County",
   "entity_type": "county",
   "region": "Hudson Valley",
   "portal_name": "Dutchess County GIS Open Data",
   "url": "https://opendata-dcny.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records + DCAT) / ArcGIS REST",
   "api_endpoint": "https://opendata-dcny.hub.arcgis.com/api/search/v1/collections/dataset/items (OGC API Records); DCAT https://opendata-dcny.hub.arcgis.com/api/feed/dcat-us/1.1.json; layers on ArcGIS REST",
   "key_required": "N",
   "dataset_count": 28,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `3i1Ytxq3CWeA9q8g` \"Dutchess County\", site \"Open Data\", urlKey `dcny`. 28 of 28 DCAT bboxes fall in NY. The DCAT publisher and email are unfilled `{{source}}` / `{{orgcontactemail}}` placeholders, so jurisdiction rests on the org record and the bboxes.",
   "notes": "The county also keeps a separate, non-downloadable \"Data Catalog\" metadata page. It was not re-checked this pass. | The DCAT metadata placeholders are unfilled. Do not quote the publisher field from the feed.",
   "registry_id": null,
   "page": "portals/dutchess-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Orange County",
   "entity_type": "county",
   "region": "Hudson Valley",
   "portal_name": "Orange County GIS (OCGIS) site",
   "url": "https://gis.orangecountygov.com/portal/apps/sites/#/ocgis",
   "platform": "ArcGIS Enterprise (self-hosted Sites) + ArcGIS Server 10.91",
   "api_type": "ArcGIS REST (Enterprise portal + server)",
   "api_endpoint": "https://gis.orangecountygov.com/arcgis/rest/services ; portal search https://gis.orangecountygov.com/portal/sharing/rest/search",
   "key_required": "N",
   "dataset_count": 1,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "The county page orangecountyny.gov/1126 (rendered in a browser, since curl gets 403 from Cloudflare) links to gis.orangecountygov.com, which links to \"the new OCGIS website\". The portal is named \"Orange County GIS Enterprise\". The parcel layer has NY SWIS / SBL / RPS fields and an item extent of lon −74.76..−73.95, lat 41.14..41.63.",
   "notes": "**Change from the directory** (\"No general catalog found\"): there is a county-run ArcGIS Enterprise Site with Data, Documents and Apps & Maps tabs. Its Data collection is thin, though: 1 dataset, \"Orange County Parcels\" (146,065 features). The public ArcGIS Server also exposes folders for tax parcels (DTP2023–2025), planning, legislative and school contacts, and more. | A Requests/Downloads page is at https://gis.orangecountygov.com/mra. It was not opened. | Excluded: `data-ocpw.opendata.arcgis.com` is OC Public Works, Orange County, **California**. `data-orangecountygis.hub.arcgis.com` is Orange County, **Virginia** (Audit 2026-11-05). Other Hub sites named \"Orange\" are FL, CA and MA. | Topical NY hubs from org `ocnygis`: https://openspace-ocnygis.hub.arcgis.com/ (\"Open Space Plan: Orange County, NY\", HTTP 200) and the Orange County Transportation Council site. | `ocgis.orangecountygov.com` (the old link on the county page) does not respond.",
   "registry_id": null,
   "page": "portals/orange-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Sullivan County",
   "entity_type": "county",
   "region": "Hudson Valley",
   "portal_name": "Sullivan County GISOnline Geoportal",
   "url": "https://gis2017-04-13t155717567z-sullconygiso.opendata.arcgis.com/",
   "platform": "ArcGIS Hub (older Hub Basic site)",
   "api_type": "ArcGIS Hub (DCAT) / ArcGIS REST",
   "api_endpoint": "https://gis2017-04-13t155717567z-sullconygiso.opendata.arcgis.com/api/feed/dcat-us/1.1.json ; county server https://gis.sullivanny.us/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 54,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `bx3OlIPqiDclwaja` \"Sullivan County GISOnline Geoportal\", urlKey `SullCoNYGISO`. DCAT has 52 items published by \"Sullivan County GIS Program\" with emails at sullivanny.gov. 43 of 51 bboxes fall in NY.",
   "notes": "The subdomain is auto-generated, but it is the county's own site. | `/api/search/v1/collections/dataset` returns 404 \"Collection … not found\" (only `all` exists). Use the DCAT feed for counts. | The county's own ArcGIS Server (`gis.sullivanny.us`) hosts the layers.",
   "registry_id": null,
   "page": "portals/sullivan-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Ulster County",
   "entity_type": "county",
   "region": "Hudson Valley",
   "portal_name": "GIS Data (Dept. of Information Services)",
   "url": "https://www.ulstercountyny.gov/Departments/Information-Services/GIS-Services/GIS-Data",
   "platform": "County web page with direct downloads + ArcGIS Server 11.5 REST",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://gis.ulstercountyny.gov/server/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "The page returns 403 to curl (Cloudflare). It rendered in a browser as \"GIS Data - Ulster County\". It links \"API Access for Developers: REST Services Directory\" at gis.ulstercountyny.gov/server/rest/, which answers JSON (HTTP 200, v11.5). The tax parcel ZIP is on S3, last-modified 2026-09-18.",
   "notes": "**Change from the directory** (API N): the county page now links a public REST Services Directory. Its folders are Data, Hosted, Parcel_Fabric, Parcel_Viewer, REConnect and Utilities, and the `Parcel_Viewer/Tax_Parcel_Data` MapServer answers queries. The page is still a static list, not a catalog. | Downloads include tax parcels (85 MB ZIP, `ucis-gis.s3.us-east-2.amazonaws.com/Parcel-Data/202607/`), contours (shapefiles and a 7 GB GDB), surface water, election districts, legislative districts, zoning and habitat cores. The page also links third-party data: NYS Clearinghouse, CUGIR and others. | Custom data requests carry a minimum charge of $154.80, per the page. | Topical Hub sites (\"Ulster County Transportation Resiliency Project\", Route 9W plan) are not catalogs. \"Mid Ulster\" sites are Northern Ireland.",
   "registry_id": null,
   "page": "portals/ulster-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Fulton County",
   "entity_type": "county",
   "region": "Mohawk Valley",
   "portal_name": "No portal found (Real Property Tax Service Agency page)",
   "url": "https://www.fultoncountyny.gov/real-property-tax-service-agency",
   "platform": "Schneider Beacon / Image Mate Online (parcel viewer)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "fultoncountyny.gov HTTP 200 ('Home | FULTON COUNTY'); RPTS page links 'Beacon/Schneider Image Mate Online' (AppID=1343). ArcGIS org Wr8KQMbr3gSStkHQ is titled 'Fulton County, NY' in the Hub domain record; it has 23 public feature services and an Elections Hub site with 0 items. Verified by curl (HTTP) and a browser.",
   "notes": "Offers: Beacon/Image Mate Online parcel viewer; Planning Department map request form and fee schedule (PDFs); an Agricultural StoryMap. ArcGIS org 'Fulton County, NY' (Wr8KQMbr3gSStkHQ) has 23 public feature services (e.g. DECPointsofInterest_FC_HC) and https://election-outreach-fulcony.hub.arcgis.com/ (0 items). Not a catalog. Name collisions: Fulton County GA (South Fulton GIS, GDOT project hubs), IL, IN, PA. All excluded. Region: the directory lists Fulton under Southern Tier; it is usually grouped with the Mohawk Valley / Capital Region. Left as given.",
   "registry_id": null,
   "page": "portals/fulton-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Montgomery County",
   "entity_type": "county",
   "region": "Mohawk Valley",
   "portal_name": "No portal found (Real Property GIS page)",
   "url": "https://www.montgomerycountyny.gov/web/sites/departments/realproperty/gis.asp",
   "platform": "Static page; parcels hosted on the NYS GIS Clearinghouse",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'Montgomery County, NY' on montgomerycountyny.gov. Page links PROS, and 'Montgomery County Parcel Shapefiles' to https://data.gis.ny.gov/datasets/sharegisny::montgomery-county-parcels/about (200; item 'Montgomery County Parcels' found on data.gis.ny.gov search). Verified by curl (HTTP).",
   "notes": "Excluded: https://opendata-mcgov-gis.hub.arcgis.com/ is Montgomery County, **Maryland**. Also not Montgomery County PA, TX, or the City of Montgomery AL. Parcel shapefiles are provided through the State's GIS Clearinghouse (data.gis.ny.gov), not a county catalog. Region: the directory lists Montgomery under Southern Tier; it is usually grouped with the Mohawk Valley. Left as given.",
   "registry_id": null,
   "page": "portals/montgomery-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Board of Elections in the City of New York",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Election results (vote.nyc) and Election Night Results",
   "url": "https://vote.nyc/page/election-results-summary",
   "platform": "Drupal + static ENR",
   "api_type": "bulk download (CSV/PDF)",
   "api_endpoint": "https://enr.boenyc.gov/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "vote.nyc 200; results page links per-contest CSV and PDF (e.g. 2026 primary 'Citywide Recap.csv', 'EDLevel.csv'); enr.boenyc.gov 200, title 'Election Night Results'. curl.",
   "notes": "Election-district-level CSVs per contest; ENR is static HTML pages. Voter enrollment totals also on vote.nyc.",
   "registry_id": "board-of-elections",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Mount Vernon",
   "entity_type": "city",
   "region": "NYC Metro / Long Island",
   "portal_name": "No catalog (public ArcGIS Enterprise services + dashboards)",
   "url": "https://gis.cmvny.com/server/rest/services",
   "platform": "ArcGIS Enterprise 11.3 (self-hosted; no Sites/Hub catalog)",
   "api_type": "ArcGIS REST (Enterprise portal + server)",
   "api_endpoint": "https://gis.cmvny.com/server/rest/services ; portal search https://gis.cmvny.com/portal/sharing/rest/search",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "The city's own Infrastructure Dashboard page (mountvernonny.gov/2052) links to `gis.cmvny.com/portal/apps/experiencebuilder`. `cmvny.com` redirects to mountvernonny.gov. The City_Boundary layer returns NAME \"Mount Vernon\", 4.40 sq mi, in wkid 2260 (NAD83 / New York East).",
   "notes": "**Change from the directory:** the city has no catalog, but it does run a public ArcGIS Enterprise. It has 51 public feature services, including tax parcels (11,179), building complaints, EMS calls for 2024–2025, lead service lines, zoning districts and street resurfacing. It also has 8 Experience Builder dashboards. Portal search found 0 Sites or Hub catalog apps. | The \"OpenGov\" link on the city site (/644/OpenGov) loads an OpenGov (ViewPoint Cloud) permitting storefront, and the city's procurement runs on procurement.opengov.com. Neither is a data catalog. The earlier note's point stands: this is not an open data portal. | Legislation is on Legistar: https://mountvernonny.legistar.com/.",
   "registry_id": null,
   "page": "portals/city-of-mount-vernon.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of New Rochelle",
   "entity_type": "city",
   "region": "NYC Metro / Long Island",
   "portal_name": "No portal found",
   "url": null,
   "platform": null,
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "City site (newrochelleny.com redirects to newrochelleny.gov) HTTP 200. A sitemap scan found no open data, GIS or ArcGIS links. An ArcGIS Online Hub Site title search found no New Rochelle site.",
   "notes": "The police department publishes monthly PDF lists: arrests, report blotter and aggravated assaults, under \"Monthly Data\" (/1662), plus Civilian Complaint Data (/1751) and Calls for Service (/1958). They are documents, not datasets. | The /1828 \"Transparency\" page requires a sign-in. | The earlier note's \"vendor-hosted GIS map viewer\" was not found or re-verified this pass. The city relies on the Westchester County GeoHub for county-level layers.",
   "registry_id": null,
   "page": "portals/city-of-new-rochelle.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of White Plains",
   "entity_type": "city",
   "region": "NYC Metro / Long Island",
   "portal_name": "No portal found",
   "url": null,
   "platform": null,
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "https://www.cityofwhiteplains.com/ returns HTTP 200 (\"White Plains, NY - Official Website\"). A sitemap scan found only map pages (Bike Lane, Parking, Maps/Plans/Zoning). The city Planning Department's ArcGIS org (`JF5Jl1feo5zKtyZI`, \"WP Planning Department\") runs two topical Hub sites; the projects site's dataset collection returns 0.",
   "notes": "The city relies on the Westchester County GeoHub for county-level layers. | Topical Hub sites, not catalogs: \"City of White Plains - Projects and Proposals\" and \"One White Plains - Comprehensive Plan\". The Maps, Plans & Zoning page links an ArcGIS StoryMaps collection and the zoning ordinance PDF.",
   "registry_id": null,
   "page": "portals/city-of-white-plains.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Yonkers",
   "entity_type": "city",
   "region": "NYC Metro / Long Island",
   "portal_name": "No general portal found",
   "url": "https://imo.yonkersny.gov/index.aspx",
   "platform": "Image Mate Online (assessment records)",
   "api_type": "none",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "yonkersny.gov returns 403 to curl (Cloudflare) and was rendered in a browser. A sitemap scan found no open data or GIS pages. The Assessment page (/204) links \"Online Property Viewer\" at imo.yonkersny.gov plus PDF assessment rolls (2026 final, 2027 tentative).",
   "notes": "Image Mate Online for property and assessment records only, not a general catalog. | Assessment rolls and an All Sales Report are PDFs. The police department has a Crime Map page (/473), which was not opened. | Meetings and agendas are on Legistar.",
   "registry_id": null,
   "page": "portals/city-of-yonkers.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Nassau County",
   "entity_type": "county",
   "region": "NYC Metro / Long Island",
   "portal_name": "Open Nassau (+ Open Payroll / Open Budget / Open Checkbook)",
   "url": "https://opendata.nassaucountyny.gov/",
   "platform": "Socrata (Tyler Technologies)",
   "api_type": "SODA",
   "api_endpoint": "https://opennassau.nassaucountyny.gov/resource/{dataset-id}.json ; catalog https://api.us.socrata.com/api/catalog/v1?domains=opennassau.nassaucountyny.gov",
   "key_required": "N",
   "dataset_count": 17,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 with an `X-Socrata-Region` header. Title \"Open Nassau | Office of the Nassau County Comptroller\". The Discovery API reports the canonical domain as `opennassau.nassaucountyny.gov`.",
   "notes": "Run by the Comptroller's office, not the County Executive. | `opendata.` and `opennassau.nassaucountyny.gov` return the same catalog; the canonical domain in API results is `opennassau`. | Open Payroll, Open Budget and Open Checkbook (`openpayroll.`, `openbudget.`, `opencheckbook.nassaucountyny.gov`) are separate Socrata Open Budget / Open Payroll apps. Each returns HTTP 200, and their pages reference Socrata / Tyler. They do not appear in the Discovery API as their own domains.",
   "registry_id": null,
   "page": "portals/nassau-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "New York City",
   "entity_type": "city",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC Open Data",
   "url": "https://data.cityofnewyork.us/",
   "platform": "Socrata (Tyler Technologies)",
   "api_type": "SODA",
   "api_endpoint": "https://data.cityofnewyork.us/resource/{dataset-id}.json ; catalog https://api.us.socrata.com/api/catalog/v1?domains=data.cityofnewyork.us",
   "key_required": "N",
   "dataset_count": 2412,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "The root 301s to opendata.cityofnewyork.us, then to https://www.nyc.gov/opendata, which returns 403 to curl (Akamai bot block). The resource API returns 200 with `X-Socrata-Region: aws-us-east-1-fedramp-prod`.",
   "notes": "Run by the NYC Office of Technology and Innovation (OTI). It covers all five boroughs, which are also five of the state's 62 counties (Bronx, Kings, New York, Queens, Richmond). | An app token is optional. Anonymous calls work but are throttled more heavily. | The landing page blocks scripted fetches. Use the API endpoints, or a browser, for the front end. | City agency data services: see the registry's tier 3 NYC section.",
   "registry_id": "oti",
   "page": "portals/new-york-city.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "New York City Council",
   "entity_type": "legislature",
   "region": "NYC Metro / Long Island",
   "portal_name": "Legistar Web API (NYC Council)",
   "url": "https://webapi.legistar.com/v1/nyc/",
   "platform": "Granicus Legistar",
   "api_type": "REST/JSON (OData-style)",
   "api_endpoint": "https://webapi.legistar.com/v1/nyc/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "GET /v1/nyc/bodies -> HTTP 403 'Token is required' (GranicusServer header). council.legistar.com/Legislation.aspx 200. curl.",
   "notes": "Token issued by the Council on request. BetaNYC's nyc-council-mcp uses it. council.nyc.gov/data (Data Team) publishes analyses and pages, not counted as a separate API.",
   "registry_id": "new-york-city-council",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "New York City Police Department",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "CompStat 2.0",
   "url": "https://compstat.nypdonline.org/",
   "platform": "custom dashboard",
   "api_type": "web query (no documented API)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "200, title 'NYPD CompStat 2.0'. Crime statistics landing page on nyc.gov 200. curl.",
   "notes": "Interactive dashboard; weekly CompStat reports are PDF/XLS on nyc.gov (format not checked). Complaint/arrest data is on NYC Open Data.",
   "registry_id": "new-york-city-police-department",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Campaign Finance Board",
   "entity_type": "commission",
   "region": "NYC Metro / Long Island",
   "portal_name": "Follow the Money - Data Library",
   "url": "https://www.nyccfb.info/follow-the-money/data-library/",
   "platform": "custom (nyccfb.info)",
   "api_type": "bulk download (CSV)",
   "api_endpoint": "https://www.nyccfb.info/DataLibrary/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Data library 200; links like /DataLibrary/2001_contribution.csv, _expenditure, _payment, _Intermediary from 2001 on; 2001_payment.csv -> 200. curl.",
   "notes": "City campaign finance (contributions, expenditures, public funds). State BOE is B1's.",
   "registry_id": "campaign-finance-board",
   "page": null,
   "example_request": "curl -s -O https://www.nyccfb.info/DataLibrary/2001_payment.csv"
  },
  {
   "tier": 3,
   "entity": "NYC Department of Buildings",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Building Information System (BIS)",
   "url": "https://a810-bisweb.nyc.gov/bisweb/bsqpm01.jsp",
   "platform": "Java web app",
   "api_type": "web query (no API)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "bsqpm01.jsp 200 via curl (bispi00.jsp returned 403 to curl).",
   "notes": "Property/permit/violation lookup for people; no API. DOB bulk data is on NYC Open Data. DOB NOW public portal not checked.",
   "registry_id": "department-of-buildings",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Department of City Planning",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "BYTES of the BIG APPLE / DCP Open Data",
   "url": "https://www.nyc.gov/site/planning/data-maps/open-data.page",
   "platform": "nyc.gov CMS",
   "api_type": "bulk download (shapefile/CSV/FileGDB)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'Open Data - Planning'. curl.",
   "notes": "PLUTO/MapPLUTO, LION, zoning, boundaries, Geosupport desktop. DCP Planning Labs apps (zola.planning.nyc.gov, popfactfinder.planning.nyc.gov, capitalplanning.nyc.gov) all 200 - web apps, no documented public API checked. New nyc.gov/content/planning/pages/resources also 200.",
   "registry_id": "department-of-city-planning",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Department of City Planning",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC DCP Mapping Portal (ArcGIS REST)",
   "url": "https://services5.arcgis.com/GfwWNkhOj9bNBqoJ/arcgis/rest/services",
   "platform": "ArcGIS Online",
   "api_type": "ArcGIS REST (FeatureServer)",
   "api_endpoint": "https://services5.arcgis.com/GfwWNkhOj9bNBqoJ/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 530,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "services?f=json returned 530 services; org GfwWNkhOj9bNBqoJ = 'NYC DCP Mapping Portal' (urlKey DCP) per arcgis.com portals API; test query on NYC_Borough_Boundary returned fields JSON. curl.",
   "notes": "Jurisdiction confirmed by ArcGIS org name, not slug. Count = services, not datasets.",
   "registry_id": "department-of-city-planning",
   "page": null,
   "example_request": "curl -s 'https://services5.arcgis.com/GfwWNkhOj9bNBqoJ/arcgis/rest/services/NYC_Borough_Boundary/FeatureServer/0/query?where=1%3D1&outFields=BoroName&returnGeometry=false&f=json'"
  },
  {
   "tier": 3,
   "entity": "NYC Department of Citywide Administrative Services",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "The City Record Online (CROL)",
   "url": "https://a856-cityrecord.nyc.gov/",
   "platform": "custom web app",
   "api_type": "web query (no API)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "200, title 'The City Record Online (CROL) | Home Page'. curl.",
   "notes": "Searchable notices (procurement, hearings, rules). Structured feed is the City Record dataset on NYC Open Data, which BetaNYC's nyc-record-mcp uses. DCAS as owner per City Record's charter home - not re-verified on page.",
   "registry_id": "department-of-citywide-administrative-services",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Department of Finance",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Rolling Sales Data",
   "url": "https://www.nyc.gov/site/finance/property/property-rolling-sales-data.page",
   "platform": "nyc.gov CMS",
   "api_type": "bulk download (XLSX)",
   "api_endpoint": "https://www.nyc.gov/assets/finance/downloads/pdf/rolling_sales/",
   "key_required": "N",
   "dataset_count": 5,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Page 200; five borough files rollingsales_<boro>.xlsx; bronx file -> 200 xlsx MIME. curl.",
   "notes": "dataset_count = 5 borough files. ACRIS (a836-acris.nyc.gov/CP/, 200) is a web record search; ACRIS data also on NYC Open Data. Digital Tax Map is a viewer.",
   "registry_id": "department-of-finance",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Department of Health and Mental Hygiene",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Environment and Health Data Portal",
   "url": "https://a816-dohbesp.nyc.gov/IndicatorPublic/",
   "platform": "custom static site + GitHub",
   "api_type": "bulk download (CSV via GitHub) + web query",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "200, title 'NYC Environment and Health Data Portal'; links Data Explorer and github.com/nychealth/EH-dataportal; data repo nychealth/EHDP-data ('Data for the Environment & Health Data Portal', pushed 2026-10-24). curl + GitHub API.",
   "notes": "Neighborhood health and environment indicators. Other DOHMH tools (EpiQuery) not checked.",
   "registry_id": "department-of-health-and-mental-hygiene",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Department of Transportation",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYCTMC Traffic Cameras API",
   "url": "https://webcams.nyctmc.org/",
   "platform": "custom",
   "api_type": "REST/JSON",
   "api_endpoint": "https://webcams.nyctmc.org/api/cameras",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "GET /api/cameras -> 200 JSON array (id, name, latitude, longitude, area, isOnline, imageUrl). curl.",
   "notes": "Undocumented but public and keyless; owner inferred from NYC Traffic Management Center domain - owner attribution UNCONFIRMED in a doc. DOT also has 'DOT Datafeeds' on the API portal (key).",
   "registry_id": "new-york-city-department-of-transportation",
   "page": null,
   "example_request": "curl -s https://webcams.nyctmc.org/api/cameras"
  },
  {
   "tier": 3,
   "entity": "NYC Independent Budget Office",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "IBO Data Center (NYC Fiscal History)",
   "url": "https://www.ibo.nyc.gov/content/data-center",
   "platform": "custom JS site",
   "api_type": "bulk download (XLSX)",
   "api_endpoint": "https://www.ibo.nyc.gov/assets/ibo/downloads/pdf/fiscal-history/",
   "key_required": "N",
   "dataset_count": 29,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "curl gets JS shell only; a browser read Data Center: 'download data to conduct their own analysis'; 29 .xlsx links (all revenue, agency expenditures, positions, tax revenue, capital since 1985, debt service, education spending).",
   "notes": "dataset_count = downloadable files on the page.",
   "registry_id": "independent-budget-office",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Office of Technology and Innovation (OTI)",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC API Developers Portal",
   "url": "https://api-portal.nyc.gov/",
   "platform": "Azure API Management",
   "api_type": "REST (multiple)",
   "api_endpoint": "https://api.nyc.gov/",
   "key_required": "Y",
   "dataset_count": 8,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "a browser read /apis: 8 APIs - Comptroller Checkbook, DOT Datafeeds, Event Calendar, Geoclient v2, GeoServer Tile Services (TMS/WMTS), HPD Datafeed, NYC 311 Public API, NYC OTI Locator.",
   "notes": "Subscription key via sign-up. dataset_count = APIs listed. Some listed APIs (OTI Locator, Checkbook) may also be reachable without a portal key - not tested.",
   "registry_id": "oti",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Office of Technology and Innovation (OTI) / Department of City Planning",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Geoclient v2",
   "url": "https://api-portal.nyc.gov/",
   "platform": "Azure API Management (Geosupport backend)",
   "api_type": "REST/JSON",
   "api_endpoint": "https://api.nyc.gov/geo/geoclient/v2/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Unauthenticated search.json -> 401 'Access denied due to missing subscription key'. Portal description: uses DCP's Geosupport. curl + browser.",
   "notes": "Geocoding (address, BBL, BIN, intersection, place).",
   "registry_id": "oti",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC Public Schools (DOE)",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "InfoHub reports and data",
   "url": "https://infohub.nyced.org/reports",
   "platform": "custom CMS",
   "api_type": "Bulk download (XLSX and PDF files); no API",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "Files sit under `/docs/default-source/...` (the Sitefinity CMS document library). Pages link to NYC Open Data for many of the same datasets. I sampled only the School Quality → Information and Data Overview page, so other sections may also use other formats. API: example: https://infohub.nyced.org/docs/default-source/default-document-library/demographic-snapshot-2021-22-to-2025-26-public.xlsx.",
   "registry_id": "nyc-doe",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "NYC311",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC 311 Public API",
   "url": "https://api-portal.nyc.gov/api-details#api=nyc-311-public-api",
   "platform": "Azure API Management",
   "api_type": "REST/JSON (Azure API Management; OpenAPI 3 and 2 definitions downloadable from the portal)",
   "api_endpoint": "https://api.nyc.gov/public/api/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "Operations: GetAssets, GetCalendar, GetCategory, GetContent, GetContentList, GetServiceRequest, GetServiceRequestList (POST), GetSites, plus Status/CodeBlue, FireHydrant, OEM, SnowOnSidewalk and SnowOnStreet. 311 service-request data is also on NYC Open Data. Key: APIM subscription key. Datasets: 13 operations.",
   "registry_id": "nyc311",
   "page": null,
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Office of the New York City Comptroller",
   "entity_type": "city-agency",
   "region": "NYC Metro / Long Island",
   "portal_name": "Checkbook NYC API",
   "url": "https://www.checkbooknyc.com/data-feeds/api",
   "platform": "Checkbook NYC 2.0 (Drupal)",
   "api_type": "REST (XML over HTTP POST)",
   "api_endpoint": "https://www.checkbooknyc.com/api",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Docs page 200: 'All data present in Checkbook NYC is available through the API ... XML ... HTTP POST', max 20000 records/call; type_of_data values Contracts, Budget, Revenue, Payroll, Spending, Spending_OGE, Contracts_OGE, Spending_NYCHA, Contracts_NYCHA, Payroll_NYCHA. Test POST returned success, record_count 3,350,560 for FY2026 spending. curl.",
   "notes": "Also listed on NYC API Developers Portal as 'Comptroller Checkbook'. Includes NYCEDC and NYCHA. BetaNYC's nyc-checkbook-mcp wraps it.",
   "registry_id": "office-of-the-new-york-city-comptroller",
   "page": null,
   "example_request": "curl -s -X POST https://www.checkbooknyc.com/api -H 'Content-Type: application/xml' -d '<request><type_of_data>Spending</type_of_data><records_from>1</records_from><max_records>1</max_records><search_criteria><criteria><name>fiscal_year</name><type>value</type><value>2026</value></criteria></search_criteria></request>'"
  },
  {
   "tier": 3,
   "entity": "Putnam County",
   "entity_type": "county",
   "region": "NYC Metro / Long Island",
   "portal_name": "Putnam County, NY",
   "url": "https://data-pcny.opendata.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records) / ArcGIS REST",
   "api_endpoint": "https://data-pcny.opendata.arcgis.com/api/search/v1/collections/dataset/items (DCAT feed disabled)",
   "key_required": "N",
   "dataset_count": 26,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `dU6jdOIkCUj2UDe9` \"Putnam County N.Y.\". The org portal is \"Putnam County, NY\", region US, with a default extent around lon −74.0..−73.5, lat 41.3..41.5 (web mercator). The DCAT feed returns \"Feeds have been disabled for this site\".",
   "notes": "Real datasets include Municipal Boundaries, Tax Parcels and School Districts. | The DCAT feed is turned off, so use the Hub search API for discovery.",
   "registry_id": null,
   "page": "portals/putnam-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Rockland County",
   "entity_type": "county",
   "region": "NYC Metro / Long Island",
   "portal_name": "Rockland County GIS Portal",
   "url": "https://www.rocklandgis.com/portal/apps/sites/#/data",
   "platform": "ArcGIS Enterprise 11.3 (self-hosted Portal + Sites)",
   "api_type": "ArcGIS REST (Enterprise portal sharing API + ArcGIS Server)",
   "api_endpoint": "https://www.rocklandgis.com/arcgis/rest/services ; portal search https://www.rocklandgis.com/portal/sharing/rest/search",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "The root meta-refreshes to /portal/apps/sites/#/data. Portal `self` returns name \"Rockland County Portal\", access public, ArcGIS Enterprise 11.3.0. The Hosted/Jurisdictions layer returns 24 features, including Airmont and Chestnut Ridge (Rockland villages). The default extent is around lon −74.24..−73.79.",
   "notes": "**API classification settled** (was UNCONFIRMED): both the Enterprise portal sharing REST API and the ArcGIS Server REST directory (`/arcgis/rest/services`) answer anonymous JSON requests. API: Y, no key. | **Trap:** the site's firewall returns 403 to non-browser User-Agents (a bare `Mozilla/5.0` was blocked; a full browser UA string worked). Send a full browser User-Agent. `/server/rest/services` is 404; the server path is `/arcgis/`. | `q=*` portal searches return 0. Search by type (e.g. `type:\"Shapefile\"`) instead. | Not to confuse with Rockland, **Maine** (`rocklandme-realtermenergy` Hub). https://www.envisionrockland.com is the county comprehensive-plan Hub, not the data catalog.",
   "registry_id": null,
   "page": "portals/rockland-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Suffolk County",
   "entity_type": "county",
   "region": "NYC Metro / Long Island",
   "portal_name": "Suffolk County Open Data",
   "url": "https://opendata.suffolkcountyny.gov/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC Records + DCAT) / ArcGIS REST",
   "api_endpoint": "https://opendata.suffolkcountyny.gov/api/search/v1/collections/dataset/items (OGC API Records); DCAT https://opendata.suffolkcountyny.gov/api/feed/dcat-us/1.1.json; layers on ArcGIS REST (county server: https://gis.suffolkcountyny.gov/server/rest/services)",
   "key_required": "N",
   "dataset_count": 189,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `JsDD4qdG5r2a7hR5` \"Suffolk County GIS\", site \"Suffolk County Open Data\". DCAT has 255 items published by \"Suffolk County GIS\" with emails at suffolkcountyny.gov. 126 of 157 bboxes fall in NY.",
   "notes": "A browsable catalog: Budget & Finance, Housing, Environment, Public Safety and GIS categories. The category list was not re-checked this pass. | 29 DCAT items are Esri-published layers mirrored into the site.",
   "registry_id": null,
   "page": "portals/suffolk-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Westchester County",
   "entity_type": "county",
   "region": "NYC Metro / Long Island",
   "portal_name": "Westchester GeoHub v2",
   "url": "https://gis.westchestercountyny.gov/",
   "platform": "ArcGIS Hub (custom domain) + county ArcGIS Server",
   "api_type": "ArcGIS Hub (OGC Records) / ArcGIS REST",
   "api_endpoint": "https://gis.westchestercountyny.gov/api/search/v1/collections/dataset/items (DCAT feed disabled); layers on https://giswww.westchestergov.com/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 91,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200. Hub domain: org `XKEHpOulfycN9cGC` \"Westchester County GIS\", site \"Westchester GeoHub v2\", urlKey `wcgis`. The org default extent is around lon −74.25..−73.24, lat 40.9..41.4. The DCAT feed is disabled for the site.",
   "notes": "A GIS-first catalog: parcels, boundaries and infrastructure. No budget, payroll or 311-style civic datasets were seen. That is from an earlier pass and was not re-checked. | `datahub-wcgis.opendata.arcgis.com` is a legacy site of the same county org. GeoHub v2 is canonical (Audit 2026-11-05). | Cities in the county (Mount Vernon, New Rochelle, White Plains, Yonkers) lean on this hub for county-level layers.",
   "registry_id": null,
   "page": "portals/westchester-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Clinton County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (map viewer only)",
   "url": "https://www.clintoncountyny.gov/planning/gis-map",
   "platform": "ArcGIS Online (Experience Builder app)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "County page HTTP 200, title 'Geographic Information System (GIS) Online Map - Clinton County, New York'; links an Experience Builder app on org ClinCo. Item owner CutterL: 91 public items (40 Feature Services), median center −73.68, 44.72 (Plattsburgh area, NY).",
   "notes": "A map viewer, not a catalog. The org's Feature Services can be queried over REST if you find their URLs through the viewer, but there is no catalog to browse. Traps: 'Clinton County Ohio GIS' (`clinton-county-ohio-clintoncountygis.hub.arcgis.com`) and a Clinton County, PA COVID hub. Excluded.",
   "registry_id": null,
   "page": "portals/clinton-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Essex County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (parcel viewer + REST)",
   "url": "https://essex-gis.co.essex.ny.us/",
   "platform": "Esri ArcGIS Server 11.3 (parcel viewer)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://essex-gis.co.essex.ny.us/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 on the `co.essex.ny.us` domain, linked from essexcountyny.gov. REST service NY_County_Essex/MapServer full extent ≈ lon −74.34 to −73.29 (Essex County NY), layers incl. Parcels, Election Districts, Agricultural Districts.",
   "notes": "The parcel viewer is not a catalog, but its MapServer is public and queryable. **Trap:** `data-essexcounty.opendata.arcgis.com` / `opendata.countyofessex.ca` is Essex County, **Ontario, Canada**; an 'Essex County Virginia GIS Portal' Hub also exists. Both excluded.",
   "registry_id": null,
   "page": "portals/essex-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Franklin County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (parcel search only)",
   "url": "https://beacon.schneidercorp.com/Application.aspx?App=FranklinCountyNY&PageType=Search",
   "platform": "Schneider Beacon",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "franklincountyny.gov (title 'Welcome to Franklin County, NY') Real Property Tax Services page links Beacon FranklinCountyNY. No GIS or open-data page in the county sitemap.",
   "notes": "The Development Authority of the North Country (DANC) publishes Franklin infrastructure and zoning layers on its public REST server: https://maps.dancgis.org/server/rest/services (Franklin_Infrastructure_P_24, Franklin_Special_Dis_Zoning_P_24). Trap: `data-franklincova.opendata.arcgis.com` is Franklin County, **Virginia**. Other 'Franklin County' Hubs are Ohio (`fca`), Pennsylvania and Iowa. All excluded. Beacon URL taken from the county page; the Beacon page itself was not loaded this session (Cloudflare).",
   "registry_id": null,
   "page": "portals/franklin-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Hamilton County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (parcel viewer only)",
   "url": "https://beacon.schneidercorp.com/Application.aspx?App=HamiltonCountyNY&PageType=Map",
   "platform": "Schneider Beacon",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "a browser 2026-11-05: after the Cloudflare challenge the page title is 'Beacon - Hamilton County, NY - Map'. https://hamcomaps.net/ (apex) redirects to this Beacon URL.",
   "notes": "Smallest county in NY (about 4,800 people). Parcel and tax map viewer only. `www.hamcomaps.net` is a dangling CNAME to a deleted Azure web app (per the 2026-11-05 audit; not re-tested here). Use the Beacon URL. DANC's public REST server has a Hamilton fiber service layer (Hamilton_Fiber_Service_MXD). Traps: Hamilton County Indiana GeoHub and Hamilton County (Cincinnati) Ohio CAGIS Hubs. Excluded.",
   "registry_id": null,
   "page": "portals/hamilton-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Jefferson County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (parcel search only)",
   "url": "https://www.jeffersoncountyny.gov/gis-maps-property-search",
   "platform": "Schneider Beacon (parcel search)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "County page HTTP 200, title 'Welcome to Jefferson County, New York - GIS Maps & Property Search'; links Beacon JeffersonCountyNY.",
   "notes": "Also covered by DANC: its viewer and public REST server (Jefferson_Infrastructure_P_24, Jefferson_Special_Dis_Zoning_P_24) at https://maps.dancgis.org/server/rest/services. `www.jeffcountymaps.com` points at a deleted Azure web app (per the 2026-11-05 audit). Traps: many other Jefferson Counties run Hubs (WV, AL, KY, CO, WA). Excluded.",
   "registry_id": null,
   "page": "portals/jefferson-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Lewis County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (map application only)",
   "url": "https://lewiscountyny.gov/departments/real-property/gis-mapping-web-application/",
   "platform": "Schneider Beacon",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "County page HTTP 200 (lewiscountyny.gov, title 'Lewis County GIS Mapping Web App…'); links Beacon AppID 1325.",
   "notes": "The former GIS Cloud viewer (`lewiscountyny.giscloud.com`) says 'The app has been disabled by the owner' (per the 2026-11-05 audit). DANC's public REST server carries Lewis layers (Lewis_Infrastructure_P_24, Lewis_Special_Dis_Zoning_P_24, Lewis_Unserved).",
   "registry_id": null,
   "page": "portals/lewis-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "St. Lawrence County",
   "entity_type": "county",
   "region": "North Country",
   "portal_name": "No portal found (DANC regional viewer)",
   "url": "https://maps.dancgis.org/ima/?IMA=St.+Lawrence",
   "platform": "DANC Internet Mapping Application (custom/Esri)",
   "api_type": "ArcGIS REST (DANC regional server)",
   "api_endpoint": "https://maps.dancgis.org/server/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Viewer HTTP 200 (title 'DANC - Internet Mapping Application' per the 2026-11-05 audit a browser check). stlawco.gov Tax Maps page links maps.dancgis.org/ima and a Beacon portal page. DANC REST v11.1 is public with St. Lawrence services.",
   "notes": "A shared regional viewer run by the Development Authority of the North Country, also covering Jefferson and Lewis. Not a catalog. DANC's public REST server has 36 services, incl. StLawrence_Infrastructure_P, StLawrence_Special_Dis_Zoning_P_24, Stlawrence_Ag_Atlas_24 and St_Lawrence_Unserved.",
   "registry_id": null,
   "page": "portals/st-lawrence-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Broome County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Broome County GIS Portal",
   "url": "https://gis.broomecountyny.gov/website/gisweb/portal.htm",
   "platform": "Esri ArcGIS Server 10.61 + custom JS viewer page (not Hub)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://gis.broomecountyny.gov/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'Broome County GIS Portal' on county domain broomecountyny.gov; county homepage links to it; REST directory live (12 folders incl. parcels, elections, Flood). Verified by curl (HTTP).",
   "notes": "The directory row says 'PDF library; no dataset catalog' and API N. The catalog part holds, but the portal page also links 91 free shapefile ZIPs under /website/gisweb/GISdata/ (e.g. br_boundary.zip, br_911_addresses.zip), and a public ArcGIS Server REST directory answers queries. Suggest API = Y (ArcGIS REST). REST layers carry Query capability (br_parcels MapServer: Map,Query,Data).",
   "registry_id": null,
   "page": "portals/broome-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Chemung County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "GIS Mapping Data page",
   "url": "https://chemungcountyny.gov/1382/GIS-Mapping-Data",
   "platform": "CivicPlus static page with Document Center downloads",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200, title 'GIS Mapping Data | Chemung County, NY' on county domain. Page lists layers with 'Date Last Updated' (e.g. orthoimages 1/29/2025, boundary 3/20/2024). Verified by curl (HTTP).",
   "notes": "Free downloads (SHP, KMZ, some GDB) via DocumentCenter links: county boundary, road centerlines, surface water, flood zones, legislative districts, ZIP codes, census block groups, soils, DEM, aquifer, transit, trails. Orthoimages by request to the Planning Department. The directory's mention of a Schneider/Beacon parcel viewer was not re-checked on this pass. No Hub or Socrata catalog found (ArcGIS site search for 'Chemung' returned 0).",
   "registry_id": null,
   "page": "portals/chemung-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Chenango County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Online GIS Information page (paid subscription)",
   "url": "https://www.chenangocountyny.gov/323/Online-GIS-Information",
   "platform": "Schneider Geospatial (paid subscription)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Cloudflare 403 to curl; read with a browser: title 'Online GIS Information | Chenango County, NY'. Page text: subscription site hosted by Schneider Geospatial, $250/yr plus $25 PIN fee, total $275.",
   "notes": "Primary access is a paid Schneider Geospatial subscription ($275 first year, $250 renewal) for aerial imagery with tax-map overlay and real property data. Forms: GIS Parcel Data, GIS Renewal, Online GIS Agreement (PDFs). No free catalog or API found. ArcGIS site search for 'Chenango' returned 0. Directory lists this page as the portal; status set to no-portal because nothing here is open data.",
   "registry_id": null,
   "page": "portals/chenango-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Delaware County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "No portal found",
   "url": "https://www.delcony.gov/",
   "platform": "—",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Excluded Hub re-checked: gisdata-delco.hub.arcgis.com DCAT 40/40 publisher 'Delaware County, Ohio', emails co.delaware.oh.us, 0/30 bboxes in NY (curl (HTTP)). NY county site delcony.gov is Cloudflare-blocked to curl; read with a browser (title 'Home - Delaware County', page mentions New York): no GIS, map, or open-data links found on the homepage or search.",
   "notes": "Excluded: https://gisdata-delco.hub.arcgis.com/ is Delaware County, **Ohio**. Do not re-add. Trap: ArcGIS search for 'Delaware' returns mostly the State of Delaware (FirstMap etc.). A third-party item 'Delaware County NY Parcels' (owner wharcgisdeveloper) exists; not county-published. Light pass only (homepage + site search); absence is a floor, not proof. The old domain co.delaware.ny.us returns an empty 'Index of /'.",
   "registry_id": null,
   "page": "portals/delaware-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Otsego County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Otsego County GIS",
   "url": "https://otsego-county-gis-otsegocountyny.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search, DCAT-US) + ArcGIS REST",
   "api_endpoint": "https://otsego-county-gis-otsegocountyny.hub.arcgis.com/api/search/v1/collections/all/items",
   "key_required": "N",
   "dataset_count": 64,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId itXEtJD6fWt6V2ew, org 'Otsego County'. DCAT: 61/64 publisher 'Otsego County', 55/55 bboxes in NY. 133 public feature services in the org. Verified by curl (HTTP).",
   "notes": "The site's search API exposes only the 'all' collection; /collections/dataset returns 404. Use 'all' or the DCAT feed. Contact emails are {{orgContactEmail}} placeholders.",
   "registry_id": null,
   "page": "portals/otsego-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Schuyler County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "GIS Shapefile page",
   "url": "https://www.schuylercountyny.gov/1066/GIS-Shapefile",
   "platform": "CivicPlus static page + ArcGIS Online web viewer",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "http redirects to https; HTTP 200, title 'GIS Shapefile | Schuyler County, NY'. Page lists 2025 shapefile (updated 07/01/2025) back to 2021; links 'Online Map Viewer' at schuylerco.maps.arcgis.com (item 'Schuyler County Parcel Map Viewer', owner SchuylerGIS, 200). Verified by curl (HTTP).",
   "notes": "Offers: annual parcel shapefile downloads (DocumentCenter), Parcel Map Viewer (https://schuylerco.maps.arcgis.com/apps/webappviewer/index.html?id=b65af3edbf494b64883ec238d0206d22), online property assessment data. An ArcGIS org titled 'Schuyler County' (wGGTeQ7ADSSKDWnb) runs a Public Health Hub (scpublichealth-schuylerco.hub.arcgis.com) and has 53 public feature services. Whether it is the same org as schuylerco.maps.arcgis.com is UNCONFIRMED. Collision check: Schuyler County IL and MO exist; not seen in results.",
   "registry_id": null,
   "page": "portals/schuyler-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Steuben County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Steuben County GIS",
   "url": "https://steubencounty-scnygis.opendata.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search) + ArcGIS REST",
   "api_endpoint": "https://steubencounty-scnygis.opendata.arcgis.com/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 11,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId NZkLeERo9XICXiuy, org 'Steuben County GIS'. Earlier audit: item 'Tax Parcels SteubenCoNY' with NY extent. 61 public feature services in the org. DCAT feed still returns HTTP 500. Verified by curl (HTTP).",
   "notes": "DCAT-US feed broken: /api/feed/dcat-us/1.1.json returns 500 ('Cannot read properties of undefined (reading 'dcatUS1X')'). Use the Hub search API instead. Collision check: Steuben County IN exists; this org is NY per item names and extent.",
   "registry_id": null,
   "page": "portals/steuben-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Tioga County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Tioga County One Map",
   "url": "https://tioga-county-one-map-tiogacountyny.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS REST (org feature services); Hub search returns no datasets",
   "api_endpoint": "https://services3.arcgis.com/PvkAiSMFS7cpxnJP/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 0,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId PvkAiSMFS7cpxnJP, org 'Tioga County NY'. DCAT 3/3 publisher 'Tioga County NY', emails tiogacountyny.gov. County homepage (tiogacountyny.gov) links to this Hub and to Beacon. Verified by curl (HTTP).",
   "notes": "The Hub site is a front door for apps, not a data catalog. The data is in the org's 166 public feature services. Name collision: Tioga County PA. Jurisdiction here is proved by the org name and tiogacountyny.gov emails, not by the subdomain. Beacon property search: https://beacon.schneidercorp.com/Application.aspx?App=TiogaCountyNY&PageType=Search",
   "registry_id": null,
   "page": "portals/tioga-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Tompkins County",
   "entity_type": "county",
   "region": "Southern Tier",
   "portal_name": "Tompkins County Open Data Portal",
   "url": "https://tcdata-tompkinscounty.opendata.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub (OGC API Records search, DCAT-US) + ArcGIS REST",
   "api_endpoint": "https://tcdata-tompkinscounty.opendata.arcgis.com/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 32,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Hub domain record: orgId oJbAAWNInLrxvF0A, org 'Tompkins County Mapping Portal'. DCAT: publisher 'Tompkins County Mapping Portal' (42) / County IT GIS Division (1); contact points to tompkinscountyny.gov GIS Division; 39/39 bboxes in NY. 330 public feature services in the org. Verified by curl (HTTP).",
   "notes": "Directory note (election districts, legislative boundaries, 2026 data present) not re-checked item by item; first dataset returned is 'Tompkins County Polling Places'.",
   "registry_id": null,
   "page": "portals/tompkins-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Allegany County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No portal found (parcel search only)",
   "url": "https://beacon.schneidercorp.com/Application.aspx?App=AlleganyCountyNY&PageType=Search",
   "platform": "Schneider Beacon",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "alleganyco.gov (title 'Allegany County, NY - Official Website', HTTP 200) links Beacon AlleganyCountyNY; Beacon page title 'Beacon - Allegany County, NY - Search' read in a browser 2026-11-05 (curl gets a Cloudflare 403).",
   "notes": "County homepage links only Beacon parcel search and Real Property pages; no GIS catalog or open-data page found. Trap: ArcGIS Hub sites titled 'Allegany County' belong to Allegany County, **Maryland** (`allegany-county-maryland.hub.arcgis.com`, `maryland-housing-beat-allegany-maryland`). 'Allegheny County' (PA) is also a different place. Excluded. Beacon is a parcel viewer behind a Cloudflare challenge; it is not an open API.",
   "registry_id": null,
   "page": "portals/allegany-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Cattaraugus County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Cattaraugus County GIS Hub",
   "url": "https://cattaraugus-county-gis-hub-cattco.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub/REST",
   "api_endpoint": "https://services2.arcgis.com/T3DEZCc7g6Lhq9kn/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 0,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Site HTTP 200; Hub domain record → org T3DEZCc7g6Lhq9kn (urlKey CattCo). 182 public org items, median extent center −78.69, 42.27 (Cattaraugus County NY), NYS ITS attribution. Hub search numberMatched 0; DCAT feed has 0 datasets.",
   "notes": "The Hub site is live but its public catalog is empty to the API: the Hub search and DCAT feed both list 0 datasets. The data sits in the county's ArcGIS org as about 50 public Feature Services, reachable over REST. Needs a human look at the site to see what it actually presents.",
   "registry_id": null,
   "page": "portals/cattaraugus-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Chautauqua County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No catalog UI (raw ArcGIS REST services)",
   "url": "https://maps.chautauquacounty.com/server/rest/services",
   "platform": "ArcGIS Server 10.91 (REST directory, no Hub front end)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://maps.chautauquacounty.com/server/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "REST directory HTTP 200, currentVersion 10.91, folders Imagery, Locators, ParcelViewer, Public, PV_Beta, Utilities. County ArcGIS org (urlKey ChautauquaCounty, 5FL2JAlR9nTU3EyG): 340 public items, median center −79.39, 42.28 (Chautauqua County NY).",
   "notes": "No browsable dataset catalog. The `Public` folder holds election precincts, polling places, parcels and basemap services. The county also runs **DevelopCHQ** (https://developchq-chautauquacounty.hub.arcgis.com/), an ArcGIS Hub for economic development site selection: 43 items, mostly PDF site sheets plus a few layers. It is not a general open-data catalog. chautauquacounty.com redirects to chautauquacountyny.gov.",
   "registry_id": null,
   "page": "portals/chautauqua-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Buffalo",
   "entity_type": "city",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Open Data Buffalo",
   "url": "https://data.buffalony.gov/",
   "platform": "Socrata",
   "api_type": "SODA",
   "api_endpoint": "https://data.buffalony.gov/resource/<dataset-id>.json",
   "key_required": "N",
   "dataset_count": 139,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; Socrata Discovery API with domains=data.buffalony.gov returns resultSetSize 139 (only=dataset) and 355 (all assets); SODA query on Crime Incidents (d6g9-xbgu) returned a row.",
   "notes": "SODA works without a key; an app token is optional and only raises rate limits. Erie County's own GIS resources page links here as a data source.",
   "registry_id": null,
   "page": "portals/city-of-buffalo.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "City of Rochester",
   "entity_type": "city",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "DataROC",
   "url": "https://data.cityofrochester.gov/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub/REST",
   "api_endpoint": "https://data.cityofrochester.gov/api/search/v1/collections/dataset/items",
   "key_required": "N",
   "dataset_count": 52,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; Hub domain record → org yoz1ZtATTCokO9nU (urlKey RochesterNY), site 'DataROC'. DCAT publisher 'City of Rochester, NY' and contact domain CityofRochester.gov on 134 entries; 114/152 bboxes centered in NY; org median center −77.61, 43.18.",
   "notes": "ArcGIS Hub, not Socrata. Rochester is often assumed to run Socrata; no Socrata markers were found (when it changed is not known). Counts differ by method: Hub search 52 datasets, DCAT 281 entries (many with unfilled template values), org Feature Services 180. Datasets include 311 Case Data, parcels and parcel history.",
   "registry_id": null,
   "page": "portals/city-of-rochester.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Erie County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No confirmed catalog (GIS office pages)",
   "url": "https://www3.erie.gov/gis/",
   "platform": "Custom site + ArcGIS Online viewers",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "www3.erie.gov/gis HTTP 200 (Office of Geographic Information Services, Buffalo NY). Links a Web AppViewer on erieny.maps.arcgis.com and gis.erie.gov HTML5 viewer; no catalog.",
   "notes": "2025 tax parcel data is free but released by **request form**, not by download (press page dated 2026-01-28). Election district shapefiles: https://elections.erie.gov/ShapeDownload. The county's Resources page points to Open Data Buffalo, the NYS GIS Clearinghouse and data.gov. Traps: `ecgis-eriecopa.hub.arcgis.com` and related `eriecopa` Hubs are Erie County, **Pennsylvania**; `ecgisab.opendata.arcgis.com` centers on Erie County, **Ohio**. Excluded.",
   "registry_id": null,
   "page": "portals/erie-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Genesee County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Genesee County GIS Data",
   "url": "https://gis-data-cogeneseeny.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub/REST",
   "api_endpoint": "https://services6.arcgis.com/WFFxVlldouxONE19/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 4,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Site HTTP 200; Hub domain record → org WFFxVlldouxONE19 (urlKey cogeneseeny). 404 public org items, median center −78.19, 43.00 (Batavia, NY), NYS ITS attribution.",
   "notes": "The Hub catalog is thin: 4 datasets (Smart Growth Development Areas, Municipalities, Parks and Refuges, Hamlets), offered as shapefile downloads. Much more is in the org as Feature Services (118), incl. Genesee/Orleans public health reporting layers.",
   "registry_id": null,
   "page": "portals/genesee-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Livingston County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Livingston County GIS Portal",
   "url": "https://gis.livingstoncountyny.gov/portal/home/index.html",
   "platform": "ArcGIS Enterprise (self-hosted Portal, no Sites catalog)",
   "api_type": "ArcGIS REST",
   "api_endpoint": "https://gis.livingstoncountyny.gov/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Portal home HTTP 200 on 2026-11-05 (the directory's earlier 403 did not recur). portals/self name 'Livingston County, New York', default extent ≈ lon −78.05 to −77.49 (Livingston County NY). Linked from the county homepage livingstoncountyny.gov. REST directory v11.5 is public.",
   "notes": "**Status change:** the directory said 'No portal found' because the portal returned 403 to an automated check. It is now reachable, and the county homepage links it. It is a standard ArcGIS Enterprise portal (searchable gallery), not a curated open-data Site; portal search found 0 Site or Hub Site items. Feature Service items include county layers (soils, facilities, polling sites) and statewide ones (NY State Lands, utility territories). livingstoncounty.us redirects to livingstoncountyny.gov.",
   "registry_id": null,
   "page": "portals/livingston-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Monroe County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "MCGIS Hub",
   "url": "https://maps.monroecounty.gov/portal/apps/sites/#/mcgis",
   "platform": "ArcGIS Enterprise (self-hosted Sites)",
   "api_type": "ArcGIS REST (Enterprise portal)",
   "api_endpoint": "https://maps.monroecounty.gov/portal/sharing/rest/search",
   "key_required": "N",
   "dataset_count": 77,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Sites page HTTP 200. portals/self name 'Monroe County GIS Portal'; county-owned Feature Services (owners initialAdmin, …@MCAD) median center −77.67, 43.12 (Rochester area). Parcels_Public query returned 267,962 features.",
   "notes": "The portal also lists Esri Living Atlas items; the raw Feature Service count (108) includes them, so use 77 for the county's own. Trap: `gishub-monroegis.hub.arcgis.com` is Monroe County, **Ohio**. Excluded.",
   "registry_id": null,
   "page": "portals/monroe-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Niagara County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No portal found (map viewer only)",
   "url": "https://niagara-county.maps.arcgis.com/apps/webappviewer/index.html?id=b5be67cf0e05477e8f4ad3161ab51422",
   "platform": "ArcGIS Online (Web AppViewer)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "niagaracounty.gov (title 'Niagara County, NY', HTTP 200) sitemap links 'Niagara County GIS Public Viewer' on org niagara-county. The item owner's 9 public items have median center −78.70, 43.18 (Lockport, NY).",
   "notes": "Only map apps (Web Maps, Web AppViewer, Experience) were found, no browsable catalog. No ArcGIS Hub site titled 'Niagara County' was found in an ArcGIS Online search.",
   "registry_id": null,
   "page": "portals/niagara-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Ontario County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Ontario County GIS Mapping Center",
   "url": "https://ontario-county-gis-mapping-center-ontariocony.hub.arcgis.com/",
   "platform": "ArcGIS Hub",
   "api_type": "ArcGIS Hub/REST",
   "api_endpoint": "https://services1.arcgis.com/4ZdJfkWE583IARCX/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": 12,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Site HTTP 200; Hub domain record → org 4ZdJfkWE583IARCX (urlKey Ontariocony). 16/16 DCAT bounding boxes centered in NY; 193 public org items, median center −77.26, 42.81 (Canandaigua, NY).",
   "notes": "Dataset counts differ by method: Hub search 12, DCAT 35, org Feature Services 102. Cite the method with the number.",
   "registry_id": null,
   "page": "portals/ontario-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Orleans County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No portal found (map viewer + PDF maps)",
   "url": "https://www.orleanscountyny.gov/departments/planning/geographic_information_systems_(gis).php",
   "platform": "County GIS page (PDF maps, viewer user guide)",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "orleanscountyny.gov (title 'Orleans County, NY', HTTP 200); the Planning GIS page links PDF maps, a 2017 map atlas and a 'Map Orleans' user guide. No catalog or Hub found.",
   "notes": "The interactive viewer itself was not identified on this pass (only its user guide PDF). UNCONFIRMED which platform it uses. No ArcGIS Hub site titled 'Orleans County' was found in an ArcGIS Online search. Genesee County's org carries some joint Genesee/Orleans health layers.",
   "registry_id": null,
   "page": "portals/orleans-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Seneca County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No portal found (parcel search only)",
   "url": "https://beacon.schneidercorp.com/Application.aspx?App=SenecaCountyNY&PageType=Search",
   "platform": "Schneider Beacon",
   "api_type": "none",
   "api_endpoint": "—",
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "senecacountyny.gov (co.seneca.ny.us redirects there; title 'Real Property Tax | Seneca County, NY') links Beacon SenecaCountyNY. No GIS or open-data page found.",
   "notes": "Trap: `portal-senecacountygis.hub.arcgis.com` ('Seneca County GeoLibrary') is Seneca County, **Ohio**. Excluded. Beacon URL taken from the county page; the Beacon page itself was not loaded this session (Cloudflare).",
   "registry_id": null,
   "page": "portals/seneca-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Wayne County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Open Data Portal (Wayne County GIS)",
   "url": "https://gis.co.wayne.ny.us/portal/apps/sites/#/wcgis/search?collection=Dataset",
   "platform": "ArcGIS Enterprise (self-hosted Sites)",
   "api_type": "ArcGIS REST (Enterprise portal)",
   "api_endpoint": "https://gis.co.wayne.ny.us/portal/sharing/rest/search",
   "key_required": "N",
   "dataset_count": 108,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Sites page HTTP 200; linked from waynecountyny.gov/815/Open-Data-Portal (title 'Open Data Portal | Wayne County, NY'). 108 Feature Services, median extent center −77.04, 43.17 (Wayne County NY). Parcels_2025 query returned 43,780 features.",
   "notes": "Traps: `data-wayne.opendata.arcgis.com` is Wayne County, **Michigan**, and `data-waynecountygis.opendata.arcgis.com` is Wayne County, **Ohio**. Excluded. The Parcels_2025 layer id is 73, not 0.",
   "registry_id": null,
   "page": "portals/wayne-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Wyoming County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "No portal found (map apps only)",
   "url": "https://www.wyomingcountyny.gov/645/Geographic-Information-Systems-GIS",
   "platform": "ArcGIS Online (individual apps)",
   "api_type": "ArcGIS REST (org services, no catalog)",
   "api_endpoint": "https://services3.arcgis.com/Sq7KUOgahdDkqoAp/arcgis/rest/services",
   "key_required": "N",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "County GIS page HTTP 200. Org wyco (Sq7KUOgahdDkqoAp, name 'Wyoming County GIS'): 154 public items, 104 Feature Services, median center −78.22, 42.69 (Warsaw, NY).",
   "notes": "No browsable catalog; the county page links Experience Builder and Instant apps only. Trap: the previously listed Hub (`www-wyomingcounty-wycopa`) matched the Wyoming County, **Pennsylvania** org and no longer exists. Excluded. The org's Feature Services are public and queryable over REST.",
   "registry_id": null,
   "page": "portals/wyoming-county.md",
   "example_request": null
  },
  {
   "tier": 3,
   "entity": "Yates County",
   "entity_type": "county",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "Yates County GIS Portal",
   "url": "https://gisportal.yatescounty.org/portal/home/",
   "platform": "ArcGIS Enterprise (self-hosted Portal, no Sites catalog)",
   "api_type": "ArcGIS REST (Enterprise portal)",
   "api_endpoint": "https://gisportal.yatescounty.org/server/rest/services",
   "key_required": "N",
   "dataset_count": 80,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "a browser: yatescountyny.gov/573/Yates-County-GIS-Portal redirects to gisportal.yatescounty.org/portal/home/ (curl gets a Cloudflare 403 on the county site). portals/self name 'Yates County GIS Portal'; 80 Feature Services owned by county users, median center −77.13, 42.61 (Penn Yan area, NY).",
   "notes": "**Status change:** the directory said 'No portal found' (Web AppViewer only). The county site has a 'Yates County GIS Portal' page linking a public ArcGIS Enterprise portal. It is a searchable portal gallery, not a curated open-data Site; portal search found 0 Site items. yatescounty.org redirects to yatescountyny.gov, which blocks plain HTTP clients behind Cloudflare.",
   "registry_id": null,
   "page": "portals/yates-county.md",
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Central New York Community Foundation",
   "entity_type": "nonprofit",
   "region": "Central NY",
   "portal_name": "CNY Vitals",
   "url": "https://pro.cnyvitals.org/",
   "platform": "Datawheel (D3plus front end; Tesseract OLAP API)",
   "api_type": "REST/JSON (Tesseract `data.jsonrecords`; undocumented on the site) + per-chart \"Download data\"",
   "api_endpoint": "https://cny.api.datawheel.us/tesseract/data.jsonrecords",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "cnyvitals.org is the WordPress narrative site. \"CNY Vitals Pro\", titled \"An Open Data Portal Focused on Central New York\", is a free public site, not a paid tier. It has a Login button, but none was needed to view or download. It covers Onondaga, Madison, Cayuga, Cortland and Oswego counties. The About page states that visitors can \"Download the raw data for each indicator in a variety of formats\" and \"Connect … via API\", but I found no public API documentation page. The endpoint was observed in the page's network traffic. Datasets: the About page says the site \"tracks 70 data points\".",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Association for Neighborhood and Housing Development (ANHD)",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "Displacement Alert Project (DAP) Portal and API",
   "url": "https://portal.displacementalert.org/",
   "platform": "React app + Django REST API",
   "api_type": "Web portal; data access by account (by request)",
   "api_endpoint": null,
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "portal HTTP 200 'DAP Portal' (JS app); API root lists councils, communities, zipcodes, stateassemblies, statesenates...; /properties/3012380016/ returned property JSON",
   "notes": "API host found in portal JS bundle. Portal has a data access policy (portal.displacementalert.org/policies/data-access-policy, not read) and member logins; respect it. Also risk.anhd.org (2026 risk map, not assessed). Access is by account request under ANHD's data access policy (no commercial use; redistribution under the same terms). Not an open API.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Baruch College (CUNY) Newman Library",
   "entity_type": "library",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC Geodatabase (Baruch Geoportal)",
   "url": "https://www.baruch.cuny.edu/confluence/display/geoportal/NYC+Geodatabase",
   "platform": "Confluence",
   "api_type": "Bulk download (SpatiaLite and MS Access personal geodatabase ZIPs), per search-indexed copies only",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "UNCONFIRMED",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "The entire Baruch Confluence (every path tried) returns 403 with \"You are accessing an application remotely (outside of the Baruch Campus network). While you are off the Baruch Campus Network please access this application through the Baruch College VPN.\" Search-indexed copies describe nyc_gdb (SpatiaLite and Access, CC BY-NC-SA 4.0). The latest version named in those copies is `nyc_gdb_jan2015`, and one indexed page says the GIS Lab \"is currently closed\" and the Geospatial Data Librarian post is vacant. **I could not see the dates on those indexed pages, so treat them as unverified.** Recommend `dead` (not publicly reachable) unless someone with Baruch access confirms otherwise. Key: not a key; the network is restricted.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Citizens' Committee for Children of New York",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "Keeping Track Online",
   "url": "https://data.cccnewyork.org/",
   "platform": "Custom web app",
   "api_type": "Indicator pages with Export (CSV) button; no API found",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 124,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 'Keeping Track of New York City's Children'; /indicators lists 124 indicator pages; indicator page has an 'Export' control",
   "notes": "124 = indicators, not datasets. Community-district and borough level child wellbeing data.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "intro.nyc (independent project)",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "intro.nyc and nyc_legislation data mirror",
   "url": "https://intro.nyc/",
   "platform": "Static site + GitHub data repo",
   "api_type": "Bulk JSON in GitHub repo",
   "api_endpoint": "https://github.com/jehiah/nyc_legislation",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "intro.nyc HTTP 200 'NYC Council Legislation Search'; links to github.com/jehiah/nyc_legislation ('A Mirror of NYC Legislation', pushed 2026-11-04); last_sync.json shows Matters synced 2026-11-04",
   "notes": "Individual civic-tech project, not a nonprofit (entity_type closest fit). Mirrors Council Legistar: introduction/, resolution/, events/, land_use/, people/.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://raw.githubusercontent.com/jehiah/nyc_legislation/master/last_sync.json'"
  },
  {
   "tier": 4,
   "entity": "JustFix",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "Who Owns What",
   "url": "https://whoownswhat.justfix.org/",
   "platform": "Django API + React front end",
   "api_type": "REST/JSON (undocumented)",
   "api_endpoint": "https://wow-django.herokuapp.com/api/address",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "whoownswhat.justfix.org HTTP 200; API at wow-django.herokuapp.com/api/address with borough+5-digit block+4-digit lot returned geosearch bbl 3012380016 and landlord portfolio JSON",
   "notes": "API host found from validation errors; undocumented, may change. Built on nycdb (github.com/nycdb/nycdb, Housing Data Coalition), which is software, not a data portal.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://wow-django.herokuapp.com/api/address?block=01238&lot=0016&borough=3'"
  },
  {
   "tier": 4,
   "entity": "Lehman College (CUNY)",
   "entity_type": "university",
   "region": "NYC Metro / Long Island",
   "portal_name": "Bronx Information Portal (Lehman College Community Connect)",
   "url": "https://bronx.lehman.cuny.edu/",
   "platform": "Socrata",
   "api_type": "SODA",
   "api_endpoint": "https://bronx.lehman.cuny.edu/resource/{id}.json",
   "key_required": "N",
   "dataset_count": 352,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; page title 'Lehman College Community Connect: Bronx Information Portal'; Socrata Discovery API domains=bronx.lehman.cuny.edu resultSetSize=472; SODA query returned Bronx 311 rows",
   "notes": "472 is the Discovery API count for the domain (all asset types). The domain's own /api/catalog/v1 returned 10000 (likely federated/capped), so do not use that. Many assets are Bronx-filtered copies of NYC Open Data (e.g. fbbh-77rh Bronx 311 Dirty Sidewalk). 352 datasets (472 assets), Socrata Discovery API.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://bronx.lehman.cuny.edu/resource/fbbh-77rh.json?$limit=1'"
  },
  {
   "tier": 4,
   "entity": "New York Public Library",
   "entity_type": "library",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC Space/Time Directory",
   "url": "https://spacetime.nypl.org/",
   "platform": "Retired",
   "api_type": "Was bulk data + APIs",
   "api_endpoint": "https://spacetime.nypl.org/",
   "key_required": "—",
   "dataset_count": null,
   "status": "dead",
   "last_verified": "2026-11-05",
   "evidence": "spacetime.nypl.org redirects to wayback.archive-it.org/23478/20241118143457/https://spacetime.nypl.org/",
   "notes": "Retired (archived Nov 2024 capture). Historical NYC gazetteer data may survive on GitHub (UNCONFIRMED, not checked).",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "New York Public Library",
   "entity_type": "library",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYPL Digital Collections API",
   "url": "https://api.repo.nypl.org/",
   "platform": "Custom REST",
   "api_type": "REST/JSON",
   "api_endpoint": "https://api.repo.nypl.org/api/v2/items/search",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Unauthenticated search returns HTTP 401 'HTTP Token: Access denied'; digitalcollections.nypl.org HTTP 200",
   "notes": "Token required (free sign-up per NYPL; not tested). Includes NYC maps, photographs (e.g. historical NYC imagery). Not tested with a key.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "New York Public Library",
   "entity_type": "library",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYPL Map Warper",
   "url": "https://maps.nypl.org/warper/",
   "platform": "Map Warper (retired)",
   "api_type": "Was WMS/tiles + REST",
   "api_endpoint": "https://maps.nypl.org/warper/",
   "key_required": "—",
   "dataset_count": null,
   "status": "dead",
   "last_verified": "2026-11-05",
   "evidence": "maps.nypl.org redirects to wayback.archive-it.org/13216/20210520171637/... (Archive-It capture)",
   "notes": "Retired; still cited for georectified historical NYC atlases. Point tools elsewhere.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "NYC Crash Mapper",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "NYC Crash Mapper",
   "url": "https://crashmapper.org/",
   "platform": "Custom web map",
   "api_type": "UNCONFIRMED",
   "api_endpoint": null,
   "key_required": "UNCONFIRMED",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "crashmapper.org HTTP 200 'NYC Crash Mapper'; backend data host not found in JS bundles",
   "notes": "Operator (CHEKPEDS, per prior knowledge) not confirmed on the page; data derived from NYPD collisions on NYC Open Data. Data access UNCONFIRMED.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "NYU Furman Center",
   "entity_type": "research-center",
   "region": "NYC Metro / Long Island",
   "portal_name": "CoreData.nyc and Data Set Downloads",
   "url": "https://coredata.nyc/",
   "platform": "Custom web map + static file downloads",
   "api_type": "Bulk download (CSV/XLSX)",
   "api_endpoint": "https://www.furmancenter.org/data-tools-resources/data-tools-data-downloads/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "coredata.nyc HTTP 200 'CoreData.nyc'; downloads page (a browser) lists FC_SHD_subsidy_analysis_2026-05-05.csv, FC_SHD_bbl_analysis_2026-05-05.csv, Neighborhood Indicators xlsx under furmancenter.org/files/CoreData/",
   "notes": "furmancenter.org returns 403 to curl (bot protection); browser works. Subsidized Housing Database + neighborhood indicators. No query API found. Dataset count not reported.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Rauch Foundation (Long Island Index)",
   "entity_type": "nonprofit",
   "region": "NYC Metro / Long Island",
   "portal_name": "Long Island Index",
   "url": "https://www.longislandindex.org/",
   "platform": "Retired",
   "api_type": "None",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "dead",
   "last_verified": "2026-11-05",
   "evidence": "longislandindex.org redirects to newsday.com/nextli",
   "notes": "Retired; still cited for Long Island indicators and maps.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Social Science Research Council (Measure of America)",
   "entity_type": "research-center",
   "region": "NYC Metro / Long Island",
   "portal_name": "DATA2GO.NYC",
   "url": "https://www.data2go.nyc/",
   "platform": "Static site + open file directory",
   "api_type": "Bulk download (CSV directory)",
   "api_endpoint": "https://www.data2go.nyc/data/tabular/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; /data/ is an open directory (geo/, tabular/ modified 2026-06-02); tabular/ lists D2G_Flatfile_Boro/CD/NTA/NYC/Puma/Tract.csv; Boro CSV HEAD 200",
   "notes": "Owner attribution to Measure of America/SSRC from prior knowledge; ssrc.org returned 403 so not re-verified on the site itself (UNCONFIRMED).",
   "registry_id": null,
   "page": null,
   "example_request": "curl -sI 'https://www.data2go.nyc/data/tabular/D2G_Flatfile_Boro.csv'"
  },
  {
   "tier": 4,
   "entity": "Citizens Budget Commission",
   "entity_type": "nonprofit",
   "region": "Statewide",
   "portal_name": "CBC website (data tools UNCONFIRMED)",
   "url": "https://cbcny.org/",
   "platform": "Drupal site behind Cloudflare; Datawrapper charts",
   "api_type": "none (reports, Datawrapper-chart dashboards, an AI Q&A over its publications)",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "no-portal",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "Cloudflare returns 403 to curl. A real browser clears the challenge after about 8 s. The \"Competitive NYC\" Value Proposition Tracker (https://cbcny.org/research/competitive-nyc, Apr 20 2026) is a dashboard of Datawrapper embeds over third-party data (Census PEP, IRS SOI and others, per https://cbcny.org/about-data). I found no download link or bulk data on the page. Datawrapper charts can expose a per-chart \"Get the data\" CSV, but I did not see one enabled here. https://insights.cbcny.org/ is \"CBC Insights … powered by AI\", built from 2,000+ CBC publications. It is a search and Q&A tool, not data.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Columbia University Libraries",
   "entity_type": "library",
   "region": "Statewide",
   "portal_name": "Columbia GeoData",
   "url": "https://geodata.library.columbia.edu/",
   "platform": "GeoBlacklight",
   "api_type": "Blacklight JSON API",
   "api_endpoint": "https://geodata.library.columbia.edu/catalog.json",
   "key_required": "N",
   "dataset_count": 104570,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; catalog.json total_count=104570 (Public 102664, Restricted 1906); q=New+York=7360, q=New+York+City=2200",
   "notes": "Aggregator: providers include Stanford, HDX, Indiana, Princeton, Harvard (OpenGeoMetadata), so most of the 104,570 are not NY and not Columbia's. Many NY hits are scanned historical maps. Count is whole catalog, not NY.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://geodata.library.columbia.edu/catalog.json?q=New+York+City&per_page=3'"
  },
  {
   "tier": 4,
   "entity": "Cornell University (Northeast Regional Climate Center)",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "RCC-ACIS web services",
   "url": "https://www.nrcc.cornell.edu/",
   "platform": "ACIS",
   "api_type": "REST/JSON",
   "api_endpoint": "https://data.rcc-acis.org/",
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "nrcc.cornell.edu HTTP 200; data.rcc-acis.org/StnMeta?state=NY returned NY station JSON (e.g. Dansville Municipal Airport)",
   "notes": "Covers the Northeast and beyond, filterable to NY. Climate, not civic in the narrow sense; include if the registry wants environmental data.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://data.rcc-acis.org/StnMeta?state=NY'"
  },
  {
   "tier": 4,
   "entity": "Cornell University (Program on Applied Demographics)",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "PAD data: county and state projections, Census 2020, school districts",
   "url": "https://pad.human.cornell.edu/",
   "platform": "ColdFusion web app",
   "api_type": "Interactive GET query form; no documented API",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; projections.cfm has GET form for all 62 counties and 10 regions, with charted data; links to methodology PDF",
   "notes": "Official NYS population projections producer for the state (per PAD; not re-verified). Backend endpoint behind getNewData() not documented.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Cornell University Library",
   "entity_type": "library",
   "region": "Statewide",
   "portal_name": "CUGIR (Cornell University Geospatial Information Repository)",
   "url": "https://cugir.library.cornell.edu/",
   "platform": "GeoBlacklight",
   "api_type": "Blacklight JSON API; bulk download per record",
   "api_endpoint": "https://cugir.library.cornell.edu/catalog.json",
   "key_required": "N",
   "dataset_count": 893,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; catalog.json meta total_count=893; q=Tompkins returns 81 records incl. 'Tompkins County'",
   "notes": "NY-focused geospatial repository (boundaries, land cover, agriculture, etc.). Count is whole catalog.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://cugir.library.cornell.edu/catalog.json?q=Tompkins&per_page=1'"
  },
  {
   "tier": 4,
   "entity": "CUNY Graduate Center, Center for Urban Research",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "Redistricting & You / CUNY Mapping Service",
   "url": "https://newyork.redistrictingandyou.org/",
   "platform": "Vue + Mapbox GL web app",
   "api_type": "none (interactive web map only)",
   "api_endpoint": null,
   "key_required": "—",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "The root redistrictingandyou.org now says it reflects districts \"in effect before the 2021-2022 redistricting cycle\" and points to the NY and US versions. The NY version compares plans, e.g. \"Congress (2022-2024)\" against \"Congress (2024 Enacted; 2025-2032)\", for Congress, Assembly and State Senate. Its page text and HTML contain no download, shapefile, GeoJSON or ZIP links. Its Resources section links out to Census PL 94-171, TIGER, the Redistricting Data Hub and others. The layers are Mapbox tilesets under the `cunycur` account, which is not a public data API. Contact: cunymapping@gc.cuny.edu.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Empire Center for Public Policy",
   "entity_type": "nonprofit",
   "region": "Statewide",
   "portal_name": "SeeThroughNY",
   "url": "https://www.seethroughny.net/",
   "platform": "Custom web database",
   "api_type": "Web search (no public API found)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 'SeeThroughNY :: Home'; Data Notes page describes payroll database for NYS, NYC, authorities, school districts, counties, cities, towns, villages",
   "notes": "Payrolls, pensions, contracts. No API or bulk export found in page links (UNCONFIRMED). Data is FOIL-derived from government sources.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "John Jay College (CUNY) Data Collaborative for Justice",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "DCJ Analytic Tools",
   "url": "https://datacollaborativeforjustice.org/analytic-tools/",
   "platform": "WordPress + embedded dashboards",
   "api_type": "Interactive dashboards; download UNCONFIRMED",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200 'Analytic Tools - Data Collaborative for Justice'; lists NYC Criminal Summons Dashboard, NYC Jail Population Tracker, NYS conviction disparities",
   "notes": "Dashboard platform and downloadability not confirmed.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "New York University Libraries",
   "entity_type": "library",
   "region": "Statewide",
   "portal_name": "NYU Spatial Data Repository (now in UltraViolet)",
   "url": "https://ultraviolet.library.nyu.edu/communities/sdr/about",
   "platform": "InvenioRDM",
   "api_type": "InvenioRDM REST API",
   "api_endpoint": "https://ultraviolet.library.nyu.edu/api/communities/sdr/records",
   "key_required": "N",
   "dataset_count": 50,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "geo.nyu.edu 301-redirects to UltraViolet SDR community; API hits.total=50, q=\"New York\"=10 (e.g. 'County-Level Real Property Tax Parcel Data for New York State, 2004'); community description says NYU VPN may be needed to preview, authenticated users can download",
   "notes": "UNCONFIRMED whether migration from the old geo.nyu.edu GeoBlacklight is complete; only 50 records in the community now. Download access for non-NYU users UNCONFIRMED. Key: N (search); downloads may need NYU auth.",
   "registry_id": null,
   "page": null,
   "example_request": "curl -s 'https://ultraviolet.library.nyu.edu/api/communities/sdr/records?size=1&q=%22New%20York%22'"
  },
  {
   "tier": 4,
   "entity": "Rockefeller Institute of Government (SUNY)",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "Rockefeller Institute Data Hub: New York Data Sets (NYS Statistical Yearbook tables)",
   "url": "https://www.rockinst.org/data-hub/new-york-data-sets-001/",
   "platform": "WordPress",
   "api_type": "Bulk download (XLS files)",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": 558,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "Rechecked live on 2026-11-05 in a browser and over HTTP; details in notes.",
   "notes": "In a real browser, the NY Counts page (https://www.rockinst.org/nycounts/data/) still shows the raw shortcode `[iheu_ultimate_oxi id=\"31\"]` where the interactive should be, so the plugin is broken. It is not just a curl artifact. Its \"index.html\" link loops back to the same page. The Data Hub's New York Data Sets page lists 558 unique `.xls/.xlsx/.csv/.zip` links, with upload folders dated 2018, 2020 and 2022. Sampled tables run to 2016 to 2019 data, so the data is historical. The \"New York State Directory\" and \"Data Visualizations\" pages were not opened. API: example: https://www.rockinst.org/wp-content/uploads/2018/01/N-1.xls. Datasets: XLS links on the page.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "University at Albany (NYS Mesonet)",
   "entity_type": "research-center",
   "region": "Statewide",
   "portal_name": "NYS Mesonet data",
   "url": "https://www.nysmesonet.org/",
   "platform": "Custom",
   "api_type": "Data request form; api.nysmesonet.org exists but undocumented",
   "api_endpoint": "https://api.nysmesonet.org/",
   "key_required": "Y",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "nysmesonet.org HTTP 200; Request Data page: free for personal use, licensing for other entities, cost-recovery fee possible, agreement checkbox; api.nysmesonet.org returns only a host name",
   "notes": "State weather network operated by UAlbany. Not open data in the usual sense: terms apply. Did not submit the form. Access is by data request / license.",
   "registry_id": null,
   "page": null,
   "example_request": null
  },
  {
   "tier": 4,
   "entity": "Rochester Area Community Foundation",
   "entity_type": "nonprofit",
   "region": "Western NY (Finger Lakes + WNY)",
   "portal_name": "ACT Rochester",
   "url": "https://www.actrochester.org/",
   "platform": "Squarespace",
   "api_type": "Per-indicator download buttons; no API found",
   "api_endpoint": null,
   "key_required": "N",
   "dataset_count": null,
   "status": "live",
   "last_verified": "2026-11-05",
   "evidence": "HTTP 200; Community Indicators Overview says 'All data is available to download using the buttons below each indicator'",
   "notes": "Regional indicators organized by Urban Institute Upward Mobility Framework. Indicator count not reported.",
   "registry_id": null,
   "page": null,
   "example_request": null
  }
 ]
}