Abstract This paper is devoted to bilevel optimization, a branch of mathematical programming of both practical and theoretical interest. Starting with a simple example, we proceed towards a general formulation. We then present fields of application, focus on solution approaches, and make the connection with MPECs (Mathematical Programs with Equilibrium Constraints). Keywords Bilevel programming · Mathematical programs with equilibrium constraints · Nonlinear programming · Optimal pricing