K-Music Charts Feed — Melon x Genie x Bugs avatar

K-Music Charts Feed — Melon x Genie x Bugs

Pricing

from $2.00 / 1,000 results

Go to Apify Store
K-Music Charts Feed — Melon x Genie x Bugs

K-Music Charts Feed — Melon x Genie x Bugs

Korea's realtime music streaming charts in one run: Melon, Genie and Bugs Top 100 — clean JSON with source, rank, title, artist, album, rank change and cover image. For K-pop analytics, all-kill detection, label A&R and AI agents.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Seok June Park

Seok June Park

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

K-Music Charts Feed — Melon × Genie × Bugs 🎵

Snapshot Korea's realtime music streaming charts from Melon, Genie and Bugs — the three services that define what's charting in Korea — as one clean, unified JSON/CSV/Excel dataset. Get source, rank, title, artist, album, rank_change, and cover image for every song in one run.

Instead of scraping three sites and gluing schemas together, you get one call, one schema — perfect for K-pop analytics, all-kill detection, and label A&R.

Try it free. Apify's free plan includes $5 of monthly platform credit — at $2.00 / 1,000 results that's roughly 2,500 chart entries from this actor, no credit card required. Set your input, click Start, and export JSON/CSV/Excel.


What it does

This actor reads each service's own public, server-rendered chart page (the same page any visitor sees — no login, no private API, no headless browser) and parses it into a unified feed. One run collects the realtime Top 100 from each requested source:

SourceChartRows
melonMelon (멜론) 실시간 차트 — Korea's #1 streaming serviceTop 100
genieGenie (지니) 실시간 차트 TOP 200 (collected to Top 100)Top 100
bugsBugs (벅스) 실시간 차트Top 100

