Thanks, I looked briefly at IEX. Seems like a good source of historical data (maybe real-time as well). One thing that caught my attention was their use of SSE - I typically see WebSockets-based APIs. I also noticed the free account gets 50K messages, which sounded like a lot, but it turned out it was just enough to set up one alert on the account - somewhat underwhelming, but I understand they'd like to convert the free accounts to paid users as fast as possible.
the best part about iex is that they give you milisecond historical data but on the other hand the data is only limited to their exchange so it clearly doesn't represent every exchange.