PostgreSQL has a function in /contrib called earthdistance. Using this along with a contributed procedure in the PostgreSQL cookbook
http://techdocs.postgresql.org, you can pretty much do an sql query looking for the closest
n providers/vendors/whatever to the given zipcode. HTH