I was looking at buying a house recently. An agent spent at least a few hours on the phone with me, spent a few hours going to places, spent a few more hours on the phone with me. Probably spent a few more hours on the phone with the sellers. I ended up backing out, and the sale didn't go through. The realtor didn't get paid.
There are also a lot of people who will try a few different realtors. While a good idea, it's ultimately a waste of time for the ones you don't use.
They have to make up for all the non-sales, so you're paying them not just for work done on your behalf, but on all those people's behalf as well.
And usually 1/2 the agent's fee goes to their parent company. For example, you buy a $200K house. Each agent gets $6,000. Each parent gets $3,000 and each agent goes home with $3,000 (sometimes less). And they might only sell one house a month.