OHLC.dev editorialIDX

Indonesia Stock Exchange Analysis Using IDX API for Corporate Actions and Economic Events

This article presents an Indonesia Stock Exchange analysis system using IDX API data processing to analyze corporate actions RUPS stock split activities and economic events.

September 7, 20264 min readRafatar
Indonesia Stock Exchange Analysis Using IDX API for Corporate Actions and Economic Events

Corporate actions and economic events are important components in stock market analysis because they can influence investor decisions and market expectations. Information such as General Meeting of Shareholders (RUPS), stock split activities, and economic calendar events provides additional insight into company activities and external factors affecting market conditions.

However, processing large amounts of stock market information manually can be inefficient and time-consuming. Therefore, an automated data processing approach is required to collect, organize, and analyze market-related information.

This project develops an Indonesia Stock Exchange Corporate Action and Economic Analysis System using IDX API data. The system retrieves corporate action and economic calendar information, processes the data using Python, and generates analytical outputs through structured datasets and visualization.

The developed system focuses on three main analysis areas:

  • RUPS activity analysis

  • Stock split activity analysis

  • Economic calendar event analysis

By utilizing API-based data processing, the system provides a structured approach for monitoring corporate activities and economic events related to the Indonesian stock market.


System Implementation

Cell 1 — Import Library and Retrieve IDX API Data

# ======================================
# CELL 1
# Konfigurasi API IDX RapidAPI
# ======================================


import requests
import pandas as pd
import matplotlib.pyplot as plt



# Masukkan API KEY Anda disini

API_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": API_KEY
}



# Request API


rups_response = requests.get(
    f"{BASE_URL}/api/calendar/rups",
    headers=HEADERS
)



split_response = requests.get(
    f"{BASE_URL}/api/calendar/stock-split",
    headers=HEADERS
)



economic_response = requests.get(
    f"{BASE_URL}/api/calendar/economic",
    headers=HEADERS
)



# Convert JSON


rups = rups_response.json()

stock_split = split_response.json()

economic = economic_response.json()



print("API Connection Status")

print("=====================")



print("RUPS :", rups_response.status_code)

print("Stock Split :", split_response.status_code)

print("Economic :", economic_response.status_code)

This cell initializes Python libraries and establishes the connection with IDX RapidAPI. The system retrieves three datasets including RUPS, stock split, and economic calendar information.


Cell 2 — Extract Dataset API IDX

# ======================================
# CELL 2
# Extract Dataset API IDX
# ======================================


# Extract data RUPS


df_rups = pd.DataFrame(
    rups["data"]["data"]["rups"]
)



print("Jumlah Data RUPS:")

print(df_rups.shape)



print("\nKolom RUPS:")

print(df_rups.columns.tolist())



display(df_rups.head())

This cell converts the RUPS API response into a Pandas DataFrame. The dataset structure is checked by displaying the number of records, available columns, and sample data.


Cell 3 — RUPS Activity Analysis

# ======================================
# CELL 3
# Analisis Agenda RUPS
# ======================================


# Hitung jumlah RUPS tiap emiten


top_rups = (
    df_rups["company_symbol"]
    .value_counts()
    .head(10)
)



print("10 Emiten dengan Agenda RUPS Terbanyak")

display(top_rups)



# Visualisasi

plt.figure(figsize=(10,5))


top_rups.plot(
    kind="bar"
)



plt.title(
    "Top 10 Emiten Berdasarkan Agenda RUPS"
)



plt.xlabel(
    "Kode Saham"
)



plt.ylabel(
    "Jumlah RUPS"
)



plt.xticks(rotation=45)


plt.show()

This cell analyzes RUPS frequency by company symbol. The system identifies companies with the highest number of shareholder meeting agendas and visualizes the results using a bar chart.


Cell 4 — Stock Split Analysis

# ======================================
# DEBUG STOCK SPLIT
# ======================================

df_split = pd.DataFrame(
    stock_split["data"]["data"]["stocksplit"]
)



print("Ukuran Data:")

print(df_split.shape)



print("\nKolom Stock Split:")

print(df_split.columns.tolist())



display(df_split.head())



# ======================================
# Analisis Emiten Stock Split
# ======================================


# cek kolom

if "company_symbol" in df_split.columns:


    split_analysis = (
        df_split["company_symbol"]
        .value_counts()
        .head(10)
    )


    print(
        "10 Emiten dengan Aktivitas Stock Split Terbanyak"
    )


    display(split_analysis)



    plt.figure(figsize=(10,5))


    split_analysis.plot(
        kind="bar"
    )


    plt.title(
        "Top 10 Emiten Stock Split IDX"
    )


    plt.xlabel(
        "Kode Saham"
    )


    plt.ylabel(
        "Jumlah Stock Split"
    )


    plt.xticks(rotation=45)


    plt.show()



else:


    print(
        "Kolom company_symbol tidak tersedia"
    )

This cell analyzes stock split activities by company. The system checks the available dataset structure, calculates the number of stock split events for each company, and visualizes the companies with the highest activity.


Cell 5 — Economic Calendar Analysis

# ======================================
# CELL 5
# Analisis Economic Calendar IDX
# ======================================


# Extract data economic


df_economic = pd.DataFrame(
    economic["data"]["data"]["economic"]
)



print("Jumlah Data Economic:")

print(df_economic.shape)



print("\nKolom Economic:")

print(df_economic.columns.tolist())



display(df_economic.head())



# ======================================
# Analisis Jenis Economic Event
# ======================================


event_column = "econcal_item"



# Hitung frekuensi event ekonomi


economic_analysis = (
    df_economic[event_column]
    .value_counts()
    .head(15)
)



print("15 Economic Event Terbanyak")

display(economic_analysis)



# Visualisasi


plt.figure(figsize=(12,5))



economic_analysis.plot(
    kind="bar"
)



plt.title(
    "15 Economic Event Terbanyak"
)



plt.xlabel(
    "Economic Indicator"
)



plt.ylabel(
    "Jumlah Event"
)



plt.xticks(
    rotation=70
)



plt.show()

This cell analyzes economic calendar data by identifying the most frequent economic events. The results are summarized and visualized to provide an overview of economic indicators available in the IDX calendar.


Conclusion

This project successfully developed an Indonesia Stock Exchange Corporate Action and Economic Analysis System using API-based data processing. The system integrates IDX market information and converts raw API responses into structured datasets for further analysis.

The developed system analyzes three important market information categories:

  1. RUPS Analysis

    The system identifies companies with the highest number of shareholder meeting agendas, providing insight into corporate activities and potential market events.

  2. Stock Split Analysis

    The system evaluates stock split activities by company and visualizes companies with the highest frequency of stock split events.

  3. Economic Calendar Analysis

    The system processes economic event data to identify frequently occurring economic indicators that may influence market conditions.

The implementation demonstrates how Python-based financial data analytics can improve the efficiency of monitoring corporate actions and economic information. By combining API integration, data processing, and visualization, the system provides a structured approach for analyzing Indonesia Stock Exchange activities.

However, this system is designed as an analytical support tool and should not be considered as a direct investment recommendation. Further evaluation using financial statements, valuation analysis, market sentiment, and other investment indicators is required before making investment decisions.