Exchange operations are carried out by banks and their branches. The buying and selling rates are set by the bank itself and differ from the official central bank rate: the latter is used for accounting and settlements, not for exchange.
The difference between the buying and selling rates constitutes the bank's income. It varies between banks and changes throughout the day, and for less popular currencies it is typically wider than for the dollar. For large amounts, it is the spread itself, rather than the rate, that determines the difference in outcome between different banks.
It is important to distinguish between cash and non-cash exchange: the rates for them may differ, since cash operations involve additional costs for the bank. Conversion within a multi-currency deposit or between accounts usually occurs on different terms than cash exchange.
Practical considerations: comparing rates at several banks makes sense for substantial amounts, while for regular exchange of small sums, the spread costs accumulate more noticeably than the difference in rates on any given day.