Downloads docket documents from the North Dakota Supreme Court public cTrack portal. By default it fetches the briefs and notices of appeal for cases on the upcoming calendar or for a specific case by number. It can also target other docket entries — published opinions (including corrected, amended, on-rehearing, and on-motion opinions) — or download every document on a case's docket.
- Node.js v18 or later
- Download and install Node.js from https://nodejs.org/ (LTS version recommended).
- Open Command Prompt or PowerShell.
- Clone the repository and install dependencies:
git clone https://github.com/jet52/ctrack-fetch.git
cd ctrack-fetch
npm install
- Install Node.js using Homebrew or download from https://nodejs.org/:
brew install node
- Clone the repository and install dependencies:
git clone https://github.com/jet52/ctrack-fetch.git
cd ctrack-fetch
npm install
- Install Node.js using your package manager. For Ubuntu/Debian:
sudo apt update
sudo apt install nodejs npm
For Fedora:
sudo dnf install nodejs npm
- Clone the repository and install dependencies:
git clone https://github.com/jet52/ctrack-fetch.git
cd ctrack-fetch
npm install
npm installdownloads Puppeteer and a bundled Chromium browser (~150 MB). This only needs to happen once.
node ctrack-fetch.js
This downloads briefs for all cases scheduled in the next 7 days. No login is required — the script uses the public cTrack portal as an anonymous visitor.
node ctrack-fetch.js -c 20990002
node ctrack-fetch.js -c 20990002 -a
This downloads every document with a viewable attachment (motions, notices, affidavits, etc.), not just briefs and notices of appeal. Service documents are always skipped.
node ctrack-fetch.js -c 20990002 -O
This downloads only published opinions, skipping briefs and everything else. A single docket may hold more than one opinion — the original plus any corrected, amended, on-rehearing, or on-motion opinions — and each is saved under a distinct name. -O overrides -a.
npm run download # Normal run
npm run download:debug # Opens visible browser, verbose output
npm run download:silent # No console output
| Flag | Description | Default |
|---|---|---|
-h, --help |
Show help message | |
-v, --verbose |
Enable debug output | |
-q, --quiet |
Silent mode (no output) | |
-o, --output DIR |
Output directory for downloaded PDFs | current directory |
-d, --days N |
Number of days to look ahead on calendar | 7 |
-c, --case NUMBER |
Download briefs for a specific 8-digit case number | |
-a, --all |
Download all documents, not just briefs/NOA | |
-O, --opinions |
Download only opinions (incl. corrected/amended); overrides -a |
node ctrack-fetch.js -v # With debug output
node ctrack-fetch.js -o ~/briefs # Save to specific directory
node ctrack-fetch.js -d 14 # Look ahead 14 days
node ctrack-fetch.js -c 20990001 # Specific case
node ctrack-fetch.js -c 20990001 -a # All documents for a case
node ctrack-fetch.js -c 20990001 -O # Only the opinion(s) for a case
node ctrack-fetch.js -v -o ~/briefs -d 7 # Combine options
On a fresh clone, activate the local pre-push sensitive-content check:
git config --local core.hooksPath .githooksIt scans commits being pushed for likely ND court dockets, confidential-case
captions, and committed binaries. Bypass once with git push --no-verify.