Indian Stock Market API – NSE/BSE Fundamentals (Tickertape) avatar

Indian Stock Market API – NSE/BSE Fundamentals (Tickertape)

Pricing

from $14.00 / 1,000 stock profiles

Go to Apify Store
Indian Stock Market API – NSE/BSE Fundamentals (Tickertape)

Indian Stock Market API – NSE/BSE Fundamentals (Tickertape)

NSE/BSE stock fundamentals API for fintech apps, PMS/RIA research and quant teams, built on Tickertape: 10-year financials, quarterly results, promoter/FII/DII/MF shareholding history, ratios, forecasts, peers, NIFTY index constituents and a custom ratio screener. $0.02 per full profile.

Pricing

from $14.00 / 1,000 stock profiles

Rating

0.0

(0)

Developer

Daemon Data

Daemon Data

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

3 days ago

Last modified

Share

NSE and BSE fundamentals as an API, without an exchange data licence and without fighting NSE's bot protection. Built on Tickertape's public stock pages. One record per stock gives you the live quote, key ratios, Tickertape's scorecard, 10 years of income statement, balance sheet and cash flow, quarterly results, promoter / pledged / FII / DII / mutual-fund shareholding history, dividends, corporate actions, analyst forecasts, top mutual-fund holders and peers. It also returns index constituents (NIFTY 50, NIFTY NEXT 50, NIFTY 500, NIFTY BANK, NIFTY IT, SENSEX …) with price, market cap, P/E, P/B and dividend yield, and runs a custom ratio stock screener.

No Tickertape login, no proxy, no browser. Pay per stock.

What teams run, and what it costs

You areYou scheduleCost
Fintech / broker / advisory appFull profiles for NIFTY 500, weekly500 × $0.02 = ~$10 per refresh
RIA / PMS research teamFull profiles for a 50-stock watchlist, weekly~$1 per week
Quant / backtestingOne-off full profiles for NIFTY 500 (10-year statements + shareholding history)~$10 once
Screener / newsletterScreener run with your filter, dailya few hundred rows × $0.002 = cents
Index trackerNIFTY 500 constituent list with market cap and ratios, daily500 × $0.002 = $1

Results arrive as JSON, CSV or Excel, by API, webhook or Google Sheets, or through an AI agent as an MCP tool ("which NIFTY 500 stocks have promoter holding above 60% and P/E under 15?").

Quick start (Python)

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("data_daemon/tickertape-stocks-scraper").call(
run_input={"mode": "stocks", "stocks": ["RELIANCE", "TCS", "HDFCBANK"]}
)
for s in client.dataset(run["defaultDatasetId"]).iterate_items():
latest = s["shareholding"][-1] if s["shareholding"] else {} # quarters are oldest first
print(s["ticker"], s["pe"], s["roe"], latest.get("promoter"))

Why use this instead of building it

  • The whole stock page in one record. Statement lines come with readable names (Total Revenue, Net Income, EPS, Free Cash Flow), not just codes.
  • Shareholding as a trend. Six quarters of promoter, pledged, FII, DII, MF, insurance and retail percentages: compare quarters to spot FII exits or rising promoter pledges.
  • Screener plus enrichment. Filter on market cap, P/E, P/B, dividend yield, ROE, ROCE, debt/equity, 1-week to 1-year returns, beta, promoter pledge and FII/DII holding, then pull the full profile for every match in the same run.
  • Never a failed run on a typo. An unknown index name, a stock that does not exist or a screener with no matches finishes successfully with 0 rows and a status message that says why, so schedules and webhooks keep working.
  • Fast. Index and screener rows arrive in seconds; a 50-stock full-profile run finishes in about a minute. Plain HTTP, no browser.

Input

Stocks mode (default when stocks is filled in):

{ "mode": "stocks", "stocks": ["RELIANCE", "TCS", "Infosys"] }

Index mode:

{ "mode": "index", "indexSid": "NIFTY NEXT 50", "fullProfile": false }

Screener mode:

