Agriculture & Environment
Satellite Crop Monitoring API
Free satellite imagery covers every field on earth every few days. Turning it into something a grower or a loss adjuster can act on is the part that does not come free.
- Agritech platforms
- Crop insurers and loss adjusters
- Agricultural lenders
- Carbon and sustainability programmes
- Land managers
What your customers would see
example interfaceMockupIllustrative mockup of the interface we would build. Figures shown are examples, not results from a live deployment.
The problem this solves
There is an odd gap in agricultural software. Sentinel-2 and Landsat imagery is open, global and refreshed every few days, with enough spectral resolution to track canopy development and detect stress. Anyone can download it. Very few products turn it into field-level answers, because the pipeline between a raw scene and a usable number is longer than it looks.
The work is in the unglamorous parts. Atmospheric correction, cloud and shadow masking, field boundary intersection, resampling across sensors with different resolutions and revisit patterns, handling mixed pixels at field edges, and building a time series that is comparable week to week despite varying sun angles. Get any of those wrong and the index series shows changes that are artefacts of processing rather than events in the field.
Then there is cloud. Optical imagery sees nothing through cloud, and in maritime and tropical climates that can mean weeks without a usable observation during the period that matters most. Products that quietly interpolate across those gaps produce smooth, confident series that are partly fiction. The honest approaches are to report the gap, or to bring in radar, which sees through cloud but measures something different and needs its own interpretation.
Who buys this
Agritech platforms, Crop insurers and loss adjusters, Agricultural lenders, Carbon and sustainability programmes, Land managers
What the API returns
What comes back
- Vegetation index time series per field — NDVI, NDRE, EVI and others
- Within-field variability maps and management zone delineation
- Crop stress detection with change-point timing
- Cloud and quality masking with explicit observation coverage reporting
- Radar-based observations for periods where optical imagery is unusable
- Field change detection — cultivation, harvest, cover crop establishment
- Crop type classification where sufficient training data exists
- Imagery tiles and index rasters for your own mapping layer
Endpoints
| Method | Path | Returns |
|---|---|---|
| POST | /v1/fields/indices | Vegetation index time series for a set of fields |
| GET | /v1/fields/{id}/variability | Within-field variability and management zones |
| GET | /v1/fields/{id}/stress | Detected stress events with timing and extent |
| GET | /v1/fields/{id}/changes | Detected field events — cultivation, harvest, cover |
| POST | /v1/fields/classify | Crop type classification for a set of field geometries |
| GET | /v1/fields/{id}/raster | Index raster or imagery tile for map display |
Request and response
illustrativeRequest
{
"fields": [
{ "field_id": "f_22181", "geometry": { "type": "Polygon", "coordinates": "..." } }
],
"indices": ["ndvi", "ndre"],
"from": "2026-03-01",
"to": "2026-06-20",
"include": ["quality", "radar_fallback", "variability"]
}Response
{
"field_id": "f_22181",
"area_ha": 41.2,
"observations": [
{ "date": "2026-05-04", "sensor": "sentinel2", "ndvi_mean": 0.812, "ndre_mean": 0.431,
"usable_pixel_pct": 97.4, "quality": "good" },
{ "date": "2026-05-09", "sensor": "sentinel2", "usable_pixel_pct": 11.2,
"quality": "cloud_obscured", "ndvi_mean": null },
{ "date": "2026-05-11", "sensor": "sentinel1", "vh_backscatter_db": -14.8,
"quality": "radar_substitute",
"note": "Radar observation during 17-day optical gap; not directly comparable to NDVI" },
{ "date": "2026-05-21", "sensor": "sentinel2", "ndvi_mean": 0.744, "ndre_mean": 0.388,
"usable_pixel_pct": 94.1, "quality": "good" }
],
"coverage": { "requested_days": 112, "usable_optical_observations": 9,
"longest_optical_gap_days": 17, "gaps_filled_with_radar": 2 },
"stress_events": [
{ "detected_between": "2026-05-04/2026-05-21", "index_drop": 0.068,
"spatial_extent_pct": 34.0, "pattern": "south_west_corner",
"confidence": "medium",
"caveat": "17-day observation gap means onset timing is uncertain to within two weeks" }
],
"variability": { "cv_within_field": 0.118, "zones_suggested": 3 }
}Where the data comes from
| Sentinel-2 | Open optical imagery at 10 to 20 metre resolution with roughly five-day revisit. Free to use including commercially, with a published attribution requirement that must appear in your product |
| Landsat | Open optical imagery from USGS with a long historical archive, valuable for multi-decade baselines. Also free with attribution |
| Sentinel-1 | Open radar imagery, unaffected by cloud. Essential in cloudy climates and measures surface structure and moisture rather than greenness, so it is a substitute with caveats rather than a replacement |
| Commercial high-resolution imagery | Sub-metre providers where field detail genuinely requires it. Licensed per area or per scene, usually with firm restrictions on redistribution and on derived-product resale |
| Digital elevation models | Open terrain data for slope, aspect and drainage context when interpreting within-field variability |
| Field boundary data | From your platform, from open cadastral or parcel registers where licensing allows, or derived by segmentation from imagery |
The intelligence layer
The difference between a demo and a service is mostly in this section. These are the parts that keep the answer trustworthy once real traffic is hitting it.
- Full preprocessing chain built explicitly — atmospheric correction, cloud and cirrus and shadow masking, topographic correction — because downstream analysis that skips these measures processing artefacts
- Per-pixel quality flags aggregated to a field-level usable-pixel percentage, with observations below a threshold returned as unusable rather than as a mean over the clear corner
- Observation gaps reported as gaps. Interpolation is offered as an explicitly labelled derived series, never as the default, since a smoothed curve through a three-week cloud period invents the data that matters
- Sentinel-1 backscatter used as a cloud-period substitute with its own interpretation, not rescaled into a pseudo-NDVI that would imply comparability it does not have
- Field-edge pixel exclusion with a configurable buffer, because mixed pixels at boundaries contaminate field means more than most users expect
- Cross-sensor harmonisation between Sentinel-2 and Landsat, with the residual bias stated rather than assumed away
- Change-point detection on the index series for stress and event timing, with timing uncertainty widened in proportion to the surrounding observation gap
- Monitoring of scene availability and processing baseline changes — reprocessing of the archive by the data provider shifts historical values and must be tracked
What it changes for the business
Loss adjustment speed
Index history and change timing give an adjuster evidence before a site visit, and sometimes instead of one.
Portfolio-scale monitoring
An insurer or lender can watch every field in a book rather than sampling by inspection.
Agronomy targeting
Within-field variability identifies where a problem is, which is what turns an observation into an action.
Verification
Independent observation of cultivation, cover crop and harvest timing supports scheme and contract compliance.
How it fits into your product
How it embeds
- Field geometry as GeoJSON, or boundaries derived by segmentation where you do not hold them
- Batch endpoints for portfolio-scale processing across thousands of fields
- Raster and tile output for your existing mapping layer, with index colour ramps
- Scheduled processing triggered by new scene availability rather than a fixed calendar
- Webhooks on stress detection and field change events
- White-label delivery, with the satellite attribution requirements handled correctly in your interface
Included in every build
- Authentication, scoped API keys and per-customer rate limiting
- Input validation with predictable, documented error responses
- Versioned endpoints so your integration never breaks without notice
- Request and response logging for audit and dispute resolution
- Latency, error-rate and usage monitoring with alerting
- OpenAPI specification, sandbox environment and client examples
- Backups, failover design and a documented recovery procedure
- An agreed support arrangement once the service is live
How we would build it
about 20 weeksDiscovery and feasibility
Weeks 1–3
This one depends heavily on data access, so we start by proving the sources exist, can be licensed for your use, and actually carry the signal the model needs. If they do not, you find out here.
Architecture and baseline model
Weeks 4–6
A written architecture and a baseline model measured against a holdout period, so you know what accuracy you are buying before the full build starts.
Production build
Weeks 7–16
Data pipelines, model training and serving, historical archive, validation harness, API, security, monitoring and documentation.
Validation and integration
Weeks 17–20
Backtesting against held-out history, accuracy reporting your team can audit, integration support and an agreed retraining cadence.
Commercial models
There is no fixed price list, because the cost is driven by data complexity, integration count, model requirements, request volume and the support level you need. Scope is agreed in writing before development starts.
Fixed-scope prototype
A defined slice of the service, built and priced as one piece of work. The usual first step when the business case needs proving internally.
Fixed-price build
An agreed scope against a written architecture, delivered for an agreed price. Best when the requirements are already clear.
Build then retainer
We build the service, then operate and improve it under a monthly agreement covering monitoring, updates and model maintenance.
White-label product
The service runs under your brand, your domain and your pricing, with MLPivot invisible to your customers.
Questions buyers ask
What happens during extended cloud cover?
You get fewer observations, and in maritime or tropical regions that can mean two to four weeks with nothing usable — often during the growth period you most wanted to watch. We report the gap explicitly: observation counts, longest gap, and usable pixel percentage per scene. We do not interpolate across it by default, because a smooth curve through a three-week hole looks like data and is not. If you want an interpolated series it is available as a separately labelled field.
When is radar the right answer?
When cloud persistence makes optical monitoring unreliable — persistent maritime climates, monsoon seasons, high-latitude winters. Sentinel-1 sees through cloud and gives useful signals on canopy structure, biomass and surface moisture, plus reliable detection of events like harvest and cultivation. What it does not give is a greenness measure comparable to NDVI. We return it as its own quantity with its own interpretation rather than converting it into a number that looks like the optical series.
Can we resell the imagery to our customers?
Sentinel and Landsat are free to use commercially, including in a paid product, provided the attribution requirements are met and visible — we build that into the interface rather than leaving it to you to remember. Commercial high-resolution imagery is different: those licences are typically per-area, frequently forbid redistribution, and some restrict derived products as well. Permission to read a scene is not permission to resell it, and if your product needs to display sub-metre imagery that becomes a licensing conversation before it becomes an engineering one.
How small a field can this handle?
Sentinel-2 at 10 metres gives a usable field mean from roughly one hectare upward, allowing for an edge buffer. Below that, mixed pixels dominate and the number stops meaning much. Smallholder monitoring at a fraction of a hectare genuinely needs commercial high-resolution imagery, with the cost and licensing that brings. We would rather tell you that than return a confident mean over four pixels.
Can you identify the crop in a field?
Where there is enough labelled training data for that region and cropping system, reasonably well for major crops. Where there is not, accuracy drops sharply and mixed or minor crops are frequently misclassified. We report per-class accuracy from validation rather than a single headline figure, and for regions without training labels we would say classification is not supportable rather than shipping one.
Related blueprints
Crop Yield Forecasting API
Expected yield by crop, location and season, with honest uncertainty, for agritech platforms, insurers, lenders and grain buyers.
Soil Suitability Scoring API
Soil properties, crop suitability scores and land productivity estimates for land valuation, lending and agronomic planning.
Crop Disease Risk API
Weather-driven disease and pest risk scoring with outbreak alerts and scouting recommendations, for agronomy and input platforms.
Want this built for your platform?
Tell us what your product does today and what you want another system to be able to ask it. We will come back with an approach, a scope and a price.