Stock market movements are often influenced by specific events that can create potential trading opportunities. Corporate actions, shareholder meetings, dividends, right issues, and other market events may affect investor sentiment and market activity.
However, monitoring multiple market events manually can be inefficient. This project develops an IDX Trading Catalyst Scanner using IDX RapidAPI data to automatically collect, classify, and rank market catalysts.
The system integrates:
Market calendar monitoring
RUPS event detection
Corporate action classification
Impact scoring
Trading priority ranking
Automated Excel reporting
The project is developed using Python with Requests for API communication, Pandas for data processing, JSON normalization for API transformation, and Excel export for reporting.
The workflow consists of five main stages: API configuration, market calendar retrieval, RUPS analysis, stock symbol mapping, and catalyst intelligence generation.
Cell 1 — Import Library and API Configuration
The first cell establishes the IDX RapidAPI connection and creates a reusable API request function.
# ============================================
# CELL 1 : SETUP API IDX
# ============================================
import requests
import pandas as pd
import json
from datetime import datetime
RAPIDAPI_KEY = "YOUR_API_KEY"
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":
RAPIDAPI_KEY
}
def call_idx_api(endpoint, params=None):
url = BASE_URL + endpoint
response = requests.get(
url,
headers=HEADERS,
params=params
)
response.raise_for_status()
return response.json()
print("API IDX Connected")Cell 2 — Market Calendar Analysis
This cell retrieves today's IDX market calendar data and converts the JSON response into a structured DataFrame.
The calendar dataset becomes the initial source for identifying available market events.
# ============================================
# CELL 2 : MARKET CALENDAR TODAY
# ============================================
today_calendar = call_idx_api(
"/api/calendar/today"
)
print(
json.dumps(
today_calendar,
indent=2
)[:3000]
)
if isinstance(today_calendar, dict):
today_df = pd.json_normalize(
today_calendar
)
else:
today_df = pd.DataFrame(
today_calendar
)
print(
"Total Calendar Data:",
len(today_df)
)
today_df.head()Cell 3 — RUPS Event Analysis
This cell retrieves shareholder meeting information from IDX API.
RUPS data is analyzed because shareholder meetings can contain strategic company decisions that may influence market perception.
# ============================================
# CELL 3 : RUPS ANALYSIS
# ============================================
rups_data = call_idx_api(
"/api/calendar/rups"
)
print(
json.dumps(
rups_data,
indent=2
)[:3000]
)
if isinstance(rups_data, dict):
rups_df = pd.json_normalize(
rups_data
)
else:
rups_df = pd.DataFrame(
rups_data
)
print(
"Total RUPS Event:",
len(rups_df)
)
rups_df.head()Cell 4 — Stock Symbol Database
This cell retrieves stock symbol information used as a reference for company identification during catalyst scanning.
# ============================================
# CELL 4 : STOCK SYMBOL DATABASE
# ============================================
symbols = call_idx_api(
"/api/main/symbols",
params={
"range":10
}
)
print(
json.dumps(
symbols,
indent=2
)[:3000]
)
if isinstance(symbols, dict):
symbols_df = pd.json_normalize(
symbols
)
else:
symbols_df = pd.DataFrame(
symbols
)
print(
"Total Symbols:",
len(symbols_df)
)
symbols_df.head()Cell 5 — IDX Trading Catalyst Scanner Dashboard
The final cell combines market event data into a trading catalyst scanner.
Each event is classified into several categories:
Dividend
Right Issue
Stock Split
RUPS
Corporate Event
The system then assigns impact scores and converts them into trading priorities.
# ============================================
# CELL 5 : IDX TRADING CATALYST SCANNER
# ============================================
import pandas as pd
print("="*70)
print("IDX TRADING CATALYST SCANNER")
print("="*70)
# Combine corporate action and RUPS data
scanner = pd.DataFrame()
if "event_df_analysis" in globals():
scanner = pd.concat(
[
event_df_analysis,
rups_df
],
ignore_index=True
)
else:
scanner = rups_df.copy()
# Remove empty symbols
if "company_symbol" in scanner.columns:
scanner = scanner[
scanner["company_symbol"].notna()
]
# ============================================
# EVENT CLASSIFICATION
# ============================================
def classify_event(row):
text = str(row).lower()
if "dividend" in text:
return "DIVIDEND"
elif "right" in text:
return "RIGHT ISSUE"
elif "split" in text:
return "STOCK SPLIT"
elif "rups" in text:
return "RUPS"
else:
return "CORPORATE EVENT"
scanner["event_category"] = scanner.apply(
classify_event,
axis=1
)
# ============================================
# IMPACT SCORE
# ============================================
impact_score = {
"DIVIDEND":3,
"STOCK SPLIT":3,
"RIGHT ISSUE":2,
"RUPS":1,
"CORPORATE EVENT":1
}
scanner["impact_score"] = (
scanner["event_category"]
.map(impact_score)
.fillna(1)
)
# ============================================
# TRADING PRIORITY
# ============================================
def trading_priority(score):
if score >= 3:
return "HIGH"
elif score == 2:
return "MEDIUM"
else:
return "LOW"
scanner["priority"] = (
scanner["impact_score"]
.apply(trading_priority)
)
# ============================================
# DISPLAY RESULT
# ============================================
display(
scanner.sort_values(
"impact_score",
ascending=False
).head(30)
)
# ============================================
# EXPORT REPORT
# ============================================
scanner.to_excel(
"IDX_TRADING_CATALYST.xlsx",
index=False
)
print(
"Export completed: IDX_TRADING_CATALYST.xlsx"
)Conclusion
This project successfully develops an IDX Trading Catalyst Scanner using IDX RapidAPI data to identify and rank market events based on their potential trading impact.
The system integrates market calendar information, RUPS schedules, and corporate action events into an automated event intelligence workflow.
Through event classification and impact scoring, raw IDX market data can be transformed into a structured catalyst dashboard containing:
Company symbol
Event category
Impact score
Trading priority
The automated Excel export improves usability by providing a structured report for further monitoring.
However, this system should be considered as a market event screening tool, not a standalone trading decision system. Additional evaluation using financial fundamentals, valuation, technical analysis, liquidity, and market sentiment is still required.
Overall, the IDX Trading Catalyst Scanner demonstrates how API-based financial analytics can support automated event-driven stock market monitoring.
