Land Registry Report

Search and retrieve official land documents in minutes.


Flow

  1. Optionally use /lra/search to find the Property Reference Number (PRN)

  2. Pass the PRN to /lra/request to initiate the report request

  3. Receive results via webhook or poll /lra/poll


Result Delivery

Webhook (recommended) — Pass a callbackUrl in the /lra/request body. When the report is ready, a POST request is sent to that URL with the report payload wrapped in a WebhookPayload envelope. Polling remains available as a fallback if delivery fails.

Polling — Call /lra/poll with the returned token until a 200 response is returned.

Request

post

Each request maps to exactly one returned document.

Specify either PRN (if known or found through /lra/search) or address.

Requests with the PRN will return within 5 minutes most of the time.

Requests with Just the address will be manually resolved within 1-2 days.

For requests that are not a PRN (Memorials), please pass the Memorial ID into the address field like {"address": "Memorial 1234567"}. These requests will be manually resolved within 1-2 days.

Dry Run: Set dryRun: true to test the integration without incurring costs. A sample Land Registry PDF is uploaded to the report path and returned immediately — no retrieval script or manual process runs. The response includes dryRun: true and a token that can be polled normally via /lra/poll.

Webhook Delivery: Provide callbackUrl to receive a POST with the completed report when it is ready. The webhook body is a WebhookPayload containing the same data as a 200 response from /lra/poll. The request includes X-Webhook-Event: lra.report.completed and X-Request-Id headers, plus any custom headers supplied in callbackHeaders. Polling via /lra/poll remains available regardless of whether a callbackUrl is provided.

Authorizations
x-client-idstringRequired

Client ID in x-client-id header.

x-client-secretstringRequired

Client Secret in x-client-secret header.

Body
countryCodestringOptional

Country code for the property

prnstringOptional

Property Reference Number

addressstringOptional

Property Address

emailListstring · email[]Optional

Optional field for usage analytics

externalRefIdstringOptional

Your own reference ID (optional field for usage analytics)

dryRunbooleanOptional

Set to true to test the full request-poll flow without incurring costs. A sample Land Registry PDF is uploaded to S3 and the request returns immediately.

expressbooleanOptional

Expediate request speed (Only used if turn-around times have been agreed upon)

callbackUrlstring · uriOptional

HTTPS URL to receive a webhook POST when the report is ready. When provided, the completed report (same payload as a 200 response from /lra/poll) is delivered to this URL. Polling remains available as a fallback.

Pattern: ^https://.+
Responses
chevron-right
200

Success

application/json
tokenstringRequired

Poll with this token

dryRunbooleanOptional

Echoed back as true when the request was a dry run — no cost incurred

post
/lra/request
200

Success

Poll Report

post

Check the status of a land registry report request. Keep polling until a 200 response is returned.

Returns 202 while the report is still being processed.

If a callbackUrl was provided in /lra/request, the report is also delivered via webhook when ready. Polling is always available as a fallback.

Authorizations
x-client-idstringRequired

Client ID in x-client-id header.

x-client-secretstringRequired

Client Secret in x-client-secret header.

Body
tokenstringRequired

Output of /lra/request

Responses
chevron-right
200

Report ready

application/json
messagestringRequired
datastringRequired

Presigned URL to download the report

post
/lra/poll

Search HK Land Registry address records

post

Queries the address_table in PostgreSQL to find matching property records. Returns up to 300 matching records. All filter conditions are combined with AND logic. At least one search parameter should be provided.

Authorizations
x-client-idstringRequired

Client ID in x-client-id header.

x-client-secretstringRequired

Client Secret in x-client-secret header.

Body

Search filters for address lookup. All fields are optional but at least one should be provided. All supplied conditions are combined with AND logic.

blockstringOptional

Block or tower identifier (e.g. "BLOCK B", "TOWER 1"). Exact match against the block column.

Example: BLOCK B
eng_street_namestringOptional

English street name. Case-insensitive containment match (UPPER(street_name_eng) LIKE '%value%'). Tolerates partial matches.

Example: DES VOEUX ROAD CENTRAL
ch_street_namestringOptional

Chinese street name. Containment match against street_name_chn. Only used if eng_street_name is not provided.

Example: 德輔道中
flatstringOptional

Flat or unit identifier (e.g. "A", "12", "B1"). Case-insensitive containment match (UPPER(flat) LIKE '%value%').

Example: A
floorstringOptional

Floor designation (e.g. "8", "G/F", "MEZZANINE"). Case-insensitive containment match (UPPER(floor) LIKE '%value').

Example: 8
free_entrystring[]Optional

Free-form substrings matched against the free_format_addr_eng column. Each entry is matched independently with case-insensitive containment (UPPER(free_format_addr_eng) LIKE '%value%'). Multiple entries are combined with AND — all must match. Useful for searching building names, estate names, or partial addresses.

Example: ["Kai Tak Commercial","Des Voeux"]
house_prefixnumber[] · min: 1 · max: 2Optional

Numeric part of the house/building number.

  • 1 value [86]: exact match (house_num_prefix = 86).
  • 2 values [80, 90]: inclusive range (house_num_prefix BETWEEN 80 AND 90).
Example: [86,86]
house_suffixstringOptional

Alphabetic suffix of the building number (e.g. "A" in "12A"). Exact match against the house_num_suffix column.

Example: A
Responses
chevron-right
200

Matching address records (max 300).

application/json
prnstringRequired

Property Reference Number — unique identifier for the property in HK Land Registry.

Example: HK1234567
free_format_addr_engstringRequired

Full English free-format address as stored in the registry.

Example: FLAT A, 8/F, BLOCK B, KAI TAK COMMERCIAL BUILDING, 86 DES VOEUX ROAD
post
/lra/search
200

Matching address records (max 300).

Last updated