Post a street address or an APN with county FIPS — whatever you have.
Property Data API
Submit an address or APN and get property data back for your real estate workflow: owners, taxes, deeds, mortgages, permits, and comps. Not an API expert? Paste our docs into your AI tool of choice and ask it to build the request.
GET /v1/properties/{property_id}{ "property_id": "12276B6", "apn": "451-492-10-00", "fips": "06073", "property_address": "3352 Goldfinch St, San Diego, CA 92103", "owner_1_full_name": "Morgan Family Trust", "assessed_value": 509811, "annual_tax_amount": 5735.48, "last_sale_date": "2018-05-01", "estimated_market_value": 584205, "combined_estimated_loan_balance": 320668}
Three steps from address to record
The API takes a property you identify and returns the public-record data for it.
Every response includes a match status. Misses and uncertain matches don't use credits.
Owner, tax, value, and property facts come back as JSON, with a property ID for deeds, permits, and comps if you need them.
What teams build with it
Four common places the API replaces manual county lookups.
Fill in owner, tax, and property details automatically when an address comes in.
Let your users look up a property by address or APN inside your product.
Check names, mailing addresses, and assessed values against county records.
Give agents and back-office jobs structured property data to work with.
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.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | AssessorSearch property identifier. |
apn | string | null | 451-492-10-00 | County parcel number or assessor parcel number. |
alternate_apn | string | null | 4514921000 | Alternate parcel number format reported by the county. |
fips | string | null | 06073 | Five-digit county FIPS code. |
county | string | San Diego County, California | County name. |
property_address | string | null | 3352 Goldfinch St, San Diego, CA 92103 | Full situs address when available. |
property_street | string | null | 3352 Goldfinch St | Street address portion of the situs address. |
property_city | string | San Diego | Situs city. |
property_state | string | CA | Situs state abbreviation. |
property_zipcode | string | 92103 | Situs ZIP code. |
latitude | number | null | 32.740421 | Parcel or address latitude when geocoded. |
longitude | number | null | -117.171596 | Parcel or address longitude when geocoded. |
source_last_updated | date string | null | 2026-05-18 | Source-system update date shown on property detail. |
last_updated | date string | null | 2026-06-27 | AssessorSearch record update date when present. |
Core · 1 creditOwner & mailing7 fieldsCore record object. Owner names, mailing address, and occupancy signal from public property records.
| JSON field | Type | Example | Description |
|---|---|---|---|
owner_1_full_name | string | Morgan Family Trust | Primary owner name from public property records. |
owner_2_full_name | string | null | null | Secondary owner name when one is present. |
mailing_full_address | string | null | PO Box 3352, San Diego, CA 92103 | Owner mailing address from public records. |
mailing_city | string | null | San Diego | Mailing city. |
mailing_state | string | null | CA | Mailing state abbreviation. |
mailing_zip_code | string | null | 92103 | Mailing ZIP code. |
occupancy | string | Owner Occupied | Owner-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.
| JSON field | Type | Example | Description |
|---|---|---|---|
land_market_value | number | null | 130000 | Land market value reported or normalized from source records. |
structure_market_value | number | null | 375000 | Improvement market value reported by the county. |
total_market_value | number | null | 505000 | Total market value reported or normalized from source records. |
assessed_land_value | number | null | 112294 | Land assessed value. |
assessed_structure_value | number | null | 397517 | Improvement assessed value. |
assessed_value | number | null | 509811 | Total assessed value reported by the county. |
tax_year | string | null | 2025 | Tax year associated with the tax fields. |
annual_tax_amount | number | null | 5735.48 | Annual property tax amount normalized to a number. |
tax_rate | number | null | 0.01125 | Effective or normalized tax-rate value when available. |
is_tax_exemption | boolean | true | Whether a tax exemption is indicated in the record. |
exemption_type | string | null | Homeowner | Exemption type, if reported. |
delinquent_year | string | null | null | Tax 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.
| JSON field | Type | Example | Description |
|---|---|---|---|
last_sale_date | date string | null | 2018-05-01 | Most recent sale date available in the indexed record. |
last_sale_amount | number | null | 454000 | Most recent sale amount available in the indexed record. |
is_listed | boolean | false | Listing signal when available. |
is_listed_date | date string | null | null | Date associated with the current listing signal. |
is_pre_foreclosure | boolean | false | Pre-foreclosure signal when available. |
pre_foreclosure_status | string | null | null | Pre-foreclosure status text from the source. |
pre_foreclosure_date | date string | null | null | Pre-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.
| JSON field | Type | Example | Description |
|---|---|---|---|
land_use_code | string | null | 1001 | Source land-use code. |
land_use_category | string | Single Family Home | Normalized land-use category. |
zoning | string | null | null | Zoning code or zoning label when available. |
year_built | string | null | 2004 | Year built as reported by the source. |
year_built_effective | string | null | 2004 | Effective year built or renovation year when reported. |
beds | number | null | 4 | Bedroom count used in the property header. |
bedrooms | number | null | 4 | Alternate bedroom count field when supplied by the source. |
baths | number | null | 3.5 | Bathroom count used in the property header. |
full_bathrooms | number | null | 3 | Full bathroom count. |
half_bathrooms | number | null | 1 | Half bathroom count. |
total_rooms | number | null | 8 | Total room count when reported. |
sqft | number | null | 2594 | Building area in square feet. |
living_area_sqft | number | null | 2594 | Finished living area in square feet. |
lot_size_sqft | number | null | 10392 | Parcel area in square feet. |
lot_size_acres | number | null | 0.239 | Parcel area in acres. |
basement_sqft | number | null | null | Basement area in square feet when reported. |
Core · 1 creditBuilding features11 fieldsCore record object. Heating, cooling, exterior, roof, pool, utility, garage, and parking fields.
| JSON field | Type | Example | Description |
|---|---|---|---|
cooling_type | string | null | Central | Cooling type. |
heating_type | string | null | Central | Heating type. |
fireplace_ind | boolean | true | Fireplace indicator. |
exterior_wall_type | string | null | Stucco | Exterior wall material or type. |
roof_type | string | null | Composition Shingle | Roof type. |
pool_ind | boolean | true | Pool indicator. |
pool_type | string | null | Pool & Spa (both) | Pool type when reported. |
sewer_type | string | null | Public Sewer | Sewer utility type. |
water_type | string | null | Public Water | Water utility type. |
garage_type | string | null | Garage | Garage type when present. |
garage_parking | number | null | 3 | Garage parking spaces when present. |
Core · 1 creditLegal, community & HOA12 fieldsCore record object. Legal description, subdivision/community identifiers, census identifiers, and HOA fields.
| JSON field | Type | Example | Description |
|---|---|---|---|
legal_description | string | null | BLK 400 LOT K TR DB0013PG522 | Legal description from the county record. |
municipality | string | null | CITY OF SAN DIEGO | Municipality or local jurisdiction when available. |
subdivision | string | HORTONS ADD LOCKLING | Subdivision name from the property record. |
neighborhood | string | HORTONS ADD LOCKLING | Neighborhood label when reported. |
census_tract | string | null | 006100 | Census tract identifier when matched. |
census_block | string | null | 1003 | Census block identifier when matched. |
tract_num | string | null | null | Subdivision or legal tract number. |
legal_lot | string | null | 28 | Legal lot identifier. |
legal_block | string | null | null | Legal block identifier. |
hoa_name | string | null | PARK CENTRAL TOWERS OWNERS | HOA name when reported. |
hoa_type | string | null | Mandatory | HOA type when reported. |
hoa_annual_fee | number | null | 420 | Annual 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.
| JSON field | Type | Example | Description |
|---|---|---|---|
estimated_market_value | number | null | 584205 | AssessorSearch estimated market value. |
avg_rent_estimate | number | null | 2685 | Estimated monthly rent from comparable rental context. |
gross_yield_percentage | number | null | 5.52 | Estimated annual gross rental yield percentage. |
cap_rate_percentage | number | null | 3.03 | Estimated cap-rate percentage when available. |
Core · 1 creditMortgage summary3 fieldsCore record object. Estimated loan balance, equity, and loan-to-value fields.
| JSON field | Type | Example | Description |
|---|---|---|---|
combined_estimated_loan_balance | number | null | 320668 | Estimated combined open mortgage balance. |
estimated_equity | number | null | 263537 | Estimated owner equity derived from value and loan balance. |
estimated_ltv | number | null | 54.89 | Estimated loan-to-value ratio. |
3 credits when rows returnMortgage & lien detail12 fieldsMortgage detail response. Mortgage and lien rows returned from a specific mortgage/lien endpoint.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | Subject property ID for joining this add-on row to the core property record. |
id | string | null | mtg_20190509_1 | Mortgage or lien row identifier when available. |
amount | number | null | 350000 | Mortgage or lien amount. |
lender | string | null | Sample National Bank | Mortgage lender. |
interest_rate | number | null | 7.03 | Interest rate when available. |
recording_date | date string | null | 2024-07-10 | Mortgage or lien recording date. |
date | date string | null | null | Alternate mortgage or lien date when supplied. |
type | string | null | conventional loan | Mortgage or lien type. |
payment | number | null | 2719.85 | Estimated or reported payment when available. |
term | string | 30 years | Loan term. |
loan_to_value | number | null | null | Loan-to-value ratio at origination when available. |
position | number | null | 1 | Lien position. |
3 credits when rows returnDeed & transaction history16 fieldsTransaction detail response. Recorded deed and transaction rows returned from a specific transaction endpoint.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | Subject property ID for joining this add-on row to the core property record. |
recording_date | source date string | null | 05/01/2018 | Recording date for the deed or transaction document. |
sale_date | source date string | null | 05/01/2018 | Sale date when reported separately from recording date. |
document_type | string | null | Grant Deed | Recorded document type. |
document_number | string | null | 2018.143821 | Recorder document number. |
transaction_type | string | null | Arms Length | Normalized transaction type when available. |
transaction_amount | number | null | 454000 | Transaction amount from the recorded document. |
buyer_name | string | null | Morgan Family Trust | Buyer or grantee name. |
buyer_is_corporate | boolean | false | Corporate buyer indicator. |
seller_name | string | null | Park Place Homes LLC | Seller or grantor name. |
seller_is_corporate | boolean | true | Corporate seller indicator. |
lender_name | string | null | Valley Community Bank | Lender named on the transaction when available. |
title_company_name | string | null | San Diego County Title Co. | Title company named on the transaction when available. |
sort_order | number | null | 1 | Sort order supplied by the transaction source. |
transaction_details | object | null | null | Source-specific transaction detail object. |
formatted_date | string | null | 2018-05-01 | Backend-computed display date when supplied. |
3 credits when rows returnPermit history10 fieldsPermit detail response. Permit rows returned from a specific permits endpoint where county coverage is available.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | Subject property ID for joining this add-on row to the core property record. |
permit_number | string | null | BLD-21-00842 | Permit number from the permitting source. |
permit_type | string | null | Residential pool and spa | Permit category or permit type. |
permit_date | date string | null | 2021-06-14 | Permit issue, application, or status date as reported. |
status | string | null | Final | Permit status. |
contractor_name | string | null | Central Valley Pools | Contractor name when reported. |
estimated_job_value | number | null | 65000 | Estimated project value. |
estimated_fees | number | null | 1420 | Estimated permit fees. |
description | string | null | Install in-ground pool, spa, and code-compliant safety barrier. | Permit work description. |
sort_order | number | null | 1 | Sort order supplied by the permitting source. |
3 credits when rows returnComparable sales15 fieldsComparable sales response. Sale comparable rows returned from a specific comparable-sales endpoint.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | Subject property ID for joining this add-on row to the core property record. |
address | string | null | 1810 W Sample Ct, San Diego, CA 92103 | Comparable sale property address. |
sale_date | date string | null | 2025-06-09 | Comparable property sale date. |
sale_price | number | null | 545000 | Comparable property sale price. |
beds | number | null | 4 | Comparable bedroom count. |
baths | number | null | 3 | Comparable bathroom count. |
sqft | number | null | 2388 | Comparable living area in square feet. |
year_built | number | null | 2005 | Comparable year built. |
price_per_sqft | number | null | 228.22 | Comparable sale price per square foot. |
comparable_property_id | number | string | 2712968 | AssessorSearch property ID for the comparable property. |
distance_miles | number | null | 0.33 | Distance from the subject property in miles. |
lot_acres | number | null | 0.46 | Comparable lot size in acres. |
comp_rank | number | null | 2 | Comparable ranking returned by the matching model. |
similarity_score | number | null | 3.25 | Similarity score returned by the matching model. |
formatted_comparable_property_id | string | null | 296588 | Display-ready comparable property ID when supplied. |
3 credits when rows returnComparable rentals20 fieldsComparable rentals response. Rental comparable rows returned from a specific comparable-rentals endpoint.
| JSON field | Type | Example | Description |
|---|---|---|---|
property_id | string | 12276B6 | Subject property ID for joining this add-on row to the core property record. |
address | string | null | 1918 W Sample Ln, San Diego, CA 92103 | Comparable rental property address. |
rental_date | date string | null | 2026-04-27 01:40:09.871 | Rental comp date. |
effective_date | date string | null | null | Alternate rental effective date when supplied. |
rental_price | number | null | 2650 | Monthly rental price. |
rent_price | number | null | null | Alternate monthly rent field when supplied. |
beds | number | null | 4 | Comparable bedroom count. |
baths | number | null | 3 | Comparable bathroom count. |
sqft | number | null | 2400 | Comparable living area in square feet. |
year_built | number | null | 2008 | Comparable year built. |
comparable_property_id | number | string | 2674852 | AssessorSearch property ID for the comparable property. |
distance_miles | number | null | 1.92 | Distance from the subject property in miles. |
lot_acres | number | null | 0.5 | Comparable lot size in acres. |
comp_rank | number | null | 1 | Comparable ranking returned by the matching model. |
rank | number | null | null | Alternate comparable ranking field when supplied. |
similarity_score | number | null | 15 | Similarity score returned by the matching model. |
adjusted_rent | number | null | 2685 | Adjusted monthly rent estimate when supplied. |
avm_value | number | null | 552000 | AVM value associated with the rental comparable. |
url | string | null | null | Source URL when available. |
formatted_comparable_property_id | string | null | 28D0A4 | Display-ready comparable property ID when supplied. |
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.
| Endpoint | Credits | Use case |
|---|---|---|
GET/v1/properties | 1 | Resolve address or APN input. Charges only when status is matched and the core property record is returned. |
GET/v1/properties/{property_id} | 1 | Fetch the core parcel, owner, tax, valuation, facts, location, and mortgage summary fields for a known property ID. |
GET/v1/properties/{property_id}/mortgages | 3 | Retrieve mortgage and lien rows, including lender, amount, rate, recording date, term, payment, and lien position when available. |
GET/v1/properties/{property_id}/transactions | 3 | Retrieve recorded deed and transaction rows with buyer, seller, document, title-company, lender, and amount fields when available. |
GET/v1/properties/{property_id}/permits | 3 | Retrieve permit rows where county coverage is available, including type, status, permit number, date, contractor, fees, and description. |
GET/v1/properties/{property_id}/comparable-sales | 3 | Retrieve comparable sale rows with address, price, date, facts, distance, rank, similarity score, and comparable property ID. |
GET/v1/properties/{property_id}/comparable-rentals | 3 | Retrieve comparable rental rows with rent, effective date, facts, distance, rank, adjusted rent, AVM value, and comparable property ID. |
Use the API when your product needs answers one property at a time
If a user submits an address, calls up a record, or asks an AI agent to check a property, use the API. If you need to refresh a whole county, state, or national database on a schedule, use bulk files instead.
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.
Pro + API
Unlimited web views plus starter API access for AI tools and light workflows.
- Monthly credits
- 500/month
- Overage rate
- $0.08/credit
- Core lookup
- 1 credit each
API Growth
Small production integrations, internal review tools, and appraisal QA pilots.
- Monthly credits
- 2,000/month
- Overage rate
- $0.06/credit
- Core lookup
- 1 credit each
API Scale
Higher-volume validation, enrichment, and workflow automation.
- Monthly credits
- 10,000/month
- Overage rate
- $0.04/credit
- Core lookup
- 1 credit each
API Enterprise
Large-volume API access with room for procurement and custom support.
- Monthly credits
- 100,000/month
- Overage rate
- $0.024/credit
- Core lookup
- 1 credit each
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.
Usage and billing
Pay for records, not dead ends
Address and APN matching is part of the lookup flow. You spend credits when a core property record comes back, or when an add-on endpoint returns real rows for mortgages, deeds, permits, or comps.
- Lookups that do not return a property record do not spend credits.
- Empty detail collections also return 0 charged credits.
- Rate limits apply per account across API keys on a rolling 60-second window; all API requests count toward the limit.
- Included API credits reset monthly. Overages continue at your plan rate until you reach the budget set in your dashboard.
- If overages are off or the budget is exhausted, billable requests return 402 with code credit_limit_exceeded.
- Requests over the per-minute rate limit return 429 with a Retry-After header. Queue large jobs and retry with backoff.
Data limits
Public records vary by county
County records are not identical everywhere. Some counties publish richer owner, tax, deed, permit, or comp history than others. Contact us to confirm field coverage for your target counties.
- Verify with the county assessor or recorder when a decision needs certified records.
- AssessorSearch is not a consumer reporting agency. Do not use API data for FCRA-governed decisions such as credit, employment, housing, or tenant screening.
- The API is not a title search, legal opinion, tax service, or appraisal certification.
Questions before you build
The practical things teams usually need to know before wiring property records into a product, workflow, or AI tool.
Yes. Send a street address when that is all you have, or send APN plus county FIPS when your workflow already stores parcel numbers.
The core record includes the fields most teams need first: parcel identity, address, owner and mailing details, assessor and tax fields, property facts, source dates, and mortgage summary fields when available.
Yes. Use the add-on endpoints when you need deeper history for a matched property: deed transactions, mortgage and lien rows, building permits, comparable sales, and comparable rentals.
Start with the developer docs and sample responses. You can paste the docs into ChatGPT, Claude, Cursor, or another AI coding tool and ask it to write the request for your stack.
Use the API when your app needs one property at a time from an address or APN. Use bulk files when you need recurring county, state, or nationwide refreshes for a database or warehouse.
Address and APN searches are 0 credits. A matched core property record is 1 credit. Add-on endpoints are 3 credits only when rows are returned.
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.