PySTAC
April 3, 2026 ยท View on GitHub
PySTAC is a library for working with the SpatioTemporal Asset Catalog specification in Python 3.
Installation
Install from PyPi (recommended)
python -m pip install pystac
If you would like to enable the validation feature utilizing the
jsonschema project, install with the optional
validation requirements:
python -m pip install 'pystac[validation]'
If you would like to use the orjson instead of the
standard json library for JSON serialization/deserialization, install with the
optional orjson requirements:
python -m pip install 'pystac[orjson]'
If you would like to use a custom RetryStacIO class for automatically retrying
network requests when reading with PySTAC, or if you have non-ASCII characters in
your urls you'll need
urllib3:
python -m pip install 'pystac[urllib3]'
If you are using jupyter notebooks and want to enable pretty display of pystac
objects you'll need jinja2
python -m pip install 'pystac[jinja2]'
Install from source
git clone https://github.com/stac-utils/pystac.git
cd pystac
python -m pip install .
See the installation page for more options.
Versioning
The core PySTAC API follows Semantic Versioning. As of Spring 2026, our extension implementations have moved to their own Python packages, so they can be versioned independently of the core PySTAC API. Breaking changes to the API of extension packages are not considered breaking changes for the purposes of PySTAC versioning.
The STAC extension packages' version will match the version extension itself, e.g. pystac-ext-projection v2.0.0 corresponds to the v2.0.0 release of the projection extension. Any changes to the software (not the extension) will be released via post releases.
Documentation
See the documentation page for the latest docs.
Developing
See contributing docs for details on contributing to this project.
Running the quickstart and tutorials
There is a quickstart and tutorials written as jupyter notebooks in the docs/tutorials folder.
To run the notebooks, run a jupyter notebook with the docs directory as the notebook directory:
jupyter notebook --ip 0.0.0.0 --port 8888 --notebook-dir=docs
You can then navigate to the notebooks and execute them.
Requires Jupyter be installed.