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.

Serveur MCP hébergé

npx add-mcp 'https://mkts.io/api/mcp'

S’installe dans Claude Code, Codex, Cursor et plus

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.

Manage keys →

API reference

Explore every endpoint.

Expand an operation for parameters, request body, and a copyable cURL example.

Download OpenAPI →

⌕ 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&sector=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.

Connect to Claude ↗

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.

](https://mkts.io/api/mcp)[

Agent Skill

/SKILL.md

↗

The complete OpenClaw and agent integration guide.

](https://mkts.io/SKILL.md)[

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.

](https://mkts.io/llms.txt)

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.

AccessSnapshotLiveBest for
No API key20 / hour20 / hourTesting and lightweight public data
Free API key100 / hour30 / hourAgents, prototypes, and personal tools
Paid API key1,000 / hour100 / hourProduction applications

Ready to move beyond keyless?

Create or manage keys without changing your integration.

Manage API keys

mkts API · v1