Identifying potential stocks in the capital market requires analysis of multiple factors including trading activity, market participation, investor behavior, and growth potential. A single indicator is often insufficient because stock performance is influenced by transaction value, liquidity, institutional activity, and company growth characteristics.
This project develops a Smart Money IDX Stock Screener using IDX API integration to analyze Indonesian stock market opportunities. The system combines several analytical components including:
Top market activity analysis
Bandar distribution analysis
Multibagger stock screening
The objective of this system is to transform raw market data into structured information that can help identify active stocks, evaluate market participant behavior, and screen potential high-growth candidates.
The system is developed using Python with API-based data retrieval, Pandas for data processing, and automated scoring methods to organize stock candidates based on market activity and investment potential.
The first stage of the system prepares the required libraries and IDX API configuration. The system uses Python libraries including Requests, Pandas, NumPy, and JSON for API communication and data processing.
Cell 1 — Import Library and API Configuration
import requests
import pandas as pd
import numpy as np
import json
BASE_URL = "https://indonesia-stock-exchange-idx.p.rapidapi.com"
HEADERS = {
"Content-Type": "application/json",
"x-rapidapi-host": "indonesia-stock-exchange-idx.p.rapidapi.com",
"x-rapidapi-key": "YOUR_API_KEY"
}This cell initializes the analysis environment and establishes the connection between Python and IDX API services.
The second stage retrieves top stock market activity data. The API collects information based on investor type, market type, transaction period, and total transaction value. The obtained data is converted into a structured DataFrame and normalized into numerical values including transaction value, lot volume, trading frequency, and average price.
Cell 2 — Top Stock Market Activity Analysis
url = BASE_URL + "/api/market-detector/top-stock"
params = {
"page":1,
"investorType":"INVESTOR_TYPE_ALL",
"start":"2026-01-05",
"end":"2026-01-05",
"marketType":"MARKET_TYPE_ALL",
"valueType":"VALUE_TYPE_TOTAL"
}
response = requests.get(
url,
headers=HEADERS,
params=params
)
top_stock = response.json()
df_top = pd.DataFrame(
top_stock["data"]["data"]["total"]
)
df_top["value_raw"] = df_top["value"].apply(
lambda x:int(x["raw"])
)
df_top["lot_raw"] = df_top["lot"].apply(
lambda x:int(x["raw"])
)
df_top["frequency_raw"] = df_top["frequency"].apply(
lambda x:int(x["raw"])
)
df_top["average_price"] = df_top["average"].apply(
lambda x:int(x["raw"])
)
df_top.head(10)This process generates a market activity dataset that represents stocks with high transaction activity based on value, frequency, and trading volume.
The third stage performs bandar distribution analysis. The system selects the top 10 stocks based on transaction activity and retrieves bandar distribution information for each stock using the IDX API. This analysis is used to evaluate market participant behavior and potential accumulation or distribution activity.
Cell 3 — Bandar Distribution Analysis
stock_list = (
df_top["code"]
.head(10)
.tolist()
)
bandar_data=[]
for stock in stock_list:
url = BASE_URL + f"/api/analysis/bandar/distribution/{stock}"
params = {
"days":7
}
response = requests.get(
url,
headers=HEADERS,
params=params
)
result=response.json()
bandar_data.append(
{
"code":stock,
"bandar_analysis":result
}
)
df_bandar=pd.DataFrame(bandar_data)
df_bandar.head()This cell provides additional market behavior information by connecting high-activity stocks with bandar distribution analysis.
The fourth stage performs multibagger stock screening. The system accesses the IDX multibagger scanning endpoint and applies filtering parameters including minimum score, sector selection, and maximum number of results. The output is converted into a DataFrame containing potential stock candidates.
Cell 4 — Multibagger Stock Scanner
url = BASE_URL + "/api/analysis/retail/multibagger/scan"
params = {
"min_score":30,
"sector":"Keuangan",
"max_results":10
}
response = requests.get(
url,
headers=HEADERS,
params=params
)
multi = response.json()
df_multi = pd.DataFrame(
multi["data"]["candidates"]
)
df_multi.head()This module identifies potential growth stocks based on multibagger scoring criteria provided by the API.
The final stage creates a stock analysis dashboard by ranking market activity and multibagger candidates. The market activity score is calculated by comparing each stock transaction value against the highest transaction value in the dataset. Meanwhile, multibagger candidates are sorted based on their multibagger score.
Cell 5 — Final Stock Analysis Dashboard
market_rank = df_top.copy()
market_rank["market_score"] = (
market_rank["value_raw"]
/
market_rank["value_raw"].max()
*
100
)
market_rank = market_rank.sort_values(
"market_score",
ascending=False
)
print("TOP MARKET ACTIVITY")
display(
market_rank[
[
"code",
"average_price",
"value_raw",
"frequency_raw",
"market_score"
]
].head(10)
)
multi_rank = df_multi.copy()
if "symbol" in multi_rank.columns:
multi_rank = multi_rank.rename(
columns={
"symbol":"code"
}
)
multi_rank = multi_rank.sort_values(
"multibagger_score",
ascending=False
)
print("TOP MULTIBAGGER CANDIDATE")
display(
multi_rank[
[
"code",
"name",
"current_price",
"multibagger_score",
"risk_level"
]
]
)The dashboard provides a simplified overview of the most active stocks and potential multibagger candidates based on market activity and API-based scoring.

Conclusion
This project successfully developed a Smart Money IDX Stock Screener using IDX API integration to analyze Indonesian stock market opportunities. The system combines market activity analysis, bandar distribution evaluation, and multibagger screening into a structured analytical workflow.
The market activity module identifies stocks with significant trading activity based on transaction value, lot volume, trading frequency, and average price. The bandar distribution module provides additional insight into market participant behavior by analyzing selected high-activity stocks.
The multibagger screening module helps identify potential growth candidates based on predefined scoring parameters and risk classification. By integrating these analytical components, the system provides investors with a more structured approach to stock selection.
However, this system should be considered as an analytical support tool rather than an automatic investment recommendation. Additional evaluation using financial statements, valuation analysis, business fundamentals, and market conditions is still required before making investment decisions.
Overall, the Smart Money IDX Stock Screener demonstrates the potential of API-based financial analytics to support data-driven stock market analysis and investment research.
