There is no explicit way to do this via SOAP. You could getLeadActivity or getLeadChanges to retrieve the Change Status in Progression activity. This will get you a list of IDs and the programs which they are members of, but this requires ETLing the whole list of activities for a given period of time, and correlating them to the programs and leads identified that way.
Thanks Kenny for the alternative approach. Unfortunately our activity volume is huge and would make the approach too inefficient.
We'll have to support the two api technologies. ugh