API Documentation

RESTful JSON API. Standard Bearer token authentication. Detailed response schemas.

Base URL

https://api.parcelbase.ai/api/v1

Authentication

Include your API key in the Authorization header with every request:

Authorization: Bearer YOUR_API_KEY

Endpoints

MethodEndpointDescription
GET/property/addressLookup by street address + city + state
GET/property/detailFull property detail (same as address lookup)
GET/property/ownerSearch by owner last name
GET/property/parcelSearch by APN / parcel ID
GET/sale/detailMost recent sale information
GET/sale/historyFull sales transaction history
GET/assessment/detailTax assessment details and history
GET/healthAPI health check (no auth required)
GET/usageYour API key usage statistics

Property Address Lookup

Search by address, city, and state. Optionally include ZIP code for precision.

ParameterTypeRequiredDescription
addressstringConditionalFull street address (e.g. 123 Main St)
numberstringConditionalStreet number only
city / localitystringConditionalCity name
state / countrySubdstringConditionalTwo-letter state code
zip / postal1stringOptional5-digit ZIP code
pageintegerOptionalPage number (default 1)
pagesizeintegerOptionalResults per page (max 25)

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.parcelbase.ai/api/v1/property/address?address=123+Main+St&city=Anytown&state=CA"

Response Structure

Every response includes a status object and a property array. Each property contains nested objects for address, location, owner, building, lot, assessment, sale, and mortgage data. The example below uses sample data to illustrate the response shape — it is not a live record.

{
  "status": { "code": 0, "msg": "Success", "total": 1, "page": 1, "pagesize": 25 },
  "property": [{
    "identifier": { "Id": 0, "fips": "00000", "apn": "0000-000-000" },
    "address": { "oneLine": "123 Main St", "locality": "Anytown", "countrySubd": "CA", "postal1": "90001" },
    "location": { "latitude": 34.021, "longitude": -118.779, "county": "Los Angeles" },
    "summary": { "proptype": "Single Family", "yearbuilt": 1998, "absenteeInd": "N" },
    "building": { "size": { "universalsize": 4200 }, "rooms": { "beds": 5, "bathstotal": 4 } },
    "lot": { "lotsize1": 32500, "lotsize2": 0.75, "pooltype": "Y" },
    "owner": {
      "owner1": { "fullName": "Jane Q. Public", "firstName": "Jane", "lastName": "Public", "type": "Individual" },
      "mailingAddress": { "line1": "123 Main St", "locality": "Anytown", "countrySubd": "CA" }
    },
    "assessment": { "assessed": { "total": 3800000 }, "market": { "total": 4250000 }, "avm": { "value": 4180000 } },
    "sale": { "lastSale": { "price": 3900000, "date": "2021-06-15" } },
    "mortgage": { "amount": 2800000, "lender": { "companyname": "Example Bank, N.A." } }
  }]
}

Billing & Credits

Billing is per property record returned (1 credit each); failed lookups are free. If a result has more records than your remaining credits, we return only what you can pay for, charge exactly that, and set truncated_by_credits: true with the full total so you can add credits and fetch the rest. When your balance hits zero, the next call returns 402.

Error Codes

CodeHTTP StatusDescription
0200Success
400400Invalid or missing parameters
401401Invalid or missing API key
403403API key disabled
404404No properties found
402402Out of credits — add credits to continue
429429Rate limit or daily quota exceeded

Documentation: Interactive API reference · Live playground (try it) · OpenAPI 3.0 spec (JSON). RapidAPI users: the X-RapidAPI-Key header is also accepted for authentication.