모든 API

ETF 시세와 뮤추얼펀드 NAV를 위한 펀드 기준가 API

ETF와 뮤추얼펀드의 가격과 가격 이력을 받을 수 있으며, 검색과 프로필은 모든 계정에서 쓸 수 있습니다. 각 요청에 Bearer 키가 필요합니다. REST와 MCP는 하나의 계정 잔액을 함께 씁니다.

정상 운영 중100.00% uptime, last 30일533 ms 일반 응답 시간

첫 요청

최신 가격 가져오기

curl --request GET \
  --url "https://api.narwhalapi.com/v1/funds/ARCX:SPY/price" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"
응답 예시
{
  "id": "ARCX:SPY",
  "symbol": "SPY",
  "currency": "USD",
  "price": "578.12",
  "previous_close": "576.40",
  "change": "1.72",
  "change_percent": "0.30",
  "volume": "61230500",
  "market_session": "open",
  "timestamp": "2026-10-26T15:42:00Z",
  "stale": false,
  "type": "etf"
}

엔드포인트

GET티커 또는 이름으로 ETF와 뮤추얼 펀드 검색/v1/funds/search

티커 또는 이름이 q로 시작하는 펀드이며, 대소문자는 구분하지 않습니다. 정확히 일치하는 티커, 그 외 티커, 이름 순으로 정렬됩니다.

매개변수

  • q필수

    티커 또는 펀드 이름의 앞부분이며, 대소문자는 구분하지 않고 2자 이상이어야 합니다(예: vf 또는 vanguard 500). 정렬 순서는 정확히 일치하는 티커, 그 외 티커, 이름의 앞부분, 이름 중 뒤쪽 단어의 앞부분입니다.

  • country선택

    이 국가의 펀드만 반환합니다. 세 글자 코드입니다(USA).

  • type선택

    ETF만 또는 뮤추얼 펀드만 반환합니다.

  • cursor선택

    이전 페이지의 next_cursor이며, 나머지 매개변수는 동일하게 사용합니다.

응답 필드

  • results객체 목록

    한 페이지에 최대 50건.

  • next_cursor문자열

    다음 페이지를 읽으려면 이 값을 다시 전달합니다. 마지막 페이지에서는 null입니다.


전체 레퍼런스 →
GET펀드 하나의 프로필/v1/funds/{id}

펀드의 심볼, 이름, 유형(etf 또는 mutual_fund), 거래소(ETF만 해당), 국가, 통화이며, 당사 심볼 목록에 있는 그대로입니다.

매개변수

  • id필수

    펀드 id입니다. ETF는 종목 id로, 거래소의 네 글자 코드, 콜론, 티커 순서입니다(ARCX:SPY). 뮤추얼 펀드는 FUND, 콜론, 티커 순서입니다(FUND:VFIAX). SPY처럼 티커만 보내는 경우에도 미국 종목 하나를 가리키면 사용할 수 있으며, 응답에는 표준 id가 담깁니다.

응답 필드

  • id문자열

    표준 펀드 id입니다.

  • symbol문자열

    펀드의 티커입니다.

  • mic문자열

    거래소의 네 글자 코드입니다. 뮤추얼 펀드는 거래소가 없으므로 생략됩니다.

  • country문자열

    펀드의 국가이며 세 글자 코드입니다.


전체 레퍼런스 →
GET펀드 하나의 최신 가격/v1/funds/{id}/price

ETF의 최종 가격은 주식 가격 형식에 type: etf를 더한 형태로, 뮤추얼 펀드의 최신 순자산가치(NAV)는 type: mutual_fund: nav, previous_nav, change, change_percent와 NAV 날짜로 제공됩니다(장 마감 값이며 지연되지 않고, 다음 영업일보다 오래되면 최신이 아닌 값입니다).

매개변수

  • id필수

    펀드 id입니다. ETF는 종목 id로, 거래소의 네 글자 코드, 콜론, 티커 순서입니다(ARCX:SPY). 뮤추얼 펀드는 FUND, 콜론, 티커 순서입니다(FUND:VFIAX). SPY처럼 티커만 보내는 경우에도 미국 종목 하나를 가리키면 사용할 수 있으며, 응답에는 표준 id가 담깁니다.

