← back to Professional Directory

scripts/download_npi_bulk.sh

32 lines

#!/usr/bin/env bash
# Download the latest NPPES NPI Registry monthly bulk file.
# Free, public-domain data, no key. ~7-8 GB zipped, ~30 GB extracted (CSV).
#
# Usage:
#   bash scripts/download_npi_bulk.sh [MonthYear]
#   bash scripts/download_npi_bulk.sh April_2026
#
# After download:
#   unzip -d data/nppes/ data/nppes/NPPES_Data_Dissemination_*.zip
#   npm run ingest:npi          # streams the npidata_pfile_*.csv

set -euo pipefail

MONTH_YEAR="${1:-April_2026}"
URL="https://download.cms.gov/nppes/NPPES_Data_Dissemination_${MONTH_YEAR}_V2.zip"
DEST_DIR="$(cd "$(dirname "$0")/.." && pwd)/data/nppes"
DEST="$DEST_DIR/NPPES_Data_Dissemination_${MONTH_YEAR}_V2.zip"

mkdir -p "$DEST_DIR"

echo "[npi-dl] URL  = $URL"
echo "[npi-dl] dest = $DEST"

# Resume-friendly download
curl -L -C - --retry 5 --retry-delay 30 \
     --output "$DEST" \
     "$URL"

echo "[npi-dl] downloaded: $(du -sh "$DEST" | cut -f1)"
echo "[npi-dl] next:  unzip -d $DEST_DIR $DEST"