Butler County, OH parcel and infrastructure data API
Korzy has about 170,000 parcel records for Butler County, Ohio, with source updates through November 2026. Nearly every record carries land use; 73% include year built and 73% include building size. In and around the county the API also maps 8 power plants with about 2,100 MW of capacity, led by natural gas; 5 data-center projects (1 operating); and about 200 miles of active rail. Look up any parcel by address or coordinates, then check nearby data-center projects, utilities and grid context at the same point.
Parcel coverage in Butler County
About 170,000 parcel records with boundaries, situs addresses and parcel numbers, with the latest source update from November 2026. Each record has a stable korzy_id you can store and look up again with /api/parcel-record. Share of records with each field:
| Field | Coverage | Share |
|---|---|---|
| Situs address | Nearly all · 100% | |
| Owner name | Not published | |
| Assessed or market value | Not published | |
| Year built | Many · 73% | |
| Building size | Many · 73% | |
| Last sale | Many · 59% | |
| Land use | Nearly all · 95% | |
| Zoning | Not published |
Butler County records do not include owner names. See pricing for credit costs.
Infrastructure in and around Butler County
Power plants
8 operable plants with about 2,100 MW of nameplate capacity; largest by capacity: natural gas, battery and pumped storage, other fuels. Proposed generators add about 10 MW.
Plant details: /api/power/plants/{plant_id}
Substations and transmission
About 95 in-service substations, 3 rated 230 kV or higher.
About 400 miles of transmission lines: about 65 mi at under 100 kV; about 170 mi at 100–161 kV; about 75 mi at 345 kV.
Water and sewer service
Service areas of about 15 community water systems cover about 89% of the county.
Sewer service areas of about 15 systems cover about 33%.
At a point: /api/utilities/context
Data-center projects
5 tracked projects: 1 operating, 1 permitted, 2 proposed, 1 status not reported. Reported planned capacity: about 250 MW.
Within 10 km of a point: /api/datacenters/context
Flood zones and wetlands
Special flood hazard areas cover about 7% of the county on the current federal flood maps, published October 2026.
Mapped wetlands cover about 1%.
Rail, ports and freight
- About 200 miles of active rail, about 110 of it main line
- About 10 miles of national freight network highway
Within 25 km of a point: /api/logistics/context
Example requests for Butler County
Real responses from the production API, trimmed to the main fields. Every request needs an API key with api:read; see authentication and credits and limits.
1. Find a parcel by address
/api/search matches 312 CLEVELAND AVE, HAMILTON, OH and returns the parcel's korzy_id, coordinates and record. 1 credit.
curl --fail-with-body -sS --get \
-H "Authorization: Bearer $KORZY_API_KEY" \
--data-urlencode 'q=312 CLEVELAND AVE, HAMILTON, OH' \
https://api.korzy.co/api/searchPython
import os
import requests
response = requests.get(
"https://api.korzy.co/api/search",
params={"q": "312 CLEVELAND AVE, HAMILTON, OH"},
headers={"Authorization": f"Bearer {os.environ['KORZY_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
parcel = response.json()["results"][0]
print(parcel["korzy_id"], parcel["longitude"], parcel["latitude"])Response (trimmed)
{
"results": [
{
"korzy_id": "39017-ffd3b0abeefc2bed305b",
"address": "312 CLEVELAND AVE HAMILTON 45013",
"city": "HAMILTON",
"postcode": "45013",
"county": "Butler",
"statefp": "39",
"longitude": -84.56767500413793,
"latitude": 39.4079213,
"match_type": "exact",
"parcelid": "39017-P6411014000125",
"parceladdr": "312 CLEVELAND AVE HAMILTON 45013",
"parcelcity": "HAMILTON",
"situs_zip": "45013",
"usedesc": "685: Exm-Public Woship",
"yearbuilt": 1927,
"bldgsqft": 6186,
"taxacres": 0,
"updated": "2023-08-29",
"geoid": "39017"
}
],
"truncated": false
}2. Look up the parcel at a point
/api/query/point returns every parcel whose boundary covers the coordinates; here it returns the same record, 39017-ffd3b0abeefc2bed305b, in records. 1 credit per 10 records requested.
curl --fail-with-body -sS --get \
-H "Authorization: Bearer $KORZY_API_KEY" \
--data-urlencode 'longitude=-84.567675' \
--data-urlencode 'latitude=39.407921' \
--data-urlencode 'limit=5' \
https://api.korzy.co/api/query/pointJavaScript
const params = new URLSearchParams({"longitude": "-84.567675", "latitude": "39.407921", "limit": "5"});
const response = await fetch(`https://api.korzy.co/api/query/point?${params}`, {
headers: { Authorization: `Bearer ${process.env.KORZY_API_KEY}` },
});
if (!response.ok) throw new Error(`Korzy API ${response.status}`);
const { records } = await response.json();
console.log(records.map((record) => record.korzy_id));3. Check nearby data-center projects
/api/datacenters/context lists data-center projects within 10 km of the point, nearest first. 1 credit per 10 records requested.
curl --fail-with-body -sS --get \
-H "Authorization: Bearer $KORZY_API_KEY" \
--data-urlencode 'longitude=-84.567675' \
--data-urlencode 'latitude=39.407921' \
--data-urlencode 'radius_km=10' \
--data-urlencode 'limit=3' \
https://api.korzy.co/api/datacenters/contextPython
import os
import requests
response = requests.get(
"https://api.korzy.co/api/datacenters/context",
params={"longitude": "-84.567675", "latitude": "39.407921", "radius_km": "10", "limit": "3"},
headers={"Authorization": f"Bearer {os.environ['KORZY_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
for project in response.json()["projects"]:
print(project["name"], project["status"], project["distance_km"])Response (trimmed)
{
"projects": [
{
"project_id": "dc_81e791bd3dc24a3e05e1",
"name": "Hamilton Innovation Center",
"operator": "Logistix Property Group",
"status": "proposed",
"city": "Hamilton",
"state": "OH",
"longitude": -84.5613,
"latitude": 39.3995,
"location_precision": "approximate",
"distance_km": 1.084809732779438
},
{
"project_id": "dc_778bcc3f3340876110c9",
"name": "CyrusOne Cincinnati-Hamilton CIN4",
"operator": "CyrusOne",
"status": "unknown",
"state": "OH",
"longitude": -84.56589096932771,
"latitude": 39.3847186,
"location_precision": "footprint",
"distance_km": 2.58454313250437
}
],
"radius_km": 10,
"limit": 3,
"truncated": false
}Butler County data questions
- How many parcels in Butler County include year built?
- About 120,000 of about 170,000 parcel records (73%) include year built.
- Does the Korzy API return owner names for Butler County parcels?
- Butler County parcel records do not include owner names. Values, land use and building facts are returned where the county publishes them.
- How many data-center projects are in Butler County?
- Korzy tracks 5 data-center projects in Butler County: 2 proposed, 1 operating and 1 permitted. /api/datacenters/context lists projects within 10 km of any point.
- How much power generation is in Butler County?
- 8 operable power plants in Butler County total about 2,100 MW of nameplate capacity, mainly natural gas, battery and pumped storage and other fuels.
- Which water systems serve Butler County?
- Service areas of about 15 community water systems cover about 89% of Butler County, and sewer service areas cover about 33%. /api/utilities/context returns the water and sewer matches at a point.
More featured counties
- Hamilton County, OHBorders Butler County · about 420,000 parcels
- Franklin County, OHabout 500,000 parcels
- Cuyahoga County, OHabout 520,000 parcels
Build on Butler County parcel data
Search, point and record lookups work the same in every county Korzy covers. Credits are shared across parcels, utilities, environment, logistics and data-center routes.