Start here
Cancer Basemap is read anonymously — no account, no token. A release is a folder of Parquet files plus cancerbasemap.duckdb, a DuckDB database of views over them, served over HTTPS. Every client below speaks the same SQL underneath; pick the one you already use.
The one statement every client needs
ATTACH 'https://basemap.cancerdatasci.org/data/latest/cancerbasemap.duckdb' AS cbm (READ_ONLY);
USE cbm;Once attached, every table is cbm.<namespace>.<table> — cbm.measure.observation, cbm.geography.unit, and so on (plain measure.observation after USE cbm). See the Dictionary for the full table and column list. Each release also holds a views.sql that creates the same views in your own session, and every table as a plain Parquet file (measure/observation.parquet) that any engine can read.
latest/ moves each month. For anything you will rerun, replace latest with a dated folder such as v2026-11-02, and cite the Hugging Face tag (seandavis/cancerbasemap@2026-11-02) — see Versions and citation. A release holds current rows only, so there is no valid_to to filter on.
Python’s default urllib user agent is blocked by the zone (HTTP 403, Cloudflare error 1010): fetch with duckdb, requests or polars.
Pick your client
- Python — the
duckdbpackage, worked examples - DuckDB CLI — no install beyond the
duckdbbinary itself - R
- SAS
- SEER*Stat
value is NULL whenever value_status is not 'reported' — see Concepts › Suppression before you filter or aggregate a measure.