API Reference · v1
Landefy REST API
Programmatic access to parcel verification, litigation records, and watchlist monitoring. Available on Business and Enterprise tiers. Early access opening Q1 2027.
Overview
The Landefy API is a REST interface for verifying Ghanaian land parcels. All endpoints accept and return JSON. All requests require authentication via bearer token.
Records are sourced from the Lands Commission, court registries, the Office of the Administrator of Stool Lands, and the Survey Department. Each record in the response includes a source field and an updated timestamp.
The API is currently in private preview. Business tier customers can request access now.
Authentication
Pass your API key in the Authorization header as a bearer token on every request.
Authorization: Bearer lf_live_xxxxxxxxxxxxxxxxxxxxxxxxKeys are scoped to a single environment — lf_live_ for production, lf_test_ for sandbox. Never expose a live key in client-side code or commit it to a repository.
Base URL
https://api.landefy.comAll endpoints are relative to this base. Requests must use HTTPS. HTTP requests are rejected with a 301 redirect.
Parcels
Retrieve a single parcel record by ID. The response includes custodian, litigation status, history, and coordinates.
/v1/parcels/:idcurl https://api.landefy.com/v1/parcels/1234-2025 \
-H "Authorization: Bearer lf_live_xxx"Response:
{
"parcel_id": "1234/2025",
"region": "Greater Accra",
"district": "Accra Metropolitan",
"custodian": {
"name": "Mensah Family Trust",
"type": "family",
"source": "Lands Commission",
"updated": "2026-08-14"
},
"litigation": {
"status": "active",
"case_count": 1
},
"area": {
"acres": 1.25,
"hectares": 0.51
},
"source": "Lands Commission",
"updated": "2026-08-14"
}Litigation
Returns active and historic litigation attached to a parcel. Status values are clear, review, or active.
/v1/parcels/:id/litigation{
"status": "active",
"cases": [
{
"case_number": "LD-2291/2024",
"court": "High Court, Accra",
"parties": "Amoako v. Mensah Family",
"filed": "2024-03-12",
"next_hearing": "2026-11-08",
"source": "High Court registry",
"updated": "2026-09-22"
}
]
}History
Returns recorded transfers, mortgages, charges, and other interests in reverse chronological order.
/v1/parcels/:id/history{
"entries": [
{
"date": "2019-04-22",
"type": "transfer",
"to": "Mensah Family Trust",
"source": "Lands Commission"
},
{
"date": "2015-09-01",
"type": "mortgage",
"holder": "GCB Bank",
"source": "Lands Commission"
}
]
}Batch verification
Verify up to 1,000 parcels in a single request. Returns a job ID. Poll the job status endpoint or subscribe to the batch.completed webhook.
/v1/parcels/batchcurl -X POST https://api.landefy.com/v1/parcels/batch \
-H "Authorization: Bearer lf_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"parcels": ["1234/2025", "5678/2025", "9012/2025"]
}'Watchlist
Add parcels to the watchlist and receive webhook notifications when litigation, ownership, or encumbrances change.
/v1/watchlist{
"parcel_id": "1234/2025",
"webhook_url": "https://your-system.example/webhooks/landefy"
}Webhooks
Landefy sends signed POST requests to your endpoint when a watched parcel changes. Verify the X-Landefy-Signature header (HMAC-SHA256 with your webhook secret) before processing.
Available events:
parcel.litigation.filedNew case filed against a watched parcel
parcel.litigation.resolvedCase resolved, withdrawn, or judgment issued
parcel.ownership.changedRegistered custodian has changed
parcel.encumbrance.addedMortgage, caveat, or charge registered
parcel.encumbrance.liftedEncumbrance removed from the title
batch.completedBatch verification job finished
Example payload:
{
"event": "parcel.litigation.filed",
"created": "2026-09-22T14:34:12Z",
"data": {
"parcel_id": "1234/2025",
"case_number": "LD-2291/2024",
"court": "High Court, Accra"
}
}Errors
Errors return a JSON body with an HTTP status code, a machine-readable code, and a human-readable message.
{
"error": {
"code": "not_found",
"message": "Parcel 1234/2025 is not in the registry."
}
}Status
Code
Description
400bad_requestMalformed request body or parameters
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks permission for this resource
404not_foundParcel or resource not found in the registry
422unprocessableRequest is valid but cannot be processed
429rate_limit_exceededToo many requests — see Retry-After header
500server_errorUnexpected error on our side
503upstream_unavailableUpstream data source temporarily unavailable
Rate limits
Rate limits are per API key and reset every 60 seconds. Exceeding the limit returns 429 with a Retry-After header.
Tier
Sustained
Burst
Monthly
Business
60 req/min12050,000Enterprise
CustomCustomUnlimitedEarly access
The API is in private preview. Business tier customers get priority access to the sandbox environment when it opens in Q1 2027.
Send your integration use case to api@landefy.com. We reply within one business day.
