InvestSights API & MCP
AI-powered Indian equity research, programmatically. 58 read-only tools
(46 core + 3 forensic + 9 mutual-fund) — valuation, forensic accounting, full financials,
screening, news & sentiment, investor tracking, fund portfolios, and portfolio analytics.
Call them via REST from any HTTP client, or connect InvestSights as a
remote MCP server to an AI assistant (Grok, Cursor, Claude Desktop).
Same API key, two transports.
This is the Enterprise/B2B catalog. The free public connector at /mcp
exposes a curated pack of 26 public research tools. Whichever key you use,
GET /api/v2/mcp/tools is the authoritative list for it.
REST API
MCP Connector
58 Tools
ANALYTICS-only (SEBI-compliant)
Authentication
Every request authenticates with an X-API-Key header (key format
isk_…, provisioned by the InvestSights team). One key works on the REST endpoints
and on the MCP connection URL below, for the products and sub-modules it includes.
| | Value |
| Base URL | https://investsights.in/api/v2/mcp |
| Auth header | X-API-Key: isk_your_api_key |
| MCP connection URL | https://investsights.in/api/v2/mcp/{your_key}/mcp |
⚠
Keep your API key secret. Don't expose it in client-side code, public
repositories, or logs. Usage is tracked per key; it can be rotated or revoked on request.
What a key includes
A key is issued for one or more products, or for sub-modules inside a product.
GET /api/v2/mcp/tools (and tools/list on the MCP connection) lists exactly
the tools your key includes. A call to a tool outside them is refused. On the REST endpoint
POST /api/v2/mcp/call it returns 403. When the tool's product or
sub-module is not in the key, the message names them, for example Tool 'get_stock_financials'
is in Equity & Market / Financials & Fundamentals, which is not enabled for your API key.
When the product is included but the key also has its own list of tools and the tool is not on
it, the message is shorter, for example Tool 'get_dividends' not enabled for your API
key. On the MCP connection URL a
tools/call for such a tool returns JSON-RPC error -32601
(Tool not found), the same answer as for a tool that does not exist.
| Product | Sub-modules |
| Equity & Market | Valuation & Forensics · Financials & Fundamentals · Screening & Comparison · Market, Sectors & Technicals · News, Sentiment & Calendar · Investors · Portfolio Analytics · AI Research · Knowledge Graph |
| Mutual Funds | Portfolios & Holdings · Fund Screener · Flows & New Fund Offers |
| IPO | Calendar & Issue Detail · Subscription · Anchor Book · Allotment |
A key can also carry an expiry date, its own rate limits and a list of symbols. After the
expiry date every request returns 401.
Evaluation keys
To try the API, write to [email protected]
with who you are, what you are building, the products you need and the number of calls you
expect to make. An evaluation key normally runs for 14 days. It is for testing and building,
not for a service offered to customers. Use of any key is governed by the
API Terms.
All 58 tools are read-only / ANALYTICS-only: they return data, scores, and
analysis — never buy/sell/target recommendations.
REST API
Two endpoints. List the tools, then call any of them with a JSON body.
curl -s https://investsights.in/api/v2/mcp/tools \
-H "X-API-Key: isk_your_api_key"
Request body
{ "tool": "<tool_name>", "arguments": { ... } }
Example — forensic score for Reliance
curl -s -X POST https://investsights.in/api/v2/mcp/call \
-H "X-API-Key: isk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"tool":"get_forensic_score","arguments":{"symbol":"RELIANCE"}}'
Python
import requests
H = {"X-API-Key": "isk_your_api_key"}
# institutional valuation (DCF + relative + VaR)
r = requests.post("https://investsights.in/api/v2/mcp/call", headers=H,
json={"tool": "get_valuation", "arguments": {"symbol": "TCS"}})
print(r.json()["result"])
Response shape: {"success": true, "tool": "<name>", "result": { ... }}
Connect via MCP
ℹ
Connecting an AI assistant? Use the
public connector —
OAuth 2.1 with PKCE, Dynamic Client Registration supported, no API key to create and
nothing to pre-register. Paste this URL into Perplexity, Claude, ChatGPT, Grok or any MCP
client and sign in with your InvestSights account. Full setup guide, tool list and rate
limits:
investsights.in/mcp
https://investsights.in/api/v2/mcp-public/mcp
Broker / B2B connection
Business integrations use a scoped isk_ key instead of OAuth, for clients that
only accept a URL. The key sits in the connection URL path:
https://investsights.in/api/v2/mcp/{your_key}/mcp
- In your client: Settings → Connectors / MCP →
Add custom / remote server → paste the URL above. This path carries its own
credential, so there are no OAuth fields to fill in.
- The tools appear automatically — then ask in plain English
(e.g. "Get the forensic score and valuation for Reliance").
Examples
Portfolio analytics (stateless)
Pass a list of holdings — InvestSights returns aggregate value & P&L, value-weighted
quality and forensic scores, sector allocation, concentration (HHI + top-holding %), and
flagged holdings. Nothing is stored; the holdings are supplied per call.
import requests
H = {"X-API-Key": "isk_your_api_key"}
r = requests.post("https://investsights.in/api/v2/mcp/call", headers=H, json={
"tool": "analyze_portfolio",
"arguments": {"holdings": [
{"symbol": "RELIANCE", "quantity": 50, "avg_price": 1200},
{"symbol": "TCS", "quantity": 20, "avg_price": 3100},
{"symbol": "INFY", "quantity": 80, "avg_price": 1500}
]}})
print(r.json()["result"])
{
"total_value": 250120.0,
"total_pnl": -10152.5,
"total_pnl_pct": -3.9,
"weighted_quality_score": 68.4,
"weighted_piotroski": 6.1,
"sector_allocation_pct": {"Technology": 51.9, "Energy": 48.1},
"concentration": {"hhi": 0.367, "top_holding": "INFY", "top_holding_pct": 48.1},
"flagged_holdings": [],
"disclaimer": "Analytics only. Not investment advice."
}
Valuation & Forensics
| Tool | Arguments | Returns |
get_valuation | symbol* | Institutional valuation — multi-stage FCFF DCF (intrinsic value, WACC, bull/base/bear) + relative valuation + Monte-Carlo VaR |
get_dcf_valuation | symbol* | DCF intrinsic value + enterprise value vs current price |
get_estimates_report NEW | symbol* | 5-year revenue & EBITDA estimates — Base/Bear/Bull scenarios with probabilities, growth decomposition and falsifiable triggers |
get_forensic_score | symbol*, company_name | Piotroski F-Score, Beneish M-Score, Altman Z-Score + ratios + governance |
Financials & Fundamentals
| Tool | Arguments | Returns |
get_stock_financials | symbol*, include_statements | P/E, P/B, ROE, ROCE, D/E, growth, market cap, dividend yield, 52-week range |
get_financial_statements | symbol*, statement, period, limit | Income statement / balance sheet / cash flow — annual & quarterly, up to 10 years |
get_revenue_segments | symbol* | Revenue breakdown by product / service / geography |
get_shareholding | symbol* | Promoter / FII / DII / public holdings + top individual holders, QoQ changes |
get_analyst_consensus | symbol* | Buy/hold/sell counts, price targets, EPS & revenue estimates |
get_credit_rating NEW | symbol* | Credit rating history & outlook (issuer ratings, agency) |
get_esg_profile NEW | symbol* | BRSR/ESG profile from the latest annual report — Scope 1/2 emissions, safety (LTIFR, fatalities, POSH), diversity and energy/water intensity |
get_dividends NEW | symbol* | Dividend history — per-share dividend, payout ratio, yield over time |
get_pros_cons NEW | symbol* | AI-generated investment pros & cons (bull vs bear points) |
Screening & Comparison
| Tool | Arguments | Returns |
screen_stocks | query*, limit | Natural-language screener ("high ROE low debt IT sector") |
advanced_screen NEW | filters*, sort_by, sort_order, limit | Structured screener — 200+ numeric filters (operators: gte, lte, gt, lt, eq, in) |
list_screener_filters NEW | — | Available filter columns + strategy presets for advanced_screen |
guru_screen NEW | strategy_id | Legendary-investor strategies (Graham, Buffett, Lynch, Minervini, CAN SLIM…) |
get_stock_comparison | symbols* | Compare 2–5 stocks side by side: valuation, profitability, growth, technicals, and a side-by-side summary of relative strengths (score_ranking: relative ordering by InvestSights score — descriptive only) |
Market, Sectors & Technicals
| Tool | Arguments | Returns |
get_market_overview | include_movers, include_commodities | Nifty 50 / Sensex / Bank Nifty, market psychology, top gainers/losers, commodities |
get_market_digest | — | AI-generated daily market summary |
get_market_ideas NEW | — | AI-generated market ideas & themes (refreshed hourly) |
get_sector_rotation | sector | RRG quadrants (Leading / Weakening / Lagging / Improving) |
get_sector_heatmap | timeframe | Sector returns heatmap (1D–1Y) with top/bottom stocks |
get_sector_research NEW | sector | AI sector research — overview, cycle position, macro context |
get_niche_indices | slug | Thematic indices (EV, Fintech, Defence, Green Energy…) + constituents |
get_price_history | symbol*, days | OHLCV + 1W–5Y returns + 52-week high/low + P/E band |
get_technical_indicators | symbol* | RSI-14, MACD, Bollinger, Stochastic, ADX, OBV, VWAP, MFI, ATR, support/resistance |
get_fii_dii_activity NEW | — | Daily FII & DII net institutional flows (broad market) |
News, Sentiment & Calendar
| Tool | Arguments | Returns |
get_stock_news | symbol*, limit | Latest news articles + sentiment scores |
get_earnings_calendar | symbol, days_ahead | Upcoming earnings dates, recent results, economic events |
get_corporate_actions NEW | symbol, category | Dividends, splits, bonuses, buybacks, board meetings, results feed |
get_concall_analysis NEW | symbol | AI earnings-call analysis — key takeaways, management tone, guidance |
IPO
| Tool | Arguments | Returns |
list_ipos | query, status, board, sector, min_issue_size_cr, max_issue_size_cr, min_subscription_x, min_listing_gain_pct, max_listing_gain_pct, listed_within_days, positive_pat, limit | IPO calendar, lookup and screen: a one-line status per issue, dates, band, lot, size, live subscription, indicative GMP, listing gain; ranked name/symbol matches with query; screening filters apply to either |
get_ipo | ipo* | One issue in full, grounded per section: status line, facts (verified offer structure, issue price, anchor portion), timeline, three-year restated financials with EPS and interest coverage, valuation (P/E at both band ends, peer median, one-sentence comparison), top risks by category, governance (related parties, litigation, contingent liabilities, auditor, board, pledge), scorecard with key driver, memo from the prospectus read, itemised proceeds, subscription with timestamp, GMP with 1-day change, anchor, listing outcome (premium, 1D–3M returns, high/low since listing), documents. Nulls carry their reason |
get_ipo_subscription | ipo* | Live category-wise subscription (exchange bid feeds, NSE+BSE consolidated) with day-wise history |
get_ipo_anchor_book | ipo*, top_n | Anchor book from the exchange letter: amount, share of issue, MF share, split by investor type, largest investors, lock-in end dates |
get_ipo_allotment | ipo* | Allotment / refund / credit / listing dates (expected vs confirmed), registrar status portal, current stage |
get_ipo_analysis | ipo_name*, status | Alias of get_ipo kept for existing integrations |
Investors
| Tool | Arguments | Returns |
get_superstar_investors | symbol, limit | SuperStar investor portfolios — who's buying/selling (SEBI-filed holdings) |
get_investor_activity NEW | investor* | Investor profile + entry/exit/increase/decrease activity |
Portfolio Analytics
| Tool | Arguments | Returns |
analyze_portfolio NEW | holdings* [{symbol, quantity, avg_price?}], include_valuation | Aggregate value & P&L, value-weighted quality + forensic scores, sector allocation, concentration (HHI, top-holding %), flagged holdings, optional DCF over/under-valuation. Stateless — holdings passed per call. See Examples. |
AI Research (deep, ~30–60s)
| Tool | Arguments | Returns |
ai_stock_research | symbol*, query, depth | AI deep research note — performance, growth, risks |
ai_earnings_analysis | symbol*, company_name | AI quarterly earnings analysis |
ai_regulation_impact | regulation* | Impact of a SEBI/RBI regulation on affected sectors & stocks |
Knowledge Graph
| Tool | Arguments | Returns |
graph_rag_query | query*, symbols, top_k | Grounded NL financial Q&A — cited from the InvestSights database (no hallucination) |
graph_intel | query*, max_hops | Multi-hop relationship queries (promoters, sectors, company links) |
Optional Forensic Tools optional · enabled on investsights.in
Three forensic-relationship tools gated by a deployment flag. They are not part
of the 46 core tools above, but they are switched on for investsights.in
Enterprise keys (part of the 58-tool catalog). They are not included in the free public
connector pack. (The optional mutual-fund tools further down are in the public pack.)
Check GET /api/v2/mcp/tools for the tools your own key actually returns — that
response is the authoritative list for your deployment.
| Tool | Purpose | Arguments | Returns |
get_control_chain |
Beneficial ownership / control chain for a company, or the top beneficial owners across the market. |
symbol — optional; omit for a market-wide ranking |
source, tool, template_id, data (array of ownership rows). Coverage/diagnostic keys such as status, layer, entity and global_count appear when applicable. |
get_governance_events |
Governance event timeline: board changes, auditor changes, credit-rating actions, takeover disclosures and shareholder meetings. |
symbol — optional (per company); event_type — optional, one of BOARD_CHANGE, AUDITOR_CHANGE, CREDIT_RATING, TAKEOVER_DISCLOSURE, SHAREHOLDER_MEETING |
source, tool, template_id, data (array of event rows). |
get_interlocking_boards |
Interlocking directorates. With a symbol: that company's directors and the other boards they also sit on. Without: market-wide directors sitting on multiple boards. |
symbol — optional; omit for market-wide interlocks |
source, tool, template_id, data (rows carrying director, board count, other boards, and a confidence tag). |
ℹ
Availability. If these tools are not enabled for your deployment they simply do
not appear in GET /api/v2/mcp/tools, and calling them returns a not-found error.
They are absent by default rather than degraded.
⚠
Read these as leads, not findings. Relationship data is derived from public
filings and disclosures and is descriptive: a shared director, a chain of ownership or
a rating action is not itself evidence of wrongdoing. Director identity is matched by
name only (no DIN), so distinct people sharing a name may be merged and one
person spelled two ways may be split — hence the confidence tag. Graph coverage is incomplete
and absence of a relationship is not proof it does not exist. ANALYTICS-only: these tools
return data, never investment advice or an accusation.
Optional Mutual Fund Tools optional · enabled on investsights.in
Nine mutual-fund tools built on monthly portfolio disclosures (AMC factsheets) for ~14,000
schemes and ~2,200 distinct portfolios. They are gated by a deployment flag and are
not part of the 46 core tools above, but they are switched on
for investsights.in keys (part of the 58-tool catalog) and are included in the free public
connector pack. All outputs are
descriptive (ANALYTICS mode): rankings state the definition they used and every number is a
row from the latest factsheet month. Fund references accept an AMFI scheme code, an ISIN, or a
name ("parag parikh flexi cap"). Every result carries the same meta block —
logic_version (semver of the definitions behind the numbers; bumped whenever a
figure could change for the same factsheet month), data_source,
holdings_as_of, previous_month, returns_as_of,
plan_scope, methodology — plus one top-level disclaimer, so a
renderer never has to special-case a tool. Holdings counts are one object everywhere:
holdings.equity (distinct listed equity lines), holdings.instruments_total
(incl. cash/TREPS/debt), holdings.reported_by_factsheet (the AMC's own count).
| Tool | Purpose | Arguments | Returns |
get_mf_portfolio | One fund's profile from its latest factsheet | fund*, top_n | AUM, expense ratio, benchmark, managers, riskometer, asset & market-cap allocation, concentration, 3Y beta / Sharpe / Sortino / volatility vs category, rank in category, top holdings with NSE symbols and 1-month weight change, sector weights, holdings-weighted quality score with coverage |
get_mf_holders_of_stock | Which funds hold a stock | symbol*, limit | Fund count, value held, new entries / exits and portfolios that raised / cut units (funds_units_up / funds_units_down — counted on the common panel, the decision signal); funds_weight_up / funds_weight_down follow the share price (drift); top holders by value; derivative/other lines under other_positions; panel block |
screen_mutual_funds | Rank / filter funds | category, risk_profile (defensive · consistent · risk_adjusted · aggressive · top_ranked · low_cost), sort, fund_house, min_aum_cr, max_ter_pct, min_cagr_3y, min_cagr_5y, limit | Matching Direct-Growth funds with AUM, TER, CAGR, 3Y risk metrics, category rank — plus the definition the ranking used |
get_mf_ownership_leaders | Stocks ranked by fund ownership | by (value · funds · weight · net_new_funds · net_exits), sector, mcap, month (YYYY-MM), limit | Per stock: portfolios holding it, value held, average weight, month-on-month change in portfolio count (equity holdings only); any held factsheet month |
get_mf_flows | What funds bought and sold in a month | month (YYYY-MM, default latest), limit | Stocks with the most new portfolios, most exits, largest value added / reduced vs the previous factsheet month; returns available_months so history can be walked like the /mutual-funds/flows page |
get_mf_fund_changes | One fund's month-on-month changes | fund*, limit | New positions, exits, largest weight increases and trims, unit changes where disclosed |
compare_mf_overlap | Portfolio overlap between funds | funds* (2–5 references), limit | Pairwise overlap % (sum of minimum weights on common holdings), holdings common to all with each fund's weight |
get_mf_nfos | New fund offers | status (current | open | upcoming | closed | allotted | all), fund_house, category, year, query, limit | Open and upcoming offers with window, days left, offer price, minimum investment and scheme document; recently closed offers; funds allotted since 2019 with return since first NAV (CAGR after a year). Older offers are rebuilt from allotment dates and carry no window or offer terms (source says which) |
get_mf_lookthrough | Look-through of a fund basket | allocations* [{fund, weight_pct | amount}], limit | Combined stock and sector exposure, top-10 concentration, cash / debt buckets, holdings-weighted quality score with coverage |
ⓘ
Portfolios are monthly (factsheet as-of month is returned on every call; history from
January 2026). Direct, Regular, Growth and IDCW variants of a scheme share one portfolio and are
stored once, so "funds holding X" counts portfolios, not scheme codes. About 92% of held
value maps to a stock we track; foreign and unlisted holdings are named but carry no score.
Rate Limits & Notes
| Topic | Detail |
| Response time | Data tools 1–8s; AI / GraphRAG tools 5–30s. Set your HTTP client timeout to ≥ 60s. |
| Symbols | NSE tickers, uppercase, no exchange suffix (RELIANCE, not RELIANCE.NS). |
| Errors | A non-200 status, or {"success": false, ...} with a message. Tools degrade gracefully (e.g. {"available": false}) rather than crashing. |
| Compliance | ANALYTICS-only — scores and data, never investment advice. You remain responsible for investment decisions. |
| Rate limits / volume | Per-key limits apply; contact InvestSights for a dedicated key or higher throughput. |
ℹ
Need a key, higher rate limits, or help integrating? See
Support below.
Internal Data API separate API · X-Internal-Key
The endpoints below are a separate bulk-JSON data API (base
/api/internal/v1) authenticated with an X-Internal-Key header — distinct
from the MCP/REST tools above. Use it for raw data pipelines (agent-context bundles, OHLCV,
screener dumps). It is open to a key with no tool or symbol restriction that holds all products
or the whole Equity & Market product. Other products granted alongside it do not block
access. Existing partner keys are of this kind and continue unchanged. A key with a tool or
symbol restriction, or one that holds only some Equity & Market sub-modules or no Equity
& Market at all, receives 403:
This API key does not include the internal REST API.
Authentication
All Internal Data API requests require an X-Internal-Key header with your API key.
Keys are provisioned by the InvestSights admin team.
X-Internal-Key: isk_your_api_key_here
⚠
Keep your API key secret. Do not expose it in client-side code, public repositories, or logs. If compromised, contact us immediately for a key rotation.
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
https://investsights.in/api/internal/v1/market/macro
import requests
API_KEY = "isk_your_api_key_here"
BASE = "https://investsights.in/api/internal/v1"
HEADERS = {"X-Internal-Key": API_KEY}
resp = requests.get(f"{BASE}/market/macro", headers=HEADERS)
print(resp.json())
const API_KEY = "isk_your_api_key_here";
const BASE = "https://investsights.in/api/internal/v1";
const resp = await fetch(`${BASE}/market/macro`, {
headers: { "X-Internal-Key": API_KEY }
});
const data = await resp.json();
console.log(data);
Base URL
https://investsights.in/api/internal/v1
All endpoint paths below are relative to this base URL.
Rate Limits
ℹ
Responses are cached server-side for 30 minutes. Repeated identical requests will return cached data with cache_hit: true and faster response times. Contact us if you need higher rate limits.
Error Handling
The API uses standard HTTP status codes. Errors return a JSON body with a detail field.
| Code | Meaning | Example |
| 200 | Success | Request processed successfully |
| 401 | Unauthorized | Missing or invalid X-Internal-Key |
| 404 | Not Found | Symbol has no data (e.g. invalid ticker) |
| 422 | Validation Error | Invalid query parameters |
| 429 | Rate Limited | Too many requests — slow down |
| 500 | Server Error | Unexpected issue — contact support |
{
"detail": "Invalid internal API key"
}
Endpoints
Returns comprehensive stock data in a single call — fundamentals, financial statements, shareholding, technicals, risk metrics, macro context, and news. Designed for AI agent pipelines.
Path Parameters
| Name | Type | Description |
symbol | string required | NSE stock symbol (e.g. RELIANCE, TCS, INFY) |
Request Body (JSON)
| Field | Type | Default | Description |
include_sections | string[] optional | ["fundamental","technical","risk","macro","news"] | Sections to include in response |
price_days | integer optional | 252 | Number of trading days for risk calculations |
news_limit | integer optional | 10 | Maximum news articles to return |
statements_years | integer optional | 5 | Years of financial statements |
Available sections: fundamental, technical, risk, macro, news, statements, shareholding
Example Request
curl -X POST https://investsights.in/api/internal/v1/agent-context/RELIANCE \
-H "X-Internal-Key: isk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"include_sections": ["fundamental", "technical", "risk"],
"price_days": 252,
"news_limit": 5
}'
Example Response
{
"symbol": "RELIANCE",
"exchange": "NSE",
"company_name": "Reliance Industries Limited",
"last_updated": "2026-03-11T18:30:00+05:30",
"fundamental": {
"current_price": 1245.50,
"market_cap_cr": 1682340.5,
"pe_ratio": 26.8,
"pb_ratio": 2.1,
"ev_ebitda": 14.3,
"roe": 8.9,
"debt_to_equity": 0.38,
"current_ratio": 1.22,
"altman_z_score": 3.41,
"altman_zone": "SAFE",
"piotroski_f_score": 7,
"piotroski_rating": "STRONG",
"promoter_holding": 50.3,
"fii_holding": 23.1,
},
"statements": {
"income": [{"period": "FY2025", "revenue": 985060, ...}],
"balance_sheet": [{"period": "FY2025", "total_assets": 1520000, ...}],
"cashflow": [{"period": "FY2025", "free_cashflow": 42000, ...}]
},
"shareholding_history": [
{"quarter": "Q3FY2026", "promoter": 50.3, "fii": 23.1, "dii": 14.2}
],
"technical": {
"current_price": 1245.50,
"rsi_14": 58.3,
"sma_50": 1220.0,
"sma_200": 1180.5,
"macd_bullish": true,
"golden_cross_active": true,
"adx_trend_strength": "STRONG",
"overall_bias": "BULLISH",
},
"risk": {
"var_95_1d": -2.14,
"max_drawdown": -18.5,
"annualized_volatility": 22.3,
"sharpe_ratio": 1.24,
"sortino_ratio": 1.78,
"risk_rating": "MODERATE"
},
"response_time_ms": 85.3,
"cache_hit": false
}
Fundamental Fields
| Field | Type | Description |
current_price | float | Latest closing price (INR) |
market_cap_cr | float | Market cap in crores |
pe_ratio | float | Price-to-Earnings (TTM) |
forward_pe | float | Forward P/E ratio |
pb_ratio | float | Price-to-Book |
ev_ebitda | float | Enterprise Value / EBITDA |
roe | float | Return on Equity (%) |
roa | float | Return on Assets (%) |
roic | float | Return on Invested Capital (%) |
debt_to_equity | float | Debt-to-Equity ratio |
current_ratio | float | Current Ratio |
interest_coverage | float | Interest Coverage Ratio |
altman_z_score | float | Altman Z-Score |
altman_zone | string | SAFE / GREY / DISTRESS |
piotroski_f_score | int | Piotroski F-Score (0-9) |
piotroski_rating | string | STRONG / AVERAGE / WEAK |
beneish_m_score | float | Beneish M-Score (earnings manipulation) |
promoter_holding | float | Promoter holding (%) |
fii_holding | float | FII holding (%) |
dii_holding | float | DII holding (%) |
dividend_yield | float | Dividend yield (%) |
eps_ttm | float | Earnings per share (TTM) |
revenue_growth_yoy | float | Revenue growth YoY (%) |
eps_growth_yoy | float | EPS growth YoY (%) |
Technical Fields
| Field | Type | Description |
rsi_14 | float | RSI (14-period) |
sma_20/50/200 | float | Simple Moving Averages |
macd_line | float | MACD line value |
macd_signal | float | MACD signal line |
macd_bullish | bool | MACD histogram > 0 |
bb_upper/lower/middle | float | Bollinger Band values |
atr_14 | float | Average True Range |
adx_14 | float | ADX (trend strength) |
adx_trend_strength | string | WEAK / MODERATE / STRONG / VERY_STRONG |
golden_cross_active | bool | SMA50 > SMA200 |
death_cross_active | bool | SMA50 < SMA200 |
support_1/2 | float | Support levels |
resistance_1/2 | float | Resistance levels |
overall_bias | string | BULLISH / BEARISH / NEUTRAL |
Risk Fields
| Field | Type | Description |
var_95_1d | float | Value at Risk (95%, 1-day) in % |
var_99_1d | float | Value at Risk (99%, 1-day) in % |
cvar_95 | float | Conditional VaR (Expected Shortfall) |
max_drawdown | float | Maximum drawdown in % |
annualized_volatility | float | Annualized volatility in % |
sharpe_ratio | float | Sharpe Ratio (risk-free: 6.5%) |
sortino_ratio | float | Sortino Ratio |
calmar_ratio | float | Calmar Ratio |
risk_rating | string | LOW / MODERATE / HIGH / VERY_HIGH |
Returns the complete screener row for a stock — 228 columns covering valuation, profitability, growth, debt, efficiency, dividends, technicals, and guru scores.
Path Parameters
| Name | Type | Description |
symbol | string required | NSE stock symbol |
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
https://investsights.in/api/internal/v1/screener/full/TCS
Example Response
{
"symbol": "TCS",
"company_name": "Tata Consultancy Services",
"sector": "Technology",
"industry": "Information Technology Services",
"market_cap": 1435200.0,
"close_price": 3920.50,
"pe_ratio": 31.2,
"pb_ratio": 14.8,
"roe": 47.5,
"roce": 62.1,
"revenue_growth_yoy": 5.8,
"net_profit_margin": 19.2,
"debt_to_equity": 0.05,
"piotroski_score": 8,
"altman_z_score": 12.5,
"rs_rating": 75,
}
ℹ
Returns 404 if the symbol has no screener data. All 228 columns are returned as a flat JSON object — ideal for spreadsheets, databases, or custom screening logic.
Returns OHLCV (Open, High, Low, Close, Volume) historical data with adjusted close prices. Ordered by date descending (most recent first).
Path Parameters
| Name | Type | Description |
symbol | string required | NSE stock symbol |
Query Parameters
| Name | Type | Default | Description |
days | integer optional | 252 | Number of trading days (1-2000) |
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
"https://investsights.in/api/internal/v1/stocks/ohlcv/INFY?days=10"
Example Response
[
{
"date": "2026-03-11",
"open": 1825.00,
"high": 1842.50,
"low": 1818.30,
"close": 1835.75,
"adj_close": 1835.75,
"volume": 4523100
},
{
"date": "2026-03-10",
"open": 1810.00,
"high": 1830.00,
"low": 1805.50,
"close": 1825.00,
"adj_close": 1825.00,
"volume": 3891200
}
]
Returns a macro market snapshot — FII/DII flows (today + 30-day), major indices, INR/USD, and sector relative strength. No symbol required.
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
https://investsights.in/api/internal/v1/market/macro
Example Response
{
"fii_net_today_cr": -1250.3,
"dii_net_today_cr": 1820.5,
"fii_net_30d_cr": -18500.0,
"dii_net_30d_cr": 22400.0,
"fiidii_history": [
{"date": "2026-03-11", "fii_net": -1250.3, "dii_net": 1820.5}
],
"indices": {
"nifty_50": {"close": 22450.5, "change_pct": 0.65, "trade_date": "2026-03-11"},
"sensex": {"close": 73850.0, "change_pct": 0.58, "trade_date": "2026-03-11"}
},
"inr_usd": 83.25,
"sectors": [
{"sector": "Technology", "return_1w": 2.3, "rs_ratio": 105.2, "quadrant": "Leading"}
]
}
Response Fields
| Field | Type | Description |
fii_net_today_cr | float | FII net buy/sell today (crores) |
dii_net_today_cr | float | DII net buy/sell today (crores) |
fii_net_30d_cr | float | FII net cumulative 30-day (crores) |
dii_net_30d_cr | float | DII net cumulative 30-day (crores) |
fiidii_history | array | Daily FII/DII flows (last 30 days) |
indices | object | Nifty 50 and Sensex latest close + change |
inr_usd | float | INR/USD exchange rate |
sectors | array | Sector relative strength and quadrant (Leading/Improving/Weakening/Lagging) |
Returns peer companies from the same sector, sorted by market cap. Includes key comparison metrics for each peer.
Path Parameters
| Name | Type | Description |
symbol | string required | NSE stock symbol |
Query Parameters
| Name | Type | Default | Description |
limit | integer optional | 10 | Number of peers to return (1-20) |
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
"https://investsights.in/api/internal/v1/stocks/peers/HDFCBANK?limit=5"
Example Response
{
"symbol": "HDFCBANK",
"sector": "Financial Services",
"target": {
"symbol": "HDFCBANK",
"company_name": "HDFC Bank Limited",
"market_cap": 1150000.0,
"pe_ratio": 19.5,
"roe": 16.8,
"debt_to_equity": 7.2
},
"peers": [
{
"symbol": "ICICIBANK",
"company_name": "ICICI Bank Limited",
"market_cap": 850000.0,
"pe_ratio": 17.2,
"roe": 18.1,
"debt_to_equity": 6.8,
"net_profit_margin": 28.5,
"revenue_growth_yoy": 22.3,
"close_price": 1285.50
}
]
}
Returns recent news articles for a stock and its sector. Includes sentiment scores and source information. Optimized for LLM context injection.
Path Parameters
| Name | Type | Description |
symbol | string required | NSE stock symbol |
Query Parameters
| Name | Type | Default | Description |
limit | integer optional | 10 | Maximum articles to return (1-50) |
Example Request
curl -H "X-Internal-Key: isk_your_api_key_here" \
"https://investsights.in/api/internal/v1/news/agent/RELIANCE?limit=5"
Example Response
[
{
"headline": "Reliance Jio adds 5 million subscribers in February",
"published_at": "2026-03-10T14:30:00",
"category": "sector",
"sentiment": 0.72,
"source": "Economic Times"
},
{
"headline": "RIL to invest Rs 75,000 crore in green energy",
"published_at": "2026-03-09T09:15:00",
"category": "sector",
"sentiment": 0.85,
"source": "Moneycontrol"
}
]
Response Fields
| Field | Type | Description |
headline | string | Article headline |
published_at | string | ISO 8601 publication datetime |
category | string | News category (sector, market, macro) |
sentiment | float | Sentiment score (-1.0 bearish to +1.0 bullish) |
source | string | News source name |
Quick Start (Python)
A complete Python example to pull data for any stock:
import requests
API_KEY = "isk_your_api_key_here"
BASE = "https://investsights.in/api/internal/v1"
HEADERS = {"X-Internal-Key": API_KEY}
resp = requests.post(
f"{BASE}/agent-context/RELIANCE",
json={
"include_sections": ["fundamental", "technical", "risk", "macro", "news"],
"price_days": 252,
},
headers=HEADERS,
)
data = resp.json()
print(f"PE Ratio: {data['fundamental']['pe_ratio']}")
print(f"RSI: {data['technical']['rsi_14']}")
print(f"Risk Rating: {data['risk']['risk_rating']}")
prices = requests.get(
f"{BASE}/stocks/ohlcv/RELIANCE?days=30",
headers=HEADERS,
).json()
print(f"Latest close: {prices[0]['close']}")
peers = requests.get(
f"{BASE}/stocks/peers/RELIANCE?limit=5",
headers=HEADERS,
).json()
for p in peers["peers"]:
print(f" {p['symbol']}: PE={p['pe_ratio']}, ROE={p['roe']}")
Support
For API key provisioning, rate limit increases, or technical questions:
✓
API Status: All systems operational. Data is updated daily — EOD prices sync after market close (16:15 IST), news updates every 2 hours.