v1 end of life: raw.datafornerds.io will be retired on November 1, 2026. Migration guide →

Microsoft 365 Apps Update History

Endpoint

GET https://api.datafornerds.io/v2/microsoft/m365-apps-update-history.json

Version history for Microsoft 365 Apps (formerly Office 365) across all update channels: Current Channel, Monthly Enterprise Channel, Semi-Annual Enterprise Channel, and Semi-Annual Enterprise Channel (Preview).

Schema

Field Type Description Example
ReleaseDate date Release date in ISO 8601 format 2026-05-13
ChannelName string Update channel name Current Channel
Version string Version number (4-digit year+month identifier) 2604
Build string Build number 19929.20172
FullBuild string Full build number prefixed with 16.0 16.0.19929.20172

Example response

{
  "metadata": {
    "provider": "DataForNerds",
    "apiVersion": "v2",
    "dataset": "m365-apps-update-history",
    "recordCount": 856,
    "sourceUrls": [
      "https://learn.microsoft.com/en-us/officeupdates/update-history-microsoft365-apps-by-date"
    ],
    "lastModified": "2026-05-25T06:30:00.0000000Z",
    "lastCollected": "2026-05-25T06:30:00.0000000Z"
  },
  "data": [
    {
      "ReleaseDate": "2026-05-13",
      "ChannelName": "Current Channel",
      "Version": "2604",
      "Build": "19929.20172",
      "FullBuild": "16.0.19929.20172"
    }
  ]
}

Code examples

$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/m365-apps-update-history.json'
$response.data | Where-Object { $_.ChannelName -eq 'Current Channel' } |
    Sort-Object ReleaseDate -Descending | Select-Object -First 5
import requests

data = requests.get("https://api.datafornerds.io/v2/microsoft/m365-apps-update-history.json").json()["data"]
channels = set(r["ChannelName"] for r in data)
for ch in sorted(channels):
    count = sum(1 for r in data if r["ChannelName"] == ch)
    print(f"{ch}: {count} releases")
const { data } = await fetch('https://api.datafornerds.io/v2/microsoft/m365-apps-update-history.json')
  .then(r => r.json());
const current = data
  .filter(r => r.ChannelName === 'Current Channel')
  .sort((a, b) => b.ReleaseDate.localeCompare(a.ReleaseDate));
console.log(`Latest: Version ${current[0].Version} (Build ${current[0].Build})`);
curl -s https://api.datafornerds.io/v2/microsoft/m365-apps-update-history.json \
  | jq '[.data[] | select(.ChannelName == "Current Channel")] | sort_by(.ReleaseDate) | last'

JSON Schema

/v2/microsoft/schemas/m365-apps-update-history.schema.json