API Documentation
RESTful JSON API. Standard Bearer token authentication. Detailed response schemas.
Base URL
https://api.parcelbase.ai/api/v1Authentication
Include your API key in the Authorization header with every request:
Authorization: Bearer YOUR_API_KEYEndpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /property/address | Lookup by street address + city + state |
| GET | /property/detail | Full property detail (same as address lookup) |
| GET | /property/owner | Search by owner last name |
| GET | /property/parcel | Search by APN / parcel ID |
| GET | /sale/detail | Most recent sale information |
| GET | /sale/history | Full sales transaction history |
| GET | /assessment/detail | Tax assessment details and history |
| GET | /health | API health check (no auth required) |
| GET | /usage | Your API key usage statistics |
Property Address Lookup
Search by address, city, and state. Optionally include ZIP code for precision.
| Parameter | Type | Required | Description |
|---|---|---|---|
| address | string | Conditional | Full street address (e.g. 123 Main St) |
| number | string | Conditional | Street number only |
| city / locality | string | Conditional | City name |
| state / countrySubd | string | Conditional | Two-letter state code |
| zip / postal1 | string | Optional | 5-digit ZIP code |
| page | integer | Optional | Page number (default 1) |
| pagesize | integer | Optional | Results 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
| Code | HTTP Status | Description |
|---|---|---|
| 0 | 200 | Success |
| 400 | 400 | Invalid or missing parameters |
| 401 | 401 | Invalid or missing API key |
| 403 | 403 | API key disabled |
| 404 | 404 | No properties found |
| 402 | 402 | Out of credits — add credits to continue |
| 429 | 429 | Rate 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.

