# From an address to a lot, then to the cadastral plan

Resolve an address or a matricule to a lot number, read the lot record and order the cadastral plan. CAD 0.99 per call excluding Registre fees.

Three calls lead from an address to the cadastral plan: resolve the address to a lot number, read the lot record, then order the plan. The first two read the public datasets built into Données Fonciq (Québec municipal assessment rolls, cadastre). The plan is ordered on your organisation's Registre account.

## 1. Resolve the address

`GET /v1/lots/resolve` (scope `lots:read`) takes `address` or `matricule`. It costs CAD 0.99 excluding Registre fees and does not consult the Registre.

```bash
curl "https://api.fonciq.ca/v1/lots/resolve?address=100%20rue%20Saint-Paul%20Est%2C%20Montr%C3%A9al" \
  -H "Authorization: Bearer $FONCIQ_API_KEY"
```

```json
{
  "lots": [
    {
      "lot": "1234567",
      "cadastre": "Cadastre du Québec",
      "matricule": "1234-56-7890-1-234-5678",
      "role_matched": true
    }
  ]
}
```

`role_matched` says whether the assessment roll corroborates the lot. An address can return several lots: pick the one you want.

## 2. Read the lot record

`GET /v1/lots/{lot}` (scope `lots:read`) gathers the cadastre, the roll assessment (in cents) and the index rows already kept in `registre.entries`. It costs CAD 0.99 excluding Registre fees and does not pull a new index.

```bash
curl https://api.fonciq.ca/v1/lots/1234567 \
  -H "Authorization: Bearer $FONCIQ_API_KEY"
```

```json
{
  "lot": "1234567",
  "cadastre": { "label": "Cadastre du Québec", "lot": "1234567" },
  "assessment": { "year": 2026, "value_cents": 45000000 },
  "registre": { "entries": [] }
}
```

`format=csv` returns the index rows as CSV instead of the record.

## 3. Order the cadastral plan

`POST /v1/plans` (scope `registre:write`) requires `lot` and an `Idempotency-Key` header. `cadastre` defaults to Cadastre du Québec. `rf_account_id` pins a Registre account; when absent, the default account is used. The response is `200` and does not contain the PDF. It does not promise a live pull. `registry_fee_cents` is 150 when the Registre is consulted and 0 for a plan already kept. Any cadastre other than Cadastre du Québec fails with `409`.

```bash
curl -X POST https://api.fonciq.ca/v1/plans \
  -H "Authorization: Bearer $FONCIQ_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d" \
  -d '{"lot":"1234567"}'
```

```json
{
  "document_type": "plan",
  "lot": "1234567",
  "cadastre": "Cadastre du Québec",
  "registry_fee_cents": 0
}
```

### Python

```python
import os, uuid, requests

BASE = "https://api.fonciq.ca"
HEADERS = {"Authorization": f"Bearer {os.environ['FONCIQ_API_KEY']}"}

lots = requests.get(f"{BASE}/v1/lots/resolve", params={"address": "100 rue Saint-Paul Est, Montréal"}, headers=HEADERS).json()["lots"]
lot = lots[0]["lot"]

profile = requests.get(f"{BASE}/v1/lots/{lot}", headers=HEADERS).json()
print(profile["cadastre"]["label"], profile["assessment"]["value_cents"] / 100)

plan = requests.post(
    f"{BASE}/v1/plans",
    headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
    json={"lot": lot},
).json()
print("Registre fee (cents):", plan["registry_fee_cents"])
```

### Node

```js
const BASE = 'https://api.fonciq.ca';
const headers = { Authorization: `Bearer ${process.env.FONCIQ_API_KEY}` };

const { lots } = await fetch(
  `${BASE}/v1/lots/resolve?address=${encodeURIComponent('100 rue Saint-Paul Est, Montréal')}`,
  { headers },
).then((r) => r.json());
const lot = lots[0].lot;

const profile = await fetch(`${BASE}/v1/lots/${lot}`, { headers }).then((r) => r.json());
console.log(profile.cadastre.label, profile.assessment.value_cents / 100);

const plan = await fetch(`${BASE}/v1/plans`, {
  method: 'POST',
  headers: { ...headers, 'Content-Type': 'application/json', 'Idempotency-Key': crypto.randomUUID() },
  body: JSON.stringify({ lot }),
}).then((r) => r.json());
console.log('Registre fee (cents):', plan.registry_fee_cents);
```

## Cost

Each call costs CAD 0.99 excluding Registre fees. For the plan, the CAD 1.50 Registre fee applies only when the Registre is consulted: a plan already kept is returned with no Registre fee. The Registre charges that fee to the account holder, not Fonciq. A `fq_test_` key bills nothing.

## See also

- [How to extract index pages with the Fonciq API](/en/guides/quebec-index-json).
