Parcel Owner Lookup — Address to Owner & Assessor Record avatar

Parcel Owner Lookup — Address to Owner & Assessor Record

Pricing

from $11.00 / 1,000 results

Go to Apify Store
Parcel Owner Lookup — Address to Owner & Assessor Record

Parcel Owner Lookup — Address to Owner & Assessor Record

Turn street addresses into parcel IDs, owner names, mailing addresses, assessed values & coordinates from official assessor rolls (Chicago/Cook County, Philadelphia, NYC) with Census-geocoder fallback. Address-grounding primitive for AI agents, proptech & skip tracing. $0.02/lookup.

Pricing

from $11.00 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Parcel Owner Lookup — Address to Owner & Assessor Record API

Turn any US street address into a parcel ID, owner name, owner mailing address, assessed value, property class, and coordinates — straight from official government assessment rolls, with a US Census geocoder fallback. One address in, exactly one structured row out. $0.02 per lookup (pay per result).

Built as an address-grounding primitive: the boring-but-critical first step of property research, lead generation, skip tracing, and AI-agent real-estate workflows.

Who it's for

  • AI agents & LLM apps — ground a free-text address to a canonical parcel + owner before doing anything else (valuation, permits, liens, outreach). Clean, described output fields make this a chainable MCP tool.
  • Proptech developers — add "who owns this property?" to your product without licensing a parcel-data vendor.
  • Skip tracing / real-estate lead gen — the owner_mailing_address field is the pre-step for direct-mail and owner-outreach lists.
  • Title, lending & due-diligence analysts — confirm the recorded owner and parcel ID behind an address in seconds.

Coverage (v1 — more counties compound)

AreaRollWhat you get
Chicago / Cook County, ILCook County Assessor Parcel Universe (Socrata)PIN, owner/taxpayer + mailing address, class, lat/lon
Philadelphia, PAOPA property roll (Carto SQL)OPA parcel number, owner(s), mailing address, market value, category, lat/lon
New York City (5 boroughs)MapPLUTO (Socrata)BBL, owner name, total assessed value, building class, lat/lon
Everywhere elseUS Census geocoderNormalized address + lat/lon (match_confidence: "geocoded", no parcel/owner)

These three rolls cover ~13M people and three of the largest US property markets. More counties are added over time — each new roll is one config block.

Example input

{
"addresses": [
"1060 W Addison St, Chicago, IL",
"1234 Market St, Philadelphia, PA",
"350 5th Ave, New York, NY"
],
"maxResults": 10
}

Example output row

{
"input_address": "1234 Market St, Philadelphia, PA",
"matched_source": "philadelphia-opa",
"match_confidence": "exact",
"parcel_id": "453337700",
"owner_name": "SEPTA",
"owner_mailing_address": "1234 MARKET ST, PHILADELPHIA PA, 19107",
"assessed_value": 38400000,
"property_class": "4",
"property_class_desc": "COMMERCIAL",
"situs_address": "1234 MARKET ST, PHILADELPHIA, PA, 19107",
"lat": 39.9522,
"lon": -75.1605,
"source_url": "https://phl.carto.com/api/v2/sql?q=..."
}

Output fields

  • input_address — your address string, echoed for joining.
  • matched_sourcecook-county-parcel-universe | philadelphia-opa | nyc-pluto | census-geocoder | null.
  • match_confidenceexact (house + street matched the roll verbatim), fuzzy (same street with a drifted suffix — e.g. Wrigley Field is "W ADDISON AVE" on the Cook roll — or nearest house number on the right street), geocoded (coordinates only), none (no match; the row is still emitted — this actor never fails on a bad address).
  • parcel_id — Cook 14-digit PIN / Philadelphia OPA number / NYC 10-digit BBL.
  • owner_name, owner_mailing_address — owner or taxpayer of record + mailing address (mailing is null for NYC; PLUTO doesn't publish it).
  • assessed_value — NYC total assessed value; Philadelphia OPA certified market value; null for Cook County v1 (its parcel-universe roll carries no value column).
  • property_class, property_class_desc — jurisdiction class code + readable description.
  • situs_address, lat, lon — the roll's own address for the parcel and WGS84 coordinates.
  • source_url — direct API link to the underlying official record for citation/re-fetch.

How matching works

Addresses are normalized (case, punctuation, St↔Street, Ave↔Avenue, W↔West, 5th↔5↔Fifth) and routed by city/ZIP to the right roll. The matcher then tries, in order: exact house + street; nearest house number on the same street (within 100); same house with a drifted street suffix. Anything still unmatched falls back to Census geocoding, then to an honest none row.

Use as an MCP tool

This Actor is callable directly by any MCP-compatible AI agent through Apify's hosted MCP server. There is no server to run and no integration code to write - the tool schema an agent sees is generated from this Actor's own input and dataset schemas.

Endpoint

https://mcp.apify.com?tools=malonestar/parcel-owner-lookup

Claude Desktop, Claude Code or Cursor - add to claude_desktop_config.json, .mcp.json or .cursor/mcp.json respectively:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=malonestar/parcel-owner-lookup",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Get a token at https://console.apify.com/settings/integrations. Claude Desktop can also authenticate interactively via OAuth against https://mcp.apify.com with no headers block. Full reference: https://docs.apify.com/platform/integrations/mcp

Try asking your agent

Who owns 1060 W Addison St, Chicago IL, and what is the mailing address on the assessor roll?

Chains well with - expose these alongside it by comma-separating the tools parameter, and the agent can carry results from one into the next:

  • malonestar/distressed-property-signal-stacker
  • malonestar/epa-contaminated-site-screener
  • malonestar/site-due-diligence-bundle
https://mcp.apify.com?tools=malonestar/parcel-owner-lookup,malonestar/distressed-property-signal-stacker,malonestar/epa-contaminated-site-screener,malonestar/site-due-diligence-bundle

Billing is unchanged when called as an MCP tool: this Actor is Pay-Per-Event and an agent pays the same per-result price a human does. A run that cannot answer fails without billing rather than returning an unverified negative.

FAQ

How do I find out who owns a property by address? Run this actor with the address; it returns the owner of record and their mailing address from the official assessor roll (Chicago, Philadelphia, NYC in v1).

Is this legal / where does the data come from? All sources are public, official government open-data APIs (Cook County Socrata, Philadelphia OPA via Carto, NYC Open Data, US Census). No scraping of private sites.

What happens with an address outside Chicago/Philly/NYC? You still get a row: the Census geocoder supplies normalized address + coordinates with match_confidence: "geocoded" and no parcel/owner.

Why did my lookup come back fuzzy? Assessor rolls often disagree with common usage (suffix drift, canonical lot addresses). fuzzy means the right street was found but not a verbatim match — check situs_address to verify.

Can I look up thousands of addresses? Yes — pass up to 5,000 per run (maxResults). Each address = one result = $0.02.

How current is the data? Live API calls at run time. Philadelphia and NYC rolls are actively maintained; the Cook County parcel-universe vintage trails the assessor's cycle.