Screener Scraper | Stock Fundamentals, NSE & BSE avatar

Screener Scraper | Stock Fundamentals, NSE & BSE

Pricing

from $8.00 / 1,000 companies

Go to Apify Store
Screener Scraper | Stock Fundamentals, NSE & BSE

Screener Scraper | Stock Fundamentals, NSE & BSE

Screener.in scraper for NSE and BSE stock fundamentals: price, market cap, P/E, ROCE, ROE, growth rates, shareholding, quarterly and annual statements, peers, announcements and annual reports. 10 companies in 22 seconds, 72 fields each. Start from symbols, BSE codes, names, screens or sectors.

Pricing

from $8.00 / 1,000 companies

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Screener Scraper | Stock Fundamentals for NSE and BSE Companies (2026)

Screener companies, 72 fields each, from any id.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for โ€œjd scraperโ€ in Apify Store search), with 880,000+ combined lifetime runs.

Every NSE and BSE company on screener.in as one clean row: price and key ratios, 3, 5 and 10 year growth, the latest shareholding pattern, 13 quarters and 12 years of statements, sector peers and the company's filings. Our default test run read 10 Nifty 50 leaders in 22 seconds: 69 data fields held a value on all 10 rows, 71 on at least half of them.

Why choose this actor?

Copying screener.in tables into a spreadsheet one company at a time? Getting a name, a price and a nested blob from a scraper, and still opening the page for the growth rates, the shareholding or the annual reports? Running a screen and getting back its columns, but not the companies behind them?

  • 71 fields filled per company, not 17. In our default run of 10 companies, 71 data fields held a value on at least half of the rows and 69 on all 10: screener ID, link, name, symbol, NSE code, BSE code, financials type, about, key points, website, logo, broad sector, sector, broad industry, industry, index memberships, pros, cons, current price, day change, market cap, 52-week high and low, P/E, book value, dividend yield, ROCE, ROE, face value, sales growth over 10, 5 and 3 years and TTM, profit growth over the same spans, price CAGR over 10, 5, 3 and 1 years, ROE over 10, 5 and 3 years and last year, latest quarter with its sales, net profit and EPS, TTM sales, net profit and EPS, promoter, FII, DII, government and public holding with the shareholder count, then quarterly results, profit and loss, balance sheet, cash flow, efficiency ratios, quarterly and yearly shareholding, peers, announcements, annual reports, credit ratings and concalls. The most used screener.in actor on the Store shows 17 fields in its output example.
  • Type a symbol, a BSE code or just a name. INFY, 500209 and Infosys all land on the same company. In our test, 500325 returned Reliance Industries, Tata Elxsi returned Tata Elxsi Ltd, a search for pharma returned the 8 companies screener.in suggests (Sun Pharma, Torrent, Mankind, Aurobindo, Glenmark, Gland, GSK Pharma and Pharmaids), and an unknown name was reported in the log instead of failing the run. 10 rows in 16 seconds.
  • A whole index, sector or screen, each company complete. Paste a screener.in link and every company it lists gets its full row, in the page's own order. The Nifty 50 link returned all 50 constituents in 58 seconds with 70 fields filled; the public FII Buying screen listed 98 companies and returned the first 30 across two pages in 70 seconds, 10 of them read from their standalone figures because they file no consolidated results.

Try Screener Scraper free

Try your first 10 companies

Paste this input in the JSON tab of the Input page and press Start. It reads 10 Nifty 50 leaders from screener.in, each with its consolidated figures and its sector peers.

{
"companyIds": ["INFY", "TCS", "RELIANCE", "HDFCBANK", "ICICIBANK", "SBIN", "BHARTIARTL", "ITC", "LT", "HINDUNILVR"]
}

