fonciq
Free API · no key · MCP

Free Québec flood-zone API

Fonciq’s free API tells you, with no key, whether a point, an address or a lot in Québec hits a flood zone in 9 open sources (BDZI, flood-zone presence grid, the historical 2017-2019 ZIS, Gatineau, Québec City, Sherbrooke, Montréal), with the source, the mapping generation, the distance to the nearest zone and CC BY 4.0 attribution.

Call

One GET, no key.

GET https://api.fonciq.ca/v1/free/zones-inondables with exactly one of lat+lon, address or lot. Add lang=en for English labels.

cURL
curl "https://api.fonciq.ca/v1/free/zones-inondables?lat=45.40527&lon=-75.87624"

curl "https://api.fonciq.ca/v1/free/zones-inondables?address=148%20rue%20de%20la%20C%C3%A9dri%C3%A8re%2C%20Gatineau"

curl "https://api.fonciq.ca/v1/free/zones-inondables?lot=2883944&lang=en"
JavaScript (fetch)
const url = new URL('https://api.fonciq.ca/v1/free/zones-inondables');
url.searchParams.set('address', '148 rue de la Cédrière, Gatineau');

const res = await fetch(url); // CORS: any origin, no key
if (res.status === 429) {
  console.log('Retry after', res.headers.get('Retry-After'), 's');
} else {
  const body = await res.json();
  for (const r of body.results) {
    console.log(r.status_label, r.zones.map((z) => z.source + ':' + z.zone_kind));
  }
  console.log(body.note);        // « Limite du lot non évaluée… »
  console.log(body.attribution); // CC BY 4.0, per source
}
Response: no zone found at this point (real, trimmed)
{
  "match": { "type": "coordinates", "quality": "exact" },
  "any_zone_found": false,
  "summary_label": "Aucune zone trouvée à ce point",
  "lot_boundary_evaluated": false,
  "note": "Limite du lot non évaluée. La réponse porte sur un point…",
  "cartographie": {
    "generation_des_sources": "ancienne_generation",
    "nouvelle_generation_incluse": false,
    "carte_officielle_url": "https://www.quebec.ca/…/verifier-propriete"
  },
  "results": [{
    "point": { "lat": 46.8, "lon": -71.2, "kind": "query_coordinates" },
    "zone_found_at_point": false,
    "status": "no_zone_found_at_point",
    "status_label": "Aucune zone trouvée à ce point",
    "zones": [],
    "nearest_zone": {
      "distance_m": 4598,
      "source": "presence_grid",
      "zone_kind": "presence_possible"
    }
  }],
  "attribution": { "text": "Contient des données…", "sources": [ … ] },
  "disclaimer": "Information indicative seulement…",
  "limits": { "per_minute": 30, "per_day": 1000, "key_required": false }
}
Response: zone found at this point (real, trimmed)
{
  "match": { "type": "coordinates", "quality": "exact" },
  "any_zone_found": true,
  "cartographie": { "generation_des_sources": "ancienne_generation", "nouvelle_generation_incluse": false, … },
  "historical_note": "La zone d’intervention spéciale (ZIS) 2017-2019 a été levée le 1er mars 2022…",
  "results": [{
    "point": { "lat": 45.40527, "lon": -75.87624, "kind": "query_coordinates" },
    "status_label": "Zone trouvée à ce point",
    "fonciq_level": "eleve",
    "zones": [
      { "source": "bdzi", "zone_kind": "grand_courant", "mapping_generation": "ancienne_generation" },
      { "source": "municipal_gat", "zone_kind": "recurrence_20", "mapping_generation": "ancienne_generation" },
      { "source": "municipal_gat_courant", "zone_kind": "recurrence_20", "mapping_generation": "ancienne_generation" },
      { "source": "presence_grid", "zone_kind": "presence_possible", "mapping_generation": "indicatif" },
      { "source": "zis_annexe2", "zone_kind": "zis", "mapping_generation": "historique", "historical": true }
    ],
    "nearest_zone": { "distance_m": 0, "source": "bdzi" }
  }]
}

Full contract: OpenAPI (JSON), operation getFreeFloodZones.

Limits

Free, with per-IP limits.

  • 30 requests per minute and 1000 per 24 h, per IP address (IPv6: per /64).
  • Beyond that: 429 with a Retry-After header. 200 responses may be cached for one hour.
  • Open CORS (Access-Control-Allow-Origin: *), GET and OPTIONS only.
  • Coverage: Québec (latitude 44.9 to 62.6, longitude −79.8 to −57.1).
  • Lot boundary not evaluated: the answer is about a point.

Mapping

Old or new generation?