주요 응답 필드

  • id문자열

    요청한 펀드에 대해 반환되는 정규 종목 id입니다.

  • symbol문자열

    거래소에서 이 펀드에 쓰이는 티커입니다.

  • currency문자열

    모든 가격 필드의 통화이며, 펜스는 파운드로 환산됩니다.

  • price문자열

    currency 단위의 문자열로 반환되는 ETF 마지막 가격입니다.

  • previous_close문자열

    직전 세션의 종가이며, 알 수 없으면 생략됩니다.

  • change문자열

    ETF는 price에서 previous_close를 뺀 값, 뮤추얼 펀드는 nav에서 previous_nav를 뺀 값입니다. 이전 값을 알 수 없으면 생략됩니다.

  • change_percent문자열

    ETF는 previous_close, 뮤추얼 펀드는 previous_nav 대비 변동률(%)입니다. 1.5는 1.5%를 뜻합니다. 이전 값을 알 수 없으면 생략됩니다.

  • volume문자열

    오늘 거래된 주식 수로, 알 수 없으면 생략됩니다.

  • market_session다음 중 하나: pre, open, post, closed

    timestamp 시점의 거래소 상태입니다: pre, open, post, closed 중 하나이며, pre와 post는 미국 거래소에만 있습니다.

  • timestamp날짜·시간

    가격이 유효했던 시각이며, UTC 기준 초 단위로 표시됩니다.


전체 레퍼런스 →
GET최대 50개 펀드의 최신 가격/v1/funds/prices

등록된 각 펀드의 최신 가격으로, ETF의 최종 가격 또는 뮤추얼 펀드의 최신 순자산가치(NAV)입니다.

매개변수

  • ids필수

    쉼표로 구분한 펀드 id이며 중복을 제거한 뒤 최대 50개입니다. 각 id는 단건 가격 경로와 같은 규칙을 따릅니다. 가격이 반환된 id마다 호출 1회로 계산됩니다.

응답 필드

  • prices객체 목록

    확인된 ID별 시세 하나씩.

  • errors객체 목록

    시세를 반환하지 않은 ID. 과금되지 않습니다.


전체 레퍼런스 →
GET펀드 하나의 가격 봉/v1/funds/{id}/bars

일간(1d) 또는 1분(1m) 막대이며, 주식 막대 형식으로 오래된 순으로 정렬됩니다.

매개변수

  • id필수

    펀드 id입니다. ETF는 종목 id로, 거래소의 네 글자 코드, 콜론, 티커 순서입니다(ARCX:SPY). 뮤추얼 펀드는 FUND, 콜론, 티커 순서입니다(FUND:VFIAX). SPY처럼 티커만 보내는 경우에도 미국 종목 하나를 가리키면 사용할 수 있으며, 응답에는 표준 id가 담깁니다.

  • interval선택

    1d(세션당 막대 1개, 뮤추얼 펀드의 막대는 일간 순자산가치(NAV)) 또는 1m(1분 막대, ETF만 해당). 그 외의 값은 400 invalid_interval입니다.

  • start선택

    첫 번째 막대입니다. 1d: 날짜(YYYY-MM-DD), 해당 날짜 포함이며, 생략하면 가장 오래된 막대부터입니다. 1m: UTC 시각(YYYY-MM-DDTHH:MM:SSZ, 또는 00:00 UTC를 뜻하는 날짜), 해당 시각 포함이며, 생략하면 end의 하루 전입니다.

  • end선택

    마지막 막대입니다. 1d: 날짜, 해당 날짜 포함이며, 생략하면 막대가 나온 가장 최근 세션입니다. 1m: UTC 시각, 해당 시각 미포함이며, 생략하면 현재 시각 또는 start로부터 5일 뒤입니다. 1m에서 start와 end의 간격은 최대 5일입니다(400 range_too_large).

  • cursor선택

    이전 페이지의 next_cursor이며, 나머지 매개변수는 동일하게 사용합니다. 커서 뒤의 가격이 변경되면(주식 분할 또는 배당) 커서가 더 이상 작동하지 않습니다: 409 cursor_expired.

응답 필드

  • id문자열

    정식 종목 ID.

  • currency문자열

    모든 가격의 통화. 펜스는 파운드가 됩니다.

  • adjusted불리언

    항상 true: 가격은 분할과 배당이 반영되어 조정됩니다. 한 페이지와 다음 페이지는 항상 일치하며, 두 페이지 사이에 분할이나 배당으로 이력이 바뀌면 둘을 섞지 않고 커서가 작동하지 않습니다(409 cursor_expired).

  • start문자열

    전송되지 않으며, start는 이동하지 않습니다.

  • end문자열

    전송되지 않음: 일봉은 잘리지 않습니다.

  • bars객체 목록

    한 페이지에 최대 5,000개의 봉.

  • next_cursor문자열

    다음 페이지를 읽으려면 이 값을 다시 전달합니다. 마지막 페이지에서는 null입니다.


전체 레퍼런스 →
GET펀드 하나의 분배금/v1/funds/{id}/distributions

한 펀드의 분배금이며, 배당락일이 최신인 순으로 정렬되고 페이지로 나뉩니다.

