Comprehensive REST APIs, official SDKs, and developer-first documentation to integrate enterprise geospatial data into your applications in minutes.
Integrate geospatial capabilities into your stack with minimal configuration.
Create a free developer account and generate your secure API credentials from the dashboard.
Use our official packages for Python, JavaScript, Go, or Java via npm, pip, or go mod.
Configure the client with your API key and base URL. Authentication is handled automatically.
Fetch spatial data, apply filters, and render maps or analytics in your application.
RESTful interfaces supporting OGC standards (WMS, WFS, WCS) and custom GeoServer extensions.
List all available map layers with metadata, CRS, and bounding box information.
Execute spatial queries with filter expressions, pagination, and attribute selection.
Retrieve comprehensive metadata for datasets including lineage, accuracy, and usage stats.
Update or replace SLD/SLPP styling rules for dynamic map rendering.
Generate secure, time-bound GeoPackage exports for offline analysis and sharing.
System status, cache hit rates, and node connectivity for infrastructure monitoring.
Type-safe, well-documented SDKs maintained by the GeoServer core team.
Authentic implementation patterns for common geospatial workflows.
from geoserver import Client, filters
client = Client("https://api.geoserver.io", api_key="your_api_key")
# Fetch layers within a bounding box
bbox = (-122.5, 37.7, -122.3, 37.9)
layers = client.layers.query(bbox=bbox, limit=20)
for layer in layers:
print(f"Layer: {layer.name} | Features: {layer.feature_count}")
# Execute spatial filter
result = client.features.search(
layer="urban_zones",
filter=filters.within(geometry=bbox),
attributes=["name", "area_sqkm", "classification"]
)
import { Client, filters } from "@geoserver/sdk";
const client = new Client({
baseUrl: "https://api.geoserver.io",
apiKey: "your_api_key"
});
// Fetch layers within a bounding box
const bbox = [-122.5, 37.7, -122.3, 37.9];
const layers = await client.layers.query({ bbox, limit: 20 });
layers.forEach(layer => {
console.log(`Layer: ${layer.name} | Features: ${layer.feature_count}`);
});
// Execute spatial filter
const result = await client.features.search({
layer: "urban_zones",
filter: filters.within(bbox),
attributes: ["name", "area_sqkm", "classification"]
});
package main
import (
"fmt"
"github.com/geoserver/go-sdk/v2"
)
func main() {
client := geoserver.NewClient(
geoserver.BaseURL("https://api.geoserver.io"),
geoserver.APIKey("your_api_key"),
)
bbox := []float64{-122.5, 37.7, -122.3, 37.9}
layers, _ := client.Layers.Query(bbox, 20)
for, layer := range layers {
fmt.Printf("Layer: %s | Features: %d\n", layer.Name, layer.FeatureCount)
}
}
Everything you need to build, deploy, and scale geospatial applications.
Comprehensive endpoint documentation, request/response schemas, and interactive try-it-out console.
Read API Docs →Step-by-step tutorials for mapping libraries (Leaflet, Mapbox, Deck.gl), data pipelines, and cloud providers.
View Guides →Access SDK repositories, contribute to open-source tools, report issues, and review pull requests.
Browse Repos →