How can I find contacts based on both custom data and address via the API?
I don't know the answer about hidden smart groups but I took a swipe at the API chaining and was able to pull a contact on the demo server that met one criteria on the contact and another on the geocode on the address:



I don't know if that is helpful at all, but if you can get the first portion of this API call working with your custom field, it seems you should be able to chain the geocode to it.

The code for the above comes out like this (PHP):

$result = civicrm_api3('Contact', 'get', array(
'sequential' =&gt; 1,
'custom_11' =&gt; 1,
'api.Address.get' =&gt; "array( 'geo_code_1' =&gt; array('IS NOT NULL' =&gt; 1), )",
));