Not sure if I understand your use case. If your query radius is very small, it should return very quickly. If it's very large, then the first shape found might be very far from the query point.
You can do what you want with cpSpacePointQuery()
and a private API function. There is no built in way to break the iteration, but it's safe to use setjmp/longjmp. The only catch is that you need to call cpSpaceUnlock(space, cpTrue)
from the private header afterwards.