Screener.in (email login)
Under maintenancePricing
Pay per usage
Screener.in (email login)
Under maintenanceLogs into Screener.in with email + password and extracts company details (getstockdetails) or runs screens (runQuery).
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Aditya Rokhade
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
4
Monthly active users
10 days ago
Last modified
Categories
Share
Screener.in custom Apify actor
A drop-in replacement for the third-party shashwattrivedi~screener-in actor,
which broke when Screener.in moved to email-based login. This actor logs in
with your registered email + password and exposes the same two modes with the
same input/output contract.
Why the old actor broke
Screener.in migrated accounts to email login. The login form still posts a field
named username, but it now expects your registered email (e.g.
sacbhar@gmail.com), not a legacy handle. The old actor was sending the wrong
credential, so logins failed.
Modes
getstockdetails (no login required)
{ "mode": "getstockdetails", "url": "https://www.screener.in/company/RELIANCE/" }
Returns:
{"url": "...","name": "Reliance Industries Ltd","shareholding": { "quarterly": [ { "": "FIIs", "Jun 2026": 17.19, ... } ], "yearly": [...] },"ratios": { "Market Cap": "₹ 15,80,194 Cr.", "Current Price": "₹ 1,168", ... },"metrics": { "Name": "...", "CMP": "...", "Mar Cap": "...", "FII Hold": 17.19, "DII Hold": 21.1, "No of Share Holders": 4651863, ... }}
runQuery (requires login)
{"mode": "runQuery","queryString": "Market Capitalization > 50000 AND Price to Earning < 20","username": "your_email@example.com","password": "your_password"}
Returns an array of company rows. Each row has Screener's own column headers
plus short aliases matching the old actor: Name, CMP, Mar Cap, ROCE,
ROCE 10Yr, Debt / Eq, Pledged, Prom Hold, Profit Prev 12M,
Profit growth.
The exact column set returned by
runQueryis whatever your logged-in account's saved screen is configured to show. The account used here already has the needed columns configured.
How login works (implementation detail)
Each run logs in fresh — no token caching:
GET /login/→ capture thecsrftokencookie and thecsrfmiddlewaretokenhidden input from the HTML.POST /login/withReferer: https://www.screener.in/login/, the CSRF cookie, and bodycsrfmiddlewaretoken,next=,username=<email>,password=<password>.- Server sets a
sessionidcookie — that is what authenticates subsequent requests. Screen results are read viaGET /screen/raw/?query=...&page=N.
The CSRF token is not tied to the login session and is never reused between runs.
Local test (no Apify runtime)
cd apify-screenernpm installnode test-local.mjs # defaults to RELIANCEnode test-local.mjs https://www.screener.in/company/TCS/
Deploy to Apify
npm install -g apify-cli # if you don't have itapify login # paste your Apify API tokencd apify-screenerapify push # builds the Docker image and uploads the actor
After apify push, note the actor ID shown (format: <your_username>~screener-in-custom),
then set it in the project config.js:
APIFY_ACTOR_ID: 'your_username~screener-in-custom',
screener.js needs no other changes — it already sends username
(SCREENER_USERNAME, your email) and password for runQuery, and url for
getstockdetails.
Security note
../config.js currently stores the Screener password and Apify tokens in
plaintext. Prefer passing them via Apify's secret inputs (the input schema marks
username/password as secret) or environment variables, and avoid committing
real credentials to source control.