Trusted by developers across Europe

Premium Geo-Datafor Modern Applications

High-precision postal codes, cities, and geographic datasets — ready to integrate into your product in minutes.

CSV · JSON · Parquet · GeoJSON·Commercial license·12 months of updates

Numbers that matter

Built for production workloads — every record is verified and enriched.

28,650
German PLZ records
99.7%
Coordinate accuracy
250k+
Cities worldwide
Weekly
Data updates
Data Packages

Choose your dataset

All packages include commercial license, multiple formats, and 12 months of updates.

Best seller

PLZ Premium

German postal codes, enriched

All 28,650 German 5-digit postal codes with latitude/longitude, federal state, district, municipality, area in km², and approximate population.

  • 28,650 PLZ
  • ±50m coordinate accuracy
  • CSV, JSON, Parquet
  • Quarterly updates
New

EU Cities Pro

European cities, comprehensive

50,000+ cities across the European Union with population, timezone, elevation, country, region, and classification tier.

  • 50,000+ cities
  • All 27 EU countries
  • CSV, JSON, GeoJSON
  • Monthly updates
Pro

World Capitals

Global capitals, extended metadata

All 250 country capitals and major economic centers with extended metadata: ISO codes, languages, currency, dialing code, and timezone.

  • 250 capitals
  • ISO country codes
  • Currency & language
  • Annual updates
Custom

OSM Extracts

Tailored regional extracts

Custom extracts from OpenStreetMap for any region: POIs, road networks, administrative boundaries, and land use. Delivered in your format.

  • Any region
  • POIs, roads, boundaries
  • GeoJSON, Shapefile
  • On-demand delivery
Developer Experience

Easy to integrate

Standard formats that drop into your existing stack. No proprietary tools required.

import pandas as pd

# Load the PLZ Premium dataset
df = pd.read_csv('plz_premium.csv')

# Find all postal codes in Bavaria
bavaria = df[df['bundesland'] == 'Bayern']
print(f"PLZ in Bavaria: {len(bavaria)}")

# Closest PLZ to a given coordinate
from geopy.distance import geodesic
munich = (48.1351, 11.5820)
df['distance_km'] = df.apply(
    lambda r: geodesic(munich, (r['lat'], r['lng'])).km,
    axis=1
)
closest = df.loc[df['distance_km'].idxmin()]
print(f"Closest to Munich: PLZ {closest['plz']} ({closest['distance_km']:.1f} km)")
Open Source

10% of our data is open

Sample datasets, schema definitions, and helper tools live on GitHub — for everyone, forever.

View Repositories

Ready to integrate geo-data?

Pick a package from our shop or talk to us about a custom extract.