{"id":1827,"date":"2022-11-08T00:18:44","date_gmt":"2022-11-08T00:18:44","guid":{"rendered":"https:\/\/serviceobjects.wpaladdin.com\/?post_type=serviceobjects&#038;p=1827"},"modified":"2025-10-08T10:48:07","modified_gmt":"2025-10-08T17:48:07","slug":"agi-soap","status":"publish","type":"page","link":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/","title":{"rendered":"AGI &#8211; SOAP"},"content":{"rendered":"\n<div class=\"wp-block-create-block-tabs\"><ul class=\"tab-labels\" role=\"tablist\" aria-label=\"tabbed content\"><li class=\"tab-label active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"C#\" tabindex=\"0\">C#<\/li><li class=\"tab-label\" role=\"tab\" aria-selected=\"false\" aria-controls=\"Python\" tabindex=\"0\">Python<\/li><li class=\"tab-label\" role=\"tab\" aria-selected=\"false\" aria-controls=\"NodeJS\" tabindex=\"0\">NodeJS<\/li><\/ul><div class=\"tab-content\">\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong>Address Geocode &#8211; International C# Code Snippet<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"true\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\ufeffusing address_geocode_international_dot_net.REST;\nusing AGIService;\nusing System;\nusing System.Text.Json;\nusing System.Threading.Tasks;\n\nnamespace address_geocode_international_dot_net.SOAP\n{\n    \/\/\/ &lt;summary>\n    \/\/\/ SOAP client wrapper for the ServiceObjects AGI PlaceSearch operation.\n    \/\/\/ Handles SOAP requests to primary and backup endpoints, supporting both trial and live modes.\n    \/\/\/ Provides async invocation with resiliency via failover mechanism.\n    \/\/\/ &lt;\/summary>\n    public class PlaceSearchValidation\n    {\n        private const string LiveBaseUrl = \"https:\/\/sws.serviceobjects.com\/AGI\/soap.svc\/SOAP\";\n        private const string BackupBaseUrl = \"https:\/\/wsbackup.serviceobjects.com\/AGI\/soap.svc\/SOAP\";\n        private const string TrailBaseUrl = \"https:\/\/trial.serviceobjects.com\/AGI\/soap.svc\/SOAP\";\n\n        private readonly string _primaryUrl;\n        private readonly string _backupUrl;\n        private readonly int _timeoutMs;\n        private readonly bool _isLive;\n\n        \/\/\/ &lt;summary>\n        \/\/\/ Initializes the PlaceSearch SOAP client with endpoint configuration based on mode (live or trial).\n        \/\/\/ &lt;\/summary>\n        \/\/\/ &lt;param name=\"isLive\">True for live (production) endpoint; false for trial usage.&lt;\/param>\n        public PlaceSearchValidation(bool isLive)\n        {\n            \/\/ Read timeout (milliseconds) and isLive flag\n            _timeoutMs = 10000;\n            _isLive = isLive;\n\n            \/\/ Depending on isLive, pick the correct SOAP endpoint URLs\n            if (_isLive)\n            {\n                _primaryUrl = LiveBaseUrl;\n                _backupUrl = BackupBaseUrl;\n            }\n            else\n            {\n                _primaryUrl = TrailBaseUrl;\n                _backupUrl = TrailBaseUrl;\n            }\n\n            if (string.IsNullOrWhiteSpace(_primaryUrl))\n                throw new InvalidOperationException(\"Primary URL not set. Check endpoint configuration.\");\n\n            if (string.IsNullOrWhiteSpace(_backupUrl))\n                throw new InvalidOperationException(\"Backup URL not set. Check endpoint configuration.\");\n        }\n\n\n        \/\/\/ &lt;summary>\n        \/\/\/ Executes the PlaceSearch SOAP request asynchronously.\n        \/\/\/ Attempts call to primary endpoint first; upon failure, retries with backup URL.\n        \/\/\/ &lt;\/summary>\n        \/\/\/ &lt;param name=\"SingleLine\">Single-line address input. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Address1\">Address line 1. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Address2\">Address line 2. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Address3\">Address line 3. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Address4\">Address line 4. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Address5\">Address line 5. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Locality\">City or locality. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"AdministrativeArea\">State or province. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"PostalCode\">Zip or postal code. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Country\">Country ISO code (e.g., \"US\", \"CA\"). - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Boundaries\">Geolocation search boundaries. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"MaxResults\">Maximum number of results to return. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"SearchType\">Specifies place type to search for. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"Extras\">Additional search attributes. - Optional&lt;\/param>\n        \/\/\/ &lt;param name=\"LicenseKey\">Service Objects license key (live or trial). - Required&lt;\/param>\n        \/\/\/ &lt;returns>&lt;see cref=\"ResponseObject\"\/> containing matched place search results.&lt;\/returns>\n        \/\/\/ &lt;exception cref=\"Exception\">Throws when both primary and backup endpoints fail.&lt;\/exception>\n        public async Task&lt;ResponseObject> PlaceSearch(\n            string SingleLine,\n            string Address1,\n            string Address2,\n            string Address3,\n            string Address4,\n            string Address5,\n            string Locality,\n            string AdministrativeArea,\n            string PostalCode,\n            string Country,\n            string Boundaries,\n            string MaxResults,\n            string SearchType,\n            string Extras,\n            string LicenseKey)\n        {\n            AGISoapServiceClient clientPrimary = null;\n            AGISoapServiceClient clientBackup = null;\n\n            try\n            {\n                \/\/ 1) Attempt Primary\n                clientPrimary = new AGISoapServiceClient();\n                clientPrimary.Endpoint.Address = new System.ServiceModel.EndpointAddress(_primaryUrl);\n                clientPrimary.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(_timeoutMs);\n                \n                \n                ResponseObject response = await clientPrimary.PlaceSearchAsync(\n                    SingleLine,\n                    Address1,\n                    Address2,\n                    Address3,\n                    Address4,\n                    Address5,\n                    Locality,\n                    AdministrativeArea,\n                    PostalCode,\n                    Country,\n                    Boundaries,\n                    MaxResults,\n                    SearchType,\n                    Extras,\n                    LicenseKey\n                ).ConfigureAwait(false);\n\n                \/\/ Client requirement: failover only if response is null or error TypeCode == \"3\"\n                if (response == null)\n                {\n                    throw new InvalidOperationException(\"Primary endpoint returned null or a fatal TypeCode=3 error for PlaceSearch\");\n                }\n\n                return response;\n            }\n            catch (Exception primaryEx)\n            {\n                try\n                {\n                    \/\/ 2) Fallback: Attempt Backup\n                    clientBackup = new AGISoapServiceClient();\n                    clientBackup.Endpoint.Address = new System.ServiceModel.EndpointAddress(_backupUrl);\n                    clientBackup.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(_timeoutMs);\n\n                    return await clientBackup.PlaceSearchAsync(\n                        SingleLine,\n                        Address1,\n                        Address2,\n                        Address3,\n                        Address4,\n                        Address5,\n                        Locality,\n                        AdministrativeArea,\n                        PostalCode,\n                        Country,\n                        Boundaries,\n                        MaxResults,\n                        SearchType,\n                        Extras,\n                        LicenseKey\n                    ).ConfigureAwait(false);\n                }\n                catch (Exception backupEx)\n                {\n                    throw new Exception(\n                        \"Both primary and backup PlaceSearch endpoints failed.\\n\" +\n                        \"Primary error: \" + primaryEx.Message + \"\\n\" +\n                        \"Backup error: \" + backupEx.Message);\n                }\n                finally\n                {\n                    clientBackup?.Close();\n                }\n            }\n            finally\n            {\n                clientPrimary?.Close();\n            }\n        }\n\n\n    }\n}<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong>Address Geocode &#8211; International Python<\/strong> <strong>Code Snippet<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from suds.client import Client\nfrom suds import WebFault\nfrom suds.sudsobject import Object\n\nclass PlaceSearch:\n    def __init__(self, license_key: str, is_live: bool, timeout_ms: int = 10000):\n        \"\"\"\n        Initialize the PlaceSearch SOAP client.\n\n        Parameters:\n            license_key (str): Service Objects Address Geocode International license key.\n            is_live (bool): whether to use live or trial endpoints.\n            timeout_ms (int): SOAP call timeout in milliseconds.\n        \"\"\"\n        self._timeout_s = timeout_ms \/ 1000.0\n        self.license_key = license_key\n        self._is_live = is_live\n\n        # WSDL URLs\n        self._primary_wsdl = (\n            \"https:\/\/sws.serviceobjects.com\/AGI\/soap.svc?wsdl\"\n            if is_live\n            else \"https:\/\/trial.serviceobjects.com\/AGI\/soap.svc?wsdl\"\n        )\n        self._backup_wsdl = (\n            \"https:\/\/swsbackup.serviceobjects.com\/AGI\/soap.svc?wsdl\"\n            if is_live\n            else \"https:\/\/trialbackup.serviceobjects.com\/AGI\/soap.svc?wsdl\"\n        )\n\n    def place_search(self,\n                    single_line: str,\n                    address1: str,\n                    address2: str,\n                    address3: str,\n                    address4: str,\n                    address5: str,\n                    locality: str,\n                    administrative_area: str,\n                    postal_code: str,\n                    country: str,\n                    max_results: int,\n                    search_type: str,\n                    boundaries: str,\n                    extras: str) -> Object:\n        \"\"\"\n        Call PlaceSearch SOAP API using primary endpoint; on None response,\n        WebFault, or Error.TypeCode == '3' falls back to the backup endpoint.\n        returns: the suds response object\n        raises RuntimeError: if both endpoints fail\n        \"\"\"\n\n        # Common kwargs for both calls\n        call_kwargs = dict(\n            SingleLine=single_line,\n            Address1=address1,\n            Address2=address2,\n            Address3=address3,\n            Address4=address4,\n            Address5=address5,\n            Locality=locality,\n            AdministrativeArea=administrative_area,\n            PostalCode=postal_code,\n            Country=country,\n            MaxResults=max_results,\n            SearchType=search_type,\n            Boundaries=boundaries,\n            Extras=extras,\n            LicenseKey=self.license_key,\n        )\n\n        # Attempt primary\n        try:\n            client = Client(self._primary_wsdl)\n\n            # Override endpoint URL if needed:\n            response = client.service.PlaceSearch(**call_kwargs)\n\n            # If response is None or fatal error code, trigger fallback\n            if response is None or (hasattr(response, 'Error') and response.Error and response.Error.TypeCode == '3'):\n                raise ValueError(\"Primary returned no result or fatal Error.TypeCode=3\")\n\n            return response\n\n        except (WebFault, ValueError, Exception) as primary_ex:\n            try:\n                # Attempt backup\n                client = Client(self._backup_wsdl, timeout=self._timeout_s)\n                response = client.service.GetBestMatches(**call_kwargs)\n                if response is None:\n                    raise ValueError(\"Backup returned no result\")\n                return response\n\n            except (WebFault, Exception) as backup_ex:\n                msg = (\n                    \"Both primary and backup endpoints failed.\\n\"\n                    f\"Primary error: {primary_ex}\\n\"\n                    f\"Backup error: {backup_ex}\"\n                )\n                raise RuntimeError(msg)<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong>Address Geocode &#8211; International NodeJS<\/strong> <strong>Code Snippet<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import { soap } from 'strong-soap';\n\n\/**\n * &lt;summary>\n * A class that provides functionality to call the ServiceObjects Address Geocode International (AGI) SOAP service's PlaceSearch endpoint,\n * retrieving geocoded location information for a given address or place with fallback to a backup endpoint for reliability in live mode.\n * &lt;\/summary>\n *\/\nclass PlaceSearchSoap {\n    \/**\n     * &lt;summary>\n     * Initializes a new instance of the PlaceSearchSoap class with the provided input parameters,\n     * setting up primary and backup WSDL URLs based on the live\/trial mode.\n     * &lt;\/summary>\n     * @param {string} SingleLine - The full address on one line. Optional; for best results, use parsed inputs.\n     * @param {string} Address1 - Address Line 1 of the international address. Optional.\n     * @param {string} Address2 - Address Line 2 of the international address. Optional.\n     * @param {string} Address3 - Address Line 3 of the international address. Optional.\n     * @param {string} Address4 - Address Line 4 of the international address. Optional.\n     * @param {string} Address5 - Address Line 5 of the international address. Optional.\n     * @param {string} Locality - The name of the locality (e.g., city, town). Optional.\n     * @param {string} AdministrativeArea - The administrative area (e.g., state, province). Optional.\n     * @param {string} PostalCode - The postal code. Optional.\n     * @param {string} Country - The country name or ISO 3166-1 Alpha-2\/Alpha-3 code. Required.\n     * @param {string} Boundaries - A comma-delimited list of coordinates for search boundaries. Optional; not currently used.\n     * @param {string} MaxResults - Maximum number of results (1-10). Defaults to '10'.\n     * @param {string} SearchType - Type of search (e.g., 'BestMatch', 'All'). Defaults to 'BestMatch'.\n     * @param {string} Extras - Comma-delimited list of extra features. Optional.\n     * @param {string} LicenseKey - Your license key to use the service. Required.\n     * @param {boolean} isLive - Value to determine whether to use the live or trial servers. Defaults to true.\n     * @param {number} timeoutSeconds - Timeout, in seconds, for the call to the service. Defaults to 15.\n     * @throws {Error} Thrown if LicenseKey is empty or null.\n     *\/\n    constructor(SingleLine, Address1, Address2, Address3, Address4, Address5, Locality, AdministrativeArea, PostalCode, Country, Boundaries, MaxResults = '10', SearchType = 'BestMatch', Extras, LicenseKey, isLive = true, timeoutSeconds = 15) {\n        this.args = {\n            SingleLine,\n            Address1,\n            Address2,\n            Address3,\n            Address4,\n            Address5,\n            Locality,\n            AdministrativeArea,\n            PostalCode,\n            Country,\n            Boundaries,\n            MaxResults,\n            SearchType,\n            Extras,\n            LicenseKey\n        };\n\n        this.isLive = isLive;\n        this.timeoutSeconds = timeoutSeconds;\n\n        this.LiveBaseUrl = 'https:\/\/sws.serviceobjects.com\/agi\/soap.svc?wsdl';\n        this.BackupBaseUrl = 'https:\/\/swsbackup.serviceobjects.com\/agi\/soap.svc?wsdl';\n        this.TrialBaseUrl = 'https:\/\/trial.serviceobjects.com\/agi\/soap.svc?wsdl';\n\n        this._primaryWsdl = this.isLive ? this.LiveBaseUrl : this.TrialBaseUrl;\n        this._backupWsdl = this.isLive ? this.BackupBaseUrl : this.TrialBaseUrl;\n    }\n\n    \/**\n     * &lt;summary>\n     * Asynchronously calls the PlaceSearch SOAP endpoint, attempting the primary endpoint\n     * first and falling back to the backup if the response is invalid (Error.TypeCode == '3') in live mode\n     * or if the primary call fails.\n     * &lt;\/summary>\n     * @returns {Promise&lt;Object>} A promise that resolves to the raw SOAP response data containing geocoded location details or an error.\n     * @throws {Error} Thrown if both primary and backup calls fail, with detailed error messages.\n     *\/\n    async invokeAsync() {\n        try {\n            const primaryResult = await this._callSoap(this._primaryWsdl, this.args);\n\n            if (this.isLive &amp;&amp; !this._isValid(primaryResult)) {\n                console.warn(\"Primary returned Error.TypeCode == '3', falling back to backup...\");\n                const backupResult = await this._callSoap(this._backupWsdl, this.args);\n                return backupResult;\n            }\n\n            return primaryResult;\n        } catch (primaryErr) {\n            try {\n                console.warn(\"Primary call failed, falling back to backup...\");\n                const backupResult = await this._callSoap(this._backupWsdl, this.args);\n                return backupResult;\n            } catch (backupErr) {\n                throw new Error(`Both primary and backup calls failed:\\nPrimary: ${primaryErr.message}\\nBackup: ${backupErr.message}`);\n            }\n        }\n    }\n\n    \/**\n     * &lt;summary>\n     * Performs a SOAP service call to the specified WSDL URL with the given arguments,\n     * creating a client and returning the raw SOAP response data.\n     * &lt;\/summary>\n     * @param {string} wsdlUrl - The WSDL URL of the SOAP service endpoint (primary or backup).\n     * @param {Object} args - The arguments to pass to the PlaceSearch method.\n     * @returns {Promise&lt;Object>} A promise that resolves to the raw SOAP response data.\n     * @throws {Error} Thrown if the SOAP client creation fails, the service call fails, or the response cannot be parsed.\n     *\/\n    _callSoap(wsdlUrl, args) {\n        return new Promise((resolve, reject) => {\n            soap.createClient(wsdlUrl, { timeout: this.timeoutSeconds * 1000 }, (err, client) => {\n                if (err) return reject(err);\n\n                client.PlaceSearch(args, (err, result) => {\n                    const response = result?.PlaceSearchResult;\n                    try {\n                        if (!response) {\n                            return reject(new Error(\"SOAP response is empty or undefined.\"));\n                        }\n                        resolve(response);\n                    } catch (parseErr) {\n                        reject(new Error(`Failed to parse SOAP response: ${parseErr.message}`));\n                    }\n                });\n            });\n        });\n    }\n\n    \/**\n     * &lt;summary>\n     * Checks if a SOAP response is valid by verifying that it exists and either has no Error object\n     * or the Error.TypeCode is not equal to '3'.\n     * &lt;\/summary>\n     * @param {Object} response - The raw response object to validate.\n     * @returns {boolean} True if the response is valid, false otherwise.\n     *\/\n    _isValid(response) {\n        return response &amp;&amp; (!response.Error || response.Error.TypeCode !== '3');\n    }\n}\n\nexport { PlaceSearchSoap };<\/pre>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":1814,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1827","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AGI - SOAP<\/title>\n<meta name=\"description\" content=\"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AGI - SOAP\" \/>\n<meta property=\"og:description\" content=\"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-08T17:48:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/\",\"name\":\"AGI - SOAP\",\"isPartOf\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#website\"},\"datePublished\":\"2022-11-08T00:18:44+00:00\",\"dateModified\":\"2025-10-08T17:48:07+00:00\",\"description\":\"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using\",\"breadcrumb\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DOTS Address Geocode &#8211; International\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"AGI &#8211; Code Snippets and Sample Code\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"AGI &#8211; SOAP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#website\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/\",\"name\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.serviceobjects.com\/docs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#organization\",\"name\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png\",\"contentUrl\":\"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png\",\"width\":2560,\"height\":1440,\"caption\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\"},\"image\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AGI - SOAP","description":"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/","og_locale":"en_US","og_type":"article","og_title":"AGI - SOAP","og_description":"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using","og_url":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/","og_site_name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","article_modified_time":"2025-10-08T17:48:07+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/","url":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/","name":"AGI - SOAP","isPartOf":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#website"},"datePublished":"2022-11-08T00:18:44+00:00","dateModified":"2025-10-08T17:48:07+00:00","description":"C#PythonNodeJS Address Geocode - International C# Code Snippet \ufeffusing address_geocode_international_dot_net.REST; using AGIService; using System; using","breadcrumb":{"@id":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/agi-soap\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.serviceobjects.com\/docs\/"},{"@type":"ListItem","position":2,"name":"DOTS Address Geocode &#8211; International","item":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/"},{"@type":"ListItem","position":3,"name":"AGI &#8211; Code Snippets and Sample Code","item":"https:\/\/www.serviceobjects.com\/docs\/dots-address-geocode-international\/agi-code-snippets-and-sample-code\/"},{"@type":"ListItem","position":4,"name":"AGI &#8211; SOAP"}]},{"@type":"WebSite","@id":"https:\/\/www.serviceobjects.com\/docs\/#website","url":"https:\/\/www.serviceobjects.com\/docs\/","name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","description":"","publisher":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.serviceobjects.com\/docs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.serviceobjects.com\/docs\/#organization","name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","url":"https:\/\/www.serviceobjects.com\/docs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/","url":"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png","contentUrl":"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png","width":2560,"height":1440,"caption":"Service Objects | Contact, Phone, Email Verification | Data Quality Services"},"image":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/1827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/comments?post=1827"}],"version-history":[{"count":8,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/1827\/revisions"}],"predecessor-version":[{"id":12381,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/1827\/revisions\/12381"}],"up":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/1814"}],"wp:attachment":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/media?parent=1827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}