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

PowerShell Examples

Fetch and filter data

# Get all Windows 11 updates
$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/windows-11-update-history.json'

# Filter to standard releases from this year
$recent = $response.data | Where-Object {
    $_.ReleaseType -eq 'Standard' -and $_.ReleaseDate -ge '2026-01-01'
}

$recent | Sort-Object ReleaseDate -Descending | Format-Table ReleaseDate, KBNumber, OSBuild

Check if your system is up to date

$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/windows-update-history.json'

$currentBuild = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').CurrentBuild
$ubr = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').UBR
$myBuild = "$currentBuild.$ubr"

$latest = $response.data |
    Where-Object { $_.MajorVersion -eq 11 -and $_.ReleaseType -eq 'Standard' } |
    Sort-Object ReleaseDate -Descending |
    Select-Object -First 1

if ($myBuild -eq $latest.OSBuild) {
    Write-Host "You are on the latest build: $myBuild" -ForegroundColor Green
} else {
    Write-Host "Current: $myBuild | Latest: $($latest.OSBuild) ($($latest.KBNumber))" -ForegroundColor Yellow
}

Efficient polling with conditional requests

$uri = 'https://api.datafornerds.io/v2/microsoft/windows-update-history.json'
$etag = $null

function Get-UpdatesIfChanged {
    $headers = @{}
    if ($etag) { $headers['If-None-Match'] = $etag }

    try {
        $response = Invoke-WebRequest -Uri $uri -Headers $headers
        $script:etag = $response.Headers['ETag']
        $data = $response.Content | ConvertFrom-Json
        Write-Host "Data updated: $($data.metadata.recordCount) records"
        return $data
    } catch {
        if ($_.Exception.Response.StatusCode -eq 304) {
            Write-Host "No changes since last check"
            return $null
        }
        throw
    }
}

Build a language code lookup table

$response = Invoke-RestMethod 'https://api.datafornerds.io/v2/microsoft/language-codes.json'
$lookup = @{}
$response.data | ForEach-Object { $lookup[$_.LanguageCode] = $_.BCP47 }

# Convert LCID to BCP 47
$lookup['1033']  # Returns: en-US