Screener.in Indian Stock Fundamentals Scraper avatar

Screener.in Indian Stock Fundamentals Scraper

Pricing

from $0.84 / 1,000 results

Go to Apify Store
Screener.in Indian Stock Fundamentals Scraper

Screener.in Indian Stock Fundamentals Scraper

Indian stock fundamentals from Screener.in by NSE/BSE ticker: valuation ratios, up to 13 years of quarterly results, profit & loss, balance sheet, cash flow, ratio trends, shareholding pattern and recent announcements.

Pricing

from $0.84 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

11 days ago

Last modified

Share

Scrapes Indian stock fundamentals from Screener.in, the most widely used free fundamental-analysis tool for the Indian market: valuation ratios, up to 13 years of quarterly results, profit & loss, balance sheet, cash flow, ratio trends, shareholding pattern and recent stock-exchange announcements — by NSE or BSE ticker.


What you get

One STOCK row per ticker.

companyName · bseCode · nseCode · website · broadSector · sector · broadIndustry · industry · about (company description) · ratios (Market Cap, Current Price, High/Low, Stock P/E, Book Value, Dividend Yield, ROCE, ROE, Face Value) · quarterlyResults · profitAndLoss · balanceSheet · cashFlow · ratiosOverTime (Debtor Days, Inventory Days, ROCE %, and more, per period) · shareholdingPattern (Promoters/FIIs/DIIs/Public/Government % per quarter) · recentAnnouncements (title, PDF/link URL, date — up to 20)

Each of the six financial tables (quarterlyResults, profitAndLoss, balanceSheet, cashFlow, ratiosOverTime, shareholdingPattern) has the same shape:

{"periods": [...], "rows": {"<line item>": [<value per period>, ...]}}
.


Input

{
"tickers": ["RELIANCE", "TCS", "INFY"],
"consolidated": true,
"includeAnnouncements": true
}

There is no name search — a ticker IS the URL

screener.in/company/{TICKER}/ resolves directly, no search or disambiguation step. This is not a shortcut this actor takes: screener.in's own top-search-box query string (?q=) is robots.txt-disallowed, so there is no policy-compliant way to search by company name at all. An unrecognised ticker answers a genuine HTTP 404 (a small, distinct error page) — never a silently-wrong company.

consolidated changes which figures you get, not just formatting

Consolidated (includes subsidiaries) and standalone (parent company only) are genuinely different pages with genuinely different numbers — verified on Reliance Industries: consolidated FY2015 sales ₹374,372 Cr. vs standalone ₹328,013 Cr., same year, same company. consolidated: true (default) is the more complete figure for a typical conglomerate; set to false for the parent entity alone.


Read this before parsing the numbers

Figures are in Rs. Crores (1 crore = 10 million), Indian digit grouping — e.g. "17,72,762" for a market cap, not "1,772,762". Both conventions collapse to the same integer once commas are stripped, but this actor does not attempt that conversion: every table cell is kept as the exact string screener.in renders (percentages keep their trailing %, blank cells are "-", negative figures keep a leading -). Convert on your end rather than trust a silently-reformatted number — a value that looked like it meant one thing while actually meaning another is exactly the kind of trap this portfolio's actors are built to avoid, not reproduce.


Known limits

1. Peer comparison is not included. The #peers section is present in the page but carries zero rows server-side — the comparison table loads via a separate client-side call this actor does not reverse-engineer for v1 (a real feature, deferred rather than half-built).

2. Only the "Recent" announcements tab, not "Important" or full search. The default tab is server-rendered in the same page fetch (no extra request), but the other two tabs are separate AJAX calls not fetched here.

3. Expandable schedule breakdowns are not fetched. Some row labels on screener.in (e.g. "Sales" broken down by business segment) are expandable via a per-row AJAX call — an unbounded multiplier this actor does not chase; the top-level line item is what's returned.

4. Not every ticker was verified to have both a standalone and a consolidated version that meaningfully differ — a company with no subsidiaries would be expected to converge on the two, but this was checked only on a handful of large-cap tickers, not exhaustively.


Anti-bot posture

None observed. 8/8 TLS profiles clean, no interstitial. The actor still ships a rotating profile pool, a retry ladder and challenge-marker detection, and paces requests by default — a target being clean in local recon has not always meant the same from Apify's cloud egress elsewhere in this portfolio.

Policy

robots.txt (User-agent: *) names no ClaudeBot/anthropic-ai/GPTBot group. It disallows the site's own search query string (?q=), ?sort=, ?limit=, ?page=, /user/*, and /company/source/quarter/* — this actor never uses the search parameter (there is no policy-compliant way to, see above) and never touches the other disallowed paths.