A Python tool for downloading files from Zenodo records. Requires Python 3.10+.
The simplest way (no installation needed) is using uvx, a tool runner from uv:
uvx zenodo_get RECORD_ID_OR_DOIAlternatively, install with pipx or pip:
pipx install zenodo-get
# or
pip install zenodo-getuvx zenodo_get RECORD_ID_OR_DOI| Option | Description |
|---|---|
-o DIR |
Output directory (created if needed) |
-g PATTERN |
Filter files by glob pattern (e.g., -g "*.pdf") |
-m |
Generate md5sums.txt for verification |
-w FILE |
Write URLs to file instead of downloading (-w - for stdout) |
-e |
Continue on error (skip failed files) |
-n |
Start fresh (don't resume previous download) |
-v N |
Verbosity level 0-4 (default: 2) |
| Option | Description |
|---|---|
--max-http-retries N |
HTTP retries with exponential backoff (default: 5) |
--backoff-factor N |
Backoff multiplier in seconds (default: 0.5) |
-R N |
Application-level retries for checksum failures (default: 1) |
-p N |
Pause between retries in seconds (default: 3) |
-t N |
Connection timeout in seconds (default: 25) |
# Download all files from a record
uvx zenodo_get 1234567
# Download only PDFs to a specific directory
uvx zenodo_get 1234567 -g "*.pdf" -o ./downloads
# Generate URL list for external download manager
uvx zenodo_get 1234567 -w urls.txt
# Use DOI instead of record ID
uvx zenodo_get -d 10.5281/zenodo.1234567
0: All files downloaded successfully- Non-zero: Error occurred (checksum mismatch, download failure, timeout, etc.)
You can use zenodo_get as a library in your Python projects.
# Add to your project
uv add zenodo-get
# or
pip install zenodo-getfrom zenodo_get import download
# Download all files from a record
download("10.5281/zenodo.1234567", output_dir="./data")
# Download only specific files using glob pattern
download(
record_or_doi="1234567",
output_dir="./data",
file_glob="*.csv",
)
# Multiple glob patterns
download(
record_or_doi="1234567",
output_dir="./data",
file_glob=["*.csv", "*.json"],
)| Parameter | Type | Default | Description |
|---|---|---|---|
record_or_doi |
str |
- | Zenodo record ID or DOI |
output_dir |
str | Path |
"." |
Output directory |
file_glob |
str | tuple |
"*" |
Filter files by glob pattern(s) |
md5 |
bool |
False |
Generate md5sums.txt |
continue_on_error |
bool |
False |
Continue on download errors |
start_fresh |
bool |
False |
Don't resume previous download |
timeout |
float |
15.0 |
Connection timeout in seconds |
exceptions_on_failure |
bool |
True |
Raise exceptions on errors |
If you use this tool in academic work:
uvx zenodo_get --cite