Retrieve manual fruit count measurements by orchard and date, including individual sample positions and optional bunch detail.
Use these endpoints to retrieve fruit count data collected from manual sampling in the field. The data supports two sample types:
- Tree samples (
sample_type: tree) — Returns individual fruit counts per tree, with an average fruit count across all sample positions. - Vine samples (
sample_type: vine) — Returns bunch counts per vine and average berries per bunch.
The measurements endpoint returns data aggregated by orchard and date, while the detail endpoint includes all individual sample records with GPS coordinates for each sample position.
Recommended patterns for fetching manual fruit count data
How to fetch fruit count averages per orchard
- Pull per-orchard measurement dates for a given time period using the
farming/truefruit/manual_fruit_count/measurements/endpoint. The response returns a list of objects containing anorchard_id,measurement_date, andsample_type. Filter the response using themeasurement_datequery parameter. - Review the
sample_typefield to determine how to interpret the averages. Theaverage_fruit_countfield returns the average number of fruit or bunches counted per sample position for bothtreeandvinesamples.
How to fetch individual sample positions per orchard and date
- First pull per-orchard measurement dates using the
farming/truefruit/manual_fruit_count/measurements/endpoint as described above. - Pass the
orchard_idandmeasurement_datefrom the measurements response into thefarming/truefruit/manual_fruit_count/measurements/{orchard_id}/{measurement_date}/endpoint. This returns the aggregated averages along with all individualsample_positions, each with GPS coordinates (latitude,longitude) and per-position fruit counts. - To include bunch-specific fields (such as
average_berries_per_bunch), passinclude=bunch_detailas a query parameter on the detail endpoint. Without this parameter, bunch-specific fields are not included in the response.
Optional parameters
Use include=bunch_detail on the detailed endpoint when you need bunch-specific fields in the response. Without this parameter, the response includes the standard manual fruit count detail fields only.
Fruit Count Measurement Compact
| Key | Type | Description |
|---|---|---|
farm_id | integer | The unique identifier of the farm, provided by Aerobotics, which the measurement belongs to. |
orchard_id | integer | The unique identifier of the orchard, provided by Aerobotics, which the measurement belongs to. |
measurement_date | date | The date on which the samples were collected |
sample_type | string | The type of sample: tree for individual fruit counts, vine for bunch counts |
fruit_unit | string | The unit of measurement: fruit for individual fruit counts, bunch for bunch counts |
average_fruit_count | integer | Average number of fruit or bunches counted per sample position |
count_sample_positions | integer | Number of samples collected |
Example response
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"farm_id": 1234,
"orchard_id": 5678,
"measurement_date": "2025-11-15",
"sample_type": "tree",
"fruit_unit": "fruit",
"average_fruit_count": 143,
"count_sample_positions": 3
},
{
"farm_id": 1234,
"orchard_id": 5679,
"measurement_date": "2025-11-15",
"sample_type": "vine",
"fruit_unit": "bunch",
"average_fruit_count": 24,
"count_sample_positions": 5
}
]
}Fruit Count Measurement Detailed
| Key | Type | Description |
|---|---|---|
farm_id | integer | The unique identifier of the farm, provided by Aerobotics, which the measurement belongs to. |
orchard_id | integer | The unique identifier of the orchard, provided by Aerobotics, which the measurement belongs to. |
measurement_date | date | The date on which the samples were collected |
sample_type | string | The type of sample: tree for individual fruit counts, vine for bunch counts |
fruit_unit | string | The unit of measurement: fruit for individual fruit counts, bunch for bunch counts |
average_fruit_count | integer | Average number of fruit or bunches counted per sample position |
count_sample_positions | integer | Number of samples collected |
average_berries_per_bunch | integer | Average number of berries per bunch. Returned when sample_type is vine and include=bunch_detail is passed as a query parameter |
sample_positions[] | [object] | An array of individual sample records with GPS coordinates and per-position fruit counts |
Sample Position Object
| Key | Type | Description |
|---|---|---|
sample_position_id | integer | Unique identifier of the sample position |
sample_type | string | The type of sample: tree for individual fruit counts, vine for bunch counts |
latitude | number | Latitude of the sample position (decimal format) |
longitude | number | Longitude of the sample position (decimal format) |
fruit_unit | string | The unit of measurement: fruit for individual fruit counts, bunch for bunch counts |
fruit_count | integer | Number of fruit or bunches counted at this sample position |
average_berries_per_bunch | integer | Average number of berries per bunch. Returned when sample_type is vine and include=bunch_detail is passed as a query parameter |
Example response
{
"farm_id": 1234,
"orchard_id": 5678,
"measurement_date": "2025-11-15",
"sample_type": "tree",
"fruit_unit": "fruit",
"average_fruit_count": 143,
"average_berries_per_bunch": null,
"count_sample_positions": 3,
"sample_positions": [
{
"sample_position_id": 101,
"sample_type": "tree",
"latitude": -33.9249,
"longitude": 18.4241,
"fruit_unit": "fruit",
"fruit_count": 150,
"average_berries_per_bunch": null
},
{
"sample_position_id": 102,
"sample_type": "tree",
"latitude": -33.9251,
"longitude": 18.4243,
"fruit_unit": "fruit",
"fruit_count": 138,
"average_berries_per_bunch": null
},
{
"sample_position_id": 103,
"sample_type": "tree",
"latitude": -33.9253,
"longitude": 18.4245,
"fruit_unit": "fruit",
"fruit_count": 140,
"average_berries_per_bunch": null
}
]
}