Data sources & downloads
Getting the data in the first place: OpenStreetMap, web services, satellite catalogues and geocoders.
Nothing here is about analysis. It is about the half of the job that happens before a GeoDataFrame exists: finding a source that covers your area, getting it out without being rate-limited, and knowing what you are allowed to do with it afterwards.
The four routes below behave very differently. An Overpass query is a text query against a live database that will time out on you. A WFS is paged, and the page size is the server’s choice, not yours. A STAC search returns scene metadata, and the pixels come later. A geocoder returns a coordinate whether or not it found your address. What they share is that the download is the easy part and the licence, the extent and the CRS are the part that decides whether the data is usable.
The concepts below cover where spatial data actually comes from and what each kind of source is for; the how-to guides are one per source; and the fixes are the failures that arrive at scale — throttling, truncation and partial downloads that look complete.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- GIS Data Sources Explained: Where Spatial Data Comes From
- The OpenStreetMap Data Model Explained for Python Users
- Spatial Web Services Explained: WFS, WMS and OGC API Features
- STAC Explained: How Satellite Imagery Catalogues Work
- Sentinel-2 or Landsat? Choosing a Satellite Imagery Source
- Geocoding Explained: From an Address String to a Coordinate
Show every concept in this topic
- Choosing a Geocoder: Coverage, Licence and Cost Compared
- Census Geographies Explained: Blocks, Tracts, Output Areas and Why They Nest
- Open data licences explained for spatial data
- Field boundary data explained: where it comes from
- GTFS Realtime explained: trip updates, vehicle positions and alerts
- Earthquake catalogues explained: magnitudes, completeness and declustering
- Postmile and Milepost Systems Explained
- Species Occurrence Data Explained
- Protected Area Data Explained
- Air Quality Monitoring Networks Explained
- Origin–Destination Data Explained
- Recorded Crime Data Explained
- Road Injury Severity Scales Explained
- Crash Data Coverage Explained
- Population Grids Explained
- OpenStreetMap Data Completeness Explained
- Weather Data Sources for Python, Explained: Stations, Reanalysis and APIs
- Inside Airbnb Data Explained: What the Snapshots Contain
- HM Land Registry Price Paid Data Explained
- Bike-Share Trip Data Explained: One Schema, Five Cities
- Flight Delay Causes Explained: Carrier, Weather, NAS and Late Aircraft
- Annual Average Daily Flow Explained: From a 12-Hour Count to a Year
- Street Tree Censuses Explained: What a Tree Record Holds and Who Made It
- Units, Buildings and Value in Building Permit Data Explained
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Download OpenStreetMap Data in Python with OSMnx
- How to Query the Overpass API from Python
- How to Download Data from a WFS Service in Python
- How to Download Administrative Boundaries in Python
- How to Geocode Addresses in Python
- How to Search and Download Satellite Imagery with STAC in Python
Show every how-to guide in this topic
- How to Cache Downloaded GIS Data So You Fetch It Once
- How to Build a Street Network Graph in Python with OSMnx
- How to Read Spatial Data from S3 and Other Object Storage
- How to Geocode with Nominatim from Python Without Being Blocked
- How to Read GRIB Weather Forecast Data in Python
- How to Download Census Boundaries in Python
- How to Download Census Tables from an API in Python
- How to check licence compatibility before combining datasets
- How to publish a dataset with a citable identifier
- How to fetch and align tide gauge data in Python
- How to read GTFS Realtime vehicle positions and delays in Python
- How to find Sentinel-1 scenes in Python
- How to download and map an earthquake catalogue in Python
- How to work with fire perimeter data in Python
- How to read a linear referencing system in Python
- How to download GBIF occurrences in Python
- How to Download Solar Irradiance Data in Python
- How to Download Air Quality Station Data in Python
- How to Download Building Footprints from OSM and Overture in Python
- How to Find and Download Scanned Historical Maps in Python
- How to Analyse SNOTEL Snow Water Equivalent in Python
- How to Analyse Snow Depth from GHCN-Daily in Python
- How to Read NEXRAD Level II Radar Data in Python
- How to Compare Radar and Gauge Rainfall in Python
- How to Read DWD RADOLAN Radar Rainfall in Python
- How to Download CAL FIRE Wildfire Perimeters in Python
- How to Use NOAA HMS Satellite Fire Points in Python
- How to Download NLCD Land Cover for an Area in Python
- How to Download and Map City Crime Data in Python
- How to Analyse Crime Trends Over Time in Python
- How to Map Homicides and Shootings in Python
- How to Map Fatal Road Crashes in the US with FARS in Python
- How to Map UK Road Collisions from STATS19 in Python
- How to Calculate Road Death Rates per Vehicle Mile in Python
- How to Analyse Road Death Trends with FARS in Python
- How to Download and Clip the GHSL Population Grid in Python
- How to Download and Use a WorldPop Population Raster in Python
- How to Download NOAA OISST Sea Surface Temperature in Python
- How to Get Points of Interest From OpenStreetMap in Python
- How to Analyse OpenStreetMap History in Python With the ohsome API
- How to Find EV Charging Stations in OpenStreetMap With Python
- How to Get Historical Weather Data in Python
- Meteostat in Python: Weather Station Data, Daily and Hourly
- How to Get NOAA GHCN Daily Weather Station Data in Python
- How to Get Weather Forecast Data in Python and Check Its Accuracy
- How to Get Weather Data for Many Locations in Python
- Inside Airbnb Listings in Python: Read Any City and Snapshot
- How to Analyse HM Land Registry Price Paid Data in Python
- How to Find the Most Expensive Streets in England and Wales With Python
- How to Read a GBFS Bike-Share Feed in Python
- How to Read UK Road Traffic Counts in Python
- How to Analyse New York's Street Tree Census in Python
- How to Analyse US Drought Monitor County Statistics in Python
- How to Analyse NYC Taxi Trip Records in Python with DuckDB
- How to Map US Power Plants from EIA-860 Data in Python
- How to Map the National Bridge Inventory in Python
- How to Analyse NYC 311 Service Requests in Python
- How to Read NOAA's Storm Events Database in Python
- How to Read HURDAT2 Hurricane Best Tracks in Python
- How to Map FEMA Disaster Declarations by County in Python
- How to Analyse Washington's Electric Vehicle Registrations in Python
- How to Analyse NYC Restaurant Inspection Results in Python
- How to Read Ookla Speedtest Open Data Tiles in Python
- How to Read Census Building Permits Survey Data in Python
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
- OSMnx Download Fails, Hangs or Times Out
- GeoJSON Downloaded from an API Is Empty or Truncated
- Geocoding Returns Wrong or Missing Coordinates
- Fixing Census API Values Like −666666666 and Other Sentinels
- Fixing Census Data That Does Not Match the Boundary File Year
- A downloaded layer has no licence you can find
Show every fix in this topic
- A GBIF download is missing records
- Buildings Missing from OSM
- Why Are Most Wildfires Missing From the Fire Perimeter Data?
- Why Do the Latest Overdose Death Counts Always Look Like a Drop?
- Why Do My Crime Counts Change Every Time I Download the Data?
- Fixing an OpenStreetMap Tag Filter That Misses Features
- Fixing Boundary Polygons Missing From an OpenStreetMap Extract
- Fixing Open-Meteo "429 Too Many Requests" Errors in Python
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
- Finding & Fetching Data
- Networks & Routing
- Satellite Imagery
- Cloud-Native GIS
- Geocoding & Addresses
- Gridded & Climate Data
- Census & Demographics
- Metadata, Licensing & Provenance
- Coastal & Marine
- Agriculture & Crops
- Public Transit & GTFS
- Radar & SAR Imagery
- Biodiversity & Species Data
- Linear Referencing
- Natural Hazards & Risk
- Air Quality Data
- Renewable Energy Siting
- Urban Morphology
Related topics
Subjects that keep coming up alongside this one, most overlap first.