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

Windows Update History

Endpoint

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

This dataset contains all Windows client and server updates: Windows 10, Windows 11, and Windows Server. For OS-specific subsets, see Windows 10, Windows 11, or Windows Server.

Schema

Field Type Description Example
OSType string "Client" or "Server" Client
MajorVersion integer OS major version: 10, 11, 2022, or 2025 11
WindowsVersion string Feature update version identifier 24H2
KBNumber string Knowledge Base article number KB5058411
OSBuild string Full OS build number 26100.4061
FullVersion string NT version string (always 10.0.x) 10.0.26100.4061
ReleaseDate date Release date in ISO 8601 format 2026-05-13
ReleaseType string Standard, Preview, Out-of-band, Hotpatch, or Hotpatch-OOB Standard
IsExpired boolean Whether Microsoft has marked this update as expired false
ArticleUrl string URL to the KB article on support.microsoft.com https://support.microsoft.com/kb/5058411

Notes

  • Windows Server coverage currently includes Server 2022 and Server 2025 only. Older server versions (2019, 2016, etc.) are not included.
  • Microsoft marks EXPIRED inconsistently across version sections on their update history pages. DataForNerds normalizes this at the KB level: if any version of a KB is marked expired, all versions of that KB are reported as expired.

Example response

{
  "metadata": {
    "provider": "DataForNerds",
    "apiVersion": "v2",
    "dataset": "windows-update-history",
    "recordCount": 1842,
    "sourceUrls": [
      "https://support.microsoft.com/en-us/topic/windows-10-update-history-e6058e7c-4116-38f1-b984-4fcacfba5e5d",
      "https://aka.ms/Windows11UpdateHistory"
    ],
    "lastModified": "2026-05-25T06:15:30.0000000Z",
    "lastCollected": "2026-05-25T06:15:30.0000000Z"
  },
  "data": [
    {
      "OSType": "Client",
      "MajorVersion": 11,
      "WindowsVersion": "24H2",
      "KBNumber": "KB5058411",
      "OSBuild": "26100.4061",
      "FullVersion": "10.0.26100.4061",
      "ReleaseDate": "2026-05-13",
      "ReleaseType": "Standard",
      "IsExpired": false,
      "ArticleUrl": "https://support.microsoft.com/kb/5058411"
    }
  ]
}

Code examples

$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/windows-update-history.json'
$response.data | Where-Object { $_.MajorVersion -eq 11 -and $_.ReleaseType -eq 'Standard' } |
    Sort-Object ReleaseDate -Descending | Select-Object -First 5
import requests

data = requests.get("https://api.datafornerds.io/v2/microsoft/windows-update-history.json").json()["data"]
win11 = [r for r in data if r["MajorVersion"] == 11 and r["ReleaseType"] == "Standard"]
for update in sorted(win11, key=lambda r: r["ReleaseDate"], reverse=True)[:5]:
    print(f"{update['ReleaseDate']}  {update['KBNumber']}  {update['OSBuild']}")
const { data } = await fetch('https://api.datafornerds.io/v2/microsoft/windows-update-history.json')
  .then(r => r.json());
const win11 = data
  .filter(r => r.MajorVersion === 11 && r.ReleaseType === 'Standard')
  .sort((a, b) => b.ReleaseDate.localeCompare(a.ReleaseDate))
  .slice(0, 5);
console.table(win11);
using var client = new HttpClient();
var json = await client.GetStringAsync("https://api.datafornerds.io/v2/microsoft/windows-update-history.json");
var doc = JsonDocument.Parse(json);
foreach (var record in doc.RootElement.GetProperty("data").EnumerateArray()
    .Where(r => r.GetProperty("MajorVersion").GetInt32() == 11)
    .Take(5))
    Console.WriteLine($"{record.GetProperty("ReleaseDate")}  {record.GetProperty("KBNumber")}");
curl -s https://api.datafornerds.io/v2/microsoft/windows-update-history.json \
  | jq '[.data[] | select(.MajorVersion == 11 and .ReleaseType == "Standard")] | sort_by(.ReleaseDate) | reverse | .[:5]'
resp, _ := http.Get("https://api.datafornerds.io/v2/microsoft/windows-update-history.json")
defer resp.Body.Close()
var result struct { Data []map[string]any `json:"data"` }
json.NewDecoder(resp.Body).Decode(&result)
for _, r := range result.Data {
    if r["MajorVersion"].(float64) == 11 { fmt.Println(r["KBNumber"], r["OSBuild"]) }
}

JSON Schema

/v2/microsoft/schemas/windows-update-history.schema.json