Climate / ESG

    Deforestation Detection

    Monitor forest cover loss at scale, without boots on the ground.

    10–30 m
    Spatial resolution
    ~0.01 km²
    Minimum detectable area
    5 days (Sentinel-2)
    Revisit frequency
    Sentinel-2 (2015+), Landsat (1984+)
    Data availability

    The Problem

    Environmental agencies, ESG teams, and conservation organizations need to monitor vast forested areas for illegal logging, burn events, and slow-creep degradation, but raw satellite imagery is complex to process and requires GIS expertise few teams have. Manual site visits cover a fraction of the area and arrive weeks too late. Existing forest monitoring services are expensive, proprietary, and black-box.

    How Satalyse Solves It

    Satalyse's Change Detection endpoint detects significant NDVI shifts between two dates over any polygon, down to 30-metre resolution, and returns changed area, change type, and GeoJSON boundaries of the affected zones. Pair it with Temporal Analysis to track vegetation index trends over months or years, catching slow deforestation that a single before-and-after comparison might miss. Results are structured JSON, ready to ingest into your dashboards or trigger alerts.

    Change Detection
    POST /api/v1/satellite/detect-changes
    Identifies areas where vegetation cover dropped between two dates
    Temporal Analysis
    POST /api/v1/satellite/analyze-temporal-trends
    Tracks long-term NDVI trends to surface slow-onset deforestation

    Code Example

    deforestation-detection.py
    REQUEST
    1"color:#c084fc">import requests
    2
    3"color:#4b5563"># Detect vegetation loss "color:#c084fc">in an Amazon bas"color:#c084fc">in polygon
    4response = requests.post(
    5 "https://api.satalyse.dev/api/v1/satellite/detect-changes",
    6 headers={"Authorization": "Bearer sat_sk_live_..."},
    7 json={
    8 "geometry": {
    9 "type": "Polygon",
    10 "coord">inates": [[
    11 [-55.012, -3.451], [-54.987, -3.451],
    12 [-54.987, -3.427], [-55.012, -3.427],
    13 [-55.012, -3.451]
    14 ]]
    15 },
    16 "start_date": "2024-06-01",
    17 "end_date": "2024-12-01",
    18 "sensitivity": "high"
    19 }
    20)
    21
    22data = response.json()
    23changes = data["changes_detected"]
    24"color:#c084fc">print(f"Changed area: {changes['total_change_area_km2']} km²")
    25"color:#c084fc">print(f"Change type: {changes['change_type']}")
    26"color:#c084fc">print(f"Confidence: {changes['confidence_avg']:.2f}")
    200 OKRESPONSE
    {
      "request_id": "req_abc123",
      "status": "success",
      "timestamp": "2025-01-15T12:00:00Z",
      "location": { "area_km2": 0.50, "bbox": { "min_lon": -60.05, "min_lat": -3.18, "max_lon": -60.03, "max_lat": -3.16 } },
      "changes_detected": {
        "total_change_area_km2": 2.84,
        "percent_of_total_area": 31.2,
        "change_magnitude_avg": 54,
        "confidence_avg": 0.94,
        "change_type": "vegetation_loss"
      },
      "change_geometry": {
        "changed_polygons": [
          {
            "id": "poly_1",
            "type": "Polygon",
            "coordinates": [[[...]]],
            "change_type": "vegetation_loss",
            "change_magnitude": 54,
            "confidence": 0.94
          }
        ]
      },
      "api_metadata": { "version": "2.0", "execution_time_ms": 2100, "cost_credits": 16, "cache_hit": false }
    }

    Ready to try it?

    Test this use case in the interactive playground. Free tier, no credit card needed.

    Related Use Cases

    Relevant locations