I needed the same thing to track release dates and build versions, but couldn't find anything. Here's a python script I wrote to scrape the data from the Win10 and Win11 release information pages.
import requests
from bs4 import BeautifulSoup
def get_win_build_info(os_version, url):
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# Scrape the release names
for version in soup.find_all('strong'):
if "Version" in version.contents[0] and version.contents[0] not in release_names:
release_names.append(version.contents[0])
# Scrape the release data and match them with their corresponding release names
tables = soup.find_all("table",class_="cells-centered")
rows = table.find_all('tr')
'os_major_version' : os_version,
'feature_release_version': release_names[i].split(' ')[1],
'release_full_name': release_names[i]
cols = row.find_all('td')
if re.match('\d+-\d+-\d+', data.text):
row_dict['release_date'] = data.text
elif re.match('\d+\.\d+', data.text):
row_dict['build_number'] = data.text
elif re.match('KB\d+', data.text):
row_dict['kb'] = data.text
if 'release_date' in row_dict:
release_list.append(row_dict)
win10_builds = get_win_build_info("Windows 10", 'https://learn.microsoft.com/en-us/windows/release-health/release-information')
for build in win10_builds:
win11_builds = get_win_build_info("Windows 11", 'https://learn.microsoft.com/en-us/windows/release-health/windows11-release-information')
for build in win11_builds:
if __name__ == '__main__':