{
"mode": "screener",
"screenerMatch": { "mrktCapf": { "g": 5000 }, "apef": { "l": 20 }, "divYield": { "g": 1.5 } },
"screenerSortBy": "divYield",
"fullProfile": false
}
FieldDescription
modestocks, index or screener. When empty, the mode follows whichever of stocks, screenerMatch or indexSid you filled in (in that order).
stocksNSE tickers, company names or Tickertape URLs. Empty input falls back to the example tickers RELIANCE, TCS, HDFCBANK.
indexSidAny of Tickertape's 77 indices by name or id: NIFTY 50, NIFTY NEXT 50, NIFTY 100, NIFTY 200, NIFTY 500, NIFTY BANK, NIFTY IT, NIFTY AUTO, NIFTY FMCG, NIFTY PHARMA, NIFTY METAL, NIFTY REALTY, NIFTY PSU BANK, NIFTY FIN SERVICE, NIFTY MIDCAP 100, NIFTY MIDCAP 150, NIFTY SMALLCAP 100, NIFTY SMALLCAP 250, SENSEX, BSE 500, or ids such as .NSEI, .NN50, .NIFTYIT, or the index page URL. Defaults to NIFTY 50.
screenerMatchFilter object. g = greater than, l = less than. Codes: mrktCapf (market cap ₹ crore), apef (P/E), pbr (P/B), divYield, roe, roce, dbtEqt, pr1w, 4wpct, 26wpct, 52wpct (1-year return %), beta, promShrPled, forInstHldng, domInstHldng, sector.
screenerSortBy, screenerSortDesc, screenerFieldsSorting and extra ratio columns for screener rows.
fullProfileFetch the complete profile per stock (default on in stocks mode, off in index / screener).
maxItemsCap on records (0 = no limit).

Output

Full profile (abridged; values from a real run, lists shortened). Time series (shareholding, the statements) are ordered oldest first, so the latest quarter or year is the last entry:

{
"ticker": "RELIANCE",
"name": "Reliance Industries Ltd",
"sector": "Oil & Gas - Refining & Marketing",
"industry": "Oil & Gas Refining & Marketing",
"isin": "INE002A01018",
"lastPrice": 1211.2,
"quote": { "price": 1211.2, "change": -3.8, "changePercent": -0.31, "volume": 17225283 },
"marketCapCr": 1639061.09,
"pe": 20.29,
"pb": 1.51,
"dividendYield": 0.5,
"roe": 7.71,
"week52High": 1611.8,
"week52Low": 1152.2,
"scorecard": [
{ "name": "Performance", "tag": "Low", "colour": "red", "description": "Hasn't fared well - amongst the low performers" },
{ "name": "Valuation", "tag": "High", "colour": "red", "description": "Seems to be overvalued vs the market average" }
],
"shareholding": [
{ "date": "2025-03-31", "promoter": 50.11, "promoterPledged": 0, "foreignInstitutions": 19.06, "mutualFunds": 9.21, "retail": 7.4 },
{ "date": "2026-06-30", "promoter": 49.62, "promoterPledged": 0, "foreignInstitutions": 16.9, "mutualFunds": 9.93, "retail": 7.04 }
],
"incomeStatementAnnual": [
{ "period": "FY 2017", "Total Revenue": 314717, "Net Income": 29901, "EPS": 22.72 },
{ "period": "FY 2026", "Total Revenue": 1086181, "Net Income": 80775, "EPS": 59.69 },
{ "period": "TTM", "Total Revenue": 1143448, "Net Income": 74727, "EPS": 55.22 }
],
"balanceSheetAnnual": [ "…" ],
"cashFlowAnnual": [ "…" ],
"incomeStatementQuarterly": [ "…" ],
"analystForecast": { "analystCount": 24, "buyPercent": 100 },
"dividends": { "past": [{ "exDate": "2026-06-05T00:00:00.000Z", "dividend": 6, "subType": "Final" }] },
"corporateActions": { "past": [{ "type": "bonus", "value": "1:1", "exDate": "2024-10-28T00:00:00.000Z" }] },
"mutualFundHoldings": [{ "fund": "ICICI Pru Large Cap Fund", "weightPercent": 5.46, "rank": 3 }],
"peers": [{ "ticker": "IOC", "name": "Indian Oil Corporation Limited", "ratios": { "apef": 4.37, "pbr": 0.82, "ttmPe": 5.47, "divDps": 6.33, "52wpct": -15.16 } }],
"investmentChecklist": [{ "title": "Intrinsic value", "state": "checked", "description": "Current price is less than the intrinsic value" }]
}

Scorecard entries carry Tickertape's tag (Low / Avg / High, Good / Bad), colour and description; checklist state is checked, unchecked or none. Peer ratios use Tickertape's codes (apef P/E, pbr P/B, ttmPe, divDps, 52wpct, marketCap). The full record also has ratiosRaw, keyRatios, announcements, legalEvents, upcomingEvents, investorPresentations, annualReports and Tickertape's aiSummary.

Index row (lightweight, fullProfile: false):

