Intrinio offers hundreds of data feeds in the Marketplace. Developers can access these feeds via API for use in their applications. Those APIs come in two different varieties- a REST API and a WebSocket API.


Most devs are familiar with REST APIs. The US Fundamentals & Stock Prices data feed is a good example. You can request data via a URL, like this:

That call returns Apple's intra-day stock price. Each time you make the request, you'll get the most recent stock price. This is sometimes called a "Snap Quote". REST API data feeds have daily API call limits, so each time you request a stock price, you add 1 to your total API calls for the day.

Its easy to see how, if you request the stock price many times throughout the day for many stocks, you could quickly use up your allotment of API calls (plans range from 1,000-100,000 daily calls). The REST API isn't really designed for intra-day data; things like financial statements only update quarterly so there is no need to pull them many times a day.

Additionally, making many API calls for a stock price is inefficient since the stock price may not update between calls, or it might update faster than you make calls and your data will be stale.

WebSocket API Limits

This is where WebSocket APIs come in. Rather than requesting data, WebSockets allow you to connect to a "stream" of data. Your application "listens" to a particular channel and each time the data updates, the latest data is pushed to you. This makes a lot of sense for stock prices: If the stock price didn't change no data is sent but if the stock price changes, the data is sent immediately. 

When connecting to a WebSocket, there is no "daily API call limit." Each stock that you stream the price for counts as a connection and as long as you keep the connection open in your code, you can stream the stock price all day without limit.

WebSocket plans do limit the number of concurrent connections that can be open at the same time. If you stream the price for 10 stocks, that is 10 "concurrent" connections. 

WebSocket plans also have a limited number of "daily" connections. If you are listening to the stock price for AAPL, MSFT, and IBM, that is 3 daily connections. If you change out IBM for T, that would put your total daily connections at 4. 

You can change which stocks you are connected to. If you are listening to the stock price for MSFT, AAPL, and IBM, you could switch IBM out for T.


If you click on "Terms and Limits" under tab Pricing, you'll see specifications for each plan according to the data and use case. Similar to the example below:

This is a REST API, so you'll see a daily API call limit of 5,000 in the lowest plan. If you only need to update a stock price a few times an hour, that is fine. But if you update 100s of stocks every minute or more, you'll need to use a lot of your daily limit. That's not going to scale. 

Click on "Terms and Limits" on the IEX plans and you'll also see specifications for each plan:

This is a WebSocket, so in each plan you have a concurrent connection limit, meaning you can stream a certain number of stocks at once and change which ones you stream up to 100,000 times a day. The higher the plan, the higher the concurrent connections. 

The NASDAQ Basic data feed is a WebSocket API as well. It has plans that allow from 50 to 3,500 concurrent connections, depending on the add-on you choose. 

Here, "Ticker Limit" means the same thing as "Concurrent Connections." For QUODD real time WebSocket data feeds, you can add on more tickers to increase the concurrent connection limit.

For all of the WebSocket connections, you can stream the real time price for each ticker without limit. You can find SDKs for REST and WebSocket APIs here.

Did this answer your question?