Property Data API

Query 150M+ U.S. property records by address or APN. Returns assessor data, taxes, deeds, mortgages, permits, and comps in real-time JSON for your product or AI agents.

GET /v1/properties/{property_id}
{  "property_id": "12276B6",  "apn": "451-492-10-00",  "alternate_apn": "4514921000",  "fips": "06073",  "county": "San Diego County, California",  "property_address": "3352 Goldfinch St, San Diego, CA 92103",  "property_street": "3352 Goldfinch St",  "property_city": "San Diego",  "property_state": "CA",  "property_zipcode": "92103",  "latitude": 32.740421,  "longitude": -117.171596,  "source_last_updated": "2026-05-18",  "last_updated": "2026-06-27",  "owner_1_full_name": "Morgan Family Trust",  "owner_2_full_name": null,  "mailing_full_address": "PO Box 3352, San Diego, CA 92103",  "mailing_city": "San Diego",  "mailing_state": "CA",  "mailing_zip_code": "92103",  "occupancy": "Owner Occupied",  "land_market_value": 130000,  "structure_market_value": 375000,  "total_market_value": 505000,  "assessed_land_value": 112294,  "assessed_structure_value": 397517,  "assessed_value": 509811,  "tax_year": "2025",  "annual_tax_amount": 5735.48,  "tax_rate": 0.01125,  "is_tax_exemption": true,  "exemption_type": "Homeowner",  "delinquent_year": null,  "last_sale_date": "2018-05-01",  "last_sale_amount": 454000,  "is_listed": false,  "is_listed_date": null,  "is_pre_foreclosure": false,  "pre_foreclosure_status": null,  "pre_foreclosure_date": null,  "land_use_code": "1001",  "land_use_category": "Single Family Home",  "zoning": null,  "year_built": "2004",  "year_built_effective": "2004",  "beds": 4,  "bedrooms": 4,  "baths": 3.5,  "full_bathrooms": 3,  "half_bathrooms": 1,  "total_rooms": 8,  "sqft": 2594,  "living_area_sqft": 2594,  "lot_size_sqft": 10392,  "lot_size_acres": 0.239,  "basement_sqft": null,  "cooling_type": "Central",  "heating_type": "Central",  "fireplace_ind": true,  "exterior_wall_type": "Stucco",  "roof_type": "Composition Shingle",  "pool_ind": true,  "pool_type": "Pool & Spa (both)",  "sewer_type": "Public Sewer",  "water_type": "Public Water",  "garage_type": "Garage",  "garage_parking": 3,  "legal_description": "BLK 400 LOT K TR DB0013PG522",  "municipality": "CITY OF SAN DIEGO",  "subdivision": "HORTONS ADD LOCKLING",  "neighborhood": "HORTONS ADD LOCKLING",  "census_tract": "006100",  "census_block": "1003",  "tract_num": null,  "legal_lot": "28",  "legal_block": null,  "hoa_name": "PARK CENTRAL TOWERS OWNERS",  "hoa_type": "Mandatory",  "hoa_annual_fee": 420,  "estimated_market_value": 584205,  "avg_rent_estimate": 2685,  "gross_yield_percentage": 5.52,  "cap_rate_percentage": 3.03,  "combined_estimated_loan_balance": 320668,  "estimated_equity": 263537,  "estimated_ltv": 54.89}
Query Modes

Three ways to query property data

Resolve addresses or parcel APNs in a single request, with specialized endpoints for deep transaction history and comps.

1 Credit on Match

Query by Street Address

Send any U.S. street address. The endpoint parses, normalizes, and returns the complete 80+ field core property record in a single request.

GET /v1/properties
  ?address=3352+Goldfinch+St
  &city=San+Diego&state=CA
-> 80+ Core Fields (1 credit)
1 Credit on Match

Query by APN & County

Query with a parcel number and 5-digit county FIPS code when your product or database already stores county parcel identifiers.

GET /v1/properties
  ?apn=451-492-10-00
  &fips=06073
-> 80+ Core Fields (1 credit)
3 Credits on Rows

Deeds, Mortgages, & Comps

Use the returned property ID to fetch deep historical transaction records, mortgage and lien rows, building permits, and comps on demand.

