Marion County, OR parcel and infrastructure data API
Korzy has about 120,000 parcel records for Marion County, Oregon, with source updates through October 2026. Nearly every record carries values and land use; 90% include last sale and 90% include building size. In and around the county the API also maps 3 data-center projects; 1 port with reported cargo; and about 30 power plants with about 180 MW of capacity, led by hydro. Look up any parcel by address or coordinates, then check water, sewer and infrastructure context at the same point.
Parcel coverage in Marion County
About 120,000 parcel records with boundaries, situs addresses and parcel numbers, with the latest source update from October 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 · 98% | |
| Owner name | Most · 75% | |
| Assessed or market value | Nearly all · 95% | |
| Year built | Most · 76% | |
| Building size | Most · 90% | |
| Last sale | Most · 90% | |
| Land use | Nearly all · 97% | |
| Zoning | Many · 74% |
Owner name and mailing address are returned with include_owner=true, which doubles a request's cost: a parcel record costs 2 credits instead of 1. 75% of Marion County records carry an owner name.
Infrastructure in and around Marion County
Power plants
About 30 operable plants with about 180 MW of nameplate capacity; largest by capacity: hydro, solar, other fuels.
Plant details: /api/power/plants/{plant_id}
Substations and transmission
About 55 in-service substations, 7 rated 230 kV or higher.
About 520 miles of transmission lines: about 60 mi at under 100 kV; about 140 mi at 100–161 kV; about 240 mi at 220–287 kV; about 80 mi at 500 kV.
Water and sewer service
Service areas of about 70 community water systems cover about 7% of the county.
Sewer service areas of about 15 systems cover about 17%.
At a point: /api/utilities/context
Data-center projects
3 tracked projects: 1 proposed, 2 status not reported.
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 September 2026.
Rail, ports and freight
- About 150 miles of active rail, about 120 of it main line
- About 40 miles of national freight network highway
- 1 port area with reported cargo tonnage
Within 25 km of a point: /api/logistics/context
Example requests for Marion 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 2470 LANCASTER DR NE, SALEM, OR 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=2470 LANCASTER DR NE, SALEM, OR' \
https://api.korzy.co/api/searchPython
import os
import requests
response = requests.get(
"https://api.korzy.co/api/search",
params={"q": "2470 LANCASTER DR NE, SALEM, OR"},
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": "41047-6b13097fbd914fb6f22f",
"address": "2470 LANCASTER DR NE",
"city": "SALEM",
"postcode": "97305",
"county": "MARION",
"statefp": "41",
"longitude": -122.98182505527994,
"latitude": 44.9591493002099,
"match_type": "exact",
"parcelid": "072W18CA00900",
"parceladdr": "2470 LANCASTER DR NE",
"parcelcity": "SALEM",
"situs_zip": "97305",
"usedesc": "SCHOOLS - PUBLIC & PRIVATE IMPROVED",
"land_use_code": "921",
"zoning_code": "MU-III",
"yearbuilt": 2011,
"bldgsqft": 9318,
"taxacres": 2.97,
"totalvalue": 1394070,
"land_value_usd": 332790,
"improvement_value_usd": 1075720,
"assessed_value_usd": 0,
"market_value_usd": 1408510,
"saledate": "2002-01-14",
"saleamt": 2800000,
"updated": "2026-10-25",
"geoid": "41047"
}
],
"truncated": false
}With include_owner=true (2 credits) the record adds owner fields, shown here as placeholders:
{
"owner_name": "EXAMPLE HOLDINGS LLC",
"owner_mailing_address": "100 EXAMPLE ST, SAMPLE CITY, ST 00000"
}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, 41047-6b13097fbd914fb6f22f, in records. 1 credit per 10 records requested.
curl --fail-with-body -sS --get \
-H "Authorization: Bearer $KORZY_API_KEY" \
--data-urlencode 'longitude=-122.981825' \
--data-urlencode 'latitude=44.959149' \
--data-urlencode 'limit=5' \
https://api.korzy.co/api/query/pointJavaScript
const params = new URLSearchParams({"longitude": "-122.981825", "latitude": "44.959149", "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 water and sewer service
/api/utilities/context returns the water and sewer service areas at the point and the nearest treatment plants. 1 credit.
curl --fail-with-body -sS --get \
-H "Authorization: Bearer $KORZY_API_KEY" \
--data-urlencode 'longitude=-122.981825' \
--data-urlencode 'latitude=44.959149' \
https://api.korzy.co/api/utilities/contextPython
import os
import requests
response = requests.get(
"https://api.korzy.co/api/utilities/context",
params={"longitude": "-122.981825", "latitude": "44.959149"},
headers={"Authorization": f"Bearer {os.environ['KORZY_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
matches = response.json()["matches"]
print([area["name"] for area in matches["water"]])Response (trimmed)
{
"longitude": -122.981825,
"latitude": 44.959149,
"matches": {
"water": [
{
"feature_id": "water:884",
"name": "SALEM PUBLIC WORKS",
"boundary_basis": "System Sourced"
}
],
"sewer": [
{
"feature_id": "sewer:13246",
"name": "SALEM WILLOW LAKE STP",
"boundary_basis": "Modeled"
}
]
},
"nearby_treatment": [
{
"feature_id": "treatment:8218",
"name": "SALEM WILLOW LAKE STP",
"distance_km": 7.680579812779168
},
{
"feature_id": "treatment:8262",
"name": "BROOKS SEWAGE TREATMENT PLANT",
"distance_km": 9.999957229161929
}
]
}Marion County data questions
- How many parcels in Marion County include year built?
- About 91,000 of about 120,000 parcel records (76%) include year built.
- Does the Korzy API return owner names for Marion County parcels?
- Yes. 75% of Marion County parcel records carry an owner name. Add include_owner=true to a point, search or parcel-record request; it doubles the request's cost, so a single parcel record costs 2 credits.
- How many data-center projects are in Marion County?
- Korzy tracks 3 data-center projects in Marion County: 2 status not reported and 1 proposed. /api/datacenters/context lists projects within 10 km of any point.
- How much power generation is in Marion County?
- About 30 operable power plants in Marion County total about 180 MW of nameplate capacity, mainly hydro, solar and other fuels.
- Which water systems serve Marion County?
- Service areas of about 70 community water systems cover about 7% of Marion County, and sewer service areas cover about 17%. /api/utilities/context returns the water and sewer matches at a point.
More featured counties
- Clackamas County, ORBorders Marion County · about 190,000 parcels
- Washington County, ORabout 190,000 parcels
- Multnomah County, ORabout 280,000 parcels
- Umatilla County, ORabout 40,000 parcels
Build on Marion 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.