The Syrian rebel al Baraa brigade seized the Iranians in August, saying they were members of Iran's elite Islamic Revolutionary Guard Corps sent to fight for Syrian President Bashar al Assad.
The Islamic republic, an ally of Mr Assad, denied this, saying they were Shi'ite Muslim pilgrims visiting shrines, and it asked Turkey and Qatar to help secure their release.
Bulent Yildirim, head of aid agency IHH, which helped broker the deal, said: "The 48 Iranians have been released and are being taken to Damascus, accompanied by Iranian and Syrian officials."
Mr Yildirim said the release of 2130 civilian prisoners, most of them Syrian but also including Turks and other foreign citizens, had begun in return.
Two state-run Iranian TV channels reported 48 Iranians were freed in a swap.
There was no confirmation from the Syrian government, which has periodically freed hundreds of prisoners over the 21-month-old conflict in apparent concessions.
However, Damascus has always stressed such prisoners "do not have blood on their hands".
The release announced yesterday would be the first time that non-Syrians were freed in a swap.