GET /v1/properties/12276B6/mortgages
GET /v1/properties/12276B6/permits
GET /v1/properties/12276B6/sale-comps
-> Deep History (3 credits)
Use cases

What teams build with the Property Data API

Four high-impact ways developers, PropTech platforms, and automated agents use our data.

CRM & Inbound Lead Enrichment

When an inbound lead enters a street address, instantly populate contacts with verified owner names, mailing addresses, assessed values, and estimated equity.

Owner IdentityMailing AddressAssessed ValueEquity

In-App Property & Parcel Search

Embed real-time address and APN lookup directly into your real estate portal, valuation tool, or SaaS product without maintaining county pipelines.

APN & FIPSBed / Bath / SqftYear BuiltZoning

Ownership & Lien Underwriting

Verify property legal descriptions, recorded deed transfers, open mortgage balances, and tax payment history for automated underwriting workflows.

Deed RecordsOpen MortgagesLegal DescriptionTaxes
MCP Ready

AI Agents & Autonomous Research

Equip Claude, ChatGPT, Gemini, or Cursor with live property data via our official MCP server, or execute headless research agents via REST API.

Streamable HTTPOAuth 2.0 PKCEJSON Response
API field catalog

Every field the API can return

The core property response includes 86 fields. Five add-on endpoints include 73 row fields for mortgages, deeds, permits, sale comps, and rental comps. Open a group to see the exact JSON name, type, example value, and meaning. Values can be null when a county or source does not publish that field.

