If you don't want to pay the prices for Xel-Ha, but what to see the same fish, visit the Lagoon of Yal Ku in Playa Akumal. This lagoon is a protected habitat for regional marine life. The waters are a combination of salt water from the Carribean and fresh water from underground rivers. You can snorkel here and hang out on the small beaches and docks. The lagoon is a short 10 minute walk from Half Moon Bay, at the end of the road in Akumal. Take a taxi if you are coming from the arched entrance for it is about a 5 kilometer walk from there. There is a parking lot and you can rent snorkeling equipment.
The lagoon is an easy walk to nearby restaurants. A stay for the day will cost you 5 dollars or 50 pesos. To save the fish, they ask that you do not wear sunscreen in the water. This can be a problem because the sun is intense and you will burn. Try to go early in the morning to avoid the heat and crowds- although there were never very many people there when we went in July. Tour busses do pull in around noon.
We saw lots of tropical fish all around the lagoon as well as underwater caves. If you swim toward the ocean, you will see the turtles and manta rays as well as incredible brightly colored coral.
If you are coming from the Mayan Palace, take a taxi (expensive) or take the Mayab bus to Playa del Carmen and then switch buses going further south towards Tulum. Get off at Playa Akumal and then walk 5 kilometers or so or take a taxi for a few dollars from the arch to the Lagoon. You will pass Half Moon Bay, which is very nice also, and where you will see baby turtles hatching if you are lucky.