a few tips, this won't solve it all though. in the code make sure the user can't specify more than 30 for the max results per page.
if ($x < 30) { $x = 30; } do the same for the radius. i'd probably cut that down to 30 miles as well. the trick is to make it harder for these people to get at the information. this would be easy to implement, but will only slow them down.
you may want to require a user account be setup to view more than 10 results/page and 10 mile radius. make the account openings take a day, place caps, or generate reports of suspicious activity. disable account based on abuses of the caps or your judgement based on the reports. make sure it takes a day to re-activate the account once the user contacts you to get it restored. etc...
as long as you offer the information, someone can build a system to harvest it. the best you can do is make it impractical so they look somewhere else.