Half of the time I spend debugging is on figuring out what is going wrong with different MLSs.
Of course, there is a whole department devoted to keeping it clean and consistent, so I don't have to deal with issues that you do.
Now that you mention it, perhaps we should provide an API for MLS data access.
The protocol used by MLS servers is kind of standardized... expect not really. There's no single way, for example, to accomplish a full download of an initial dataset. Some MLSes let you order by id with an offset, so you can paginate properly. With others you must use date ranges - but you're assuming that a create or update timestamp is actually meaningful, and surprise - they are not. Some let you run multiple concurrent connections so you can increase data throughput, while others only permit one slow connection that makes it takes 6+ hours to download their entire database.
Finally: good luck figuring out when a record is flat out deleted. The MLS may have a separate table where deleted records are supposed to go, but that table is always empty. The MLS nukes data rows with no way for clients to detect the change other than by downloading the entire database from scratch to find the gaps. This requires running hours of queue jobs PER MLS every 24 hours. It's so ridiculously inefficient.
Yeah... fuck MLS. End rant.
They are absolutely terrible to work with.