stac-pydantic
Pydantic data models for the STAC spec
Decision gist · record as of 2026-08-14
Yes. The package is actively maintained, has no known vulnerabilities, low install friction, and a permissive MIT license. It is the standard choice for type-safe STAC handling in Python web frameworks. Install it if you are building or consuming STAC APIs or need to validate geospatial catalog metadata.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Low friction: pure Python wheel with only four runtime dependencies (click, geojson-pydantic, pydantic, typing-extensions).
- Actively maintained with a release 49 days ago and no known vulnerabilities.
License · maintenance · safety
permissive license (permissive) — MIT License permits unrestricted use, modification, and distribution in both open-source and commercial projects with minimal restrictions.
last release 2026-06-26 (49 days) · last repo commit 2026-08-05 · 83 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 151,497 downloads/mo, #10,929 on PyPI
Alternatives
Verify before relying
pip install stac-pydantic
from stac_pydantic import Catalog
stac_catalog = {
"type": "Catalog",
"stac_version": "1.0.0",
"id": "sample",
"description": "Sample catalog",
"links": [{"href": "item.json", "rel": "item"}]
}
catalog = Catalog(**stac_catalog)
print(catalog.id)- Whether the library's extension validation (validate_extensions) works reliably with custom vendor extensions beyond the official STAC registry.
- Performance characteristics when handling large catalogs with many items or deeply nested structures.
- Whether the CLI validate-item command supports all STAC Item variants and extensions.
What it is and what it does
stac-pydantic wraps the STAC specification (Spatiotemporal Asset Catalog) in Pydantic models, letting you validate and serialize geospatial metadata as strongly-typed Python objects. It covers core STAC Catalogs, Collections, and Items, plus the STAC API extensions for dynamic catalog queries. The library is built on pydantic, click, geojson-pydantic, and typing-extensions, making it lightweight and suitable for embedding in web services like FastAPI.
The main use case is request/response validation in APIs that serve or consume STAC data. It handles the namespace aliasing that STAC extensions require (e.g., eo:cloud_cover becomes a Python attribute), provides extension validation against remote JSON schemas, and ensures required fields are preserved during export even when null. For comprehensive schema validation and robust extension support, the documentation recommends pystac as an alternative.
Use it for
- Validate STAC Items and Catalogs in a FastAPI endpoint before storing or forwarding them.
- Serialize Python geospatial metadata objects to STAC-compliant JSON with automatic namespace handling.
- Validate STAC extension fields (e.g., EO, Projection) against their published JSON schemas.
- Build a STAC API server that accepts ItemSearch queries and returns ItemCollections with type safety.
- Parse and validate STAC Catalogs from remote URLs or local files into typed Python objects.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
The package is actively maintained, has no known vulnerabilities, low install friction, and a permissive MIT license. It is the standard choice for type-safe STAC handling in Python web frameworks. Install it if you are building or consuming STAC APIs or need to validate geospatial catalog metadata.
Install
stac-pydantic on PyPI
Before you install
Low friction: pure Python wheel with only four runtime dependencies (click, geojson-pydantic, pydantic, typing-extensions). Actively maintained with a release 49 days ago and no known vulnerabilities.
Requires Python 3.10 or later.
License in practice
MIT License permits unrestricted use, modification, and distribution in both open-source and commercial projects with minimal restrictions.
Quickstart
pip install stac-pydantic
from stac_pydantic import Catalog
stac_catalog = {
"type": "Catalog",
"stac_version": "1.0.0",
"id": "sample",
"description": "Sample catalog",
"links": [{"href": "item.json", "rel": "item"}]
}
catalog = Catalog(**stac_catalog)
print(catalog.id)
Verify before relying
- Whether the library's extension validation (validate_extensions) works reliably with custom vendor extensions beyond the official STAC registry.
- Performance characteristics when handling large catalogs with many items or deeply nested structures.
- Whether the CLI validate-item command supports all STAC Item variants and extensions.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 4 packagesclickgeojson-pydanticpydantictyping-extensions |
| Maintenance | Actively maintained 49 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 151,497 / month, #10,929 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Intended Audience :: DevelopersIntended Audience :: Information TechnologyIntended Audience :: Science/ResearchLicense :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14 |
Evidence: stac_pydantic-3.6.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pydantic models stac catalog”
- stac-pydanticProvides Pydantic models for validating and serializing STAC…
- stac-fastapi-typesProvides core type definitions and data models for building STAC API…
- stac-fastapi-pgstacProvides a FastAPI-based HTTP interface to PgSTAC, a PostgreSQL…
Give your agent the search over MCP, or paste the wish link into any chat.
More Information Analysis packages
A drop-in replacement for Python's standard `re` module that adds advanced regex features like nested sets, fuzzy matching, lookaround in conditionals, and full Unicode case-folding while maintaining backward compatibility.
pyarrow provides Python bindings to Apache Arrow's C++ libraries for efficient columnar data processing, serialization, and interoperability with pandas, NumPy, and other Python ecosystem tools.
NetworkX provides data structures and algorithms for creating, analyzing, and manipulating graphs and networks, supporting everything from simple undirected graphs to complex directed and weighted networks.
Connects Python applications to Snowflake data warehouses using the DB API 2.0 specification, enabling SQL queries, data transfers, and warehouse operations.
ContourPy calculates contours of 2D quadrilateral grids using C++11 algorithms wrapped in Python, offering serial and multithreaded implementations without requiring Matplotlib as a dependency.
Snowpark Python provides APIs to query and process data directly in Snowflake without moving data to your local system, with support for both native Snowpark and pandas-compatible interfaces.
Install it if you use Snowflake and want to process data without moving it to your application layer.
See also geojson-pydantic · stac-fastapi-types · stac-fastapi-api · stac-fastapi-extensions · stac-fastapi-pgstac · pydantic-collections · pystac-core · pystac · openapi-pydantic · pydantic-geojson