Core · 1 creditIdentifiers & address14 fieldsCore record object. Property IDs, parcel numbers, situs address, county, coordinates, and update timestamps.
Identifiers & address API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6AssessorSearch property identifier.
apnstring | null451-492-10-00County parcel number or assessor parcel number.
alternate_apnstring | null4514921000Alternate parcel number format reported by the county.
fipsstring | null06073Five-digit county FIPS code.
countystringSan Diego County, CaliforniaCounty name.
property_addressstring | null3352 Goldfinch St, San Diego, CA 92103Full situs address when available.
property_streetstring | null3352 Goldfinch StStreet address portion of the situs address.
property_citystringSan DiegoSitus city.
property_statestringCASitus state abbreviation.
property_zipcodestring92103Situs ZIP code.
latitudenumber | null32.740421Parcel or address latitude when geocoded.
longitudenumber | null-117.171596Parcel or address longitude when geocoded.
source_last_updateddate string | null2026-05-18Source-system update date shown on property detail.
last_updateddate string | null2026-06-27AssessorSearch record update date when present.
Core · 1 creditOwner & mailing7 fieldsCore record object. Owner names, mailing address, and occupancy signal from public property records.
Owner & mailing API response fields
JSON fieldTypeExampleDescription
owner_1_full_namestringMorgan Family TrustPrimary owner name from public property records.
owner_2_full_namestring | nullnullSecondary owner name when one is present.
mailing_full_addressstring | nullPO Box 3352, San Diego, CA 92103Owner mailing address from public records.
mailing_citystring | nullSan DiegoMailing city.
mailing_statestring | nullCAMailing state abbreviation.
mailing_zip_codestring | null92103Mailing ZIP code.
occupancystringOwner OccupiedOwner-occupied or non-owner occupied signal.
Core · 1 creditTax & value12 fieldsCore record object. Assessed value, market value, annual tax amount, tax year, rate, exemption, and delinquency fields.
Tax & value API response fields
JSON fieldTypeExampleDescription
land_market_valuenumber | null130000Land market value reported or normalized from source records.
structure_market_valuenumber | null375000Improvement market value reported by the county.
total_market_valuenumber | null505000Total market value reported or normalized from source records.
assessed_land_valuenumber | null112294Land assessed value.
assessed_structure_valuenumber | null397517Improvement assessed value.
assessed_valuenumber | null509811Total assessed value reported by the county.
tax_yearstring | null2025Tax year associated with the tax fields.
annual_tax_amountnumber | null5735.48Annual property tax amount normalized to a number.
tax_ratenumber | null0.01125Effective or normalized tax-rate value when available.
is_tax_exemptionbooleantrueWhether a tax exemption is indicated in the record.
exemption_typestring | nullHomeownerExemption type, if reported.
delinquent_yearstring | nullnullTax delinquency year when reported by the source.
Core · 1 creditSale & status7 fieldsCore record object. Latest sale, listing signal, and pre-foreclosure indicators shown on property detail.
Sale & status API response fields
JSON fieldTypeExampleDescription
last_sale_datedate string | null2018-05-01Most recent sale date available in the indexed record.
last_sale_amountnumber | null454000Most recent sale amount available in the indexed record.
is_listedbooleanfalseListing signal when available.
is_listed_datedate string | nullnullDate associated with the current listing signal.
is_pre_foreclosurebooleanfalsePre-foreclosure signal when available.
pre_foreclosure_statusstring | nullnullPre-foreclosure status text from the source.
pre_foreclosure_datedate string | nullnullPre-foreclosure filing or status date when available.
Core · 1 creditProperty characteristics16 fieldsCore record object. Land use, zoning, year built, room counts, living area, building area, lot size, and basement fields.
Property characteristics API response fields
JSON fieldTypeExampleDescription
land_use_codestring | null1001Source land-use code.
land_use_categorystringSingle Family HomeNormalized land-use category.
zoningstring | nullnullZoning code or zoning label when available.
year_builtstring | null2004Year built as reported by the source.
year_built_effectivestring | null2004Effective year built or renovation year when reported.
bedsnumber | null4Bedroom count used in the property header.
bedroomsnumber | null4Alternate bedroom count field when supplied by the source.
bathsnumber | null3.5Bathroom count used in the property header.
full_bathroomsnumber | null3Full bathroom count.
half_bathroomsnumber | null1Half bathroom count.
total_roomsnumber | null8Total room count when reported.
sqftnumber | null2594Building area in square feet.
living_area_sqftnumber | null2594Finished living area in square feet.
lot_size_sqftnumber | null10392Parcel area in square feet.
lot_size_acresnumber | null0.239Parcel area in acres.
basement_sqftnumber | nullnullBasement area in square feet when reported.
Core · 1 creditBuilding features11 fieldsCore record object. Heating, cooling, exterior, roof, pool, utility, garage, and parking fields.
Building features API response fields
JSON fieldTypeExampleDescription
cooling_typestring | nullCentralCooling type.
heating_typestring | nullCentralHeating type.
fireplace_indbooleantrueFireplace indicator.
exterior_wall_typestring | nullStuccoExterior wall material or type.
roof_typestring | nullComposition ShingleRoof type.
pool_indbooleantruePool indicator.
pool_typestring | nullPool & Spa (both)Pool type when reported.
sewer_typestring | nullPublic SewerSewer utility type.
water_typestring | nullPublic WaterWater utility type.
garage_typestring | nullGarageGarage type when present.
garage_parkingnumber | null3Garage parking spaces when present.
Core · 1 creditLegal, community & HOA12 fieldsCore record object. Legal description, subdivision/community identifiers, census identifiers, and HOA fields.
Legal, community & HOA API response fields
JSON fieldTypeExampleDescription
legal_descriptionstring | nullBLK 400 LOT K TR DB0013PG522Legal description from the county record.
municipalitystring | nullCITY OF SAN DIEGOMunicipality or local jurisdiction when available.
subdivisionstringHORTONS ADD LOCKLINGSubdivision name from the property record.
neighborhoodstringHORTONS ADD LOCKLINGNeighborhood label when reported.
census_tractstring | null006100Census tract identifier when matched.
census_blockstring | null1003Census block identifier when matched.
tract_numstring | nullnullSubdivision or legal tract number.
legal_lotstring | null28Legal lot identifier.
legal_blockstring | nullnullLegal block identifier.
hoa_namestring | nullPARK CENTRAL TOWERS OWNERSHOA name when reported.
hoa_typestring | nullMandatoryHOA type when reported.
hoa_annual_feenumber | null420Annual HOA fee when reported.
Core · 1 creditMarket & rental estimates4 fieldsCore record object. AssessorSearch market value, rent, yield, and cap-rate estimates shown on property detail.
Market & rental estimates API response fields
JSON fieldTypeExampleDescription
estimated_market_valuenumber | null584205AssessorSearch estimated market value.
avg_rent_estimatenumber | null2685Estimated monthly rent from comparable rental context.
gross_yield_percentagenumber | null5.52Estimated annual gross rental yield percentage.
cap_rate_percentagenumber | null3.03Estimated cap-rate percentage when available.
Core · 1 creditMortgage summary3 fieldsCore record object. Estimated loan balance, equity, and loan-to-value fields.
Mortgage summary API response fields
JSON fieldTypeExampleDescription
combined_estimated_loan_balancenumber | null320668Estimated combined open mortgage balance.
estimated_equitynumber | null263537Estimated owner equity derived from value and loan balance.
estimated_ltvnumber | null54.89Estimated loan-to-value ratio.
Mortgage & lien detail12 fieldsMortgage detail response. Mortgage and lien rows returned from a specific mortgage/lien endpoint.
Mortgage & lien detail API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6Subject property ID for joining this add-on row to the core property record.
idstring | nullmtg_20190509_1Mortgage or lien row identifier when available.
amountnumber | null350000Mortgage or lien amount.
lenderstring | nullSample National BankMortgage lender.
interest_ratenumber | null7.03Interest rate when available.
recording_datedate string | null2024-07-10Mortgage or lien recording date.
datedate string | nullnullAlternate mortgage or lien date when supplied.
typestring | nullconventional loanMortgage or lien type.
paymentnumber | null2719.85Estimated or reported payment when available.
termstring30 yearsLoan term.
loan_to_valuenumber | nullnullLoan-to-value ratio at origination when available.
positionnumber | null1Lien position.
Deed & transaction history16 fieldsTransaction detail response. Recorded deed and transaction rows returned from a specific transaction endpoint.
Deed & transaction history API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6Subject property ID for joining this add-on row to the core property record.
recording_datesource date string | null05/01/2018Recording date for the deed or transaction document.
sale_datesource date string | null05/01/2018Sale date when reported separately from recording date.
document_typestring | nullGrant DeedRecorded document type.
document_numberstring | null2018.143821Recorder document number.
transaction_typestring | nullArms LengthNormalized transaction type when available.
transaction_amountnumber | null454000Transaction amount from the recorded document.
buyer_namestring | nullMorgan Family TrustBuyer or grantee name.
buyer_is_corporatebooleanfalseCorporate buyer indicator.
seller_namestring | nullPark Place Homes LLCSeller or grantor name.
seller_is_corporatebooleantrueCorporate seller indicator.
lender_namestring | nullValley Community BankLender named on the transaction when available.
title_company_namestring | nullSan Diego County Title Co.Title company named on the transaction when available.
sort_ordernumber | null1Sort order supplied by the transaction source.
transaction_detailsobject | nullnullSource-specific transaction detail object.
formatted_datestring | null2018-05-01Backend-computed display date when supplied.
Permit history10 fieldsPermit detail response. Permit rows returned from a specific permits endpoint where county coverage is available.
Permit history API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6Subject property ID for joining this add-on row to the core property record.
permit_numberstring | nullBLD-21-00842Permit number from the permitting source.
permit_typestring | nullResidential pool and spaPermit category or permit type.
permit_datedate string | null2021-06-14Permit issue, application, or status date as reported.
statusstring | nullFinalPermit status.
contractor_namestring | nullCentral Valley PoolsContractor name when reported.
estimated_job_valuenumber | null65000Estimated project value.
estimated_feesnumber | null1420Estimated permit fees.
descriptionstring | nullInstall in-ground pool, spa, and code-compliant safety barrier.Permit work description.
sort_ordernumber | null1Sort order supplied by the permitting source.
Comparable sales15 fieldsComparable sales response. Sale comparable rows returned from a specific comparable-sales endpoint.
Comparable sales API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6Subject property ID for joining this add-on row to the core property record.
addressstring | null1810 W Sample Ct, San Diego, CA 92103Comparable sale property address.
sale_datedate string | null2025-06-09Comparable property sale date.
sale_pricenumber | null545000Comparable property sale price.
bedsnumber | null4Comparable bedroom count.
bathsnumber | null3Comparable bathroom count.
sqftnumber | null2388Comparable living area in square feet.
year_builtnumber | null2005Comparable year built.
price_per_sqftnumber | null228.22Comparable sale price per square foot.
comparable_property_idnumber | string2712968AssessorSearch property ID for the comparable property.
distance_milesnumber | null0.33Distance from the subject property in miles.
lot_acresnumber | null0.46Comparable lot size in acres.
comp_ranknumber | null2Comparable ranking returned by the matching model.
similarity_scorenumber | null3.25Similarity score returned by the matching model.
formatted_comparable_property_idstring | null296588Display-ready comparable property ID when supplied.
Comparable rentals20 fieldsComparable rentals response. Rental comparable rows returned from a specific comparable-rentals endpoint.
Comparable rentals API response fields
JSON fieldTypeExampleDescription
property_idstring12276B6Subject property ID for joining this add-on row to the core property record.
addressstring | null1918 W Sample Ln, San Diego, CA 92103Comparable rental property address.
rental_datedate string | null2026-04-27 01:40:09.871Rental comp date.
effective_datedate string | nullnullAlternate rental effective date when supplied.
rental_pricenumber | null2650Monthly rental price.
rent_pricenumber | nullnullAlternate monthly rent field when supplied.
bedsnumber | null4Comparable bedroom count.
bathsnumber | null3Comparable bathroom count.
sqftnumber | null2400Comparable living area in square feet.
year_builtnumber | null2008Comparable year built.
comparable_property_idnumber | string2674852AssessorSearch property ID for the comparable property.
distance_milesnumber | null1.92Distance from the subject property in miles.
lot_acresnumber | null0.5Comparable lot size in acres.
comp_ranknumber | null1Comparable ranking returned by the matching model.
ranknumber | nullnullAlternate comparable ranking field when supplied.
similarity_scorenumber | null15Similarity score returned by the matching model.
adjusted_rentnumber | null2685Adjusted monthly rent estimate when supplied.
avm_valuenumber | null552000AVM value associated with the rental comparable.
urlstring | nullnullSource URL when available.
formatted_comparable_property_idstring | null28D0A4Display-ready comparable property ID when supplied.
Endpoints