The sources checked are old-generation maps (municipal and MRC maps, BDZI) and indicative layers. Since March 1, 2026, a new-generation map replaces the old-generation map in its own sector once published. New-generation maps are not released as open data and are not included here: every answer says "generation_des_sources: ancienne_generation" and links to the official interactive map to confirm.

The 2017-2019 special intervention zone (ZIS) was lifted on March 1, 2022. Its perimeter (land flooded in 2017 and 2019) is still shown as a historical reference, with historical: true, and is never rated “high”.

Official interactive map of flood zones and watercourse mobility zones (Government of Québec).

MCP

Remote MCP server for AI agents.

https://api.fonciq.ca/v1/mcp, Streamable HTTP (JSON responses, no session).

  • flood_zones_lookup: free, no key, same per-IP limits as the HTTP API (shared).
  • The other tools (lot_resolve, lot_get, registre_index_request, acte_get, plan_get, job_get, job_results, document_get, document_entries, batch_submit, watch_create, billing_get, billing_usage) wrap the Fonciq API v1. They need your own key in the Authorization header and follow the HTTP API pricing: only documents (index, deed, plan) are billed, 0,99 $ each on a live key, excluant frais du registre. Lot reads, job reads and watch creation are not billed. A fq_test_ key costs nothing. Get a key.
  • Writes need idempotency_key (sent as the Idempotency-Key header).
Config (free tool)
{
  "mcpServers": {
    "fonciq": { "url": "https://api.fonciq.ca/v1/mcp" }
  }
}
Config with your key
{
  "mcpServers": {
    "fonciq": {
      "url": "https://api.fonciq.ca/v1/mcp",
      "headers": { "Authorization": "Bearer fq_test_…" }
    }
  }
}
Claude Code
claude mcp add --transport http fonciq https://api.fonciq.ca/v1/mcp

Attribution

Open sources, CC BY 4.0.

Every answer carries the attribution text to reproduce, per source. Data transformed by Fonciq (spatial intersection and classification). Fonciq is not affiliated with any government body.

Disclaimer

Indicative information.

Indicative information only, provided free and without warranty. It is not legal advice, a certificate, or an official flood-zone determination. The maps in force are those of your municipality or MRC, or the new-generation mapping published by the Québec government, which is not included here: confirm on the Québec government’s official interactive map. No result does not mean a property is outside a flood zone.

Frequently asked questions

Short answers.

Is there a free API for Québec flood zones?
Yes. Fonciq’s free API tells you, with no key, whether a point, an address or a lot in Québec hits a flood zone in 9 open sources (BDZI, flood-zone presence grid, the historical 2017-2019 ZIS, Gatineau, Québec City, Sherbrooke, Montréal), with the source, the mapping generation, the distance to the nearest zone and CC BY 4.0 attribution. No key or sign-up: 30 requests per minute and 1000 per day per IP address.
Does “No zone found at this point” mean the property is outside a flood zone?
No. It means none of the 9 sources covers that point. The new-generation mapping (framework in force since March 1, 2026) is not included, and the lot boundary is not evaluated. Confirm on the Québec government’s official interactive map and with your municipality or MRC.
Why can a lot lookup miss a zone?
A lot is read through its address points in the Référentiel québécois des adresses, not through its polygon, and an address point often sits on the street side. In one sample of 1,500 lots whose polygon touches a mapped zone, address points caught only about 15 %; that figure comes from a single sample, and lots touching a zone by a sliver overstate the misses. lot_boundary_evaluated is always false.
Which sources are used?
BDZI and the historical 2017-2019 ZIS (MELCCFP), the flood-zone presence grid (MRNF), and the open layers of Gatineau (two layers), Québec City, Sherbrooke and Montréal (two reference layers), all under CC BY 4.0. Every answer credits the sources it hit, with their check date.
Does the API include new-generation flood maps?
The sources checked are old-generation maps (municipal and MRC maps, BDZI) and indicative layers. Since March 1, 2026, a new-generation map replaces the old-generation map in its own sector once published. New-generation maps are not released as open data and are not included here: every answer says "generation_des_sources: ancienne_generation" and links to the official interactive map to confirm.
Is the 2017-2019 ZIS still in force?
The 2017-2019 special intervention zone (ZIS) was lifted on March 1, 2022. Its perimeter (land flooded in 2017 and 2019) is still shown as a historical reference, with historical: true, and is never rated “high”.
How do I connect an AI agent (MCP)?
Add the remote MCP server https://api.fonciq.ca/v1/mcp (Streamable HTTP). flood_zones_lookup is free with no key. The other tools wrap the Fonciq API v1 with your own key in the Authorization header and follow the HTTP API pricing: only documents (index, deed, plan) are billed, 0,99 $ each on a live key, excluant frais du registre (excluding Registre fees). Lot reads and watch creation are not billed.