What does my area look like from space?
Satellite images of your own area are free; clouds are the problem. Over Utrecht, Sentinel-2 took 33 images between 16 August and 15 October 2026, and only one of them had less than 20% cloud cover (25 September). Searching and fetching a small preview works without an account; the sharp 10-metre images do not. NASA GIBS serves ready-made images without an account, at night too, but there a pixel is hundreds of metres.
The Netherlands on an almost cloudless 12 April 2025, seen by NASA's VIIRS camera
True colour from NASA's GIBS map service, layer VIIRS_SNPP_CorrectedReflectance_TrueColor. You can see the Wadden Islands, the IJsselmeer and the Flevoland polders, the Zeeland delta and the light patches of the cities. The straight seam on the right is the edge between two overpasses. One pixel is hundreds of metres here: enough for the country, too coarse for your street.
Step by step
- 1
For detail (10 m): find a cloud-free Sentinel-2 image.
- 2
For the big daily picture, or at night: NASA GIBS.
- 3
To know what is green or built-up: ESA WorldCover.
Join on coördinaten + datum
Start with AI
Paste this prompt into Claude or ChatGPT. It names the real endpoints, the join key and the pitfalls, so the assistant writes usable code straight away. Always check the result against the source itself.
Write a Python script (requests and Pillow) that finds the clearest Sentinel-2 images of the past 60 days over my address and puts the previews side by side in an HTML page. Searching works without an account via STAC (CORS is open): https://stac.dataspace.copernicus.eu/v1/collections/sentinel-2-l2a/items?bbox=5.1214,52.0907,5.1214,52.0907&datetime=2026-08-16T00:00:00Z/2026-10-15T23:59:59Z&limit=100 What you need to know: - properties.eo:cloud_cover is the cloud cover of the whole 100 by 100 km tile (properties.grid:code), not of my street. Sort on it, but let me look at the best three myself. - assets.thumbnail.href is a small preview (jpg, about 343 pixels wide) you can download without an account. - The real images (assets.TCI_10m and the separate bands) are on s3://eodata and need a free Copernicus Data Space account. Read credentials from environment variables, never from the code. - There is no total count; paginate with the rel=next link. On HTTP 429, wait and retry. - A black edge in an image is the edge of the satellite's swath, not data. For the big picture without an account: NASA GIBS (WMS), for example the whole of the Netherlands on 12 April 2025: https://gibs.earthdata.nasa.gov/wms/epsg3857/best/wms.cgi?SERVICE=WMS&REQUEST=GetMap&VERSION=1.3.0&LAYERS=VIIRS_SNPP_CorrectedReflectance_TrueColor&STYLES=&CRS=EPSG:3857&BBOX=367354,6568398,812632,7094762&WIDTH=760&HEIGHT=900&FORMAT=image/jpeg&TIME=2025-04-12 At night: LAYERS=VIIRS_Black_Marble&TIME=2016-01-01. Output: a list with date, satellite, tile and cloud cover, an HTML page with the previews of the five least cloudy images, and (if credentials are set) a 2 by 2 km true-colour crop as PNG.
Try it yourself
A small script that answers the core of the question. Needs: Python 3.10+ en requests. Tested on 2026-10-15; below is the real output of that run.
# Hoe ziet mijn omgeving eruit vanuit de ruimte? Zoek de Sentinel-2-opnamen van de afgelopen 60 dagen boven je
# eigen plek, sorteer op bewolking en sla het voorbeeldbeeld van de helderste op.
# Bron: Copernicus Data Space (STAC). Zoeken en voorbeeldbeelden kan zonder account; de volle 10 m-banden niet.
import requests
from datetime import datetime, timedelta, timezone
UA = {"User-Agent": "opendataindex-voorbeeld/0.2 (+https://opendataindex.nl)"}
LON, LAT = 5.1214, 52.0907 # Domtoren, Utrecht; zet hier je eigen plek
nu = datetime.now(timezone.utc)
tijd = f"{(nu - timedelta(days=60)):%Y-%m-%dT00:00:00Z}/{nu:%Y-%m-%dT%H:%M:%SZ}"
r = requests.get("https://stac.dataspace.copernicus.eu/v1/collections/sentinel-2-l2a/items", headers=UA, timeout=60,
params={"bbox": f"{LON},{LAT},{LON},{LAT}", "datetime": tijd, "limit": 100})
r.raise_for_status() # 429 = te veel verzoeken kort na elkaar: wacht even
opnamen = r.json()["features"]
# eo:cloud_cover geldt voor de hele tegel van 100 x 100 km, niet voor jouw straat: kijk dus altijd zelf.
opnamen.sort(key=lambda f: f["properties"]["eo:cloud_cover"])
print(f"{len(opnamen)} Sentinel-2-opnamen boven {LAT}, {LON} sinds {tijd[:10]}\n")
print("Minst bewolkt:")
for f in opnamen[:5]:
p = f["properties"]
print(f" {p['datetime'][:16].replace('T', ' ')} UTC {p['platform']:12} tegel {p['grid:code']:10} bewolking {p['eo:cloud_cover']:5.1f}%")
helder = sum(f["properties"]["eo:cloud_cover"] < 20 for f in opnamen)
print(f"\nOpnamen met minder dan 20% bewolking: {helder} van {len(opnamen)}")
beste = opnamen[0]
beeld = requests.get(beste["assets"]["thumbnail"]["href"], headers=UA, timeout=60)
with open("sentinel2-voorbeeld.jpg", "wb") as uit:
uit.write(beeld.content)
print(f"Voorbeeldbeeld van {beste['id'][:24]}… opgeslagen: sentinel2-voorbeeld.jpg ({len(beeld.content) // 1024} kB)")
33 Sentinel-2-opnamen boven 52.0907, 5.1214 sinds 2026-08-16 Minst bewolkt: 2026-09-25 10:40 UTC sentinel-2a tegel MGRS-31UFT bewolking 3.5% 2026-08-24 10:36 UTC sentinel-2c tegel MGRS-31UFT bewolking 24.8% 2026-09-15 10:37 UTC sentinel-2a tegel MGRS-31UFT bewolking 25.2% 2026-08-26 10:37 UTC sentinel-2a tegel MGRS-31UFT bewolking 29.5% 2026-10-08 10:50 UTC sentinel-2a tegel MGRS-31UFT bewolking 29.7% Opnamen met minder dan 20% bewolking: 1 van 33 Voorbeeldbeeld van S2A_MSIL2A_20260925T1040… opgeslagen: sentinel2-voorbeeld.jpg (23 kB)
The sources3

