---
name: unctadstat-maritime-indicators-ingestion
description: "How to get UNCTADstat Maritime Indicators data into a pandas DataFrame and Parquet: access, the request, the format, limits, quirks and terms."
---

# Load UNCTAD monthly shipping connectivity into Parquet

Source entry: https://signal-lab-jet.vercel.app/datasets/unctadstat-maritime-indicators
Provider: https://unctadstat.unctad.org/datacentre/
Checked against the provider's documentation: 2026-11-01

## Access
- No registration or key is needed for the checked compressed bulk CSV.
- Install py7zr to extract the provider's 7z archive.

## Request
```bash
curl -O 'https://unctadstat-api.unctad.org/bulkdownload/US.LSCI_M/US_LSCI_M'
```

## Format
7z archive containing CSV rows for monthly economy-level liner-shipping connectivity, growth rates, footnotes and missing-value annotations.

## Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
```python
"""UNCTAD monthly liner-shipping connectivity bulk CSV -> pandas -> Parquet."""
import tempfile
import requests
import pandas as pd
import py7zr

URL = "https://unctadstat-api.unctad.org/bulkdownload/US.LSCI_M/US_LSCI_M"
r = requests.get(URL, headers={"User-Agent": "SignalLabCheck/1.0"}, timeout=60)
r.raise_for_status()
with tempfile.TemporaryDirectory() as tmp:
    archive = f"{tmp}/data.7z"
    with open(archive, "wb") as f:
        f.write(r.content)
    with py7zr.SevenZipFile(archive) as z:
        names = z.getnames()
        z.extractall(tmp)
    csv_name = next(name for name in names if name.lower().endswith(".csv"))
    df = pd.read_csv(f"{tmp}/{csv_name}")
df.to_parquet("unctad_liner_shipping_connectivity_monthly.parquet", index=False)
print(len(df), "rows", len(df.columns), "columns",
      "period", df["Month"].min(), "to", df["Month"].max())
```
Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 20449 rows 13 columns period 2006M02 to 2026M09

## Limits
- Rate limit: Not stated.
- Coverage and release frequency vary by table.
- The checked monthly connectivity archive was listed as 215,059 bytes in bulk-file metadata.

## Quirks
- The bulk response is a 7z archive despite the extensionless URL; extraction needs a 7z-capable library.
- Month uses values such as 2006M02 rather than an ISO date; parse the year and month explicitly.
- Keep units, footnotes and missing-value fields because definitions and availability differ across economies and periods.

## Terms and attribution
- Materials are under the Creative Commons Attribution 3.0 IGO licence.
- Cite United Nations Trade and Development Data Hub as the source when copying, duplicating or redistributing data and metadata.
- Terms page: https://unctadstat.unctad.org/EN/About.html#TERMS_OF_USE

## Sources
- https://unctadstat.unctad.org/EN/FAQ.html: "Access to data is free and there is no registration required."
- https://unctadstat.unctad.org/EN/FAQ.html: "You can save the selected data in CSV format"
- https://unctadstat.unctad.org/EN/FAQ.html: "All materials provided on this website are copyrighted under the Creative Commons Attribution 3.0 IGO license."
- https://unctadstat.unctad.org/EN/FAQ.html: "All data and metadata provided on the UNCTAD Data Hub may be copied freely, duplicated and further distributed provided that United Nations Trade and Development Data Hub is cited as the source."

## 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-jet.vercel.app/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.