{
"index": "NIFTY IT",
"indexSid": ".NIFTYIT",
"ticker": "HCLTECH",
"name": "HCL Technologies Ltd",
"sector": "Information Technology",
"lastPrice": 1380,
"change1dPct": 1.47,
"marketCapCr": 373406.08,
"pe": 22.44,
"pb": 4.97,
"dividendYield": 3.92,
"roe": 22.98,
"week52High": 1780.1,
"week52Low": 1030,
"freeFloatPct": 100.72,
"url": "https://www.tickertape.in/stocks/hcl-technologies-HCLT"
}

Screener rows echo Tickertape's field codes (mrktCapf, apef, pbr, divYield, roe, roce, dbtEqt, pr1w, 4wpct, 26wpct, 52wpct, 52wHigh, 52wLow, beta, promShrPled, forInstHldng, domInstHldng, subindustry, plus any screenerFields you add) and also carry lastPrice, marketCapCr, pe, pb, dividendYield, roe, week52High and week52Low, so the Output table reads the same for every mode.

Download as JSON, CSV or Excel, or connect via API, webhooks and Google Sheets.

Scheduling & automation

  • Weekly fundamentals database. Save { "mode": "index", "indexSid": "NIFTY 500", "fullProfile": true } as a task, open Schedules and run it weekly. Each run writes a fresh dataset; keep the latest or diff two runs by ticker.
  • Daily screener feed. Save a screener task (for example the ROE > 20% screen), schedule it daily after market close (0 11 * * 1-5 UTC = 16:30 IST) and add a webhook or the Google Sheets, Slack, Make, Zapier or n8n integration from the task's Integrations tab.
  • Sync call from your backend. One request returns the rows directly:
curl -X POST "https://api.apify.com/v2/acts/data_daemon~tickertape-stocks-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"mode":"index","indexSid":"NIFTY IT","fullProfile":false}'
  • Safe for schedulers. A run never fails because of input: an unknown index, an unmatched stock or an empty screener ends as SUCCEEDED with 0 rows and a status message such as Index "NIFTY XYZ" is not known to Tickertape …. Only a Tickertape outage with nothing collected marks the run as failed.

Pricing

Pay per event:

  • Stock profile – $0.02 per full profile record.
  • Quote row – $0.002 per lightweight index or screener row.

Profiling all of NIFTY 50 costs $1; all of NIFTY 500 costs $10. A NIFTY 500 constituent list with market cap and ratios costs $1, and a screener run of a few hundred rows costs cents. Runs that return 0 rows charge nothing.

Tips

  • Use index mode with fullProfile: true and a weekly schedule to maintain a fundamentals database for a whole index; maxItems caps the cost of a test run.
  • Financial statement values are in ₹ crore, as on Tickertape.
  • shareholding dates are quarter-ends, oldest first; the last entry is the latest quarter. Compare the first and last entries to spot promoter or FII trend changes.
  • Screener filters use Tickertape's field codes; the lightweight rows echo those codes so you can discover more fields to filter on, and screenerFields adds any other code Tickertape's screener supports.
  • Combine modes in two runs: screen for candidates with fullProfile: false, then pass the tickers you like to stocks mode for full profiles.

FAQ

How much does it cost to get Indian stock fundamentals?

$0.02 per full stock profile (10 years of statements, quarterly results, shareholding history, dividends, forecasts, peers) and $0.002 per lightweight index or screener row. All of NIFTY 50 with full profiles costs $1.

Which indices are supported?

Any of the 77 indices Tickertape publishes, by name, Tickertape id or index URL: NIFTY 50, NIFTY NEXT 50, NIFTY 100, NIFTY 200, NIFTY 500, NIFTY BANK, NIFTY IT, NIFTY AUTO, NIFTY FMCG, NIFTY PHARMA, NIFTY METAL, NIFTY REALTY, NIFTY PSU BANK, NIFTY FIN SERVICE, NIFTY MIDCAP 100 / 150, NIFTY SMALLCAP 100 / 250, SENSEX, BSE 500 and the other NSE and BSE sector and strategy indices.

What do index rows contain?

Ticker, company name, sector, last price, 1-day change, market cap (₹ crore), P/E, P/B, dividend yield, ROE, 52-week high and low, and free float. Switch on fullProfile for statements, shareholding and forecasts.

Can I run a screener?

Yes. Pass any Tickertape filter object such as {"mrktCapf": {"g": 5000}, "apef": {"l": 20}}. A filter with no matches finishes successfully with 0 rows and a status message.

Do I need a proxy or login?

No.

Support

Found a bug or need another field or source? Open an issue on the Issues tab; issues are usually answered within a day. Custom variants of this Actor are available on request. A quick review on the actor page helps other users find it.

Disclaimer

Data is collected from publicly available Tickertape pages for informational purposes only and is not investment advice. Respect the source website's terms of use.