PySTAC is a library for working with the SpatioTemporal Asset Catalog specification in Python 3.
python -m pip install pystacIf 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]'git clone https://github.com/stac-utils/pystac.git
cd pystac
python -m pip install .See the installation page for more options.
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.
See the documentation page for the latest docs.
See contributing docs for details on contributing to this project.
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=docsYou can then navigate to the notebooks and execute them.
Requires Jupyter be installed.