The median 2005 BMW 3-Series in the Canadian market sits at $10,900. That's your anchor. If a car is priced near it and the condition checks out, you're paying a fair number for a 20-year-old car.
Most listings land between $10,500 and $18,990. That's a wide spread for one model year, and it tells you condition and history are doing most of the pricing work here. The bottom of that range is basically the median, so anything under $10,500 is either a project or a car with a story worth digging into.
What to make of the spread
The typical high end of $18,990 is nearly double the median. On a car this age you're not paying for the badge at that price, you're paying for a well-kept example with paperwork. Decide which half of the range you're shopping before you start, because a $10,900 car and an $18,990 car are two very different buys.
Median mileage sits around 163,630 km. That's normal wear for the year, so treat it as the baseline rather than a red flag. A car well below it with a clean service record earns a bit of a premium. One well above should cost you less than the $10,900 median, full stop.
Numbers reflect live listings across Canada over the last 90 days, filtered for outliers. Data as of . Prices in CAD.