The more granular or quickly you want the data, the more it will cost. In addition to paying for the initial data, you are not allowed to redistribute the data, in real-time or historically, with out paying royalties to the original data providers per user.
This creates a complicated accountanting system for data delivered to end users of the data.
Aggregate market data vendors (Factset, Bloomberg, Activ) pay for the initial data and then pay per user/query/etc...
Some data becomes available for unlimited distribution based on licensing, usually this data is time delayed and not allowed to be queried for historical analysis. You'll often see things on Yahoo or Google Finance that say "market data delayed by 10 min".
One of the most common sources of this delayed data is yahoo and there are open APIs for querying it. Usually in Python or a statistically language like R.
Interactive Brokers has an API you can add to your brokerage account for programmatic access across multiple exchanges. Which provides market data and order entry.
If I miss understood you, and you are interested in a open API standard for financial data there are several FIX, ITCH and OUCH are some. But they are almost always forked per exchange and sometimes even per product.
tl;dr It's not the API or infrastructure that costs, it's the data itself.
The final 2 are how they make their money.
Their site says:
We have one shared aspiration: democratizing access to institution-grade financial analytics. Alpha Vantage is one of our deliverables towards this purpose. It provides free JSON APIs for stock market data, augmented by a comprehensive set of technical indicators.
I work on the team at the Investors Exchange that built this API. We think financial data should be more accessible.
---> • Historical data is only available for prior months, starting with January 2014
Hopefully they will update this.
As of right now I have only found eTrade provides historical data, and you have to apply for that data.
Besides, nothing excites me more than looking through a bunch of third-party data provider websites that look like they were made in 2002, half of which don't even list their prices—but instead rely on sales teams to bilk the customer out of whatever they can pay.
Of course, that isn't to say you can't get your data directly from the exchange:
The only caveat is that you might need someone versed in Microsoft or Oracle enterprise licensing hell to actually decipher what's going on there.
And I've only talked about static data. If you want to actually trade, it gets much, much, harder.
CSV is a grand solution, one that has a hell of a lot less over head than any other "api" that many HN readers would normally see.
Ultimately it's due to that APIs used to generate wealth generally cost money.
this asymmetry would seem to skewer emh.
-- but then again ... checking the prices at "nasdaqtrader" the idea that we don't have access seems like the myth. $14 a month for Nasdaq issues ( I guess that means quite a lot of stocks ), is only slightly more than my Spotify. And if you don't have the money to pay $14 you probably don't have the money to make much of a dent in the market anyway!
so what's the reality here? is data you can actually trade on that affordable or is it not?
"NYSE Equities Membership provides broker-dealers the high-tech solutions needed to make rapid, automated, and anonymous executions. Industry-leading member services experts discover and improve prices, dampen volatility, and add liquidity. Membership brings access to opening and closing auctions for primaries, brand visibility and direct connectivity."
And that's a can of worms. What are they paying for by the time they receive it. What is the physical point of receiving data? Which exchange is the data received from? Central data clearing house of data?
Real time is a concept that doesn't exist in live data. How real-time is a concept.