mkts Market Data
Read-only market data for stocks, ETFs, crypto, commodities and forex: quotes, fundamentals, SEC filings, screening and a point-in-time archive for backtests.
Hosted MCP Server
npx add-mcp 'https://mkts.io/api/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
REST API · v1No key needed to start
Market data built for products and agents.
Explore normalized market data, research, and user workflows through one predictable API. Public data works keyless; add a key for higher snapshot limits and private resources.
Base URL https://mkts.io/api/v1 Copy
01
Try it keyless
Public market and research endpoints work immediately.
02
Add a key when needed
Keys unlock private workflows and higher snapshot limits.
03
Keep your current key
Existing mk_live_… keys need no migration.
curl https://mkts.io/api/v1/market
[
Working examples on GitHub
Python and TypeScript quick-starts, a point-in-time portfolio backtest, an SEC filings digest, ETag polling, and MCP setup for Claude, Cursor and VS Code. No dependencies; every example runs keyless.
github.com/mkts-io/mkts-examples
↗](https://github.com/mkts-io/mkts-examples)
Authentication
Use a key only when it adds value.
API keys are optional for public market data. A valid key applies authenticated-tier limits and identifies the owner of private portfolio, watchlist, journal, and AI resources.
ModeUse it forBehavior
No keyPublic readsMarket data and research at keyless limits.
Optional keyPublic readsSame endpoints, authenticated tier limits.
Required keyPrivate + AIPortfolio, watchlists, journal, and POST /ask.
curl -H "X-API-Key: $MKTS_API_KEY" \
https://mkts.io/api/v1/brief
curl -H "Authorization: Bearer $MKTS_API_KEY" \
https://mkts.io/api/v1/brief
Already using the OpenClaw skill? Your stored key and both authentication formats continue to work.
API reference
Explore every endpoint.
Expand an operation for parameters, request body, and a copyable cURL example.
⌕ All No key Key required Live data
System & access
3
GET
/ping
Check API status
No key
⌄
Lightweight health check with server time and service status.
curl \
"https://mkts.io/api/v1/ping"
GET
/openapi.json
Download the OpenAPI schema
No key
⌄
Machine-readable OpenAPI description of the v1 REST surface.
curl \
"https://mkts.io/api/v1/openapi.json"
POST
/register
Create a free agent API key
No key
⌄
Creates a free API key for an agent or application. The key is returned once.
JSON body
{
"email": "you@example.com",
"name": "my-agent"
}
curl -X POST \
-H "Content-Type: application/json" \
-d '{ "email": "you@example.com", "name": "my-agent"}' \
"https://mkts.io/api/v1/register"
Market data
9
GET
/market
Market overview
Key optional
⌄
Global market overview and broad market context.
curl \
"https://mkts.io/api/v1/market"
GET
/assets
Browse the asset universe
Key optional
⌄
Filter and search the normalized multi-asset universe.
Parameters
type sector platform marketType search
curl \
"https://mkts.io/api/v1/assets?type=stock§or=Technology"
GET
/asset/{symbol}
Get an asset snapshot
Key optional
⌄
Normalized price, change, market cap, volume, identity, and classification for one symbol.
Parameters
symbol (path)
curl \
"https://mkts.io/api/v1/asset/AAPL"
GET
/asset/{symbol}/live
Get a live quote
LiveKey optional
⌄
Fresh quote with market state and extended-hours fields.
Parameters
symbol (path) type
curl \
"https://mkts.io/api/v1/asset/AAPL/live"
GET
/asset/{symbol}/history
Get price history
Key optional
⌄
Historical OHLCV series for charts and analysis.
Parameters
symbol (path) range
curl \
"https://mkts.io/api/v1/asset/AAPL/history?range=3M"
GET
/movers
Get market movers
Key optional
⌄
Top gainers and losers, optionally filtered by direction and asset type.
Parameters
direction type limit
curl \
"https://mkts.io/api/v1/movers?direction=gainers&limit=10"
GET
/trending
Get market highlights
Key optional
⌄
Most active stocks, top gainers, and top losers.
Parameters
section count
curl \
"https://mkts.io/api/v1/trending?section=trending&count=10"
GET
/sectors
Get sector performance
Key optional
⌄
Sector-level market performance and composition.
curl \
"https://mkts.io/api/v1/sectors"
GET
/macro
Get a macro snapshot
Key optional
⌄
BTC, ETH, SPY, QQQ, gold, oil, VIX, DXY, and the 10-year yield in one call.
curl \
"https://mkts.io/api/v1/macro"
Point-in-time archive
5
GET
/asset/{symbol}/as-of
What we recorded on a date
Key optional
⌄
The archived observation for a symbol on a given date, or the most recent one before it if the market was shut. Revisions recorded after that date are excluded, so a backtest cannot see hindsight.
Parameters
symbol (path) date
curl \
"https://mkts.io/api/v1/asset/AAPL/as-of?date=2026-07-15"
GET
/archive/as-of
Many symbols, one past date
Key optional
⌄
The same point-in-time lookup for up to 100 symbols at once. unresolvedSymbols and symbolsWithoutObservation are returned separately, so a short answer is never silently short.
Parameters
symbols date
curl \
"https://mkts.io/api/v1/archive/as-of?symbols=AAPL,MSFT,BTC&date=2026-07-15"
GET
/asset/{symbol}/series
Archived closes over a range
Key optional
⌄
Daily closes for one symbol across a date range, in a single call. Asking /as-of for 90 separate dates costs 90 requests; this costs one. Each row carries observedAt and isRevision, so a later restatement stays visible.
Parameters
symbol (path) from to
curl \
"https://mkts.io/api/v1/asset/AAPL/series?from=2026-07-01&to=2026-07-31"
GET
/archive/series
Portfolio backtest in one call
Key optional
⌄
Daily closes for many symbols across a date range — the N-symbols-by-M-days shape a portfolio backtest needs. Limits are 100 symbols, 366 days, and symbols x days up to 10,000.
Parameters
symbols from to
curl \
"https://mkts.io/api/v1/archive/series?symbols=AAPL,MSFT,BTC&from=2026-07-01&to=2026-07-31"
GET
/asset/{symbol}/intraday
Observations within a day
Key optional
⌄
Every observation made inside a window, not just the close — roughly one per 15 minutes for recent months. Check observedIntervalMinutes, largestGapMinutes and coveragePercent before treating it as fixed bars: cadence is not uniform across the archive.
Parameters
symbol (path) from to interval
curl \
"https://mkts.io/api/v1/asset/BTC/intraday?from=2026-08-08&to=2026-08-09&interval=1h"
Research & discovery
11
GET
/screen
Screen market snapshots
Key optional
⌄
Filter assets by price, change, volume, market cap, type, and sector.
Parameters
type sector minPrice maxPrice minChange maxChange minVolume maxVolume minMarketCap maxMarketCap
curl \
"https://mkts.io/api/v1/screen?type=stock&minMarketCap=10000000000"
GET
/compare
Compare assets
Key optional
⌄
Compare normalized market data for multiple symbols.
Parameters
symbols
curl \
"https://mkts.io/api/v1/compare?symbols=AAPL,MSFT,NVDA"
GET
/brief
Get a market brief
Key optional
⌄
Compact market brief suitable for dashboards, agents, and morning updates.
curl \
"https://mkts.io/api/v1/brief"
GET
/earnings
Get the earnings calendar
Key optional
⌄
Upcoming and recent earnings with estimates, actuals, and surprise history.
Parameters
symbols week
curl \
"https://mkts.io/api/v1/earnings?symbols=AAPL,MSFT"
GET
/news
Get financial news
Key optional
⌄
Aggregated financial news filtered by category or asset symbol.
Parameters
category symbol limit
curl \
"https://mkts.io/api/v1/news?symbol=AAPL&limit=10"
GET
/asset/{symbol}/details
Get deep asset details
LiveKey optional
⌄
Company profile, analyst data, holders, insider activity, SEC filings, and ETF holdings.
Parameters
symbol (path)
curl \
"https://mkts.io/api/v1/asset/MSFT/details"
GET
/asset/{symbol}/filings
Get company filings
LiveKey optional
⌄
Recent SEC filings for one stock or ETF.
Parameters
symbol (path) type limit
curl \
"https://mkts.io/api/v1/asset/AAPL/filings?type=10-K&limit=10"
GET
/filings/search
Search filings
LiveKey optional
⌄
Search filings across a bounded stock or ETF universe.
Parameters
type symbols sector search filingType title dateFrom dateTo limit universe
curl \
"https://mkts.io/api/v1/filings/search?filingType=10-K&limit=10"
GET
/asset/{symbol}/fundamentals
Get financial statements
LiveKey optional
⌄
Historical income statement, balance sheet, and cash-flow time series.
Parameters
symbol (path) type module
curl \
"https://mkts.io/api/v1/asset/AAPL/fundamentals?type=annual&module=all"
GET
/asset/{symbol}/options
Get an options chain
LiveKey optional
⌄
Options chain with expirations, implied volatility, volume, and open interest.
Parameters
symbol (path) expiration
curl \
"https://mkts.io/api/v1/asset/AAPL/options"
GET
/fundamentals/screen
Screen fundamentals
LiveKey optional
⌄
Screen valuation, growth, margins, leverage, cash flow, and analyst targets.
Parameters
type sector search symbols sort dir limit universe min/max metric filters
curl \
"https://mkts.io/api/v1/fundamentals/screen?sector=Technology&minGrossMargin=0.5&limit=10"
Portfolio & workflows
15
GET
/portfolio
Get portfolio holdings
Key required
⌄
Holdings with allocation, cost basis, P&L, and daily change.
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/portfolio"
POST
/portfolio
Add a holding
Key required
⌄
Add a position to the API-key owner’s portfolio.
JSON body
{
"symbol": "AAPL",
"name": "Apple Inc.",
"assetType": "stock",
"quantity": 10,
"avgCostBasis": 180
}
curl -X POST \
-H "X-API-Key: $MKTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "symbol": "AAPL", "name": "Apple Inc.", "assetType": "stock", "quantity": 10, "avgCostBasis": 180}' \
"https://mkts.io/api/v1/portfolio"
DELETE
/portfolio
Clear a portfolio
Key required
⌄
Remove every holding owned by the authenticated API key.
curl -X DELETE \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/portfolio"
DELETE
/portfolio/{holdingId}
Delete a holding
Key required
⌄
Remove one holding by its ID.
Parameters
holdingId (path)
curl -X DELETE \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/portfolio/HOLDING_ID"
GET
/portfolio/performance
Get portfolio performance
Key required
⌄
Portfolio performance series with optional benchmark overlays.
Parameters
range benchmarks
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/portfolio/performance?range=YTD&benchmarks=SPY,QQQ"
GET
/portfolio/card
Generate a portfolio card
Key required
⌄
Generate a shareable 1200×630 PNG with portfolio value, performance, and top holdings.
Parameters
range
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/portfolio/card?range=YTD"
GET
/watchlist
List watchlists
Key required
⌄
Return every watchlist owned by the authenticated API key.
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/watchlist"
POST
/watchlist
Create a watchlist
Key required
⌄
Create a named watchlist with optional starting symbols.
JSON body
{
"name": "AI infrastructure",
"symbols": ["NVDA", "MSFT"]
}
curl -X POST \
-H "X-API-Key: $MKTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "AI infrastructure", "symbols": ["NVDA", "MSFT"]}' \
"https://mkts.io/api/v1/watchlist"
DELETE
/watchlist
Clear all watchlists
Key required
⌄
Delete every watchlist owned by the authenticated API key.
curl -X DELETE \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/watchlist"
GET
/watchlist/{watchlistId}
Get a watchlist
Key required
⌄
Return one watchlist by ID.
Parameters
watchlistId (path)
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
PATCH
/watchlist/{watchlistId}
Update a watchlist
Key required
⌄
Rename a watchlist or add and remove symbols.
Parameters
watchlistId (path)
JSON body
{
"name": "Core tech",
"addSymbols": ["AAPL"],
"removeSymbols": ["MSFT"]
}
curl -X PATCH \
-H "X-API-Key: $MKTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Core tech", "addSymbols": ["AAPL"], "removeSymbols": ["MSFT"]}' \
"https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
DELETE
/watchlist/{watchlistId}
Delete a watchlist
Key required
⌄
Delete one watchlist by ID.
Parameters
watchlistId (path)
curl -X DELETE \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/watchlist/WATCHLIST_ID"
GET
/journal
List journal entries
Key required
⌄
Return the authenticated API key owner’s research journal.
curl \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/journal"
POST
/journal
Create a journal entry
Key required
⌄
Create a tagged research or trading journal entry.
JSON body
{
"title": "AAPL thesis",
"content": "Watching services growth.",
"symbol": "AAPL",
"tags": ["research"]
}
curl -X POST \
-H "X-API-Key: $MKTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "AAPL thesis", "content": "Watching services growth.", "symbol": "AAPL", "tags": ["research"]}' \
"https://mkts.io/api/v1/journal"
DELETE
/journal/{entryId}
Delete a journal entry
Key required
⌄
Delete one journal entry by ID.
Parameters
entryId (path)
curl -X DELETE \
-H "X-API-Key: $MKTS_API_KEY" \
"https://mkts.io/api/v1/journal/ENTRY_ID"
AI
1
POST
/ask
Ask about the market
Key required
⌄
Parse a natural-language market question and route it to structured market data.
JSON body
{
"q": "Which technology stocks are down more than 5%?"
}
curl -X POST \
-H "X-API-Key: $MKTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "q": "Which technology stocks are down more than 5%?"}' \
"https://mkts.io/api/v1/ask"
Agent integrations
One data layer for every agent.
Use the hosted read-only MCP server with Claude, OpenAI, or another Streamable HTTP client. The existing skill and manifests remain available, and OpenClaw users can keep the same key setup.
In Claude's connector settings, choose Add custom connector, name it mkts, and paste the endpoint below. No account or key needed. Works in claude.ai and the desktop app.
Remote MCP endpoint
https://mkts.io/api/mcp Copy
Keyless calls work at public limits. Send your existing key as a Bearer token or X-API-Key for authenticated limits.
claude mcp add --transport http mkts https://mkts.io/api/mcp
{
"mcpServers": {
"mkts": {
"url": "https://mkts.io/api/mcp"
}
}
}
Claude (claude.ai and desktop), VS Code and example prompts: mkts-examples/mcp
[
Remote MCP
/api/mcp
↗
A curated, read-only Streamable HTTP tool server for Claude, OpenAI, and other MCP clients.
Agent Skill
/SKILL.md
↗
The complete OpenClaw and agent integration guide.
OpenAPI
/openapi.json
↗
The machine-readable v1 API contract.
](https://mkts.io/api/v1/openapi.json)[
Agent Manifest
/agent.json
↗
Discovery metadata for agent-first clients.
](https://mkts.io/.well-known/agent.json)[
Plugin Manifest
/ai-plugin.json
↗
Plugin discovery metadata tied to OpenAPI.
](https://mkts.io/.well-known/ai-plugin.json)[
LLM Index
/llms.txt
↗
A lightweight index for assistants and crawlers.
Response contract
One predictable envelope.
JSON responses use success, data, and meta. The meta object carries freshness and rate-limit state.
200 Request succeeded
400 Invalid request or parameter
401 Missing or invalid required key
404 Resource was not found
429 Rate limit reached
500 Unexpected server error
{
"success": true,
"data": {
"symbol": "AAPL",
"price": 219.58,
"change24h": 0.91
},
"meta": {
"lastUpdated": 1773077284000,
"asOf": "2026-03-09T19:48:04.000Z",
"dataAgeMs": 4210,
"freshness": "near-real-time",
"cacheStatus": "hit",
"sources": ["equities-provider"],
"requestId": "2fb89be8-1e19-4ab7-a481-9cf67b839935",
"requestsRemaining": 94,
"resetTime": 1773080400000
}
}
X-RateLimit-Limit Hourly limit for the current access tier.
X-RateLimit-Remaining Requests left in the active window.
X-RateLimit-Reset Window reset time as a Unix timestamp in milliseconds.
X-Request-Id Unique identifier for tracing a response through support and telemetry.
X-Data-As-Of ISO timestamp for the underlying market-data observation.
X-Data-Age-Ms Age of the observation when the response was created.
X-Data-Freshness Live, near-real-time, delayed, cached, historical, or unknown.
X-Data-Sources Comma-separated upstream providers when known.
X-Cache-Status Normalized hit, miss, stored, bypass, or unknown state.
Retry-After Seconds until retry, returned with a 429 response.
X-Query-Cache Cache hit or miss on heavier research routes.
X-Query-Universe Effective bounded universe on fan-out searches.
Rate limits
Start small. Add capacity when you need it.
| Access | Snapshot | Live | Best for |
|---|---|---|---|
| No API key | 20 / hour | 20 / hour | Testing and lightweight public data |
| Free API key | 100 / hour | 30 / hour | Agents, prototypes, and personal tools |
| Paid API key | 1,000 / hour | 100 / hour | Production applications |
Ready to move beyond keyless?
Create or manage keys without changing your integration.
mkts API · v1