It runs on the Apify Free plan. Each company becomes one row of your dataset: open the Output tab to see the "Companies" table with the name, symbol, industry, price, market cap, P/E, ROCE and link, or switch to the "Growth and ownership" view for 5-year growth, ROE and holdings. Export the rows as JSON, CSV or Excel, or pull them from the API into your own tools.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the Screener Scraper on Apify: silentflow/screener-scraper
It returns Indian listed companies (NSE and BSE) from screener.in, one row per company.
Input (no field is required; an empty input reads 10 Nifty 50 leaders):
- companyIds (array of strings): NSE symbols ("INFY", "M&M"), BSE codes ("500209") or company names ("Tata Steel")
- searchQueries (array of strings): words from a company name; each returns up to 8 best matches
- startUrls (array of {"url": ...}): screener.in company pages, public screens (/screens/...), sector or industry pages (/market/...), index pages (/company/NIFTY/)
- maxItems (integer, default 100): total companies to save across all inputs
- financialsType (string: consolidated | standalone, default consolidated)
- includePeers (boolean, default true): add the sector peer table
- debugMode (boolean, default false)
Output per company (74 top-level fields, flat):
- identity: id (screener company id, string), url, name, symbol, nseCode, bseCode, financialsType
- content: about, keyPoints, website, logoUrl, broadSector, sector, broadIndustry, industry, indices[], pros[], cons[]
- price and ratios (numbers): currentPrice, priceChangePercent, marketCapCr, high52Week, low52Week, pe, bookValue, dividendYield, roce, roe, faceValue
- growth in percent: salesGrowth10y/5y/3y/Ttm, profitGrowth10y/5y/3y/Ttm, priceCagr10y/5y/3y/1y, roe10y/5y/3y, roeLastYear
- latest figures in Rs. crore: latestQuarter (date), quarterSales, quarterNetProfit, quarterEps, salesTtm, netProfitTtm, epsTtm
- latest shareholding in percent: shareholdingAsOf (date), promoterHolding, fiiHolding, diiHolding, governmentHolding, publicHolding, shareholdersCount
- statements (arrays of {period: "YYYY-MM-DD" or "TTM", label, metric: number}): quarterlyResults, profitLoss, balanceSheet, cashFlow, ratios, shareholding, shareholdingYearly
- peers[] ({rank, name, url, symbol, currentPrice, pe, marketCapCr, dividendYield, netProfitQtr, qtrProfitVarPercent, salesQtr, qtrSalesVarPercent, roce})
- documents: announcements[] {title, summary, date, url}, annualReports[] {title, year, source, url}, creditRatings[] {title, date, agency, url}, concalls[] {period, month, transcriptUrl, pptUrl, recordingUrl}
- meta: searchQuery, sourceUrl, scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript.

How to scrape screener.in company data

Get the fundamentals of your watchlist

List NSE symbols or BSE codes. Each one returns its full row with consolidated figures and sector peers.

{
"companyIds": ["INFY", "TCS", "HCLTECH", "WIPRO", "TECHM"]
}

Find companies when you only know the name

Mix names in the company list and use the search for a word shared by a group or a theme. Each search returns up to 8 listed companies, the same suggestions as the screener.in search box.

{
"companyIds": ["Tata Elxsi", "Asian Paints"],
"searchQueries": ["tata", "pharma"],
"maxItems": 20
}

Read every company of an index, a sector or a screen

Paste the screener.in link. Lists are read page by page, 25 companies a page, in the page's order, and each company gets its full row.

{
"startUrls": [
{ "url": "https://www.screener.in/company/NIFTY/" },
{ "url": "https://www.screener.in/market/IN03/" },
{ "url": "https://www.screener.in/screens/343087/fii-buying/" }
],
"maxItems": 150,
"includePeers": false
}

Input parameters

ParameterTypeDefaultWhat it does
companyIdsarray of strings10 Nifty 50 leaders in the formNSE symbols, BSE codes or company names. One row per company.
searchQueriesarray of stringsemptyWords from a company or group name. Each returns up to 8 best matches.
startUrlsarray of linksemptyCompany pages, public screens, sector and industry pages, index constituents.
maxItemsinteger100Stop after this many companies across all inputs.
financialsTypeconsolidated or standaloneconsolidatedGroup-wide figures, or the parent company only.
includePeersbooleantrueAdd the sector peer table to each row. Turn it off for faster runs on long lists.
debugModebooleanfalseDetailed progress lines in the log.