Copernicus Sentinel-2In depth
The Sentinel-2 satellites image the whole of the Netherlands every few days, in thirteen spectral bands. Detail: 10 metres per pixel.

NASA GIBS and WorldviewIn depth
Over a thousand map layers from NASA satellites, ready to use as images: from the daily true-colour view to night lights, fires and snow.
ESA WorldCover
A map of the whole earth in eleven land cover classes (forest, cropland, built-up, water …), based on Sentinel-1 and -2. Two editions, no new ones planned.
How the sources fit together
- Copernicus Sentinel-2ESA WorldCovervia
coördinatenWorldCover gives a ready-made classification from the same satellites.
More examples with this data
The Netherlands at night: the brightest light is in the Randstad, the north and the Wadden coast are dark
Land cover of the Randstad (area between Amsterdam, The Hague, Rotterdam and Utrecht): grassland is the largest part, 41% in 2021
The Randstad from above: cities in red around a yellow Green Heart, from ESA WorldCover 2021
Also in the indexes
Datasets from data.overheid.nl, the National Georegister, CBS, Eurostat and city portals that fit this question.
- Luchtfoto 2015Utrecht (gemeente)
- Luchtfoto 2022Utrecht (gemeente)
- Luchtfoto 2005Utrecht (gemeente)
- Luchtfoto 2017Utrecht (gemeente)
- Luchtfoto 2007Utrecht (gemeente)
- Luchtfoto 2009Utrecht (gemeente)
- Luchtfoto 2012Utrecht (gemeente)
- Luchtfoto 2014Utrecht (gemeente)
- Luchtfoto 2023Utrecht (gemeente)
- Luchtfoto 2019Utrecht (gemeente)
Other worked-out questions
- Is there more nuisance in my neighbourhood than last year?3 sources
- How much grant money does a foundation in Amsterdam receive?3 sources
- How much warmer has it become?2 sources
- How clean is the air on my street?3 sources
- Did house prices rise faster here than elsewhere in Europe?2 sources
- How many cars in my municipality are electric?2 sources