There are a few ways to do this, but I'll describe the most straight forward one. Find an archival node from http://www.peerexplorer.com/api_openapi_archival.
If you pick any one of the ip addresses in that list you can then query that node to verify if it is a archival node by calling its getBlockchainStatus function, for example: http://22.214.171.124:7876/nxt?requestType=getBlockchainStatus
In the reply you will se a list of services, where 'PRUNABLE' is the one you are after. Any node that has PRUNABLE in their services list is an archival node.
On a side note, you don't need to query a archival node in order to get the actual data. Any node with open API will do, as long as you specify the retrieve=true parameter which is added to most relevant API functions. By doing that on a non archival node, it will locate the data from an archival node and return it in the query. With a bit higher latency of course, since there are multiple network calls that needs to be done.