Market data
Connect iTick to Excel, Sheets and AI
Real-time and historical quotes — stocks, forex, crypto, indices — queried with SQL and streamed into a sheet.
One connection, every surface
Where your iTick data can go
Connect iTick once and the same read-only connection feeds all of these — no second setup, no second copy of the data. 2 of 11 have a step-by-step guide.
iTick to Excel
Microsoft Excel · Excel add-in
Pull live iTick results straight into a worksheet and refresh them on demand — desktop Excel, Excel Online, Microsoft 365.
Read the guideiTick to Google Sheets
Sheets add-on
Run a saved iTick query from the sidebar and drop the rows into the sheet. Shared collaborators can refresh it themselves.
Read the guideiTick MCP server
Claude, Cursor and MCP clients
Give an AI assistant read-only access to iTick with the schema it needs to write correct SQL — no credentials in the chat.
How MCP works no iTick walkthrough written yetiTick REST API
HTTP endpoint
Publish a iTick query as an authenticated JSON endpoint any application can call, with an OpenAPI 3.1 spec and ready-made Postman, Insomnia and Hoppscotch collections. No database port is opened.
How REST API works no iTick walkthrough written yetiTick to Airtable
Automation platform
Sync iTick rows into an Airtable base on a schedule, or fetch them inside an Airtable automation script.
How Airtable works no iTick walkthrough written yetiTick to Baserow
Automation platform
Feed a Baserow table from iTick over the REST endpoint — self-hosted or Baserow cloud.
How Baserow works no iTick walkthrough written yetiTick to SeaTable
Automation platform
Keep a SeaTable base current with iTick data without exporting a file or exposing the database.
How SeaTable works no iTick walkthrough written yetiTick to Smartsheet
Automation platform
Push iTick results into a Smartsheet grid so plans and reports read from the source system, not last week's export.
How Smartsheet works no iTick walkthrough written yetiTick to Anvil
Anvil Works · App platform
Back an Anvil Python app with iTick through the REST endpoint instead of embedding database credentials in the app.
How Anvil works no iTick walkthrough written yetiTick to Power BI
Power Query M
Paste the generated Power Query M into the Power BI Advanced Editor and the report reads live iTick results over HTTPS — no ODBC driver, no database port opened.
How Power BI works no iTick walkthrough written yetiTick alerts and reports
Slack · Discord · Email · Webhook
Put a iTick query on a schedule and have the rows delivered to Slack, Discord, email or a signed webhook — or hold the message until a row count, threshold or percentage change crosses the line you set.
How alerts and reports work no iTick walkthrough written yetHow it works
5 steps, no inbound firewall change
Get an iTick API key. The free and paid tiers use different endpoints, and the right one is chosen for you from the key.
Install the Network Agent and paste the key. It stays there; iTick only ever hears from your own network.
Build a watchlist — the symbols and asset types you actually follow. That is what gets synced, rather than the whole market.
Choose which of the 8 tables to sync and how often. Live quotes, daily prices and company overview are on by default.
Write ordinary SQL against itick.quote_live, itick.prices_daily and the rest — and join it to the positions in your own database.
Feature deep-dive
What iTick gives you
A price feed is only useful next to what you hold
Most market-data tools give you a chart. The reason this one is SQL is that the interesting question always involves a second table that is not theirs.
- Quotes join to the positions in your own database or the client list in your CRM, in a single statement, so a valuation is one query rather than an export and a spreadsheet.
- Six asset types share the same tables — stocks, crypto, forex, indices, futures and funds — with the type as a column, so a mixed portfolio is one query rather than six.
- History is real history: daily bars, hourly, five-minute, one-minute and trade-by-trade ticks, each in its own table with proper types.
The 8 tables
- Now — quote_live, depth.
- Bars — prices_daily, kline_1h, kline_5m, kline_1m.
- Detail — tick_history.
- Reference — company_overview.
- Every price is a real double and every volume a real integer. Nothing arrives as a string you have to cast.
Live means live
Two of these tables refresh as you read them, and one of them can stream.
- quote_live and depth are checked against iTick when a query touches them, with a thirty-second freshness window — so a valuation prices against a quote fetched seconds ago rather than at the last sync.
- An optional WebSocket pushes quotes into the same table as they move, and a row records whether it arrived by stream or by request.
- The agent reads your plan from iTick on connect and paces itself to it, so a free key is not throttled into uselessness by an interval meant for a paid one.
- What your tier allows differs — the number of streamed symbols, and whether one-minute bars and order-book depth are available at all. That is iTick's pricing, and it is detected rather than guessed at.
Shared by every API connector
How every API connector works
- Your account becomes tables — endpoints are mapped to typed SQL tables with primary keys and indexes, so you write SELECT, JOIN and GROUP BY instead of paging through JSON.
- You choose what syncs, and how often — each table has its own interval, or none at all. Where the vendor's API supports it, only records that changed since the last run are fetched.
- The copy is yours — it lives in an AES-256-GCM encrypted DuckDB file next to the agent, on your machine. Not in our cloud.
- The vendor only ever hears from you — the agent calls the API directly from your own network, so your token is not needed by Query Streams to answer a query.
Good to know
- It is a synced copy, not a live proxy — a query reads what has already been fetched, so it returns at SQL speed and never spends your API rate limit. Selected tables can additionally refresh a stale row as you read it.
- Rate limits are respected for you — each connector paces itself well inside the vendor's published limits, so a report cannot get your account throttled for everything else that uses it.
- Nothing is thrown away — fields the table does not name are kept in a raw_data JSON column you can still query.
- Join it to your databases — an API table and a SQL Server table in the same statement is an ordinary query here, not an integration project.
Cross-source SQL
Join iTick to the rest of your data
A price feed is only useful next to what you hold. The quote is iTick’s, the position is your own database’s and the client it belongs to is the CRM’s — and a valuation needs all three at once. Each source runs only the part it can, streams the result back, and the join happens centrally — the sources never talk to each other and nothing is copied anywhere.
3 connections · 3 agents
One statement
-- live prices from iTick, the position from your database, the client from HubSpot
SELECT h.name, SUM(p.shares * q.price) AS market_value
FROM market_data.itick.quote_live1 q
JOIN pg_crm.public.positions2 p ON p.symbol = q.symbol
JOIN crm_api.hubspot.companies3 h ON h.domain = p.client_domain
GROUP BY h.name
ORDER BY market_value DESC;
The three parts are connection, schema and table — and the connection name is whatever you called it. Illustrative columns; your tables will be your tables. quote_live is one of the two iTick tables that can refresh as you read it, so a valuation run on a live connection prices against a quote fetched seconds ago rather than at the last sync. Read-only applies to every piece: SELECT, WITH and EXPLAIN only, with a ceiling on how much any one source may hand over for a single query. How federated queries work
Connection details
What iTick needs
- Authentication
- An iTick API key, held on the agent. Free and paid keys use different endpoints, selected for you
- Reached over
- HTTPS from your network to iTick, plus an optional outbound WebSocket. Nothing inbound
- Schema
- itick — so itick.quote_live, itick.prices_daily
- Tables
- 8. quote_live, prices_daily, kline_1h, kline_5m, kline_1m, tick_history, depth, company_overview
- Asset types
- Stocks, crypto, forex, indices, futures and funds, with the type as a column
- Watchlist
- You choose the symbols. Only those are synced
- Live refresh
- quote_live and depth, with a 30-second freshness window
- Streaming
- Optional WebSocket into the same tables, with the source recorded per row. Symbol count depends on your iTick plan
- Local copy
- An AES-256-GCM encrypted DuckDB file beside the agent, on your machine
Read-only is structural. Every request this connector makes is a GET — there is no order, no trade and no position call in it. It reads a market, it does not touch one.
One-minute bars and order-book depth are premium features at iTick's end. The connector detects what your key is entitled to rather than failing obscurely on a table you cannot have.
Vendor documentation: itick.org
FAQ
Questions about iTick
Which tools can read iTick data through Query Streams?
All of them, from one connection: Excel, Google Sheets, MCP, REST API, Airtable, Baserow, SeaTable, Smartsheet, Anvil, Power BI, scheduled alerts and reports. Connect the account once and every surface reads the same read-only connection — there is no per-tool setup and no second copy of the data.
Do I have to open a firewall port to my iTick account?
No. The Query Streams Network Agent runs inside your network and opens a single outbound encrypted connection. Nothing listens for inbound traffic, no VPN is required, and the account keeps its existing firewall rules.
Can Query Streams change data in iTick?
No. The agent enforces read-only at the point of execution — one statement at a time, SELECT and friends only. Credentials stay on the agent and are never sent to Query Streams.
What does Query Streams need to connect to iTick?
A reachable host, a role and its password — the agent carries the driver, so nothing is installed on the account. Authentication: An iTick API key, held on the agent. Free and paid keys use different endpoints, selected for you. Reached over: HTTPS from your network to iTick, plus an optional outbound WebSocket. Nothing inbound. Schema: itick — so itick.quote_live, itick.prices_daily. Tables: 8. quote_live, prices_daily, kline_1h, kline_5m, kline_1m, tick_history, depth, company_overview.
Can I join iTick to another database in the same query?
Yes — that is a federated query. One statement can reference iTick and your other connections at once, written as connection.schema.table. Each source runs only the part it can and streams the result back; the join happens centrally, so the sources never connect to each other and nothing is copied or scheduled. Read-only applies to every piece — SELECT, WITH and EXPLAIN only — and there is a ceiling on how much any one source may hand over for a single query. Federated queries are a plan feature; the federated queries page carries the current source and size limits.
Put iTick where the work happens
Install the agent, point it at your account, and pick a destination.
Read-only Outbound only Credentials stay on the agent