No field is required. An empty input reads the 10 example companies, so the form runs as it opens.

Accepted formats

  • Symbols and codes: INFY, infy, M&M, BAJAJ-AUTO, 500209. Case does not matter. A BSE code reaches the same page as the NSE symbol.
  • Names: Infosys, Tata Steel, Asian Paints. A name is matched to the closest listed company; a name nothing matches is named in the log and skipped.
  • Company links: https://www.screener.in/company/INFY/ or .../INFY/consolidated/, with or without https:// and www. A link that ends in /consolidated/ keeps its consolidated figures whatever financialsType says, so one run can mix both kinds.
  • Screens: any public screen, https://www.screener.in/screens/343087/fii-buying/, read in the screen's own order (screener.in sorts screens for its members only, so a ?sort= on a screen link is dropped).
  • Sectors and industries: https://www.screener.in/market/IN03/ (Energy) down to the narrowest industry, https://www.screener.in/market/IN08/IN0801/IN080101/IN080101001/.
  • Indices: https://www.screener.in/company/NIFTY/, .../CNX500/ (Nifty 500), .../1001/ (BSE Sensex): the link of an index returns its constituents.
  • Sorted lists: sort a sector or an index on screener.in and copy the link, for example https://www.screener.in/market/IN03/?sort=return+on+capital+employed&order=desc; the companies come in that order.

What data can you extract from screener.in?

One row per company, 74 top-level fields in seven groups:

GroupFields
Identityid, url, name, symbol, nseCode, bseCode, financialsType
Profileabout, keyPoints, website, logoUrl, broadSector, sector, broadIndustry, industry, indices, pros, cons
Price and ratioscurrentPrice, priceChangePercent, marketCapCr, high52Week, low52Week, pe, bookValue, dividendYield, roce, roe, faceValue
GrowthsalesGrowth10y, salesGrowth5y, salesGrowth3y, salesGrowthTtm, profitGrowth10y, profitGrowth5y, profitGrowth3y, profitGrowthTtm, priceCagr10y, priceCagr5y, priceCagr3y, priceCagr1y, roe10y, roe5y, roe3y, roeLastYear
Latest figureslatestQuarter, quarterSales, quarterNetProfit, quarterEps, salesTtm, netProfitTtm, epsTtm, shareholdingAsOf, promoterHolding, fiiHolding, diiHolding, governmentHolding, publicHolding, shareholdersCount
Statements and peersquarterlyResults, profitLoss, balanceSheet, cashFlow, ratios, shareholding, shareholdingYearly, peers
Documents and metaannouncements, annualReports, creditRatings, concalls, searchQuery, sourceUrl, scrapedAt

How deep the history goes, on the Infosys row of our default run: 13 quarters of results (Sep 2023 to Sep 2026), 12 years of profit and loss plus a TTM column (Mar 2015 to TTM), 13 balance sheet columns, 12 years of cash flow and of efficiency ratios, 12 quarters and 11 years of shareholding, 6 peers, the 5 latest announcements, 15 annual reports, 6 credit ratings and 41 concall entries. Across the 10 companies of that run: 56 peer rows, 150 annual reports, 60 credit ratings and 484 concall entries.

