Music API by Popnable

Popnable의 글로벌 차트에 접근 - 160개 이상 국가의 곡, 아티스트, 동영상 및 트렌드를 단일 API로.

무엇을 할 수 있나요?
즉시 자동완성

오타 허용 접두사 검색으로 빠른 결과.

정밀한 지오펜싱

도시, 바운딩 박스 또는 반경으로 검색.

풍부한 장소 메타데이터

OSM 식별자, 인구, 표시 이름 등을 반환.

99.9 % 가동 시간
1239.6ms 응답
10 req/s
0.01 크레딧 / 요청

Popnable Music API

Single endpoint that proxies Popnable API and returns normalized data for songs, trends, artists, charts and YouTube videos. The behavior is controlled by the action parameter.


POST https://api.yeb.to/v1/music/popnable

Common parameters

매개변수 유형 필수 설명
api_key string Your YEB API key.
action string Selects which Popnable v2 method to call. Supported values:
search, get-trends, get-songs, get-songs-by-trend, get-artists, get-artist-by-trend, get-daily-chart, get-weekly-chart, get-monthly-chart, get-artist-chart, get-videos.

Parameters by action

action Parameter Type Required Description
search keyword string Search term (song/artist). Short text (~20 chars recommended).
get-trends ids string 선택 Comma-separated list of trend IDs. If omitted, Popnable may return all trends (depending on provider rules).
get-songs ids string Comma-separated list of song IDs.
stats string 선택 yes / no – include Popnable stats.
charts string 선택 Comma-separated list of chart types, e.g. daily,weekly.
get-songs-by-trend trend string Trend ID (country/region ID in Popnable).
day string Date in YYYY-MM-DD format.
stats string 선택 yes / no – include stats.
charts string 선택 Charts for the returned songs, e.g. daily,weekly,monthly.
get-artists ids string Comma-separated list of artist IDs.
stats string 선택 yes / no – include artist stats.
charts string 선택 Chart type, e.g. artists.
songs string 선택 yes / no – include songs for each artist.
get-artist-by-trend trend string Trend ID (country/region).
day string Date in YYYY-MM-DD format.
stats string 선택 Artist stats (yes/no).
charts string 선택 Chart type (usually artists).
get-daily-chart trend string Trend ID (country/region).
day string Date for the daily chart (YYYY-MM-DD).
get-weekly-chart trend string Trend ID (country/region).
day string Date for the weekly chart (YYYY-MM-DD).
get-monthly-chart trend string Trend ID (country/region).
day string Date for the monthly chart (YYYY-MM-DD).
get-artist-chart trend string Trend ID (country/region).
day string Date for the artist chart (YYYY-MM-DD).
get-videos yt_codes string Comma-separated list of YouTube video codes (e.g. AbCdE123).
charts string 선택 Chart types, e.g. daily,weekly.
dailyStats string 선택 yes / no – include daily breakdown stats.
day string 선택 Reference day (YYYY-MM-DD). If omitted, current date may be used.

요청 예시

1) Search by keyword (action=search)
{
  "api_key": "YOUR_KEY",
  "action" : "search",
  "keyword": "preslava"
}
2) Song details by ID (action=get-songs)
{
  "api_key": "YOUR_KEY",
  "action" : "get-songs",
  "ids"    : "123",
  "stats"  : "yes",
  "charts" : "daily,weekly"
}
3) Video stats by YouTube code (action=get-videos)
{
  "api_key"   : "YOUR_KEY",
  "action"    : "get-videos",
  "yt_codes"  : "AbCdE123",
  "charts"    : "daily,weekly",
  "dailyStats": "yes",
  "day"       : "2025-01-05"
}

API 연동

curl -X POST https://api.yeb.to/v1/music/popnable \
  -H "Content-Type: application/json" \
  -d '{"api_key":"YOUR_KEY","action":"search","keyword":"preslava"}'
use Illuminate\Support\Facades\Http;

Route::post('/music-popnable-demo', function () {
    $response = Http::post('https://api.yeb.to/v1/music/popnable', [
        'api_key' => config('services.yeb.api_key'),
        'action'  => 'search',
        'keyword' => 'preslava',
    ]);

    return $response->json();
});
use Illuminate\Support\Facades\Http;

$r = Http::post('https://api.yeb.to/v1/music/popnable', [
    'api_key' => 'YOUR_KEY',
    'action'  => 'get-songs',
    'ids'     => '123',
    'stats'   => 'yes',
    'charts'  => 'daily,weekly',
]);