Cross-referencing the three is how analysts spot a "perfect all-kill" (a song sitting at #1 on every chart at once) and how they separate a real hit from a single-platform fan push.


Input

FieldTypeDefaultDescription
sourcestringallWhich chart to snapshot: all, melon, genie, or bugs.
topNinteger100Top-ranked entries to collect from each source (max 100).
proxyConfigurationobjectoffOptional Apify proxy. Not required — the charts read fine on a direct connection.

Input example

{
"source": "all",
"topN": 100
}
{
"source": "melon",
"topN": 50
}

Output

Each chart entry is one dataset record (real samples from a live run):

{
"source": "melon",
"chart_type": "realtime",
"rank": 1,
"title": "LOVE ATTACK",
"artist": "RESCENE (리센느)",
"album": "SCENEDROME",
"rank_change": 0,
"url": "https://www.melon.com/song/detail.htm?songId=37928381",
"image_url": "https://cdnimg.melon.co.kr/cm2/album/images/115/75/849/11575849_20240826152240_500.jpg/melon/resize/120/quality/80/optimize",
"scraped_at": "2026-07-14T14:43:16+09:00"
}
{
"source": "bugs",
"chart_type": "realtime",
"rank": 1,
"title": "Ice Cream",
"artist": "연준",
"album": "NO LABELS: PART 02",
"rank_change": 0,
"url": "https://music.bugs.co.kr/track/6489217",
"image_url": "https://image.bugsm.co.kr/album/images/50/41513/4151359.jpg?version=20260711005644",
"scraped_at": "2026-07-14T14:43:16+09:00"
}

A full 30-record sample (10 per source) from a real run is in samples/sample-output.json.

FieldMeaning
sourceWhich chart the record came from: melon, genie or bugs.
chart_typeAlways "realtime" — these are the live/realtime charts.
rankThe song's position on that source's own chart (1–100). Never re-numbered across sources.
titleSong title.
artistArtist(s). Multiple credits are comma-joined (e.g. featured artists).
albumAlbum title, else null.
rank_changePositions moved vs. the previous chart snapshot: positive = up, negative = down, 0 = unchanged. null for a brand-new entry the site marks with no numeric delta (see limitations).
urlSong/track detail page on the source.
image_urlAlbum-cover thumbnail as the source serves it.
scraped_atISO-8601 timestamp (KST, UTC+9).

The critical fields — source, rank, title, artist — are populated on 30/30 records in the live test, and in that sample album, rank_change, url and image_url were populated on 30/30 as well. A row missing any critical field is dropped rather than emitted half-empty.


Use cases

  • K-pop analytics — track a song or artist across Melon, Genie and Bugs in one schedule and chart rank-over-time. Diff snapshots to catch risers before they peak (rank_change gives you the per-run delta for free).
  • All-kill / perfect all-kill detection — join the three sources on title + artist and flag songs sitting at #1 (or in the top N) on every chart at once — the metric K-pop media reports on.
  • Label & A&R monitoring — watch where a roster's releases land across all three services at launch, at what rank, moving which direction. Compare a comeback's first-day charting against past releases.
  • AI agents & LLM pipelines — a compact, unified JSON feed of Korea's music charts for a RAG index, a "what's charting in Korea right now" assistant, or a dashboard — no scraping code in your app.

❓ FAQ

Is it legal to scrape this data? This actor collects only public, non-personal chart data — the same ranking lists any visitor sees without logging in. No personal data is collected; artist names are public commercial credits. You are responsible for how you use the data; see the rate & legality note below.

What does it cost in practice? $2.00 per 1,000 results (launch pricing) + a few cents of platform usage. Example: a daily all-source snapshot at topN: 100 (~300 results) costs about $0.60/day. Apify's free $5 monthly credit covers ~2,500 results.

Do I need to configure proxies? No — the default settings work out of the box. All three charts are server-rendered and read fine on a direct connection. If a run ever comes back empty, enable Apify Proxy and re-run.

How fresh is the data? Every run scrapes the live realtime charts at run time. Schedule the actor for recurring snapshots — rank-over-time and rank_change are where the value is.

Can I run just one chart? Yes — set "source": "melon" (or genie / bugs). Default all collects all three in one run.

Why do Melon and Bugs stop at 100 while Genie has 200? Melon's and Bugs' realtime charts are Top 100. Genie publishes a Top 200, but this feed caps every source at 100 so the three line up for cross-chart comparison.


🤖 Use with AI agents (MCP)

Call this Actor as a tool from Claude or any MCP-compatible AI agent — no glue code. Point your MCP client at Apify's server, scoped to this Actor:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=kdatafactory/kmusic-charts-feed",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Your agent can then pull Korea's realtime music charts across Melon, Genie & Bugs on demand — no scraping code in your app. Grab a free token from Apify → Integrations.

🇰🇷 More Korean data actors

This actor is part of a suite of Korean-platform scrapers by the same maintainer:

  • circlechart-scraper — Circle Chart (formerly Gaon), Korea's official national music chart (weekly/monthly, sales + streaming).
  • kpop-photocard-index — K-pop photocard catalogue and resale-price index.
  • ktown4u-scraper — K-pop album & merch listings and best-sellers from Ktown4u.

Browse all: apify.com/kdatafactory


Rate limiting & legality

  • The actor collects only public, non-authenticated data — the realtime chart lists anyone can see without logging in. It never logs in and never touches private endpoints.
  • No personal data is collected. Artist names are public commercial credits, like a shop name.
  • Requests are rate-limited: one page at a time with a ≥ 500 ms delay between requests (a full default run is about 4 light requests), to stay gentle on the sites' servers.
  • You are responsible for using the data in line with each service's terms of service and applicable law. Use it for research, monitoring and analytics — not to replicate the services.

Known limitations (honesty note)

  • rank_change is best-effort. It's the per-snapshot delta each site publishes next to the rank (up/down/unchanged). For a brand-new entry (신규진입) that the site marks without a numeric value, rank_change is null rather than a guessed number. It is the chart's own movement figure, not a diff this actor computes across your runs.
  • album can occasionally be null if a chart row omits the album link. In the live test it was present on every record.
  • Top 100 per source. Melon and Bugs realtime charts are Top 100; Genie's Top 200 is capped to 100 so the three sources align for comparison. topN above 100 is clamped to 100.
  • These are the realtime charts (chart_type is always "realtime"). For official weekly/monthly national rankings, use circlechart-scraper.
  • Text is Korean. Titles, artist and album names are returned exactly as each service labels them (Korean for domestic acts, Latin for others) — they are not transliterated or translated.

🏃 Run it

On Apify: set your input and click Start. Locally:

npm install
# put your input in storage/key_value_stores/default/INPUT.json
npm start

Results land in the default dataset (Apify) or ./storage/datasets/default (local).


If this actor saves you time, a rating on the Store page helps a solo maintainer a lot. Found an issue? Open it in the Issues tab — I respond fast.