Government — entry 044 of 90

Open Government, Canada

Verified Aug 2026

Open.canada.ca is the Government of Canada's federal open-data portal; the public site has moved fully to HTTPS (the stored `http://` link now redirects), and behind its Drupal front end sits a keyless CKAN REST API at `open.canada.ca/data/en/api/3/action/`, confirmed live via `package_list` returning full bilingual (English/French) dataset JSON. The response carried no `Access-Control-Allow-Origin` header, so cross-origin browser calls are blocked despite the API itself being keyless. It catalogues datasets from federal departments spanning health, environment, finance, and transport.

Open.canada.ca runs a keyless CKAN REST API behind its Drupal front end. A live GET this run against /package_search?rows=1 returned a genuine 200, 21,083 B JSON envelope (content-type: application/json;charset=utf-8) reporting count: 47731 datasets and success: true. Both the entry's own documented path (/data/en/api/3/action/...) and the shorter, locale-free /data/api/3/action/... answer live — this quickstart pins the shorter one, and the third gotcha below has the byte-for-byte comparison. No access-control-allow-origin header was present on any probe, including an explicit OPTIONS preflight (which returned 403), confirming the stored cors: no despite the API sending an Access-Control-Allow-Methods: GET, POST header that makes it look CORS-aware.

open-datagovernment-datackancanada
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score88out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 88 on greatapis.com
<a href="https://greatapis.com/api/open-government-canada/"><img src="https://greatapis.com/badge/open-government-canada.svg" alt="Scored 88 on greatapis.com"></a>

Auth quickstart

  1. No API key, signup, or credit card required — a live GET this run against /package_search?rows=1 returned a full, real result set on the first anonymous try.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Search datasets, one result

GEThttps://open.canada.ca/data/api/3/action/package_search?rows=1

200 application/json;charset=utf-8

{
  "help": "https://open.canada.ca/data/api/3/action/help_show?name=package_search",
  "success": true,
  "result": {
    "count": 47731,
    "results": [
      {
        "id": "0032ce54-c5dd-4b66-99a0-320a7b5e99f2",
        "name": "0032ce54-c5dd-4b66-99a0-320a7b5e99f2",
        "title": "Federal Corporations",
        "title_translated": {
          "en": "Federal Corporations",
          "fr": "Sociétés de régime fédéral"
        },
        "organization": {
          "title": "Innovation, Science and Economic Development Canada | Innovation, Sciences et Développement économique Canada"
        },
        "num_resources": 10,
        "license_title": "Open Government Licence - Canada"
      }
    ]
  }
}

Trimmed to a handful of representative fields out of 59 on the real result object — the full live response above is 21,083 B. title is a plain, single-language string; the real bilingual pair lives under the separate title_translated field — see the first gotcha below.

Try it

Developer reference

Base URLhttps://open.canada.ca/data/api/3/action
Key endpoints
  • GET/package_search
  • GET/package_show
  • GET/package_list

Gotchas & limits

  • The plain title/notes fields on each result are single-language strings (English in this run's probe), not the {en, fr} bilingual objects you might expect from a bilingual government portal — the real bilingual pair lives in separately-named title_translated/notes_translated fields, confirmed live above (title_translated: {"en": "Federal Corporations", "fr": "Sociétés de régime fédéral"}). Code that reads result.title.en on the plain field will get undefined.
  • Errors keep the CKAN envelope rather than an HTTP-only signal — a live GET this run against /package_show?id=nosuchdataset returned 404, 162 B, {"help": ..., "error": {"__type": "Not Found Error", "message": "Not found"}, "success": false}result is absent entirely and you must branch on the success boolean, not just the HTTP status.
  • The entry's own summary documents the API at /data/en/api/3/action/..., but the shorter, locale-free /data/api/3/action/... (this quickstart's baseUrl) answers identically live — both returned real, near-identical result sets this run (21,083 B vs 21,086 B for the same rows=1 query). Either prefix works; this quickstart pins the shorter one.
  • The API sends Access-Control-Allow-Methods: GET, POST on every response, which can read as CORS support, but never sends Access-Control-Allow-Origin — confirmed live this run on both a plain GET and an explicit OPTIONS preflight (403, still no origin header). Browser code needs a server-side proxy despite the misleading methods header.

Availability

Uptime100%
Median latency423 ms
Last checkUp · 200 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.