https://github.com/stac-utils/pystac
Python library for working with any SpatioTemporal Asset Catalog (STAC)
https://github.com/stac-utils/pystac
Last synced: 12 days ago
JSON representation
Python library for working with any SpatioTemporal Asset Catalog (STAC)
- Host: GitHub
- URL: https://github.com/stac-utils/pystac
- Owner: stac-utils
- License: other
- Created: 2017-11-08T13:30:15.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2026-05-26T13:31:44.000Z (13 days ago)
- Last Synced: 2026-05-26T15:20:58.231Z (13 days ago)
- Language: Python
- Homepage: https://pystac.readthedocs.io
- Size: 11.1 MB
- Stars: 447
- Watchers: 20
- Forks: 131
- Open Issues: 76
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/contributing.rst
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-earthobservation-code - pystac - `Python` library for working with any SpatioTemporal Asset Catalog (STAC) (`Python` processing of optical imagery (non deep learning) / Cloud Native Geospatial)
- Awesome-Geospatial - PySTAC - Python library for working with any SpatioTemporal Asset Catalog (STAC). (Python)
README
# PySTAC
[](https://github.com/stac-utils/pystac/actions/workflows/continuous-integration.yml)
[](https://badge.fury.io/py/pystac)
[](https://anaconda.org/conda-forge/pystac)
[](https://pystac.readthedocs.io/en/latest/)
[](https://codecov.io/gh/stac-utils/pystac)
[](https://gitter.im/SpatioTemporal-Asset-Catalog/python?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[](https://opensource.org/licenses/Apache-2.0)
PySTAC is a library for working with the [SpatioTemporal Asset Catalog](https://stacspec.org) specification in Python 3.
## Installation
### Install from PyPi (recommended)
```shell
python -m pip install pystac
```
If you would like to enable the validation feature utilizing the
[jsonschema](https://pypi.org/project/jsonschema/) project, install with the optional
`validation` requirements:
```shell
python -m pip install 'pystac[validation]'
```
If you would like to use the [`orjson`](https://pypi.org/project/orjson/) instead of the
standard `json` library for JSON serialization/deserialization, install with the
optional `orjson` requirements:
```shell
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`](https://urllib3.readthedocs.io/en/stable/):
```shell
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`](https://pypi.org/project/Jinja2/)
```shell
python -m pip install 'pystac[jinja2]'
```
### Install from source
```shell
git clone https://github.com/stac-utils/pystac.git
cd pystac
python -m pip install .
```
See the [installation page](https://pystac.readthedocs.io/en/latest/installation.html)
for more options.
## Versioning
The core PySTAC API follows [Semantic Versioning](https://semver.org/).
As of [Spring 2026](https://github.com/stac-utils/pystac/pull/1650), our [extension](https://stac-extensions.github.io/) 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](https://github.com/stac-extensions/projection/releases/tag/v2.0.0) release of the **projection** extension.
Any changes to the software (not the extension) will be released via [post releases](https://packaging.python.org/en/latest/discussions/versioning/#valid-version-numbers).
## Documentation
See the [documentation page](https://pystac.readthedocs.io/en/latest/) for the latest docs.
## Developing
See [contributing docs](https://pystac.readthedocs.io/en/latest/contributing.html)
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:
```shell
jupyter notebook --ip 0.0.0.0 --port 8888 --notebook-dir=docs
```
You can then navigate to the notebooks and execute them.
Requires [Jupyter](https://jupyter.org/) be installed.