Some companies seem to lie about their top range number as well. If you pass the interview and ask you for a figure and you come back with their top range number, suddenly there are reasons you shouldn't be making that. I strongly suspect they have no intention of giving out that amount but are instead using it to entice people that are willing to accept less than they are worth. It plants the idea that one day you will be making that much at the company if you accept less for now.
This happened to me, range was $x-y for a position I was very well qualified for. They wanted 6-8 YOE while I had 12, I had 5+ years familiarity with the business domain alone, experience in all the tech, demonstrable experience doing what they wanted to do in the next 2 years. Comes time for salary negotiation and their first offer is exactly in the middle of X and Y not surprisingly. I list all the above, say it's pretty clear to me Y is a fair offer not to mention a pay cut from where I'm coming from (which had the added benefit of being true).
Basically they refused to pay me Y because there were folks working there who had been at the company for a while and weren't making that, with very little other justification. We eventually settled on a signing bonus to make up ~80% of the difference, and I got a raise that surpassed that difference within the first year. But I probably wouldn't have taken the role without the bonus and probably would have left within the first year without the raise.
It's still not clear to me why they listed that range if their justification for not paying the top of it was a set of factors that would have been the same for any applicant.