print_r($r->json());
fetch('https://api.yeb.to/v1/music/popnable', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    api_key   : 'YOUR_KEY',
    action    : 'get-videos',
    yt_codes  : 'AbCdE123',
    charts    : 'daily,weekly',
    dailyStats: 'yes',
    day       : '2025-01-05'
  })
})
  .then(r => r.json())
  .then(console.log);
import requests, json

payload = {
    "api_key": "YOUR_KEY",
    "action" : "get-songs-by-trend",
    "trend"  : "35",
    "day"    : "2025-01-05",
    "stats"  : "yes",
    "charts" : "daily,weekly"
}

r = requests.post('https://api.yeb.to/v1/music/popnable',
                  headers={'Content-Type': 'application/json'},
                  data=json.dumps(payload))

print(r.json())

Response example

{
  "data": [
    {
      "id": 123,
      "song_name": "Some Song",
      "day_released": "2025-01-05 12:34:56",
      "trend": "Bulgaria",
      "trend_flag": "https://popnable.com/images/flags/circle/bg.svg",
      "trend_id": 35,
      "singers": [
        { "singer_id": 777, "artist_name": "Preslava" }
      ],
      "videos": [
        { "yt_code": "AbCdE123" }
      ]
    }
  ],
  "meta": {
    "provider": "popnable",
    "upstream_response_code": 200,
    "upstream_error_number": null,
    "endpoint": "search"
  }
}
{
  "error": "Popnable: Access Denied.",
  "code": 403
}

응답 코드

코드설명
200 Success요청 처리 완료.
400 Bad Request입력 유효성 검사 실패.
401 UnauthorizedAPI 키 누락 또는 오류.
403 Forbidden키 비활성 또는 허용되지 않음.
429 Rate Limit요청이 너무 많습니다.
500 Server Error예기치 않은 오류.

music-popnable

music-popnable 0.0100 credits

Parameters

API Key
body · string · required
Action
body · string · required
Keyword
body · string
Trend IDs
body · string
Song IDs
body · string
Include Stats
body · string
Charts
body · string
Trend ID
body · string
Day
body · string
Artist IDs
body · string
Include Songs
body · string
YouTube Codes
body · string
Daily Stats
body · string

Code Samples


                
                
                
            

Response

Status:
Headers

                
Body

                

Music API by Popnable — Practical Guide

A hands-on guide to Music API by Popnable. Learn what each action does, the real-world problems it solves, which parameters actually matter, and how to read normalized responses for songs, artists, charts, trends and YouTube videos.

#What this API solves

One POST endpoint that proxies Popnable API and returns normalized JSON for search, trends, songs, artists, charts and YouTube videos. Use it when you need consistent data structures across multiple upstream calls, stable field names, predictable errors, and idempotent behavior suitable for caching.

#Endpoint & call model

#POST https://api.yeb.to/v1/music-popnable

  • Best for: Unified access to Popnable data with opinionated normalization.
  • How it works: You send an action plus its parameters; we call the corresponding Popnable v2 method and normalize the response.
  • Idempotent: Same input → same output; safe for caching and retries.
  • Billing: Each request costs a fixed amount of credits (see chip above), regardless of the action.

#Quick start

# 1) Search (songs/artists) by keyword
curl -X POST "https://api.yeb.to/v1/music-popnable" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "action": "search", "keyword": "preslava" }'
# 2) Songs by trend (country/region) for a specific day
curl -X POST "https://api.yeb.to/v1/music-popnable" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "action": "get-songs-by-trend",
        "trend": "35", "day": "2025-01-05", "stats": "yes", "charts": "daily,weekly" }'
# 3) YouTube videos (normalized + optional charts/daily breakdown)
curl -X POST "https://api.yeb.to/v1/music-popnable" \
  -H "Content-Type: application/json" \
  -d '{ "api_key": "YOUR_KEY", "action": "get-videos",
        "yt_codes": "AbCdE123,ZXCV987", "charts": "daily,weekly",
        "dailyStats": "yes", "day": "2025-01-05" }'

#Common parameters (used by all actions)

ParamRequiredWhat to pass (practical)Why it matters
api_key Yes Send server-side or via edge; avoid exposing in browser code. Auth & rate limiting.
action Yes One of: search, get-trends, get-songs, get-songs-by-trend, get-artists, get-artist-by-trend, get-daily-chart, get-weekly-chart, get-monthly-chart, get-artist-chart, get-videos. Selects the upstream Popnable v2 method.

