The ip.audvy.me API
Calling ip.audvy.me/api/json will result in a JSON response in the following format
            
         
               {
                  "ipv4":"xxx.xxx.xxx.xxx"
               }
         
            
         
To parse using C#
            
         
               using System.Net;


               namespace IPGrabber
               {
                  class IPv4Address
                  {
                     private static async Task<IPAddress?> GetIpAddress()
                     {
                           var GetMessageFromSite = (await new HttpClient().GetStringAsync("https://ip.audvy.me/api/json"))
                              .Replace("\\r\\n", "").Replace("\\n", "").Trim();

                           int pFrom = GetMessageFromSite.IndexOf("{\"ipv4\":\"") + "{\"ipv4\":\"".Length;
                           int pTo = GetMessageFromSite.LastIndexOf("\"}");

                           String result = GetMessageFromSite.Substring(pFrom, pTo - pFrom);

                           if (!IPAddress.TryParse(result, out var ipAddress)) return null;
                           return ipAddress;
                     }

                     public static string GetIP()
                     {
                           var externalIpTask = GetIpAddress();
                           GetIpAddress().Wait();
                           var externalIpString = externalIpTask.Result ?? IPAddress.Loopback;

                           return externalIpString.ToString();
                     }
                  }
               }