This document introduces BNFinder, a Python software for reconstructing Bayesian networks and dynamic Bayesian networks from data. It uses a fast, exact algorithm to find the optimal network topology, unlike traditional Markov chain Monte Carlo methods. The software supports discrete and continuous data, different scoring functions, and datasets with perturbations. It is open source and runs efficiently on large real-world genomic and neural network examples. Future plans include parallelization and improvements to continuous variable and classification models.