#Actions explained (what each one solves)

Solves: quick lookup when you have a name fragment and need likely candidates (songs/artists).

ParamTypeReqNotes (practical)
keywordstringYesShort text (~20 chars). Use user input as-is (trimmed).
{
  "api_key": "YOUR_KEY",
  "action" : "search",
  "keyword": "preslava"
}
{
  "data": [
    { "id": 123, "song_name": "Some Song", "trend_id": 35, "singers": [ { "singer_id": 777, "artist_name": "Preslava" } ] }
  ],
  "meta": { "provider": "popnable", "upstream_response_code": 200, "endpoint": "search" }
}

Solves: obtain available trend IDs (countries/regions) to drive UI pickers or scheduled fetches.

ParamTypeReqNotes
idsstringNoComma-separated list of trend IDs to filter; omit to fetch all (subject to provider rules).

#action=get-songs

Solves: fetch details for known song IDs (e.g., to refresh a small cached set, or hydrate UI cards).

ParamTypeReqNotes
idsstringYesComma-separated song IDs.
statsstringNoyes/no include Popnable stats.
chartsstringNoComma list, e.g. daily,weekly.

#action=get-songs-by-trend

Solves: build daily feeds per country/region for discovery, newsletters, or archives.

ParamTypeReqNotes
trendstringYesTrend ID (country/region).
daystringYesDate YYYY-MM-DD.
statsstringNoyes/no.
chartsstringNoe.g. daily,weekly,monthly.

#action=get-artists

Solves: hydrate artist cards and detail pages from known IDs.

ParamTypeReqNotes
idsstringYesComma-separated artist IDs.
statsstringNoyes/no include artist stats.
chartsstringNoChart type (usually artists).
songsstringNoyes/no include songs for each artist.

#action=get-artist-by-trend

Solves: discover artists by country/region for a given day; useful for editorial picks.

ParamTypeReqNotes
trendstringYesTrend ID.
daystringYesDate YYYY-MM-DD.
statsstringNoyes/no.
chartsstringNoUsually artists.
songsstringNoyes/no include songs.

#Charts — daily/weekly/monthly/artist

Solves: pull historical chart snapshots for analytics, leaderboards, or recap posts.

ActionParamsNotes
get-daily-chart trend (string, req), day (YYYY-MM-DD, req) Country/region daily chart.
get-weekly-chart trend (string, req), day (YYYY-MM-DD, req) Weekly chart snapshot.
get-monthly-chart trend (string, req), day (YYYY-MM-DD, req) Monthly chart snapshot.
get-artist-chart trend (string, req), day (YYYY-MM-DD, req) Artists chart for the given trend/day.

#action=get-videos

Solves: normalize YouTube video data and optionally enrich with chart context and daily breakdowns.

ParamTypeReqNotes
yt_codesstringYesComma-separated video codes (AbCdE123).
chartsstringNoe.g. daily,weekly.
dailyStatsstringNoyes/no include daily breakdown.
daystringNoReference day YYYY-MM-DD.

#Reading & acting on responses

{
  "data": [
    {
      "id": 123,
      "song_name": "Some Song",
      "day_released": "2025-01-05 12:34:56",
      "trend": "Bulgaria",
      "trend_flag": "https://popnable.com/images/flags/circle/bg.svg",
      "trend_id": 35,
      "singers": [ { "singer_id": 777, "artist_name": "Preslava" } ],
      "videos":   [ { "yt_code": "AbCdE123" } ]
    }
  ],
  "meta": {
    "provider": "popnable",
    "upstream_response_code": 200,
    "upstream_error_number": null,
    "endpoint": "search"
  }
}
  • data — normalized records. Use directly in UI and storage.
  • meta.providerpopnable for transparency/debug.
  • meta.upstream_response_code — HTTP-equivalent status from upstream.
  • meta.endpoint — which upstream path we called (e.g., songs/by-trend).

#Typical errors & how to fix

{ "error": "Missing \"action\" parameter", "code": 422 }
{ "error": "Missing or empty \"ids\"", "code": 422 }
{ "error": "Popnable: Access Denied.", "code": 403 }
  • 422 missing/invalid: Ensure required params for the chosen action are present and non-empty.
  • 401 invalid key: Rotate your YEB key; call only from server/edge.
  • 502 availability: Upstream temporarily unavailable; retry with backoff.
  • 403 upstream denial: Access rules on provider side; validate your upstream configuration and inputs.