Usability facts:

  • Money is in Rs. crore, as screener.in shows it (marketCapCr, statement lines, peer figures). Ratios, growth and holdings are percentages as plain numbers (roce: 40 means 40 %).
  • Every number is a number: 4,71,168 becomes 471168, -2.03% becomes -2.03. A figure the page leaves blank is null, never 0 or an empty text.
  • Statement periods are dates (2026-09-30 for the quarter ending September 2026), the trailing twelve months column is TTM, and each period keeps screener.in's own label (Sep 2026).
  • Metric keys follow the page's row names in camelCase: sales, operatingProfit, opmPercent, netProfit, eps for most companies; banks and lenders report revenue, financingProfit, financingMarginPercent, grossNpaPercent instead, and the flat quarterSales and salesTtm read their revenue.
  • id (screener's company id) and url are stable. Announcement, annual report and concall links point to the exchanges and the companies themselves and stay valid as long as those documents stay online. logoUrl is a screener.in image link.
  • Dates are RFC 3339: announcements carry their exact time in UTC, credit ratings their day, concalls their month.

Output example

One real row from our default run (Infosys, 3 Nov 2026). Arrays are cut to their first or latest entry here; the dataset keeps them whole.

{
"id": "1489",
"url": "https://www.screener.in/company/INFY/consolidated/",
"name": "Infosys Ltd",
"symbol": "INFY",
"nseCode": "INFY",
"bseCode": "500209",
"financialsType": "consolidated",
"about": "Infosys Ltd provides consulting, technology, outsourcing and next-generation digital services to enable clients to execute strategies for their digital transformation. It is the 2nd largest Information Technology company in India behind TCS.",
"keyPoints": "Digital Services: It comprises of services and solution offerings of the group that enables clients to transform their businesses. It includes offerings that enhance customer experience, leverage AI-based analytics and big data, engineer digital products and IoT, modernize legacy tech systems, migrate to cloud applications and implement advanced cyber-security systems.",
"website": "http://www.infosys.com",
"logoUrl": "https://cdn-media.screener.in/company-logos/thumbnails/7de4874ba9c3ad58c34e6b29.webp",
"broadSector": "Information Technology",
"sector": "Information Technology",
"broadIndustry": "IT - Software",
"industry": "Computers - Software & Consulting",
"indices": ["BSE Sensex", "Nifty 50", "BSE 500"],
"pros": ["Company is almost debt free.", "Stock is providing a good dividend yield of 4.13%."],
"cons": ["Promoter holding is low: 13.9%"],
"currentPrice": 1158,
"priceChangePercent": -0.4,
"marketCapCr": 470072,
"high52Week": 1728,
"low52Week": 980,
"pe": 14.8,
"bookValue": 244,
"dividendYield": 4.14,
"roce": 40,
"roe": 31.9,
"faceValue": 5,
"salesGrowth10y": 11,
"salesGrowth5y": 12,
"salesGrowth3y": 7,
"salesGrowthTtm": 12,
"profitGrowth10y": 8,
"profitGrowth5y": 9,
"profitGrowth3y": 8,
"profitGrowthTtm": 12,
"priceCagr10y": 9,
"priceCagr5y": -7,
"priceCagr3y": -6,
"priceCagr1y": -22,
"roe10y": 28,
"roe5y": 31,
"roe3y": 31,
"roeLastYear": 32,
"latestQuarter": "2026-09-30",
"quarterSales": 49244,
"quarterNetProfit": 7838,
"quarterEps": 19.28,
"salesTtm": 189336,
"netProfitTtm": 30788,
"epsTtm": 75.8,
"shareholdingAsOf": "2026-09-30",
"promoterHolding": 13.9,
"fiiHolding": 27.44,
"diiHolding": 42.66,
"governmentHolding": 0.2,
"publicHolding": 15.59,
"shareholdersCount": 2948075,
"quarterlyResults": [
{ "period": "2026-09-30", "label": "Sep 2026", "sales": 49244, "expenses": 37555, "operatingProfit": 11689, "opmPercent": 24, "otherIncome": 848, "interest": 115, "depreciation": 1359, "profitBeforeTax": 11063, "taxPercent": 29, "netProfit": 7838, "eps": 19.28 }
],
"profitLoss": [
{ "period": "TTM", "label": "TTM", "sales": 189336, "expenses": 144437, "operatingProfit": 44899, "opmPercent": 24, "otherIncome": 2841, "interest": 439, "depreciation": 5184, "profitBeforeTax": 42117, "taxPercent": null, "netProfit": 30788, "eps": 75.8, "dividendPayoutPercent": null }
],
"balanceSheet": [
{ "period": "2026-09-30", "label": "Sep 2026", "equityCapital": 2026, "reserves": 97051, "borrowings": 8525, "otherLiabilities": 55878, "totalLiabilities": 163480, "fixedAssets": 38536, "cwip": 423, "investments": 22151, "otherAssets": 102370, "totalAssets": 163480 }
],
"cashFlow": [
{ "period": "2026-03-31", "label": "Mar 2026", "cashFromOperatingActivity": 33986, "cashFromInvestingActivity": 3546, "cashFromFinancingActivity": -39786, "netCashFlow": -2254, "freeCashFlow": 31259, "cfoToEbitdaPercent": 101 }
],
"ratios": [
{ "period": "2026-03-31", "label": "Mar 2026", "debtorDays": 72, "inventoryDays": null, "daysPayable": null, "cashConversionCycle": 72, "workingCapitalDays": 33, "rocePercent": 40 }
],
"shareholding": [
{ "period": "2026-09-30", "label": "Sep 2026", "promoters": 13.9, "fiis": 27.44, "diis": 42.66, "government": 0.2, "public": 15.59, "others": 0.21, "noOfShareholders": 2948075 }
],
"shareholdingYearly": [
{ "period": "2026-09-30", "label": "Sep 2026", "promoters": 13.9, "fiis": 27.44, "diis": 42.66, "government": 0.2, "public": 15.59, "others": 0.21, "noOfShareholders": 2948075 }
],
"peers": [
{ "rank": 1, "name": "TCS", "url": "https://www.screener.in/company/TCS/consolidated/", "symbol": "TCS", "currentPrice": 2521.35, "pe": 16.69, "marketCapCr": 912246.49, "dividendYield": 2.54, "netProfitQtr": 13934, "qtrProfitVarPercent": 7.41, "salesQtr": 73188, "qtrSalesVarPercent": 11.23, "roce": 63.03 }
],
"announcements": [
{ "title": "Infosys Announces Expansion Of Pocharam Development Center In Hyderabad", "summary": "Infosys expands Pocharam Hyderabad center with 1.1 million sq. ft. block and 10,000 seats.", "date": "2026-10-30T13:22:32Z", "url": "https://www.bseindia.com/stockinfo/AnnPdfOpen.aspx?Pname=de1d0c27-5ad6-474d-b3b4-44084de360c0.pdf" }
],
"annualReports": [
{ "title": "Annual Report 2026", "year": 2026, "source": "bse", "url": "https://www.bseindia.com/xml-data/corpfiling/AttachHis/19dd605c-2b6b-4084-8dca-9d578a3eb7a0.pdf" }
],
"creditRatings": [
{ "title": "Rating update", "date": "2026-06-26", "agency": "crisil", "url": "https://www.crisil.com/mnt/winshare/Ratings/RatingList/RatingDocs/InfosysLimited_June%2026_%202026_RR_398312.html" }
],
"concalls": [
{ "period": "Oct 2026", "month": "2026-10", "transcriptUrl": "https://www.bseindia.com/stockinfo/AnnPdfOpen.aspx?Pname=7982fc61-7765-4981-ab3d-6aec36ba2137.pdf", "pptUrl": null, "recordingUrl": "https://www.infosys.com/content/dam/infosys-web/en/audio/mp3/investors/q2-fy27-earningscall.mp3" }
],
"searchQuery": null,
"sourceUrl": null,
"scrapedAt": "2026-11-03T04:01:24Z"
}

Advanced usage

Track FII and DII moves across the Nifty 50 every quarter

Schedule this input after each results season. Every row carries 12 quarters of shareholding, so one run gives you the trend, and the "Growth and ownership" view lines up promoter and FII holding next to growth.

{
"startUrls": [{ "url": "https://www.screener.in/company/NIFTY/" }],
"maxItems": 50,
"includePeers": false
}

Build a sector dataset for a valuation model

A sector page lists every company screener.in files under it; each row brings 12 years of profit and loss, balance sheet and cash flow, ready for a DCF or a ratio screen. The Energy page listed 64 companies in our test.

{
"startUrls": [{ "url": "https://www.screener.in/market/IN03/" }],
"maxItems": 100
}

Rank a sector by return on capital

Sort a sector or an index on screener.in, copy the link, and the run follows that order. In our test this Energy link returned Rajasthan Securities (ROCE 78.6), Castrol India (60.3) and Coal India (35) first.

{
"startUrls": [{ "url": "https://www.screener.in/market/IN03/?sort=return+on+capital+employed&order=desc" }],
"maxItems": 10
}

Read parent-only figures for holding companies

Holding companies and conglomerates look very different consolidated and standalone. Ask for standalone figures and compare them with a consolidated run of the same list.

{
"companyIds": ["BAJFINANCE", "BAJAJFINSV", "TATAINVEST", "RELIANCE"],
"financialsType": "standalone"
}

Feed an LLM or a newsletter with the latest filings

The rows carry the 5 latest exchange announcements with their one-line summary and exact time, the annual reports and the concall transcripts. Run a watchlist each morning and pass announcements to your assistant or your digest.

{
"companyIds": ["INFY", "TCS", "HDFCBANK", "RELIANCE", "ITC", "LT", "SUNPHARMA", "MARUTI"],
"includePeers": false
}

FAQ

What is screener.in? Screener.in is one of India's most used stock research websites. It shows, for every company listed on the NSE and the BSE, its price and key ratios, ten years of financial statements, the shareholding pattern, peers and filings, and it lets investors build and share stock screens.

Do I need a screener.in account? No. The actor reads the public company pages, public screens, sector pages and index pages that anyone can open. No login, no API key.

What does one row contain? One company: identity and codes, profile and sector path, price and key ratios, growth rates, the latest quarter and TTM figures, the latest shareholding, then the full quarterly results, profit and loss, balance sheet, cash flow, efficiency ratios, quarterly and yearly shareholding, peers, announcements, annual reports, credit ratings and concalls. 71 fields were filled on at least half the rows of our default run.

Can I run a free-text screen query such as "Market Capitalization > 50000"? Not directly: screener.in only runs free-text queries for logged-in users. Build the query on screener.in, save it as a public screen, and paste its link in startUrls. Any sector page or index page also works as a ready-made list.

How many companies can I get in one run? There is no fixed limit: maxItems decides. A search returns up to 8 companies per name, a list link as many as it holds (98 for the FII Buying screen, 64 for the Energy sector, 50 for the Nifty 50). In our tests a company took about 1.2 seconds without peers and 2.3 seconds with them.

Why are some fields null? Because screener.in shows nothing there for that company. Banks and widely held companies (HDFC Bank, ICICI Bank, ITC, Larsen & Toubro) have no promoter, so promoterHolding is null; a company listed less than 10 years ago has no 10-year growth; a suspended stock has no market cap. A blank figure is null, never 0.

Consolidated or standalone: which figures do I get? Consolidated by default, the group-wide figures most analysts use. Companies that file standalone results only are read standalone automatically and say so in financialsType. Set financialsType to standalone for parent-only figures.

How fresh is the data? Live: every run reads the pages at that moment. Prices follow screener.in's own update (the close price outside market hours), statements change when a company files its results, shareholding after each quarter.

Can I mix symbols, names, searches and links in one run? Yes. The run reads company IDs first, then searches, then links, and stops at maxItems. A company found twice (a symbol and a screen, say) is saved once.

Are the links permanent? The screener.in url and the id are stable. Document links (announcements, annual reports, concall transcripts) point to the exchanges and companies and stay valid as long as they keep those files online.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐ŸŽฌ Video

๐Ÿ“ฐ News

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available data from screener.in. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with screener.in's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). The output describes listed companies and their public filings; it holds no personal data beyond what companies publish about themselves. The data returned is informational and is not investment advice; verify it against the exchange filings before any regulated use.

Built for equity analysts, quant researchers, fintech builders and financial writers who need screener.in's fundamentals as data, not as tabs.