Developer Resources

SDKs & Libraries

Integrate GeoServer's geospatial engine into your applications. Official SDKs, community-maintained libraries, and lightweight HTTP clients for every modern stack.

Official & Community SDKs

Maintained, tested, and ready for production workloads.

Contribute a Library →
🐍
Official

geoserver-python

Full-featured async client for layer management, WMS/WFS queries, and REST API operations.

pip install geoserver-sdk
⚡
Official

@geoserver/sdk

TypeScript-first client with built-in GeoJSON parsing, tile layer caching, and OGC API compliance.

npm i @geoserver/sdk
đŸĻĢ
Official

go-geoserver

Lightweight, concurrency-safe Go client for spatial data ingestion, WFS-T transactions, and style management.

go get github.com/geoserver/go-sdk
☕
Community

geoserver-client-java

JAX-RS based client for enterprise Java apps. Supports Spring Boot auto-configuration and connection pooling.

mvn install geoserver:java-client
đŸĻ€
Community

geoserver-rs

Zero-cost abstractions for geospatial workflows. Async reqwest backend, serde JSON parsing, and tokio integration.

cargo add geoserver-rs
💜
Community

GeoServer.NET

.NET Standard 2.0 client with strong typing, XML/JSON serialization, and built-in retry policies for cloud deployments.

dotnet add package GeoServer.NET

Code Examples

Authenticating and querying spatial data across different languages.

Python
JavaScript
Go
Rust
import geoserver_sdk as gs # Initialize client client = gs.Client( base_url="https://api.geoserver.cloud", api_key="sk_live_...", verify_ssl=True ) # Fetch layers & query features layers = client.workspace.list_layers("environmental") features = client.wfs.query( layer="soil_moisture", bbox="-122.45,37.71,-122.40,37.78", srs="EPSG:4326" ) print(f"Found {len(features)} features")
import { GeoServerClient, WFSQuery } from "@geoserver/sdk"; // Initialize client const client = new GeoServerClient({ baseUrl: "https://api.geoserver.cloud", apiKey: process.env.GEO_API_KEY, timeout: 5000 }); async function getSoilData() { const query = new WFSQuery("environmental:soil_moisture") .bbox("-122.45,37.71,-122.40,37.78") .srs("EPSG:4326"); const features = await client.wfs.execute(query); console.log(`Loaded ${features.features.length} records`); }
package main import ( "fmt" "github.com/geoserver/go-sdk" ) func main() { client := gsdk.New( gsdk.WithURL("https://api.geoserver.cloud"), gsdk.WithAPIKey("sk_live_..."), ) query := &gsdk.WFSQuery{ Layer: "environmental:soil_moisture", BBox: "-122.45,37.71,-122.40,37.78", SRS: "EPSG:4326", } features, err := client.WFS.Query(context.Background(), query) if err != nil { panic(err) } fmt.Printf("Found %d features\n", len(features)) }
use geoserver_rs::{Client, WFSQuery, BBox}; use tokio; #[tokio::main] async fn main() -> Result> { let client = Client::builder() .base_url("https://api.geoserver.cloud") .api_key("sk_live_...") .build()?; let query = WFSQuery::default() .layer("environmental:soil_moisture") .bbox(BBox::new(-122.45, 37.71, -122.40, 37.78)) .srs("EPSG:4326"); let features = client.wfs.query(&query).await?; println!("Found {} features", features.len()); Ok(()) }

Quick Start Guide

Get up and running in under 5 minutes.

1

Install Your SDK

Choose your language above and run the package manager command. All official SDKs are peer-reviewed and CI-tested.

2

Authenticate

Generate an API key from your GeoServer dashboard. Use environment variables for secure, production-ready configuration.

3

Query & Render

Use WFS for feature queries, WMS for map tiles, or the REST API for layer management. SDKs handle pagination and retries automatically.