public void TestGetJson()
        {
            search = new BingSearch(ht, apiKey);
            JObject data = search.GetJson();

            Assert.AreEqual(data["search_metadata"]["status"], "Success");

            JArray coffeeShops = (JArray)data["organic_results"];

            Assert.IsNotNull(coffeeShops);
            foreach (JObject coffeeShop in coffeeShops)
            {
                Console.WriteLine("Found: " + coffeeShop["title"]);
                Assert.IsNotNull(coffeeShop["title"]);
            }
        }
        static void Main(string[] args)
        {
            // secret api key from https://serpapi.com/dashboard
            String apiKey = Environment.GetEnvironmentVariable("API_KEY");

            if (apiKey == null)
            {
                Console.WriteLine("API_KEY environment variable be set your secret api key visit: https://serpapi.com/dashboard");
                Environment.Exit(1);
            }

            // Localized search for Coffee shop in Austin Texas
            Hashtable ht = new Hashtable();

            ht.Add("location", "Austin, Texas, United States");
            ht.Add("q", "Coffee");
            ht.Add("hl", "en");
            ht.Add("google_domain", "google.com");

            BingSearch search = new BingSearch(ht, apiKey);

            try
            {
                Console.WriteLine("Search coffee in Austin, Texas on Google [1 credit]");
                JObject data = search.GetJson();
                Console.WriteLine("local coffee shop");
                JArray coffeeShops = (JArray)data["organic_results"];
                foreach (JObject coffeeShop in coffeeShops)
                {
                    Console.WriteLine("Found: " + coffeeShop["title"]);
                }
                Console.WriteLine("organic result coffee shop");
                coffeeShops = (JArray)data["organic_results"];
                foreach (JObject coffeeShop in coffeeShops)
                {
                    Console.WriteLine("Found: " + coffeeShop["title"]);
                }

                string id = (string)((JObject)data["search_metadata"])["id"];
                Console.WriteLine("Search from the archive: " + id + ". [0 credit]");
                JObject archivedSearch = search.GetSearchArchiveJson(id);
                foreach (JObject coffeeShop in (JArray)archivedSearch["organic_results"])
                {
                    Console.WriteLine("Found: " + coffeeShop["title"]);
                }

                //  Get account information
                Console.WriteLine("Account information: [0 credit]");
                JObject account = search.GetAccount();
                Dictionary <string, string> dictObj = account.ToObject <Dictionary <string, string> >();
                foreach (string key in dictObj.Keys)
                {
                    Console.WriteLine(key + " = " + dictObj[key]);
                }
                // write:
                // account_id = xx
                // api_key = xx
                // account_email = [email protected]
                // plan_id =
                // plan_name = No Plan
                // searches_per_month = 0
                // this_month_usage = 0
                // this_hour_searches = 1
                // last_hour_searches = 0
            }
            catch (SerpApiSearchException ex)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine(ex.ToString());
            }
            search.Close();
        }