Call WebAPI then parse part of json result
HttpClient client = new HttpClient();



This needs to be disposed.




using (var response = client.GetAsync(urlParameters).Result)



Why don't you await this like you do with other awaitable APIs?




static async Task&lt;List&lt;Hero&gt;&gt; GetHero(string url, string urlParameters)
{
    ..
    return null;
}



Methods returning collections should return an empty collection instead of null this means you should

return Task.FromResult(new List&lt;Hero&gt;());




As far as the if block is concerned you don't need the heros variable. With LINQ can create the list inplace:

if (response.IsSuccessStatusCode)
{
    var jsonResult = await response.Content.ReadAsStringAsync();
    var deserializedjsonResult = JObject.Parse(jsonResult);
    var resultHeroes = deserializedjsonResult["result"]["heroes"];
    return resultHeroes.Select(x =&gt; x.ToObject&lt;Hero&gt;()).ToList();
}