I added this method to Packages, so you can look for a package based on meta fields. 
It even includes some hackery to look up values in serialized data. 
  
        /**
         * Searches packages that contain the given meta field
         *
         * @param string $key They service field key to search
         * @param string $value The service field value to search
         * @param string $subkey The key to look for in serialised meta
         * @return array An array of stdClass objects, each containing a service
         */
        public function searchPackageMeta($key, $value, $subkey=null) {
                $module_id=1;
                $this->Record = $this->getPackages();
                $qry = $this->Record->innerJoin("package_meta", "package_meta.package_id", "=", "packages.id", false)->
                        group("packages.id")->
                        where("package_meta.key", "=", $key)->
                        where("package_meta.value", "=", $value);
                if($subkey) {
                        return $qry->orLike("package_meta.value", sprintf('%%s:%d:"%s";s:%d:"%s";%%', strlen($subkey), $subkey, strlen($value), $value))->fetchAll();
                } else {
                        return $qry->orLike("package_meta.value", sprintf('%%:%%:%%;s:%d:"%s";%%', strlen($value), $value))->fetchAll();
                }
        }
  
Example usage: 
  
find packages that include .com NameCheap domains. 
  
blesta.api('packages/searchPackageMeta', {'key': 'tlds', 'value': '.com'})
Find all SSL certificates 
  
blesta.api('packages/searchPackageMeta', {'key': 'type', 'value': 'ssl'})
Get all 33" washing machines 
  
blesta.api('packages/searchPackageMeta', {'key': 'dimensions', 'value': '33', 'subkey': 'diameter'})