Property Owner, Tax & Deed Records Intel avatar

Property Owner, Tax & Deed Records Intel

Pricing

from $8.00 / 1,000 property records

Go to Apify Store
Property Owner, Tax & Deed Records Intel

Property Owner, Tax & Deed Records Intel

Unifies US county assessor / property-tax / recorder records into one parcel + owner schema: owner, assessed value, sale history, deed, tax status. Value layer: owner-to-parcel linking, portfolio rollups, equity/distress scoring. Public records, no skip-tracing. For investors, lenders, PropTech.

Pricing

from $8.00 / 1,000 property records

Rating

0.0

(0)

Developer

Seibs.co

Seibs.co

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Share

TL;DR for real-estate investors, wholesalers, lenders, PropTech, and insurers: Aggregates US county assessor / property-tax / recorder records - public-by-law, but scattered across thousands of county portals with no unified free API - into one normalized parcel + owner schema: owner name, situs + mailing address, assessed/land/improvement value, sale history, deed type, and tax status. On top of the raw records it adds the value layer the incumbents charge for: owner-to-parcel linking (find every property an owner controls), portfolio rollups, and equity/distress scoring (tax delinquency, absentee / out-of-state ownership, estimated equity, estate/trust, long tenure, portfolio owner). The fragmentation is exactly the moat PropStream ($99-300/mo), DataTree/RealQuest ($150-275/mo), and ListSource ($0.30-0.45/record, $50 min) monetize. Not another saturated Zillow/Redfin listing scraper - this is the ownership/tax graph underneath. Logged-out public records, no skip-tracing into private phone/email. Free Apify plan covers exploration runs on your $5 platform credit.

