Spread the love
In this tutorial we are going to see how to use the Bing Local Business Search API to get results. The Bing Local Business Search API is a RESTful service that helps you identify local business entities in a targeted area based on users’ text search queries, like restaurants hair salons etc.
Prerequisites
- To run the sample code you must have Visual Studio installed.
- To use the Bing Web Search API you need to create a Cognitive Services API account with access to the Bing Search APIs. If you don’t have an Azure subscription, you can create a free account.
Create a new project
To make a Search Request follow the steps below:
- Create a Console Application in Visual Studio 2017
- Add the following code under Program.
const string accessKey = "enter key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/localbusinesses/search"; const string searchTerm = "restaurant in new york"; // Returns search results including relevant headers struct SearchResult { public String jsonResult; public Dictionary<String, String> relevantHeaders; } static void Main() { Console.OutputEncoding = System.Text.Encoding.UTF8; Console.WriteLine("Searching locally for: " + searchTerm); SearchResult result = BingLocalSearch(searchTerm, accessKey); Console.WriteLine("\nHTTP Headers:\n"); foreach (var header in result.relevantHeaders) Console.WriteLine(header.Key + ": " + header.Value); Console.WriteLine("\nJSON Response:\n"); Console.WriteLine(result.jsonResult); Console.Write("\nPress Enter to exit "); Console.ReadLine(); } /// <summary> /// Performs a Bing Local business search and return the results as a SearchResult. /// </summary> static SearchResult BingLocalSearch(string searchQuery, string key) { // Construct the URI of the search request var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(searchQuery) + "&mkt=en-us"; // Perform the Web request and get the response WebRequest request = HttpWebRequest.Create(uriQuery); request.Headers["Ocp-Apim-Subscription-Key"] = key; HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result; string json = new StreamReader(response.GetResponseStream()).ReadToEnd(); // Create result object for return var searchResult = new SearchResult(); searchResult.jsonResult = json; searchResult.relevantHeaders = new Dictionary<String, String>(); // Extract Bing HTTP headers foreach (String header in response.Headers) { if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-")) searchResult.relevantHeaders[header] = response.Headers[header]; } return searchResult; } - Replace the const string accesskey= “enter your key here”; with your subscription key
- Run the program
Get the results
The results are shown as the following json. Now you can use the results in your application.
"_type": "SearchResponse",
"queryContext": {
"originalQuery": "restaurant in new york"
},
"places": {
"totalEstimatedMatches": 50,
"value": [
{
"_type": "LocalBusiness",
"id": "https://api.cognitive.microsoft.com/api/v7/#Places.0",
"name": "Balthazar Restaurant",
"url": null,
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness",
"Restaurant"
]
},
"geo": {
"latitude": 40.72276,
"longitude": -73.99842
},
"routablePoint": {
"latitude": 40.7228355,
"longitude": -73.99837
},
"address": {
"streetAddress": "80 Spring St",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10012",
"addressCountry": "US",
"neighborhood": "SoHo",
"text": "80 Spring St, New York, NY, 10012"
},
"telephone": "(212) 965-1414"
},
{
"_type": "LocalBusiness",
"id": "https://api.cognitive.microsoft.com/api/v7/#Places.1",
"name": "The Odeon",
"url": null,
"entityPresentationInfo": {
"entityScenario": "ListItem",
"entityTypeHints": [
"Place",
"LocalBusiness",
"Restaurant"
]
},
"geo": {
"latitude": 40.71692,
"longitude": -74.00792
},
"routablePoint": {
"latitude": 40.7169876,
"longitude": -74.0080643
},
"address": {
"streetAddress": "145 W Broadway",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10013",
"addressCountry": "US",
"neighborhood": "Downtown",
"text": "145 W Broadway, New York, NY, 10013"
},
"telephone": "(212) 233-0507"
},
...
...
You can find the complete source code in my Github in this repository
