If you want real time streaming, you can sign up for tdameritrade, and then request API access.
It's free, and decent quality.
The interface is RESTful, but the data is a funky binary format that's hard to parse without the documentation they make you sign an NDA to get.
http://www.tdameritrade.com/tradingtools/partnertools/api_de...