Public API endpoints and credits

Start with an address or APN, then use the returned property ID for the core record or deeper history endpoints. Detail endpoints charge only when they return rows.

Property Data API endpoints and credit costs
EndpointCreditsUse case
GET/v1/properties1Resolve address or APN input. Charges only when status is matched and the core property record is returned.
GET/v1/properties/{property_id}1Fetch the core parcel, owner, tax, valuation, facts, location, and mortgage summary fields for a known property ID.
GET/v1/properties/{property_id}/mortgages3Retrieve mortgage and lien rows, including lender, amount, rate, recording date, term, payment, and lien position when available.
GET/v1/properties/{property_id}/transactions3Retrieve recorded deed and transaction rows with buyer, seller, document, title-company, lender, and amount fields when available.
GET/v1/properties/{property_id}/permits3Retrieve permit rows where county coverage is available, including type, status, permit number, date, contractor, fees, and description.
GET/v1/properties/{property_id}/comparable-sales3Retrieve comparable sale rows with address, price, date, facts, distance, rank, similarity score, and comparable property ID.
GET/v1/properties/{property_id}/comparable-rentals3Retrieve comparable rental rows with rent, effective date, facts, distance, rank, adjusted rent, AVM value, and comparable property ID.
Bulk Downloads
Offline Datasets

