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

value is NULL whenever value_status is not 'reported' — see Concepts › Suppression before you filter or aggregate a measure.