---
name: transport-canada-register-large-vessels-ingestion
description: "How to get Canadian Register of Large Vessels (Transport Canada) data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load the Canadian Register of Large Vessels into pandas and Parquet

Source entry: https://signal-lab.qdt.ai/datasets/transport-canada-register-large-vessels
Provider: https://open.canada.ca/data/en/dataset/bf00b7f4-e370-46b7-94e4-0bdedc98531b
Checked against the provider's documentation: 2026-11-05

## Access
- No key for the open.canada.ca dataset page and the XLSX download.
- The data.tc.gc.ca v1.3 JSON API was unreliable when checked (HTTP 500 / empty or 404 responses); this skill uses the XLSX instead.

## Request
```bash
curl -s 'https://opendatatc.tc.canada.ca/large-vessel-registry_dataset_en.xlsx' -o large-vessels.xlsx
```

## Format
XLSX workbook: Official Number, Vessel Name, IMO Vessel Number, Hull Number, Year of Build, Port of Registry, Gross/Net Tonnage, Length/Breadth/Depth, Engine/Propulsion and related fields.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""Transport Canada Canadian Register of Large Vessels XLSX -> pandas -> Parquet."""
import io
import pandas as pd
import requests

UA = {"User-Agent": "SignalLabCheck/1.0"}
URL = "https://opendatatc.tc.canada.ca/large-vessel-registry_dataset_en.xlsx"
r = requests.get(URL, headers=UA, timeout=120)
r.raise_for_status()
df = pd.read_excel(io.BytesIO(r.content), dtype=str)  # needs openpyxl
df.to_parquet("transport_canada_large_vessels.parquet", index=False)
print(len(df), "vessels;", df["IMO Vessel Number"].notna().sum(), "with an IMO number")
print(df[["Official Number", "Vessel Name", "IMO Vessel Number", "Port of Registry"]].head())

```
Run by us on 2026-11-05 (python 3 | pandas | pyarrow | requests | openpyxl). Result: Fetched the English XLSX on 2026-11-05: 26,671 vessel rows, 1,165 with an IMO number. Re-checked 2026-11-06: Last-Modified Thu, 05 Nov 2026, newest Certificate Issuing/Registration date 2026-11-04. The data.tc.gc.ca v1.3 JSON API was unreliable the same nights, so this skill reads the XLSX.

## Limits
- Not stated numeric rate limit.
- One XLSX of about 3.1 MB; parsing needs openpyxl.

## Quirks
- The JSON API (data.tc.gc.ca v1.3) was unreliable when checked (HTTP 500 / empty or 404 responses); use the XLSX resource instead.
- The XLSX is regenerated regularly (registrations through 2026-11-04 in the file checked 2026-11-06); do not treat the catalog-record last_modified metadata as the data vintage.

## Terms and attribution
- Open Government Licence – Canada: worldwide, royalty-free, perpetual, non-exclusive, including commercial use, with source acknowledgment.
- Terms page: https://open.canada.ca/en/open-government-licence-canada

## Sources
- https://open.canada.ca/en/open-government-licence-canada: "worldwide, royalty-free, perpetual, non-exclusive licence to use the Information, including for commercial purposes"
- https://open.canada.ca/data/en/dataset/bf00b7f4-e370-46b7-94e4-0bdedc98531b: "The Canadian Register of Vessels contains information on Vessels registered in Canada."

## Help improve this skill
Missing a source, or see something to improve? Call the MCP tool suggest_source or feedback (or POST /api/suggest or /api/feedback). Reviewed ideas: https://signal-lab.qdt.ai/agent-suggestions

Information for educational purposes only. Free tiers, limits and licenses belong to the providers and may change; check the provider's own terms before using the data.