매개변수

  • id필수

    펀드 id입니다. ETF는 종목 id로, 거래소의 네 글자 코드, 콜론, 티커 순서입니다(ARCX:SPY). 뮤추얼 펀드는 FUND, 콜론, 티커 순서입니다(FUND:VFIAX). SPY처럼 티커만 보내는 경우에도 미국 종목 하나를 가리키면 사용할 수 있으며, 응답에는 표준 id가 담깁니다.

  • cursor선택

응답 필드

  • id문자열

    표준 펀드 id입니다.

  • start날짜

    전송되지 않음: 모든 계정에 전체 이력을 제공합니다.

  • distributions객체 목록

    권리락일이 최근인 순입니다.

  • next_cursor문자열

    다음 페이지를 위해 cursor로 전달합니다. 마지막 페이지에서는 null입니다.


전체 레퍼런스 →

활용 사례

전체 이력 백필

이력 전체를 페이지 단위로 가져와 파일에 저장하고, 중단되면 이어서 받습니다.

가이드 읽기 →

매일 데이터 가져오기

작은 스크립트를 하루에 한 번 실행하고 결과를 CSV에 추가합니다.

가이드 읽기 →

캐싱과 429 오류

Cache responses by data type and tell a rate limit (429) from an empty credit balance (402).

가이드 읽기 →

관련 API

상장 종목을 위한 주가 API

REST와 MCP로 제공하는 상장 주식 가격과 기업 데이터

API 탐색 →

실시간과 과거 시세를 제공하는 암호화폐 API

REST와 MCP로 제공하는 암호화폐 페어 가격과 이력

API 탐색 →

선불 크레딧과 요금

1,000회당 요금, 충전, 매월 무료 크레딧을 확인하세요. 가격은 모든 계정에서 실시간입니다.

요금 보기 →

자주 묻는 질문

ETF ID는 어떻게 쓰나요?

ARCX:SPY 같은 ETF 종목 id를 사용하세요. 미국 종목 하나를 가리키는 경우에는 SPY처럼 미국 티커만 써도 됩니다.

뮤추얼 펀드 가치는 어떻게 가져오나요?

뮤추얼 펀드에는 FUND:VFIAX를 사용하세요. 일별 순자산가치는 previous_nav, date와 함께 nav에 표시되며, 뮤추얼 펀드 값은 지연되지 않습니다.

가격은 실시간인가요, 지연되나요?

주식, ETF, 암호화폐 가격은 모든 계정에서 실시간이며, 당일 거래량은 알 수 있을 때 함께 제공됩니다.

비용은 얼마인가요?

호출은 1,000건당 $2이며 선불 크레딧에서 차감됩니다. 모든 계정은 가입 후 첫 12개월 동안 매월 $10의 무료 크레딧을 받으며, 상업적 이용도 허용됩니다.

API는 무엇을 다루나요?

일봉과 과거 분배금은 모든 계정에서 전체 이력을 다루며, ETF 1분봉도 포함됩니다. 뮤추얼펀드에는 1분봉이 없고 요청하면 400 invalid_interval이 반환됩니다. 일봉의 시가, 고가, 저가, 종가에는 NAV를 쓰며 거래량은 없습니다. 일괄 가격 호출은 ID를 최대 50개까지 받고, 가격을 반환한 ID마다 호출 1회로 셉니다.

ETF 가격과 뮤추얼 펀드 NAV는 어떻게 다른가요?

ETF는 거래 가격을 반환합니다. 뮤추얼 펀드는 하루 마감 순자산가치 하나를 nav로, previous_nav 및 date와 함께 반환합니다. etf인지 mutual_fund인지는 type으로 확인하세요. NAV는 지연되지 않으며 다음 영업일보다 오래되면 지연으로 표시됩니다. 거래소가 닫혀 있을 때 ETF 가격은 지연으로 표시되지 않습니다.

잘못된 종류의 id를 쓰면 어떻게 되나요?

ETF id는 ARCX:SPY처럼 거래소 코드와 티커를 사용하고, 뮤추얼 펀드 id는 FUND 다음에 콜론과 티커를 씁니다. 펀드 경로에 주식 id를 쓰면 404 not_found를 반환합니다. 주식 경로에 펀드 id를 쓰면 301로 펀드 경로로 리디렉션됩니다.

펀드 이력은 얼마나 과거까지 요청할 수 있나요?

모든 계정이 일봉과 과거 분배금의 전체 이력을 받습니다. 더 오래된 행이 없으면 start가 처음 제공한 날짜를 반환합니다. 분배금의 kind 필드는 출처가 제공할 때까지 생략됩니다.

펀드 가격 요청은 어떻게 계산되나요?

REST와 MCP는 하나의 계정과 하나의 크레딧 잔액을 쓰며, 모든 요청에 Bearer 키가 필요합니다. 일괄 호출은 펀드 ID를 최대 50개까지 받고, 가격을 반환한 ID마다 호출 1회로 셉니다.