Skip to Content

Technical screeners

This API returns the Nifty 500 stocks that show a given MACD or moving-average crossover, or an overbought or oversold Money Flow Index (MFI), on end-of-day data.

USE CASE

Find Nifty 500 stocks with a fresh Golden Crossover or an oversold MFI, to build a swing-trading watchlist.

Note

This API takes only screener_id. The stocks scanned, the columns returned and the sort are fixed. Sending any other parameter returns HTTP 400.

Details

  • Send your App ID and access token in the Authorization header as APP_ID:ACCESS_TOKEN. Only GET is supported.
  • This API is part of the Data APIs and works with access tokens of all app types (100, 102 and 200).
  • There are 6 Technical screeners: Bullish MACD Crossover (MACD line crosses above the signal line), Bearish MACD Crossover (MACD line crosses below the signal line), Golden Crossover (50-day moving average crosses above the 200-day), Death Crossover (50-day crosses below the 200-day), Overbought by MFI and Oversold by MFI.
  • Take the screener_id from screeners_technical in the Configuration API.
  • Every screener scans the Nifty 500 (iw010).
  • The columns depend on the screener. symbolticker is always first, then the columns in the table below.
  • Rows are sorted by 1-day change: highest first for Bullish MACD Crossover, Golden Crossover and Oversold by MFI; lowest first for Bearish MACD Crossover, Death Crossover and Overbought by MFI. So Overbought by MFI starts with the stocks that fell the most today, and Oversold by MFI with the stocks that rose the most. The 1-day change itself is not returned.
  • The response holds header (one object per column: unique_key, description, data_type), body (one array per row, values in header order), total_count (number of rows returned) and last_update_time (Unix epoch seconds). body is empty when no stock qualifies.
  • How fresh the data is: Technical screeners work on end-of-day data. Until 15:30 IST they return the previous trading day's end-of-day results; these do not change during the session, and last_update_time shows 09:15 IST of the current day. At 15:30 IST the results are replaced with the current day's, and last_update_time shows 15:30. The exception is mcap_q, which follows the live price during the session.

Plan limits

Standard plan

  • 50 requests per day

Prime plan

  • As per Prime API rate limits: 10 requests per second, 500 per minute and 5,00,000 per day

For rate limits and all other plan details, see Plans & rate limits.

Request Attributes

AttributeData TypeDescription
screener_id*stringMandatory. Screener id from the screeners_technical array. Only the screener_id query parameter is accepted.

Response Attributes

AttributeData TypeDescription
sstringok / error
codeintThis is the code to identify specific responses
messagestringThis is the message to identify the specific error responses
dataobjectResult payload with header, body, error, and last_update_time

Columns

ScreenerColumns after symbolticker
Bullish MACD Crossover, Bearish MACD Crossovertoday_changes__macd_x_centre (boolean: MACD crossed the centre line today), macd (day MACD), macdsignal (day MACD signal line)
Golden Crossover, Death Crossoversma_50_sma_200_diff (% distance of the 50-day SMA over the 200-day SMA), sma_50 (day SMA 50), sma_200 (day SMA 200), mcap_q (market cap, ₹)
Overbought by MFI, Oversold by MFImfi (day MFI), mcap_q (market cap, ₹)

Screener ids

Take the id from this table or from Configuration.

Screenerscreener_id
Bullish MACD Crossovermacd_crossed_above_signal_line
Bearish MACD Crossovermacd_crossed_below_signal_line
Golden Crossovergolden_crossover_end_of_day
Death Crossoverdeath_crossover_end_of_day
Overbought by MFImfi_overbought
Oversold by MFImfi_oversold

Example request

screener_id=mfi_overbought

Errors

HTTPcodeWhenmessage
400-50screener_id missingscreener_id is required
400-50screener_id unknown, or taken from another Screeners APIinvalid screener_id
400-50Any other parameterunsupported query parameter: NAME
401-16Missing or wrong tokenCould not authenticate the user
405-50Method other than GETmethod not allowed; use GET
429Rate limit crossedWait, then retry

In the message above, NAME stands for the parameter you sent.

Notes

  • Unlike Standard screeners, the response does not return the applied settings or fetch_time.
Last updated on