How to read KiCAD XML BOM using Python

This script reads an XML BOM (also called python-bom in kicad-cli) using beautifulsoup4 and - as an usage example, generates a RefDes to footprint name dictionary:

read_kicad_bom.py
from bs4 import BeautifulSoup

def extract_footprints_by_ref_from_xml(filename):
    footprints_by_ref = {} # e.g. "C3" => "Capacitor_SMD:C_0603_1608Metric"

    with open(filename, "r") as infile:
        soup = BeautifulSoup(infile, features="xml")

    for component in soup.export.components.findChildren("comp"):
        refdes = component.attrs["ref"]
        footprints_by_ref[refdes] = component.footprint.text

    return footprints_by_ref

Check out similar posts by category: KiCAD, Python