Run it in 30 seconds

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("seibs.co/property-records-intel").call(run_input={
"mode": "owner_portfolio",
"owner_names": ["HOUSING AUTHORITY"],
"counties": ["NYC", "DC"],
"include_distress": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Or via curl:

curl -X POST "https://api.apify.com/v2/acts/seibs.co~property-records-intel/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"mode": "property_search", "owner_names": ["ACME PROPERTIES LLC"], "counties": ["NYC","DC"]}'

Or click "Try for free" on this page if you prefer the no-code UI.

What you get

Each run produces:

  • A clean dataset, filterable in the Apify console and downloadable as CSV or JSON (views: overview, parcels, owners, distress)
  • An OUTPUT.html dashboard preview of your top records
  • A sample-output preview at ./.actor/sample-output.json
  • An access_notes record up top documenting each county's access method, proxy needs, coverage, and the responsible-use note

What does Property Records Intel do?

It queries each selected county's public property/assessor source and normalizes every result into one schema: apn, owner_name, owner_type (individual / entity / trust / estate / government), situs_address, mailing_address, land_use (residential / commercial / vacant_land / ...), assessed_total_value, last_sale_date + last_sale_price, deed_type, tax_status (paid / delinquent / exempt), year_built, and source_url. Then it runs the value layer:

  • Owner-to-parcel linking - groups parcels by a normalized owner key and flags portfolio owners (one owner holding multiple parcels - the wholesaler/investor signal). One owner_portfolio rollup per owner with parcel count, counties, total assessed value, and land-use mix.
  • Owner enrichment - classifies individual vs entity vs trust/estate, and derives owner-occupancy / absentee / out-of-state from the tax-roll mailing address vs the situs address (both public-record fields - no skip-trace).
  • Equity / distress scoring - from public assessor + recorder fields, derives motivation leads: tax delinquency, absentee / out-of-state owner, estimated equity (assessed value vs last recorded sale price), estate/trust ownership, long tenure, vacant land, and portfolio owner -> a per-parcel distress_score and a distress_summary rollup.

Modes

ModeWhat it returns
property_search (default)Every matching parcel per county for your owner / address / APN queries, plus owner_portfolio rollups.
parcel_profileDeep profile (assessed value, sale history, deed, tax status) for specific parcels (parcels=[{county, apn}]) - charges owner_enrichment per parcel that yields an owner.
owner_portfolioOne owner_portfolio record per owner with their resolved multi-parcel footprint and a portfolio_owner flag. The "find every property this owner controls" view.
distress_scanScores the resolved parcel set for equity + motivation signals - charges equity_distress_signal per flagged parcel.

County coverage: fragmented by design, unified here

US county property data shares no schema and no unified free API - that fragmentation is the moat we unify. Two parameterized connector bases cover the two dominant public-data shapes, so adding a county is one field_map dict:

  • ArcGISParcelConnector - the single most common county GIS pattern: an Esri ArcGIS REST FeatureServer/MapServer /query endpoint that takes a SQL where clause and returns {"features":[{"attributes":{...}}]} JSON.
  • SocrataParcelConnector - counties/cities that publish parcel + sales data on a Socrata open-data portal (SoQL JSON).

Coverage is honestly tiered.

Verified-live counties (3) - request + parser implemented, fixture-validated, AND the live endpoint confirmed returning real data:

CountySourceAccessSearch axesNotes
NYC (5 boroughs)DOF/DCP PLUTO (Socrata, 64uk-42ks)http_jsonowner, address, apn (BBL)Owner, assessed land/total value, building class, year built. No recorded-sale price in PLUTO (NYC sales live in DOF Rolling Sales / ACRIS).
DCOffice of Tax & Revenue - Common Ownership / Integrated Tax (ArcGIS layer 40)http_jsonowner, address, apn (SSL)Owner, mailing + premises address, assessment, sale date/price, deed instrument.
LA_CA (Los Angeles)LA County Assessor parcel layer (ArcGIS)http_jsonaddress, apnCA redacts owner names on the public parcel layer, so owner search is unavailable; APN + address return the assessment facts (situs, use type, roll land/improvement value, year built).

ArcGIS connectors pending a live URL recapture (2) - field map implemented and fixture-validated, but the documented service endpoint has moved, so they are registered as catalog until the live URL is refreshed (a one-line change): MECK_NC (Mecklenburg/Charlotte) and MARICOPA_AZ (Phoenix - Maricopa also publishes a public Assessor API that is a strong upgrade target).

Catalog counties (~28) - registered with the correct portal URL, access method, anti-bot level, and proxy tier, and wired into the escalation pipeline, but a per-county field_map is pending a live capture. These emit a documented county_pending note rather than fabricated data. Includes Cook (Chicago), Harris/Dallas/Travis/Bexar/Tarrant (TX), Miami-Dade/Broward/Hillsborough/Orange/Palm Beach (FL), King (Seattle), San Diego/Orange/Santa Clara (CA), Clark (Las Vegas), Wake (Raleigh), Fulton (Atlanta), Cuyahoga/Franklin (OH), Philadelphia/Allegheny (PA), Suffolk/Boston (MA), Denver, Salt Lake, Hennepin (Minneapolis), and the Maricopa + Tarrant recorder (deed) connectors. Pass counties=["ALL"] to enumerate them, or read the access_notes.access_matrix on any run.

Upgrading a catalog county to full is one field_map dict + the search-field names - the orchestrator, owner-resolution, distress-scoring, and monitor layers are all county-agnostic.

Anti-bot escalation

County portals range from open JSON APIs to Cloudflare-fronted SPAs. The parcel_client runs a three-tier ladder, escalating only on a block:

  1. httpx over the DATACENTER proxy (cheapest).
  2. curl_cffi with real Chrome TLS impersonation over the RESIDENTIAL proxy (defeats JA3/TLS-fingerprint WAFs).
  3. Playwright/patchright headful browser over the RESIDENTIAL proxy (clears Cloudflare/Imperva managed challenges; calls a fronted JSON API from inside the warmed page so it carries cf_clearance + the real TLS). Set browser_cdp_url to a warm anti-detect browser for the toughest portals; the per-search-CAPTCHA portals additionally need an opt-in solver (CAPTCHA_SOLVER_PROVIDER + CAPTCHA_SOLVER_KEY, off by default).
  4. Fail-soft - if every tier is blocked, the county emits a documented fetch_error and the run still finishes SUCCEEDED.

Pricing (pay-per-event)

EventPriceWhen
property_record$0.008Per normalized parcel emitted.
owner_enrichment$0.012Per parcel that yields a resolved owner (profile/portfolio modes or include_owner_enrichment).
equity_distress_signal$0.015Per parcel flagged with an equity/motivation signal (distress_scan or include_distress).
scheduled_delta_run$0.050Per scheduled monitor-mode run that emits a change digest.

A run that returns nothing costs nothing. Compare to PropStream ($99-300/mo), DataTree/RealQuest ($150-275/mo), and ListSource ($0.30-0.45/record, $50 minimum).

County property records (ownership, assessed value, recorded deeds) are public-by-law. This actor:

  • Stays logged-out and uses public-record fields only - owner name, tax-roll mailing address, and the assessment + recorded-sale facts.
  • Does NOT skip-trace into private contact data (no phone, no personal email, no SSN/DOB) - a deliberate scope line, not a missing feature. Skip-tracing is a PII minefield and out of scope.
  • Labels equity and distress figures as assessor-derived estimates and investigative leads, not verified title, lien, or mortgage-balance determinations.
  • Property data may not be used for FCRA-covered decisions (credit, tenant screening, employment). Use within your local fair-use rules.

Monitor mode

Run this actor on an Apify Schedule and it switches to monitor mode: it diffs this run against the last scheduled run and emits a change digest (new parcels, ownership changes, new tax delinquencies), optionally posted to a Slack-compatible monitor_webhook_url. Charges one scheduled_delta_run. Perfect for a "new distressed properties in my county this week" watchlist.

MCP / AI-agent use

A paired MCP server, mcp-property-records-intel, exposes five tools (search_properties, get_parcel_profile, find_owner_portfolio, scan_distress, lookup_by_address) for Claude, Cursor, LangChain, and any Apify-actor-as-tool host. It is x402 (USDC on Base) and Skyfire ready for token-less agentic payments.

Portfolio fit

This is the ownership/tax graph beneath the event-driven property lead actors (Foreclosure Property Leads, Property Auction Leads, House Flipper Leads) - enrich each of those leads with a verified public-record owner + equity estimate. See the full portfolio at https://apify.com/seibs.co.