public Task <FoursquareResponse <SearchRecommendation> > SearchRecommendations(SearchRecommendationFilters filters, RecommendationSort sort = RecommendationSort.BestMatch, string near = null, string nearGeoId = null, int snippetCharLimit = Constants.BROWSE_EXPLORE_SNIPPET_LENGTH, FoursquareLocation location = null, FoursquareLocation currentLocation = null, FoursquareLocation ne = null, FoursquareLocation sw = null, bool ignoreSpellingCorrection = false, int?searchRadius = null, string mode = null, int limit = Constants.DEFAULT_PAGE_SIZE, int offset = 0, List <string> excludeVenues = null, List <string> includeVenues = null, string referralId = null, SearchRecommendationLocations.SearchRecommendationGeoBounds bounds = null, int initialOffset = 0) { var req = new FoursquareRequest(ApiBase + "search/recommendations"); if (searchRadius.HasValue) { req.AddParam("radius", searchRadius.GetValueOrDefault(0).ToString()); } req.AddParam("snippetCharacterLimit", snippetCharLimit.ToString()); switch (sort) { case RecommendationSort.Distance: req.AddParam("sortByDistance", "1"); break; case RecommendationSort.Rating: req.AddParam("sortByVenueRating", "1"); break; } if (!string.IsNullOrEmpty(mode)) { req.AddParam("mode", mode); } if (excludeVenues != null && excludeVenues.Count > 0) { req.AddParam("excludeVenues", string.Join(",", excludeVenues)); } if (includeVenues != null && includeVenues.Count > 0) { req.AddParam("includeVenues", string.Join(",", includeVenues)); } if (ignoreSpellingCorrection) { req.AddParam("noCorrect", "1"); } if (initialOffset > 0) { req.AddParam("initialOffset", initialOffset.ToString(CultureInfo.InvariantCulture)); } req.AddParam("limit", limit.ToString()); req.AddParam("offset", offset.ToString()); req.AddParam("referralId", referralId); req.AddBrowseExploreParams(filters, currentLocation, location, ne, sw, near, nearGeoId); if (bounds != null) { if (bounds.box != null) { req.AddParam("fromGeoBounds", "true"); req.AddParam("ne", ApiUtils.LatLngFromLocation(new FoursquareLocation { Lat = bounds.box.ne.lat, Lng = bounds.box.ne.lng })); req.AddParam("sw", ApiUtils.LatLngFromLocation(new FoursquareLocation { Lat = bounds.box.sw.lat, Lng = bounds.box.sw.lng })); } else if (bounds.circle != null) { req.AddParam("fromGeoBounds", "true"); req.AddParam("radius", bounds.circle.radius.ToString(CultureInfo.InvariantCulture)); } else if (!string.IsNullOrEmpty(bounds.geoId)) { req.AddParam("fromGeoBounds", "true"); } } AddCommonParams(ref req); return(req.MakeRequest <SearchRecommendation>()); }