Creating a form with GET bypases the validation and submit
Have the page or form check for the presence of your variables, using drupal_get_query_parameters(), and if present, perform validation checks and get results from the external API, and display.

For example,

$params = drupal_get_query_parameters();
if ( isset($params['cat']) ) {
  //validate $params['cat']
    if ( myValidationCheck($params['cat']) ) {
      $results = myExternalAPIGetResults($params['cat']);
      $form['results'] = myResultsDisplay($results);
    }
  }