#Troubleshooting & field notes

  1. Dates: All day params are YYYY-MM-DD. Keep a single timezone (prefer UTC) in your app.
  2. Batching: For bulk imports, cap at ≤100 rps and reuse connections. Cache idempotent requests by full payload hash.
  3. Partial enrichment: Use stats/charts/dailyStats only when needed to keep latency and cost predictable.
  4. Stability: Field names are normalized; upstream changes are absorbed where possible and reflected in the Changelog below.

#API Changelog (latest changes)

2025-11-25
Improved error passthrough for upstream logical errors (meta.upstream_response_code now always set). Hardened input validation messages for all actions.
2025-11-10
Added optional dailyStats to get-videos. Unified day format across actions (YYYY-MM-DD).
2025-10-20
Normalized lists for singers and videos in song payloads. Deduplicated repeated fields.
2025-10-01
Public v1 release: search, get-trends, get-songs, get-songs-by-trend, get-artists, get-artist-by-trend, get-daily-chart, get-weekly-chart, get-monthly-chart, get-artist-chart, get-videos.

자주 묻는 질문

단일 통합 엔드포인트를 통해 곡, 아티스트, 국가/지역 트렌드, 일별/주별/월별 차트 및 YouTube 동영상 통계를 조회할 수 있습니다.

API는 Popnable v2를 사용합니다 - Popnable의 공개 음악 차트와 통계를 구동하는 동일한 데이터셋입니다.

차트는 Popnable 자체 갱신 주기를 따릅니다. 일일 차트는 약 24시간마다 갱신됩니다.

예. 오류가 발생한 요청을 포함하여 모든 요청은 크레딧을 소비합니다. 크레딧은 성공 또는 실패와 관계없이 요청 수에 연결됩니다. 오류가 당사 플랫폼 문제로 인한 것이 분명한 경우 영향을 받은 크레딧을 복원합니다(현금 환불 없음).

[email protected]로 문의하세요. 피드백을 진지하게 받아들입니다—버그 리포트나 기능 요청이 의미 있는 경우 API를 빠르게 수정하거나 개선하고 감사의 표시로 50 무료 크레딧을 제공합니다.

API와 때로는 엔드포인트에 따라 다릅니다. 일부 엔드포인트는 외부 소스의 데이터를 사용하며 더 엄격한 제한이 있을 수 있습니다. 남용을 방지하고 플랫폼 안정성을 유지하기 위해 제한도 적용합니다. 각 엔드포인트의 구체적인 제한은 문서를 확인하세요.

크레딧 시스템으로 운영됩니다. 크레딧은 API 호출과 도구에 사용하는 선불, 환불 불가 단위입니다. 크레딧은 FIFO(오래된 것부터) 방식으로 소비되며 구매일로부터 12개월간 유효합니다. 대시보드에 각 구매 날짜와 만료일이 표시됩니다.

예. 구매한 모든 크레딧(소수 잔액 포함)은 구매일로부터 12개월간 유효합니다. 미사용 크레딧은 유효 기간 종료 시 자동으로 만료되어 영구 삭제됩니다. 만료된 크레딧은 복원하거나 현금 또는 기타 가치로 전환할 수 없습니다. 경과 규칙: 2025년 9월 22일 이전에 구매한 크레딧은 2025년 9월 22일에 구매한 것으로 처리되어 2026년 9월 22일에 만료됩니다(구매 시 더 이른 만료일이 명시되지 않은 한).

예—유효 기간 내에서 이월됩니다. 미사용 크레딧은 계속 사용 가능하며 구매 후 12개월 만료까지 매월 이월됩니다.

크레딧은 환불 불가입니다. 필요한 만큼만 구매하세요—나중에 언제든 충전할 수 있습니다. 플랫폼 오류로 인해 청구가 실패한 경우 조사 후 영향을 받은 크레딧을 복원할 수 있습니다. 현금 환불 없음.

가격은 달러가 아닌 크레딧으로 설정됩니다. 각 엔드포인트에는 자체 비용이 있습니다—위의 "크레딧 / 요청" 배지를 참조하세요. 항상 정확한 지출 금액을 알 수 있습니다.
← API로 돌아가기