I see platforms like zerion io able to get nft data from only a public ethereum address. But how are they doing this? I dont see a clear path of getting this type of data from etherscan as an nft purchase from a place like OpenSea looks like an outgoing transaction only in the main page. If an nft is purchased from OpenSea it has the from address sending the eth out, and it going to opensea, but no transaction coming in with the nft transfer. But looking at Zerion.io you can add your public eth address and they can get the nfts a address owns and display them.
Can you get this data somehow with etherscan and web3?