Need whole counties or statewide database dumps?

If you are training ML models, warehousing parcel records, or running offline analytics, download complete county parquet and CSV files instead of calling the API one property at a time.

MCP Ready
AI Assistant Integration

Connect Claude, ChatGPT, Gemini, & Cursor

Prefer working directly inside your AI assistant or IDE? Connect our official Model Context Protocol (MCP) server with one prompt, OAuth 2.0 PKCE auth, and shared credit allowance.

Pricing

API plans

Pick a monthly credit allowance for the number of property records you expect to pull. Address and APN searches are free, core property records are 1 credit, and add-on history endpoints are 3 credits when they return rows.

API Growth

Small production integrations, internal review tools, and appraisal QA pilots.

$150/month
Monthly credits
2,000/month
Overage rate
$0.06/credit
Core lookup
1 credit each
MCP Server
Included

API Scale

Higher-volume validation, enrichment, and workflow automation.

$500/month
Monthly credits
10,000/month
Overage rate
$0.04/credit
Core lookup
1 credit each
MCP Server
Included

API Enterprise

Large-volume API access with room for procurement and custom support.

Contact us
Monthly credits
100,000/month
Overage rate
$0.024/credit
Core lookup
1 credit each
MCP Server
Included

All plans include full access to the official AssessorSearch MCP Server for Claude, ChatGPT, Gemini, Grok, and Cursor. Overages are on by default at the rate shown for each plan. The monthly budget is $250 for Pro + API and Growth, $1,000 for Scale, and $5,000 for Enterprise. Lower the budget or turn overages off in your dashboard at any time.

