Parcel Owner Lookup — Address to Owner & Assessor Record
Pricing
from $11.00 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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_addressfield 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)
| Area | Roll | What you get |
|---|---|---|
| Chicago / Cook County, IL | Cook County Assessor Parcel Universe (Socrata) | PIN, owner/taxpayer + mailing address, class, lat/lon |
| Philadelphia, PA | OPA 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 else | US Census geocoder | Normalized 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_source—cook-county-parcel-universe|philadelphia-opa|nyc-pluto|census-geocoder| null.match_confidence—exact(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-stackermalonestar/epa-contaminated-site-screenermalonestar/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.