Pulling from several portals is where deduplication gets difficult, because the same property can appear with different IDs, slightly different addresses, and even different square footage. Normalizing the address and keeping a source-of-record field for each attribute saves a lot of cleanup later. I work with AllyHub, and our Zillow Scraper is one resource for permitted public-data research: https://allyhub.com/tools/zillow-scraper. Which field do you treat as authoritative when two portals disagree?