Policy & Governance

Transparent billing, rate limits, and compliance

Clear billing rules with zero hidden costs, automatic overage caps, and explicit public-record data boundaries.

Usage & Billing

Pay for verified records, not dead ends

Address and APN validation is built into the resolution flow. You only spend credits when a verified core property record or add-on history rows are delivered.

  • 0 credits on misses: Lookups that do not resolve to a property record never deduct credits.
  • 0 credits on empty details: Add-on endpoints (mortgages, deeds, permits, comps) only charge when rows exist.
  • Monthly allowances & overage caps: Included credits reset monthly. Overages continue at your plan rate up to the budget cap you set in your dashboard.
  • Standard HTTP status codes: Returns 402 credit_limit_exceeded when budget is exhausted and 429 with a Retry-After header during rate spikes.
Data Governance

Public record boundaries & permissible use

Our datasets are standardized directly from 3,000+ county assessors, recorders, and tax collectors nationwide.

  • County-level variance: Some jurisdictions publish richer deed, tax, or permit rows than others. Contact us to confirm field coverage for specific target counties.
  • Non-FCRA compliance: AssessorSearch is not a consumer reporting agency. API data cannot be used for FCRA-governed decisions such as tenant, credit, or employment screening.
  • Public record truth: Built for property research, market valuation, and workflow automation. Certified decisions require official county recorder or assessor copies.
  • Not title or legal advice: The API provides standardized public assessor records, not an insured title search or legal opinion.
FAQ

Questions before you build

The practical things teams usually need to know before wiring property records into a product, workflow, or AI tool.

Can I submit either an address or an APN?

Yes. Send a street address with city and state, or send an APN plus 5-digit county FIPS code when your product already tracks parcel identifiers. Both resolve in a single request.

What property data comes back in the core record?

The core property record delivers 80+ public-record fields: parcel APN and FIPS, owner identity and mailing addresses, assessed and market values, annual taxes, building specs (beds, baths, sqft, year built, stories), lot characteristics, and mortgage summary metrics.

Can I get deeds, mortgages, permits, and comps too?

Yes. Use the returned property ID with our add-on endpoints to query deep recorded deeds, open mortgages and liens, building permits, and comparable sale/rental records. Detail endpoints only charge credits when real rows exist.

What if I do not know how to code with APIs?

Connect ChatGPT, Claude, Gemini, Grok, or Cursor directly through our official Model Context Protocol (MCP) server to query properties via plain English prompts. If you are developing an app, paste our developer docs into your AI assistant to generate API requests in any language.

Should I use the API or bulk property data?

Use the API when your product needs on-demand property intelligence one parcel at a time. Use bulk property data when you need complete county, state, or nationwide database dumps in Parquet or CSV for data warehousing, ML training, or offline analytics.

How do API credits and overages work?

Searches that do not match a parcel cost 0 credits. Each matched core property record costs 1 credit. Add-on history endpoints cost 3 credits per request only when rows return. You can set a monthly overage spend cap in your dashboard or disable overages entirely.

Next step

Start building with the API

Open the docs, copy the endpoint you need, and test it against an address or APN. If you are building with AI, paste the docs and ask it to generate the request for your app.