Skip to main content

zenodo_get: a downloader for Zenodo records

CI Build status Coverage Status pyversion PyPI - License DOI

A Python tool for downloading files from Zenodo records. Requires Python 3.10+.

Installation

The simplest way (no installation needed) is using uvx, a tool runner from uv:

uvx zenodo_get RECORD_ID_OR_DOI

Alternatively, install with pipx or pip:

pipx install zenodo-get
# or
pip install zenodo-get

Usage

uvx zenodo_get RECORD_ID_OR_DOI

Common Options

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)
--proxy URL Use an HTTP(S) or SOCKS5 proxy
--no-proxy Disable proxy use, including environment variables

Proxy settings follow curl's CGI-safe environment policy: HTTPS_PROXY/https_proxy apply to HTTPS requests, ALL_PROXY/all_proxy applies to all requests, and NO_PROXY/no_proxy bypasses matching hosts. HTTP_PROXY and http_proxy are ignored. Detected proxies are logged at verbosity levels above 0 with credentials redacted.

Retry Options

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)

Examples

# 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

Exit Codes

  • 0: All files downloaded successfully
  • Non-zero: Error occurred (checksum mismatch, download failure, timeout, etc.)

Python API

You can use zenodo_get as a library in your Python projects.

Installation

# Add to your project
uv add zenodo-get
# or
pip install zenodo-get

Usage

from 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"],
)

Parameters

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

Citation

If you use this tool in academic work:

uvx zenodo_get --cite

Release files for zenodo-get 3.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zenodo-get 3.1.0
File Size Uploaded
zenodo_get-3.1.0.tar.gz 32.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zenodo-get 3.1.0
File Interpreter ABI Platform
zenodo_get-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 75.7 kB

Release files / zenodo_get-3.1.0.tar.gz

Download URL zenodo_get-3.1.0.tar.gz
Size 32.3 kB
Tags Source
SHA-256 checksum
How to use checksums
73c945198853aa362cf8ce6a71b9f1112671ce995622a1969978ffdf12ecd10f
BLAKE2b-256 checksum
How to use checksums
d4666a89b7feb17ec109f914ceb247c71dc991becd5d0dc24d7be977f34a9ebd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release files / zenodo_get-3.1.0-py3-none-any.whl

Download URL zenodo_get-3.1.0-py3-none-any.whl
Size 43.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3e7534d56bf911aacdea67b87f795598db566fee853597b2c007f741860d80bf
BLAKE2b-256 checksum
How to use checksums
b8576876a45e6943a58b30586286e6330312b8704f807ebbeb784360eca140dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.15

Release history Release notifications | RSS feed

This release

3.1.0 This release

2 release files

3.0.3

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.1.1

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page