Developer guide

Property data your application can read and explain.

The Platform API returns the same saved property records you see in the app. Saved facts are dated, and a gap is reported as a gap. The MCP server lets eligible plans read the same records from Claude and other MCP clients. Ordinary reads never buy or refresh data.

Free county office lookup

Get official office destinations and reviewed search instructions from the county-page directory cache. No account, token, paid data pull, portal search or AI call is needed.

curl 'https://app.propertyinsight.ai/api/county-offices/lookup?countyFips=12086&purpose=assessment'

Supply either a five-digit countyFips (keep leading zeros) or a two-letter state plus county, such as state=IL&county=Cook. Ambiguous names return candidates; retry with a FIPS. No address or ZIP resolution. Responsibility may be municipal.

Optional purpose: tax_bill, tax_payment, assessment, recorded_documents, parcel_map, permits or all_offices (default). Task lookups return reviewed dispositions. Missing guidance means an empty office list and coverage: not_reviewed; use the source page or all_offices for fallbacks.

Responses include official links, source-listed inputs, steps, restrictions and separate review, reachability and functional-check dates. A verified functional status applies only to its listed purpose/input pairs. Confirm suspect links; a page load does not verify a search.

Cite each sourceUrl for PropertyInsight's guidance and the official office link for records. Preserve responsibility labels, restrictions and verification scope. Review methodology.

Anonymous directory APIs share 30 requests per IP per minute. Errors: 400 invalid input; 404 missing county; 409 ambiguous jurisdiction; 429 rate limited or limiter unavailable; 503 directory unavailable. For 429 or 503, wait at least the Retry-After seconds before retrying with backoff.

MCP: propertyinsight_lookup_county_offices uses the same inputs and guidance, with existing account, plan and OAuth requirements. For account-free use, choose HTTP.

County lookup OpenAPI specification

Start with access to a saved record

  1. Confirm that your account has API access. Review plans or contact us for your integration.
  2. Create a personal token in REST API token settings. Use the read scope for these endpoints, save the value when it is shown once, and keep it on your server. Send it in the Authorization header.
  3. Search for a property already available to your account, then read its overview or supported domains. Ordinary API reads do not purchase, acquire, or refresh data.

Using an AI client instead? The MCP server is available on Pro Premium, Teams, and Enterprise.

Base URL: https://app.propertyinsight.ai/api/platform/v1. The specification is public; property responses require authentication and property-level authorization.

Three endpoints for saved property data

POST/property/search

Find accessible saved properties

Search by address, parcel number, owner name, or a known property identifier. Results reflect the saved index; an empty result does not prove a property does not exist.

GET/property/{clip}/canonical

Read the saved overview

Retrieve the normalized overview for a property you are authorized to access. Use an identifier returned by search.

GET/property/{clip}/{domain}

Read a specific data domain

Request a supported domain such as ownership, taxes, or transaction_history. Some domains return freshness metadata with a null payload.

Example: find a known saved property

Replace the placeholder identifier below with your saved property ID. Set PROPERTYINSIGHT_API_TOKEN in your server environment; never embed it in browser code.

curl https://app.propertyinsight.ai/api/platform/v1/property/search \
  -H "Authorization: Bearer $PROPERTYINSIGHT_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"query":"YOUR_SAVED_PROPERTY_ID","type":"id","limit":1}'

This is a request template, not a live property example. Use the specification for request fields and the shared response envelope.

Help readers understand what the data means

Keep the observation date with the fact
The response generation time is not the date a fact was observed. Preserve saved dates, lastRefreshedAt, and per-domain freshness when displaying or quoting data.
Treat missing data as unknown
A null value, missing field, or unavailable data category doesn't mean zero taxes or no liens. Show it as a gap, and point users to the official record or to Update Data.
Keep source attribution and coverage notes
Keep any source attribution the response carries, including a county office when one is named. If none is supplied, do not invent a source. Coverage varies by property, domain, and saved snapshot.
Handle access and rate limits explicitly
Check HTTP status and the error object before using data. Authentication, authorization, and rate-limit failures are not evidence that a property has no records. Keep credentials and private responses out of public pages and logs.