{
  "openapi": "3.0.1",
  "info": {
    "title": "지니뮤직 차트·곡·앨범 스크래퍼 (Genie Music Chart API) – 재생수·청취자수",
    "description": "Get Genie Music (지니뮤직) charts as JSON: Korean music and K-pop realtime, daily, weekly and monthly TOP200, genre and past charts, with total plays, listeners, likes and credits per song. Song search, albums, artists. No login. $0.25/1K songs, 500 songs free monthly.",
    "version": "0.5",
    "x-build-id": "fGtrYbE36tdmfwvoa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/k-data-lab~genie-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-k-data-lab-genie-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/k-data-lab~genie-scraper/runs": {
      "post": {
        "operationId": "runs-sync-k-data-lab-genie-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/k-data-lab~genie-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-k-data-lab-genie-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "charts": {
            "title": "Genie charts (차트)",
            "type": "array",
            "description": "Which Genie Music charts to fetch; pick several if needed. Pass chart IDs: realtime (current TOP200, updated hourly), day (daily), week (weekly), month (monthly, last month by default). Leave empty to skip charts and only use the search, song, album and artist inputs below. Example: [\"realtime\"] or [\"day\",\"week\"]. 가져올 지니 차트를 고르세요 (여러 개 선택 가능). 실시간은 매시 갱신되는 현재 TOP200, 일간·주간은 지니에 공개된 가장 최근 차트, 월간은 지난달 차트입니다. 비워 두면 차트는 건너뛰고 아래 검색어·곡·앨범·아티스트만 가져옵니다. 차트 ID 목록으로 넘기세요: realtime(실시간 TOP200), day(일간), week(주간), month(월간). 예: [\"realtime\"] 또는 [\"day\",\"week\"].",
            "items": {
              "type": "string",
              "enum": [
                "realtime",
                "day",
                "week",
                "month"
              ],
              "enumTitles": [
                "Realtime TOP200 (실시간)",
                "Daily (일간)",
                "Weekly (주간)",
                "Monthly (월간)"
              ]
            },
            "default": []
          },
          "genres": {
            "title": "Genre (daily/weekly only) (장르)",
            "type": "array",
            "description": "Genre chart for the daily and weekly charts. Empty = overall TOP200. Each genre chart has up to 100 ranks, and each genre you pick fetches its own chart. The realtime and monthly charts have no genres. Pass genre codes. Example: [\"M0100\"] = K-pop/가요, [\"M0107\",\"M0300\"] = trot and OST. 일간·주간 차트의 장르. 비워 두면 전체 TOP200입니다. 장르 차트는 장르마다 TOP100까지 있습니다. 여러 장르를 고르면 장르마다 차트를 하나씩 가져옵니다. 실시간·월간 차트에는 장르가 없습니다 (지니가 제공하지 않음). 장르 코드 목록으로 넘기세요. 예: [\"M0100\"] = 가요, [\"M0107\",\"M0300\"] = 트롯·OST.",
            "items": {
              "type": "string",
              "enum": [
                "ALL",
                "M0100",
                "M0107",
                "M0200",
                "M0300",
                "M0400",
                "E0000",
                "M0500",
                "M0600",
                "M0700",
                "M0800",
                "M0900",
                "M1000"
              ],
              "enumTitles": [
                "All: TOP200 (전체) (ALL)",
                "K-pop / 가요 (M0100)",
                "Trot / 트롯 (M0107)",
                "POP (M0200)",
                "OST (M0300)",
                "JPOP (M0400)",
                "EDM (E0000)",
                "JAZZ (M0500)",
                "CLASSIC (M0600)",
                "New Age / 뉴에이지 (M0700)",
                "CCM (M0800)",
                "Kids / 동요·태교 (M0900)",
                "Other / 그 외 장르 (M1000)"
              ]
            }
          },
          "chartDate": {
            "title": "Past chart date (과거 차트 날짜)",
            "pattern": "^$|^\\d{4}-\\d{2}(-\\d{2})?$",
            "type": "string",
            "description": "Only for past charts; empty = latest chart. Daily: YYYY-MM-DD (2026-01-01). Weekly: any day of that week (2026-10-08). Monthly: YYYY-MM (2026-07). The realtime chart is always the current hour. 지난 차트를 가져올 때만 입력. 일간: YYYY-MM-DD (예: 2026-01-01). 주간: 그 주에 속한 아무 날짜 (예: 2026-10-08 → 그 주 월~일 차트). 월간: YYYY-MM (예: 2026-07). 비워 두면 최신 차트입니다. 실시간 차트는 항상 현재 시각입니다."
          },
          "maxResults": {
            "title": "Max songs per chart or search term (최대 곡 수)",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "Maximum songs for each chart or each search term. Limits: overall chart 200, genre chart 100, search 3,000. Example: 10 = TOP10, 100 = TOP100, 200 = full TOP200. 차트 하나 또는 검색어 하나당 최대 곡 수. 전체 차트는 200위, 장르 차트는 100위까지, 검색은 최대 3,000곡까지입니다. 예: 100 = TOP100, 200 = 전체 차트 TOP200, 10 = TOP10만.",
            "default": 100
          },
          "includeSongDetails": {
            "title": "Add total plays, listeners, likes and credits (곡 상세 포함)",
            "type": "boolean",
            "description": "Opens each song page to add likes, totalPlays, totalListeners, genre, duration, lyricists, composers, arrangers and Genie chart badges. Costs one song-details event per song (100 free each month) and makes the run slower. Example: true if you need play or listener counts, false if ranks are enough. API default: false. 차트·검색·아티스트 곡마다 곡 상세 페이지를 열어 좋아요 수, 전체 재생수, 전체 청취자수, 장르, 재생시간, 작사·작곡·편곡자, 차트 뱃지(예: '주간차트 10위 진입')를 추가합니다. 곡당 '곡 상세' 이벤트 요금이 추가되고 실행 시간이 길어집니다. 예: 재생수·청취자수가 필요하면 true, 순위만 필요하면 false (기본값).",
            "default": false
          },
          "searchKeywords": {
            "title": "Song search terms (곡 검색어)",
            "type": "array",
            "description": "Genie song search terms, in Genie search order, up to the max songs value per term. Korean names match best. Empty = no search. Example: [\"아이유\", \"에스파\"]. 지니 곡 검색어 (예: 아이유, 에스파, 밤양갱). 검색어마다 지니 검색 순서대로 최대 곡 수만큼 가져옵니다. 비워 두면 검색하지 않습니다. 예: [\"아이유\", \"에스파\"].",
            "items": {
              "type": "string"
            }
          },
          "songs": {
            "title": "Songs: ID or URL (곡)",
            "type": "array",
            "description": "Genie song IDs or song URLs; returns full details for each song (likes, plays, listeners, credits). Empty = skip. Example: [\"87034188\"]. 지니 곡 ID 또는 곡 링크 (예: 87034188, https://www.genie.co.kr/detail/songInfo?xgnm=87034188). 곡마다 상세 정보(좋아요·재생수·청취자수·작사·작곡)를 가져옵니다. 비워 두면 건너뜁니다. 예: [\"87034188\"].",
            "items": {
              "type": "string"
            }
          },
          "albums": {
            "title": "Albums: ID or URL (앨범)",
            "type": "array",
            "description": "Genie album IDs or album URLs; returns release date, label, agency, likes, intro text and tracklist. Empty = skip. Example: [\"88135998\"]. 지니 앨범 ID 또는 앨범 링크 (예: 88135998, https://www.genie.co.kr/detail/albumInfo?axnm=88135998). 발매일, 발매사, 기획사, 좋아요 수, 앨범 소개, 수록곡 목록을 가져옵니다. 비워 두면 건너뜁니다. 예: [\"88135998\"].",
            "items": {
              "type": "string"
            }
          },
          "artists": {
            "title": "Artists: ID or URL (아티스트)",
            "type": "array",
            "description": "Genie artist IDs or artist URLs; returns the artist profile, likes and song list. Empty = skip. Example: [\"67872918\"] = IU. 지니 아티스트 ID 또는 링크 (예: 67872918 = 아이유, https://www.genie.co.kr/detail/artistInfo?xxnm=67872918). 아티스트 정보와 좋아요 수, 그리고 곡 목록을 가져옵니다. 비워 두면 건너뜁니다. 예: [\"67872918\"].",
            "items": {
              "type": "string"
            }
          },
          "maxSongsPerArtist": {
            "title": "Max songs per artist (아티스트당 최대 곡 수)",
            "minimum": 0,
            "maximum": 3000,
            "type": "integer",
            "description": "Songs to fetch for each artist; 0 = profile only. Example: 50 (default). 아티스트마다 가져올 곡 수 (0 = 아티스트 정보만). 예: 50 (기본값), 아티스트 정보만 원하면 0.",
            "default": 50
          },
          "artistSongOrder": {
            "title": "Artist song order (아티스트 곡 정렬)",
            "enum": [
              "popular",
              "popular90",
              "popular7",
              "latest",
              "name"
            ],
            "type": "string",
            "description": "Order of the artist song list: popular (default, all time), popular90 (last 90 days), popular7 (last 7 days), latest, name. Example: \"latest\". 아티스트 곡 목록의 정렬 순서 (지니 아티스트 페이지와 같은 기준). popular = 인기순 (기본값), popular90 / popular7 = 최근 90일·7일 인기순, latest = 최신순, name = 이름순. 예: \"latest\".",
            "default": "popular"
          },
          "proxyConfiguration": {
            "title": "Proxy (프록시)",
            "type": "object",
            "description": "Usually not needed: if Genie refuses a request, the actor retries through Apify Proxy by itself. Example: {\"useApifyProxy\": false} (default). 보통 필요 없습니다. 지니가 요청을 거절하면 자동으로 Apify 프록시로 다시 시도합니다. 예: {\"useApifyProxy\": false} (기본값). 프록시를 강제하려면 {\"useApifyProxy\": true}.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}