NAV 탐색
cURL Python JavaScript

NinjaPear 개요

NinjaPear는 데이터 소유권과 윤리적 데이터 수집에 집중하는 B2B 기업 인텔리전스 플랫폼입니다. 1차 제공자로서 당사는 독점 및 법적으로 검증된 데이터의 지속 가능한 생태계를 유지합니다. 당사의 미션은 신뢰할 수 있는 데이터 인프라를 제공하여 기업이 부가가치 애플리케이션과 워크플로를 자신 있게 개발하고 확장할 수 있도록 지원하는 것입니다.

AI 에이전트용

AI 코딩 에이전트로 개발 중이신가요? Claude, Cursor, ChatGPT 등 LLM 및 AI 도구에 최적화된 일반 Markdown 버전 문서를 사용하세요:

AI Skill

NinjaPear AI Skill은 코딩 에이전트에게 애플리케이션에서 올바른 NinjaPear 통합 코드를 작성하기 위한 절차적 지식을 제공합니다. 단일 명령으로 설치하면 에이전트가 인증 방법, 적절한 엔드포인트 선택, SDK 코드 생성, 예외 처리 방법을 알게 되며, 비용 인식 기능도 내장되어 있습니다.

전제조건 — 다음에서 발급받은 NinjaPear API 키 nubela.co/dashboard 및 Node.js 18+.

스킬을 사용하여 설치하세요. npx skills CLI. 에이전트에 대한 명령을 선택하십시오.

Claude Code

npx skills add NinjaPear/ninjapear-skill -a claude-code

Codex

npx skills add NinjaPear/ninjapear-skill -a codex

Opencode

npx skills add NinjaPear/ninjapear-skill -a opencode

이 스킬이 제공하는 기능

설치 후 해당 스킬은 코딩 에이전트에게 NinjaPear를 올바르게 사용하기 위한 절차적 지식을 제공합니다:

기능 설명
인증 설정 환경 변수 및 SDK 초기화를 통해 API 키 구성
엔드포인트 선택 비용을 고려하여 올바른 NinjaPear API 엔드포인트를 선택하세요
Python SDK 통합 다음을 사용하여 올바른 코드를 생성하십시오. ninjapear 파이썬 패키지
자바스크립트 SDK 통합 다음을 사용하여 올바른 코드를 생성하십시오. ninjapear npm 패키지
페이지 매김 처리 목록 끝점에 대한 커서 기반 페이지 매김 구현
비율 제한 처리 적절한 재시도 및 백오프 로직을 통한 비율 제한 준수
오류 처리 모든 NinjaPear 오류 코드(401, 403, 404, 429, 500, 503)를 처리합니다.
시간 초과 구성 장기 실행 엔드포인트에 대해 적절한 시간 초과 설정

쉽게 설명해줘

인증

curl "https://nubela.co/api/v1/customer/listing" \
  -H "Authorization: Bearer YOUR_API_KEY"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://example.com")
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications["bearerAuth"];
bearerAuth.accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://example.com").then(function (data) {
  console.log(data);
});

NinjaPear의 API는 사용자 인증에 베어러 토큰을 사용합니다. 각 사용자에게는 다음 항목 아래에서 무작위로 생성된 비밀 키가 할당됩니다: 대시보드의 API 섹션.

Bearer 토큰은 Authorization 헤더.

클라이언트 라이브러리

NinjaPear API 연동을 더 쉽게 하기 위해 JavaScript 및 Python 공식 클라이언트 라이브러리를 제공합니다.

JavaScript (Node.js)

npm install ninjapear
# JavaScript library - see JavaScript tab
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
var bearerAuth = defaultClient.authentications["bearerAuth"];
bearerAuth.accessToken = "YOUR_API_KEY";

// Now you can use any API class
var companyApi = new NinjaPear.CompanyAPIApi();
var customerApi = new NinjaPear.CustomerAPIApi();
var productApi = new NinjaPear.ProductAPIApi();
var contactApi = new NinjaPear.ContactAPIApi();
var metaApi = new NinjaPear.MetaAPIApi();

Python

uv add ninjapear
# or: pip install ninjapear
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

# Use the client with a context manager
with ninjapear.ApiClient(configuration) as api_client:
    company_api = ninjapear.CompanyAPIApi(api_client)
    customer_api = ninjapear.CustomerAPIApi(api_client)
    product_api = ninjapear.ProductAPIApi(api_client)
    contact_api = ninjapear.ContactAPIApi(api_client)
    meta_api = ninjapear.MetaAPIApi(api_client)
// Python library - see Python tab

요청 속도 제한

요청 속도 제한은 제품 계정 단위로 적용되며, 해당 제품의 모든 API 키가 공유합니다.

유료 API 엔드포인트는 50 분당 요청 수.

속도 제한의 경우, Monitor 피드 및 대상 관리 엔드포인트는 엔드포인트의 크레딧 비용이 다음과 같더라도 유료 API 트래픽으로 집계됩니다: 0.

부하가 높은 시간대에는 모든 사용자가 서비스에 원활하게 접근할 수 있도록 모든 계정의 요청 제한이 일시적으로 강화될 수 있습니다.

반환되는 HTTP 429 요청 횟수 제한에 도달한 경우. HTTP도 수신할 수 있습니다. 429 당사 측의 처리 용량이 제한될 경우.

429 오류를 처리하고 지수 백오프를 적용해야 합니다.

요청 속도 제한 응답에는 다음이 포함됩니다:

헤더 설명
Retry-After 재시도 전 대기 시간(초)
X-RateLimit-Limit 현재 분 내 허용되는 최대 요청 수
X-RateLimit-Remaining 현재 분 내 남은 요청 수
X-RateLimit-Reset 현재 분이 리셋되는 Unix 타임스탬프

무료 API의 요청 속도 제한

무료 API를 지속적으로 제공하기 위해 무료 API의 속도 제한은 구독 플랜에 따라 다릅니다:

무료 API 요청 제한은 Company Logo, Disposable Email Checker, 크레딧 잔액 조회, RSS 피드 소비에 적용됩니다.

크레딧

유효한 각 요청에는 최소한 0.1 처리될 크레딧 (무료 API 엔드포인트가 아닌 경우).

크레딧은 요청이 성공적으로 파싱된 경우에만 차감됩니다.

성공한 요청은 다음을 반환하는 요청입니다: 200 HTTP 상태 코드.

캐시 결제

다음이 있는 엔드포인트의 경우: use_cache 파라미터를 사용하면, 동일한 정규화된 요청이 이전에 비용을 지불한 동일한 캐시 레코드 버전에서 제공될 때 다시 요금이 청구되지 않습니다. 응답에는 X-NinjaPear-Credit-Cost: 0 이러한 반복 캐시 히트의 경우.

use_cache=never 항상 새로 수집을 수행하며 정상적으로 요금이 청구됩니다. use_cache=if-recent 캐시된 레코드가 해당 엔드포인트의 유효 기간 내에 있는 동안만 무료 재요청이 가능합니다.

페이지네이션 엔드포인트의 경우, 무료 반복 접근은 동일한 쿼리, 필터, 커서 체인으로 이미 결제된 페이지로 제한됩니다. page_size. 유료 페이지네이션 페이지는 캐시 적중 시 정확히 재현되며, next_page 값. 아직 결제되지 않은 이후 페이지는 정상적으로 요금이 청구됩니다.

시간 초과 및 API 응답 시간

NinjaPear API 엔드포인트는 30-60 초 내에 완료됩니다.

처리량을 최대화하려면 API 서비스에 동시 요청을 보내는 것을 권장합니다. 참조: 이 게시물 처리량을 최대화하는 방법에 대해.

권장 타임아웃: 100 초.

오류

다음은 API에서 반환될 수 있는 일반적인 오류입니다:

HTTP 코드 과금 여부? 설명
400 아니요 잘못된 파라미터가 제공되었습니다. 자세한 내용은 문서와 메시지 본문을 참조하세요
401 아니요 유효하지 않은 API Key
403 아니요 크레딧이 소진되었습니다
404 요청한 리소스(예: 사용자 프로필, 기업)를 찾을 수 없습니다
410 아니요 이 API는 더 이상 사용되지 않습니다
429 아니요 요청 속도 제한됨. 다시 시도해 주세요
500 아니요 API에 오류가 발생했습니다. 문의하기 지원을 받으려면
503 아니요 데이터 보강에 실패했습니다. 다시 시도해 주세요.

다음에 대해서는 절대 요금이 청구되지 않습니다: 실패한 요청.

하위 호환성 보장

저희 API는 하위 호환성을 유지하여 안심하고 연동할 수 있도록 최선을 다합니다. 하위 호환성 보장이란 기존 기능을 손상시키는 변경을 도입하거나 지원 중단 기간 없이 엔드포인트를 제거하지 않음을 의미합니다.

구체적으로, 다음과 같은 방식으로는 하위 호환성을 깨는 변경 사항을 도입하지 않습니다:

  1. 문서화된 파라미터 및 응답 속성을 제거하지 않습니다.
  2. API 응답 문서에 명시된 데이터 타입을 변경하지 않습니다.

단, 다음 사항은 주요 변경으로 간주되지 않습니다:

새로운 응답 속성이나 헤더가 추가되더라도 오류가 발생하지 않는 방식으로 API를 연동하시길 강력히 권장합니다.

API를 변경할 경우, 원활한 전환을 위해 명확한 문서와 충분한 사전 공지(30일)를 제공합니다. 공지는 뉴스레터 이메일, Twitter/X 게시물 및 블로그 업데이트를 통해 전달됩니다.

Customer API

고객 목록 엔드포인트

GET /api/v1/customer/listing

비용: 1 크레딧 / 요청 + 2 크레딧 / 반환된 기업. 요청이 빈 결과를 반환하는 경우에도 크레딧이 청구됩니다.

대상 기업의 가능성이 높은 고객, 투자자, 파트너/플랫폼 목록을 관계 유형별로 분류하여 조회합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/customer/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CustomerAPIApi(api_client)
    response = api.get_customer_listing(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CustomerAPIApi();
api.getCustomerListing("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답:

{
  "customers": [
    {
      "name": "Apple",
      "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
      "tagline": "Think different.",
      "website": "https://www.apple.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com",
      "id": "abc123",
      "industry": 45202030,
      "specialties": ["Technology", "Consumer Electronics"],
      "x_profile": "https://x.com/Apple"
    }
  ],
  "investors": [
    {
      "name": "Sequoia Capital",
      "description": "Sequoia Capital is a venture capital firm focused on technology companies.",
      "tagline": null,
      "website": "https://www.sequoiacap.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.sequoiacap.com",
      "id": "def456",
      "industry": 40203010,
      "specialties": ["Venture Capital", "Growth Equity"],
      "x_profile": "https://x.com/sequoia"
    }
  ],
  "partner_platforms": [
    {
      "name": "Amazon Web Services",
      "description": "Amazon Web Services provides cloud computing platforms and APIs.",
      "tagline": null,
      "website": "https://aws.amazon.com",
      "company_logo_url": "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Faws.amazon.com",
      "id": "ghi789",
      "industry": 45101010,
      "specialties": ["Cloud Computing", "Infrastructure"],
      "x_profile": "https://x.com/awscloud"
    }
  ],
  "next_page": "https://nubela.co/api/v1/customer/listing?website=https://www.stripe.com&cursor=abc123"
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
cursor 아니요 페이지네이션 커서 (출처: next_page 이전 응답에서 abc123
page_size 아니요 페이지당 결과 수 (1-200, 기본값 200) 50
quality_filter 아니요 저품질 결과 필터링 (정크 TLD 예시: .top, .xyz 및 접근 불가 웹사이트). 다음으로 설정: false 모든 결과를 포함하려면. (기본값: true) false
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (기본값; 캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-present

응답

설명 예시
customers 대상 기업의 잠재적 고객으로 추정되는 기업 목록입니다. 대상 기업의 제품/서비스 비용을 지불하는 주체입니다. CustomerCompany 객체 목록
investors 대상 기업의 투자자(VC 회사, PE 펀드, 엔젤 네트워크)인 기업 목록입니다. CustomerCompany 객체 목록
partner_platforms 대상 기업이 사용하거나 통합하는 파트너, 플랫폼 또는 서비스 제공업체(기술 스택, 미디어, 에이전시) 기업 목록입니다. CustomerCompany 객체 목록
next_page 페이지네이션 커서 역할을 하는 API URI입니다. API 키와 함께 이 URL을 따라가면 다음 결과 페이지로 이동합니다. 마지막 페이지에서는 null이 됩니다. https://nubela.co/api/v1/customer/list?...

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 대상 기업에 대한 충분한 정보를 추출할 수 없음
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only

고객회사

설명 예시
name 회사명 "Apple"
description 기업에 대한 간략한 설명 "Apple Inc. designs, manufactures, and markets smartphones..."
tagline 기업 태그라인 또는 슬로건 "Think different."
웹사이트 기업 웹사이트 URL "https://www.apple.com"
company_logo_url 이 기업의 Company Logo API URL입니다. 제공: 기업 로고 엔드포인트. bearer 토큰으로 인증하세요. null 웹사이트가 없는 경우. "https://nubela.co/api/v1/company/logo?website=https%3A%2F%2Fwww.apple.com"
id 고유 식별자 "abc123"
industry GICS 8자리 산업 코드 45202030
specialties 기업 전문 분야 목록 ["Technology"]
x_profile X (Twitter) 프로필 URL "https://x.com/Apple"

참고: company_logo_url: 이 URL은 기업 로고 엔드포인트. Bearer 토큰(기본 API와 동일)으로 인증하세요. 이 링크는 임시 링크이므로, 응답이 반환되는 즉시 URL을 통해 이미지를 다운로드하여 직접 호스팅하는 것을 권장합니다.

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 10
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

Competitor API

경쟁사 목록 엔드포인트

GET /api/v1/competitor/listing

비용: 2 크레딧 / 반환된 경쟁사. 최소 5 크레딧 / 요청, 결과가 없는 경우에도 청구됩니다.

대상 기업의 경쟁사 목록과 경쟁 이유를 조회합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/competitor/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompetitorAPIApi(api_client)
    response = api.get_competitor_listing(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompetitorAPIApi();
api.getCompetitorListing("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답:

{
  "competitors": [
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://www.adyen.com",
      "website": "https://www.adyen.com",
      "competition_reason": "product_overlap"
    },
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://squareup.com",
      "website": "https://squareup.com",
      "competition_reason": "product_overlap"
    },
    {
      "company_details_url": "https://nubela.co/api/v1/company/details?website=https://www.checkout.com",
      "website": "https://www.checkout.com",
      "competition_reason": "organic_keyword_overlap"
    }
  ]
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (기본값; 캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-present

응답

설명 예시
competitors 대상 기업의 경쟁사 목록입니다. 다음의 목록: 경쟁사 객체

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 대상 기업에 대한 충분한 정보를 추출할 수 없음
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only

경쟁사

설명 예시
company_details_url 이 경쟁사의 기업 상세 정보 엔드포인트 URL입니다. bearer 토큰으로 인증하면 전체 기업 정보를 조회할 수 있습니다. "https://nubela.co/api/v1/company/details?website=https://www.adyen.com"
웹사이트 기업 웹사이트 URL "https://www.adyen.com"
competition_reason 이 기업이 경쟁사로 간주되는 이유. 다음 값 중 하나: 경쟁 이유 열거형. "product_overlap"

경쟁 이유 열거형

설명
organic_keyword_overlap 두 기업 모두 유사한 자연 검색 키워드에서 순위를 차지하고 있습니다
product_overlap 두 기업 모두 유사한 제품이나 서비스를 제공합니다

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 4
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

Product API

Product Listing 엔드포인트

GET /api/v1/product/listing

비용: 3 크레딧 / 요청. 유효한 기업에 대한 제품이 없는 경우에도 크레딧이 청구됩니다.

대상 기업이 제공하는 제품 및 서비스 목록을 조회합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://matterport.com" \
  "https://nubela.co/api/v1/product/listing"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.ProductAPIApi(api_client)
    response = api.get_product_listing(website="https://matterport.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.ProductAPIApi();
api.getProductListing("https://matterport.com").then(function (data) {
  console.log(data);
});

예시 응답:

{
  "products": [
    {
      "name": "Matterport Digital Twin Platform",
      "tagline": "Capture, share, and collaborate in immersive 3D.",
      "description": "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces, enabling virtual tours, detailed measurements, and remote collaboration. It helps optimize space planning, manage costs, and streamline project management across various industries.",
      "categories": [
        "3D Modeling",
        "Digital Twins",
        "Virtual Tours",
        "Real Estate",
        "Construction",
        "Facilities Management"
      ],
      "tags": [],
      "structured_features": {
        "3d_insights": true,
        "centralized_management": true,
        "workplace_planning": true,
        "risk_mitigation": true,
        "bim_cad_generation": true,
        "qa_qc_monitoring": true,
        "asset_documentation": true,
        "space_planning": true,
        "capital_project_execution": true,
        "remote_oversight": true,
        "dimensionally_accurate_data": true,
        "secure_cloud_hosting": true
      },
      "freeform_features": [
        "immersive exploration from the palm of your hand",
        "cut the time and cost of workplace planning",
        "accelerating your ability to execute",
        "unmatched 3D visual clarity"
      ],
      "pricing": {
        "model": "unknown",
        "starts_at_monthly_usd": null,
        "tiers": []
      },
      "integrations": [
        "Procore",
        "Autodesk",
        "AWS"
      ],
      "platforms": [
        "web"
      ],
      "source_urls": [
        "http://matterport.com/",
        "https://go.matterport.com/corporate-occupiers.html",
        "https://matterport.com/solutions/design-construction",
        "http://matterport.com/solutions/corporate-real-estate",
        "http://matterport.com/contact-sales"
      ]
    }
  ]
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://matterport.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://matterport.com
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
products 대상 기업이 제공하는 제품 및 서비스 목록입니다. 기업이 유효하지만 제품 또는 서비스가 감지되지 않으면 빈 목록을 반환합니다. 다음의 목록: Product Object 객체

Product Object

설명 예시
name 제품 또는 서비스의 전체 이름. 별도로 명명된 제품, SKU, 플랫폼, 또는 별도로 가격이 책정된 항목은 각각 별도의 행으로 반환됩니다. "Matterport Digital Twin Platform"
tagline 사용 가능한 경우 한 줄짜리 제품 태그라인. "Capture, share, and collaborate in immersive 3D."
description 제품의 기능을 설명하는 한 문장에서 세 문장. "Matterport's 3D digital twin platform allows users to create immersive 3D models of physical spaces..."
categories 제품 클래스, 산업, 또는 웹사이트에서 지원하는 사용 사례 그룹을 포함한 제품 카테고리. ["3D Modeling", "Digital Twins"]
tags 간략한 제품 속성, 배포 방식, 기술 레이블 또는 기타 검색 가능한 태그. ["ai-powered", "self-hosted"]
structured_features 표준 기능 키와 boolean, string, 또는 numeric 값을 사용하는 기능 맵. 키는 제품 카테고리별로 다릅니다. { "secure_cloud_hosting": true }
freeform_features 표준 키에 맞지 않는 기능 설명 문구. ["unmatched 3D visual clarity"]
pricing 요금제 모델, 시작 가격, 그리고 요금 정보가 있는 경우 티어. null 요금을 확인할 수 없는 경우. 요금제 객체
integrations 이 제품이 연동되는 제품, 플랫폼 또는 서비스 이름. ["Procore", "Autodesk", "AWS"]
platforms 제품을 이용할 수 있는 플랫폼 (예: web, ios, android, macos, windows, linux, api, cli, 또는 chrome-extension. ["web"]
source_urls 제품 데이터가 수집된 대상 기업 웹사이트의 URL 목록입니다. ["https://matterport.com/solutions/design-construction"]

요금제 객체

설명 예시
model 요금제 모델. 다음의 값 중 하나: 요금제 모델 Enum. "subscription"
starts_at_monthly_usd 기업 웹사이트에서 확인된 가장 낮은 월별 USD 가격. null 알 수 없거나 사용할 수 없는 경우. 29.0
tiers 기업 웹사이트에서 확인된 요금 티어. 다음의 목록: PricingTier 객체 객체

PricingTier 객체

설명 예시
name 요금 티어 이름. "Business"
price_usd_monthly 이 등급의 월별 USD 가격. null 알 수 없는 경우. 99.0
features 이 요금제 등급에 나열된 기능. ["SSO", "Audit logs"]

요금제 모델 Enum

설명
freemium 무료 플랜 (유료 업그레이드 제공)
subscription 정기 유료 구독
one-time 일회성 구매
payg 종량제 요금
enterprise 맞춤형 엔터프라이즈 요금제
unknown 요금제가 존재하거나 존재할 수 있으나 모델이 불분명함

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 3
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 웹사이트에 접근할 수 없거나 입력값이 유효하지 않습니다
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only
503 아니요 크롤 용량이 일시적으로 포화 상태입니다. 잠시 후 다시 시도하세요.

Company API

기업 로고 엔드포인트

GET /api/v1/company/logo

비용: 0 크레딧 / 성공한 요청. (무료)

웹사이트 URL을 기반으로 기업의 로고를 가져옵니다. 로고를 PNG 이미지(128x128)로 반환합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/logo" \
  --output logo.png
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    logo_data = api.get_company_logo(website="https://www.stripe.com")

    # Save the logo image
    with open("logo.png", "wb") as f:
        f.write(logo_data)
var NinjaPear = require("ninjapear");
var fs = require("fs");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyLogo("https://www.stripe.com").then(function (data) {
  // Save the logo image
  fs.writeFileSync("logo.png", Buffer.from(data));
});

예시 응답:

기업 로고 예시

원시 PNG 이미지 바이너리 (Content-Type: image/png).

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL https://www.stripe.com

응답

A 200 응답은 로고를 PNG 원본 이미지로 반환하며 Content-Type: image/png.

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 주어진 도메인에 대한 로고를 찾을 수 없습니다

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 0

기업 상세 정보 엔드포인트

GET /api/v1/company/details

평균 10.4초

비용: 3 크레딧 / 요청 (기본). 추가 2 크레딧 (경우: include_employee_count=true. 추가하세요 1 크레딧 (경우: follower_count=include. 추가하세요 2 크레딧 (경우: addresses=best-effort-exhaustive. 최대 합계: 8 크레딧. 데이터가 없는 경우에도 크레딧이 청구됩니다.

웹사이트 URL을 기반으로 기업 상세 정보를 조회합니다. 설명, 산업, 소셜 미디어 URL, 현재 리더십 팀 등 기업 메타데이터를 반환합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/details"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    details = api.get_company_details(website="https://www.stripe.com")
    print(details)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyDetails("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답 (비상장 기업):

{
  "websites": ["https://stripe.com", "https://stripe.dev"],
  "description": "Stripe is a technology company that builds economic infrastructure for the internet.",
  "industry": 45102010,
  "company_type": "PRIVATELY_HELD",
  "founded_year": 2010,
  "specialties": ["Payments", "Financial Services", "APIs"],
  "name": "Stripe",
  "tagline": "Financial infrastructure for the internet",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://stripe.com",
  "cover_pic_url": "https://example.com/stripe-cover.png",
  "facebook_url": "https://facebook.com/stripe",
  "twitter_url": "https://twitter.com/stripe",
  "instagram_url": null,
  "employee_count": 8000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "354 Oyster Point Blvd",
      "line2": null,
      "city": "South San Francisco",
      "state": "CA",
      "postal_code": "94080",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Patrick Collison",
      "title": "Chief Executive Officer",
      "role": "CEO",
      "person_profile_url": "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"
    }
  ],
  "similar_companies": "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com",
  "updates": "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com",
  "funding": "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com",
  "public_listing": null,
  "follower_count": 272190,
  "following_count": 555
}

예시 응답 (상장 기업):

{
  "websites": ["https://apple.com"],
  "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide.",
  "industry": 45202030,
  "company_type": "PUBLIC_COMPANY",
  "founded_year": 1976,
  "specialties": ["Consumer Electronics", "Software", "Services"],
  "name": "Apple",
  "tagline": "Think different",
  "logo_url": "https://nubela.co/api/v1/company/logo?website=https://apple.com",
  "cover_pic_url": "https://example.com/apple-cover.png",
  "facebook_url": "https://facebook.com/apple",
  "twitter_url": "https://twitter.com/apple",
  "instagram_url": "https://instagram.com/apple",
  "employee_count": 164000,
  "addresses": [
    {
      "address_type": "HEADQUARTERS",
      "line1": "One Apple Park Way",
      "line2": null,
      "city": "Cupertino",
      "state": "CA",
      "postal_code": "95014",
      "country_code": "US",
      "country": "United States",
      "is_primary": true
    }
  ],
  "executives": [
    {
      "name": "Tim Cook",
      "title": "Chief Executive Officer",
      "role": "CEO",
      "person_profile_url": "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fapple.com&first_name=Tim&last_name=Cook"
    }
  ],
  "similar_companies": "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fapple.com",
  "updates": "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fapple.com",
  "funding": "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fapple.com",
  "follower_count": 9500000,
  "following_count": 1,
  "public_listing": {
    "stock_symbol": "AAPL",
    "ipo_date": "1980-12-12",
    "isin": "US0378331005",
    "figi": "BBG000B9XRY4",
    "cusip": "037833100",
    "lei": "HWUPKR0MPOU8FGXBT394",
    "cik": "0000320193",
    "sic_code": "3571",
    "revenue_usd": 383285000000,
    "revenue_captured_at": "2024-09-28",
    "ebitda_usd": 134000000000,
    "ebitda_captured_at": "2024-09-28"
  }
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
include_employee_count 아니요 웹 검색을 통해 최신 직원 수 데이터를 가져옵니다. 추가 2 크레딧이 요청 비용에 추가됩니다. 유효한 값: true, false (기본값). true
follower_count 아니요 Twitter/X 팔로워 및 팔로잉 수를 포함합니다. 추가 1 요청 비용에 추가할 크레딧. 유효한 값: include. 생략하거나 다른 값을 전달하면 제외됩니다. include
addresses 아니요 주소 상세 모드. 기본값: hq-only. 사용하세요 best-effort-exhaustive 전 세계 기업 실제 사무실 주소를 최대한 수집하고 저장합니다. 추가 2 크레딧이 요청 비용에 추가됩니다. best-effort-exhaustive
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
websites 기업 웹사이트 URL 전체 목록 ["https://stripe.com", "https://stripe.dev"]
description 기업에 대한 간략한 설명 "Stripe is a technology company..."
industry GICS 8자리 산업 코드 45102010
company_type 기업 유형(PUBLIC_COMPANY, PRIVATELY_HELD, GOVERNMENT_AGENCY, NON_PROFIT, EDUCATIONAL, PARTNERSHIP, SELF_EMPLOYED, SELF_OWNED) "PRIVATELY_HELD"
founded_year 기업 설립 연도 2010
specialties 기업 전문 분야 목록 ["Payments", "Financial Services"]
name 회사명 "Stripe"
tagline 기업 태그라인 또는 슬로건 "Financial infrastructure for the internet"
logo_url URL: 기업 로고 엔드포인트. API 키 bearer 토큰으로 인증하세요. "https://nubela.co/api/v1/company/logo?website=https://stripe.com"
cover_pic_url 기업 커버/배너 이미지 URL "https://example.com/cover.png"
facebook_url Facebook 프로필 URL "https://facebook.com/stripe"
twitter_url Twitter/X 프로필 URL "https://twitter.com/stripe"
instagram_url Instagram 프로필 URL null
employee_count 추정 직원 수 8000
employee_count_range_min 직원 수 범위의 하한값. 다음 조건에서만 제공됩니다: include_employee_count=true. 7500
employee_count_range_max 직원 수 범위의 상한값. 다음 경우에만 존재: include_employee_count=true. 8500
follower_count Twitter/X 팔로워 수. 다음 경우에만 표시됩니다: follower_count=include. 272190
following_count 팔로우 중인 Twitter/X 계정 수. 다음 경우에만 표시됩니다: follower_count=include. 555
addresses 기업 주소 목록. 별도 지정이 없으면 본사만 반환됩니다. addresses=best-effort-exhaustive 요청됩니다. [Address 객체]
executives 기업 임원 및 이사회 구성원 목록 [임원 객체]
similar_companies URL: 경쟁사 목록 엔드포인트. bearer 토큰으로 인증하여 경쟁사를 조회하세요. "https://nubela.co/api/v1/competitor/listing?website=https%3A%2F%2Fstripe.com"
updates URL: 기업 업데이트 엔드포인트. bearer 토큰으로 인증하여 업데이트를 조회하세요. "https://nubela.co/api/v1/company/updates?website=https%3A%2F%2Fstripe.com"
funding URL: 기업 투자 유치 엔드포인트. bearer 토큰으로 인증하여 투자 유치 내역을 조회하세요. "https://nubela.co/api/v1/company/funding?website=https%3A%2F%2Fstripe.com"
public_listing 주식 정보 및 재무 데이터를 포함한 상장 기업 정보. null 비상장 기업의 경우. PublicListing Object

Address 객체

설명 예시
address_type 주소 유형(HEADQUARTERS, REGISTERED, BRANCH, MAILING, OTHER) "HEADQUARTERS"
line1 도로명 주소 1 "354 Oyster Point Blvd"
line2 도로명 주소 2 null
city 도시 이름 "South San Francisco"
state 주, 도 또는 지역 "CA"
postal_code 우편번호 "94080"
country_code ISO 3166-1 alpha-2 국가 코드 "US"
country 국가 전체 이름 "United States"
is_primary 이것이 기본 주소인지 여부 true

임원 객체

설명 예시
name 임원의 전체 이름 "Patrick Collison"
title 직함 "Chief Executive Officer"
role 정규화된 역할 유형 (CEO, CFO, COO, CTO, CMO, PRESIDENT, VICE_PRESIDENT, DIRECTOR, BOARD_MEMBER, CHAIRMAN, FOUNDER, OTHER) "CEO"
person_profile_url 미리 채워진 URL ( Person Profile 엔드포인트. bearer 토큰으로 인증하여 임원 프로필을 가져오세요. null 이름 또는 기업 웹사이트가 누락된 경우. "https://nubela.co/api/v2/employee/profile?employer_website=https%3A%2F%2Fstripe.com&first_name=Patrick&last_name=Collison"

PublicListing Object

이 객체는 상장 기업에만 존재합니다(null이 아님). 비상장 기업의 경우, public_listing 이(가) 됩니다 null.

설명 예시
stock_symbol 주식 티커 심볼 "AAPL"
ipo_date ISO 형식의 IPO 날짜 "1980-12-12"
isin 국제 증권 식별 번호 "US0378331005"
figi 금융상품 글로벌 식별자 "BBG000B9XRY4"
cusip CUSIP 식별자 "037833100"
lei 법인 식별자 "HWUPKR0MPOU8FGXBT394"
cik SEC 중앙 색인 키 "0000320193"
sic_code SEC 표준 산업 분류 코드 "3571"
revenue_usd 연간 매출(USD) 383285000000
revenue_captured_at 매출 데이터가 수집된 날짜(ISO 형식) "2024-09-28"
ebitda_usd USD 기준 EBITDA 134000000000
ebitda_captured_at EBITDA 데이터가 수집된 날짜(ISO 형식) "2024-09-28"

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 2
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 웹사이트에 접근할 수 없습니다
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only
404 해당 웹사이트에서 기업 데이터를 추출할 수 없습니다

직원 수 엔드포인트

GET /api/v1/company/employee-count

비용: 2 크레딧 / 성공한 요청.

웹사이트 URL을 기반으로 기업의 직원 수 범위를 조회합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/employee-count"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_employee_count(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getEmployeeCount("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답:

{
  "employee_count": 3500
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
employee_count 추정 직원 수 3500

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 2
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 주어진 웹사이트에 대한 직원 수 데이터를 찾을 수 없습니다
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only

기업 업데이트 엔드포인트

GET /api/v1/company/updates

비용: 2 크레딧 / 요청.

기업의 최신 블로그 게시물과 X/Twitter 업데이트를 가져옵니다. 최근 블로그 및 X 게시물을 타임스탬프 순으로 정렬한 혼합 타임라인을 반환합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/updates"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_company_updates(website="https://www.stripe.com")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyUpdates("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답

{
  "blogs": ["https://stripe.com/blog/feed.rss"],
  "x_profile": "https://x.com/stripe",
  "youtube_channels": ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"],
  "updates": [
    {
      "url": "https://stripe.com/blog/annual-letter-2024",
      "title": "Stripe's annual letter",
      "description": "A look back at what we built in 2024 and what's ahead.",
      "image_url": null,
      "timestamp": "2025-03-01T12:00:00+00:00",
      "source": "blog"
    },
    {
      "url": "https://x.com/stripe/status/1234567890",
      "title": "We just launched a new feature...",
      "description": "We just launched a new feature that makes payments even easier. Check it out!",
      "image_url": "https://pbs.twimg.com/media/example.jpg",
      "timestamp": "2025-02-28T18:30:00+00:00",
      "source": "x"
    },
    {
      "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
      "title": "How Stripe scales payments",
      "description": "A deep dive into the infrastructure behind Stripe payments.",
      "image_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/hqdefault.jpg",
      "timestamp": "2025-02-20T09:00:00+00:00",
      "source": "youtube"
    }
  ],
  "timestamp": "2025-03-16T10:00:00+00:00"
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 1일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
blogs 블로그 RSS 피드 URL 목록(RSS가 발견된 경우) 또는 블로그 페이지 URL 목록 ["https://stripe.com/blog/feed.rss"]
x_profile X/Twitter 프로필 URL, 또는 null 찾을 수 없는 경우 "https://x.com/stripe"
youtube_channels 기업에서 발견된 YouTube 채널 URL 목록. 없을 경우 빈 값. ["https://www.youtube.com/channel/UCdog0Ap82jpFvSnxorxF_lA"]
updates 업데이트 객체 목록(블로그 게시물, 트윗, YouTube 동영상 혼합), 타임스탬프 내림차순 정렬. 참조: 업데이트 객체
timestamp 이 데이터가 수집된 시각의 UTC 타임스탬프 "2025-03-16T10:00:00+00:00"

업데이트 객체

설명 예시
url 블로그 게시물, 트윗 또는 YouTube 동영상의 URL "https://stripe.com/blog/example"
title 게시물 제목(트윗의 경우 첫 80자) "Stripe's annual letter"
description 게시글 설명, 트윗 텍스트, 또는 동영상 설명 (블로그의 경우 최대 500자) "A look back at..."
image_url 이미지 URL (트윗 미디어 또는 동영상 썸네일), 또는 null "https://pbs.twimg.com/media/example.jpg"
timestamp ISO 8601 게시 타임스탬프, 또는 null 알 수 없는 경우 "2025-03-01T12:00:00+00:00"
source 업데이트의 소스 유형 "blog", "x", 또는 "youtube"

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 2
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 1

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 웹사이트 파라미터가 누락되었거나 유효하지 않습니다
403 아니요 크레딧 부족
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only

기업 투자 유치 엔드포인트

GET /api/v1/company/funding

비용: 2 크레딧 / 요청 (기본) + 1 반환된 고유 투자자당 크레딧. 투자 유치 데이터가 없는 경우에도 기본 요금이 적용됩니다 (참조: error_code: "no_funding_data" 아래 참조).

웹사이트 URL을 기반으로 기업의 투자 유치 이력을 조회합니다. 총 조달 금액, 날짜 및 금액이 포함된 개별 투자 라운드, 그리고 참여 투자자 및 해당 웹사이트를 반환합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --max-time 300 \
  --data-urlencode "website=https://www.stripe.com" \
  "https://nubela.co/api/v1/company/funding"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    # Set a generous read timeout — calls can take up to 5 minutes.
    response = api.get_company_funding(website="https://www.stripe.com", _request_timeout=300)
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
defaultClient.timeout = 300000; // 5 minutes

var api = new NinjaPear.CompanyAPIApi();
api.getCompanyFunding("https://www.stripe.com").then(function (data) {
  console.log(data);
});

예시 응답

{
  "website": "stripe.com",
  "total_funds_raised_usd": 9810000000,
  "credit_cost": 7,
  "funding_rounds": [
    {
      "round_type": "SECONDARY_SALE",
      "date": "2026-02-01",
      "amount_usd": null,
      "investors": [
        {
          "name": "Thrive Capital",
          "website": "thrivecap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Coatue",
          "website": "coatue.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Andreessen Horowitz",
          "website": "a16z.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_I",
      "date": "2024-04-01",
      "amount_usd": 694200000,
      "investors": [
        {
          "name": "Sequoia Capital",
          "website": "sequoiacap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Brookfield",
          "website": "brookfield.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Paradigm",
          "website": "paradigm.co",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_I",
      "date": "2023-03-01",
      "amount_usd": 6500000000,
      "investors": [
        {
          "name": "GIC",
          "website": "gic.com.sg",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Goldman Sachs",
          "website": "goldmansachs.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Temasek",
          "website": "temasek.com.sg",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Thrive Capital",
          "website": "thrivecap.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SERIES_H",
      "date": "2021-03-01",
      "amount_usd": 600000000,
      "investors": [
        {
          "name": "Allianz X",
          "website": "allianzx.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Fidelity",
          "website": "fidelity.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Baillie Gifford",
          "website": "bailliegifford.com",
          "type": "company",
          "amount_usd": null
        }
      ]
    },
    {
      "round_type": "SEED",
      "date": "2011-03-01",
      "amount_usd": 2000000,
      "investors": [
        {
          "name": "Peter Thiel",
          "website": null,
          "type": "angel",
          "amount_usd": null
        },
        {
          "name": "Sequoia Capital",
          "website": "sequoiacap.com",
          "type": "company",
          "amount_usd": null
        },
        {
          "name": "Elon Musk",
          "website": null,
          "type": "angel",
          "amount_usd": null
        }
      ]
    }
  ]
}

URL 파라미터

파라미터 필수 설명 예시
웹사이트 대상 기업의 웹사이트 URL 또는 기업명입니다. 웹사이트 URL(예: https://www.stripe.com) 은(는) 정확도를 위해 강력히 권장됩니다. https://www.stripe.com
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
웹사이트 응답에서 설명하는 기업 도메인으로, 요청에서 그대로 반환됩니다 "stripe.com"
total_funds_raised_usd USD로 조달된 총 투자 유치 금액 또는 null 비공개인 경우 9810000000
funding_rounds 날짜 내림차순으로 정렬된 FundingRound 객체 배열 아래를 참조하세요
credit_cost 이 호출에 청구된 총 크레딧(2 기본 + 1 고유 투자자당). 스트리밍 응답은 크레딧 비용을 응답 본문에 제공합니다 X-NinjaPear-Credit-Cost 헤더. 7

FundingRound 객체

설명 예시
round_type 투자 유치 라운드 유형(아래 라운드 유형 값 참조) "SERIES_A"
date 라운드의 날짜 YYYY-MM-DD 형식이거나 null 알 수 없는 경우 "2023-03-01"
amount_usd 이번 라운드에서 조달된 금액(USD) 또는 null 비공개인 경우 600000000
investors 이번 라운드에 참여한 Investor 객체 배열 아래를 참조하세요

투자자 객체

설명 예시
name 투자자 이름 (기업 또는 개인) "Sequoia Capital"
웹사이트 투자자의 웹사이트 도메인, 또는 null 알 수 없는 경우 "sequoiacap.com"
type 다음 중 하나: "company" (벤처캐피털 회사, 펀드, 법인) 또는 "angel" (개인) "company"
amount_usd 이 투자자가 기여한 금액(USD) 또는 null 비공개인 경우 null

투자 라운드 유형 값

PRE_SEED, SEED, SERIES_A, SERIES_B, SERIES_C, SERIES_D, SERIES_E, SERIES_F, SERIES_G, SERIES_H, SERIES_I 을 통해 SERIES_Z, BRIDGE, VENTURE_DEBT, CONVERTIBLE_NOTE, GRANT, SECONDARY_SALE, PRIVATE_EQUITY, GROWTH_EQUITY, IPO, POST_IPO_EQUITY, POST_IPO_DEBT, DEBT_FINANCING, CROWDFUNDING, CORPORATE_ROUND, UNKNOWN

응답 헤더

이 엔드포인트는 응답을 스트리밍합니다. HTTP 트레일러는 지원되지 않으므로 크레딧 비용은 응답 본문( credit_cost 필드) 대신 X-NinjaPear-Credit-Cost 헤더. 응답이 캐시에서 제공될 경우, X-NinjaPear-Credit-Cost 헤더가 정상적으로 반환됩니다. 해당 X-NinjaPear-Cache-Age-Days 헤더는 모든 성공 응답에 반환됩니다. use_cache 모드; 실시간 신규 데이터 보강은 다음을 반환합니다 0.

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용(기본 2 + 투자자당 1). 캐시 적중 시에만 해당. 7
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

오류 코드

클라이언트 오류(HTTP 400 / 403)는 스트리밍 본문이 시작되기 전에 반환됩니다. 캐시 미스 시 서버 오류는 다음과 같이 전달됩니다 HTTP 200(응답 본문: error 그리고 error_code 응답 본문의 필드 — 스트리밍 연결이 이미 수립되었으므로 상태 코드를 변경할 수 없습니다. 이전에 다음을 기준으로 분기한 클라이언트는 response.status_code == 404 다음 값에 따라 분기해야 합니다 error_code 필드를 대신 사용하세요.

상태 코드 과금됩니까? error_code (본문) 설명
400 아니요 웹사이트 파라미터가 누락되었거나 유효하지 않습니다
403 아니요 크레딧 부족
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only
200 (본문에 오류 포함) 예 (크레딧 2개) no_funding_data 주어진 웹사이트에 대한 투자 유치 데이터를 찾을 수 없습니다. funding_rounds 입니다 [].
200 (본문에 오류 포함) 아니요 service_temp_unavailable 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요. funding_rounds 입니다 [].

웹사이트 조회 엔드포인트

GET /api/v1/company/website

비용: 1 크레딧 / 요청 (일치 여부에 관계없이 청구됨).

기업 이름을 공식 웹사이트 URL로 확인합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "company_name=Apex" \
  --data-urlencode "country_code=us" \
  --data-urlencode "hint=cybersecurity firm" \
  "https://nubela.co/api/v1/company/website"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.CompanyAPIApi(api_client)
    response = api.get_website_lookup(
        company_name="Apex",
        country_code="us",
        hint="cybersecurity firm",
    )
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.CompanyAPIApi();
api.getWebsiteLookup("Apex", {
  countryCode: "us",
  hint: "cybersecurity firm",
}).then(function (data) {
  console.log(data);
});

예시 응답:

{
  "website": "https://www.apexsecurity.com"
}

URL 파라미터

파라미터 필수 설명 예시
company_name 조회할 기업의 이름입니다. Apex
country_code 아니요 검색 결과를 지리적으로 편향하는 데 사용되는 선택적 ISO 3166-1 alpha-2 2자리 국가 코드 (예: us, gb, de, sg). 다음을 참조하세요: ISO 3166-1 alpha-2 코드 전체 목록. 기본값: us 생략된 경우. us
힌트 아니요 동일 국가 내 유사한 이름의 기업을 구별하기 위한 힌트를 제공합니다. cybersecurity firm

응답

설명 예시
웹사이트 확인된 표준 웹사이트 URL입니다. https://www.stripe.com

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 1

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 누락되었거나 유효하지 않음 company_name 파라미터.
400 아니요 유효하지 않음 country_code (인식되지 않는 2자리 코드).
404 예 (1) 주어진 기업 이름에 일치하는 웹사이트를 찾을 수 없습니다.

Employee API

업무용 이메일 엔드포인트

GET /api/v1/employee/work-email

비용: 2 크레딧 (성공적인 조회 시, 업무용 이메일 발견). 이메일이 없는 경우 (work_email 입니다 null), 토큰 청구 금액: 0.5 크레딧이 적용됩니다 — 이는 남용을 방지하면서도 추정 조회 비용을 낮게 유지합니다.

이름(성은 선택)과 기업 도메인을 기반으로 해당 인물의 공개 업무용 이메일을 최선을 다해 반환합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "first_name=Patrick" \
  --data-urlencode "last_name=Collison" \
  --data-urlencode "domain=stripe.com" \
  "https://nubela.co/api/v1/employee/work-email"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    result = api.find_work_email(
        first_name="Patrick",
        last_name="Collison",
        domain="stripe.com",
    )
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api
  .findWorkEmail({
    firstName: "Patrick",
    lastName: "Collison",
    domain: "stripe.com",
  })
  .then(function (data) {
    console.log(data);
  });

예시 응답 (이메일 발견됨)

{
  "work_email": "[email protected]"
}

예시 응답 (근거 없음)

{
  "work_email": null
}

URL 파라미터

파라미터 필수 설명 예시
first_name 인물의 이름. Patrick
last_name 아니요 인물의 성. 패턴에 필요한 경우 정확도가 향상됩니다. Collison
domain 기업 도메인. 프로토콜 및 경로가 포함된 경우 제거됩니다. stripe.com

응답

설명 예시
work_email 최선 노력 방식의 업무용 이메일 주소. null 공개 이메일을 찾을 수 없고 패턴도 추론할 수 없는 경우. "[email protected]" | null

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 호출에 청구된 총 크레딧. 2 캐시 히트 시; 0.5 캐시 미스 시 (토큰 남용 방지 요금). 2 또는 0.5

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 누락되었거나 유효하지 않음 first_name / domain.
403 아니요 크레딧이 부족합니다.
503 아니요 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요.

Person Profile 엔드포인트

GET /api/v2/employee/profile

빠름 평균 10.5초 상세 조회 평균 38.7초

비용: 3 크레딧 / 요청. 데이터가 없는 경우에도 크레딧이 청구됩니다.

업무용 이메일 주소, 이름과 고용주 조합, 또는 직책과 고용주 조합을 기반으로 직원의 전문 프로필을 보강합니다. 경력 이력, 학력, 위치, 소셜 미디어 정보를 포함한 구조화된 프로필 데이터를 반환합니다.

다음 입력 조합 중 하나 이상을 제공해야 합니다:

정확도를 높이기 위해 언제든지 더 많은 파라미터를 추가할 수 있습니다. 예를 들어, work_email 와 함께 first_name, last_name, 그리고 role 보다 더 나은 결과를 반환합니다 work_email 단독으로.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v2/employee/profile"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    profile = api.get_person_profile_v2(work_email="[email protected]")
    print(profile)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api.getPersonProfileV2({ workEmail: "[email protected]" }).then(function (data) {
  console.log(data);
});

예시 응답

{
  "id": "abc123de-f456-7890-abcd-ef1234567890",
  "slug": "elon-musk",
  "profile_pic_url": "https://pbs.twimg.com/profile_images/1234567890/photo_400x400.jpg",
  "first_name": "Elon",
  "middle_name": "Reeve",
  "last_name": "Musk",
  "full_name": "Elon Reeve Musk",
  "bio": "Mars & Cars, Chips & Dips",
  "follower_count": 195000000,
  "following_count": 782,
  "country": "US",
  "city": "USAUS",
  "state": "US-TX",
  "x_handle": "elonmusk",
  "x_profile_url": "https://x.com/elonmusk",
  "personal_website": "https://elonmusk.com",
  "work_experience": [
    {
      "role": "CEO",
      "company_name": "Tesla",
      "company_website": "tesla.com",
      "description": "Leading Tesla's mission to accelerate the world's transition to sustainable energy.",
      "start_date": "2008-10",
      "end_date": null
    },
    {
      "role": "CEO and CTO",
      "company_name": "SpaceX",
      "company_website": "spacex.com",
      "description": "Founded SpaceX with the goal of reducing space transportation costs and enabling the colonization of Mars.",
      "start_date": "2002-05",
      "end_date": null
    },
    {
      "role": "Co-founder",
      "company_name": "PayPal",
      "company_website": "paypal.com",
      "description": null,
      "start_date": "1999-01",
      "end_date": "2002-10"
    }
  ],
  "education": [
    {
      "major": "B.S. Economics",
      "school": "Wharton School, University of Pennsylvania",
      "start_date": "1992-01",
      "end_date": "1997-01"
    },
    {
      "major": "B.S. Physics",
      "school": "University of Pennsylvania",
      "start_date": "1992-01",
      "end_date": "1997-01"
    }
  ],
  "work_email_lookup": "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com",
  "similar_people": "https://nubela.co/api/v1/employee/similar?id=abc123de-f456-7890-abcd-ef1234567890"
}

URL 파라미터

파라미터 필수 설명 예시
work_email 조건부 해당 인물의 업무용 이메일 주소. 다음 경우 필수: employer_website 제공되지 않습니다. [email protected]
first_name 조건부 인물의 이름. 이름 + employer_website 조합. John
middle_name 아니요 인물의 중간 이름. 다른 파라미터와 함께 사용하면 정확도가 향상됩니다. Michael
last_name 아니요 인물의 성. 다른 파라미터와 함께 사용하면 정확도가 향상됩니다. Smith
employer_website 조건부 고용주의 웹사이트 URL 또는 기업명. 정확도를 위해 웹사이트 URL을 강력히 권장합니다. 다음 경우 필수: work_email 제공되지 않습니다. https://stripe.com
role 아니요 현재 직책 또는 역할. 정확도를 높입니다. 다음 사용 시 필수: employer_website 이름 없이. CTO
slug 아니요 기존 보강된 프로필을 직접 조회하기 위한 Person slug. elon-musk
id 아니요 기존 보강된 프로필을 직접 조회하기 위한 Person ID. abc123de-...
enrichment 아니요 실시간 데이터 보강 깊이를 제어합니다. 값: fast (기본값; 빠르게 반환하고 백그라운드에서 상세 데이터 보강을 시작), detailed (반환 전에 상세 데이터 보강이 완료될 때까지 대기).

빠른 응답에는 웹사이트 및 프로필 사진 데이터와 같은 전기적 세부 정보가 적게 포함되지만, 구조화된 경력 및 학력 이력을 빠르게 반환합니다.

빠른 데이터 보강 요청은 백그라운드에서 상세 데이터 보강도 시작하며, 해당 결과도 제공받을 수 있습니다. 동일한 파라미터로 동일한 요청을 폴링하면 use_cache=if-recent 10~30초 후에 완전히 보강된 결과를 추가 비용 없이 조회하세요. 다음 조건이 충족되면 폴링을 중단하세요: X-NinjaPear-Enrichment-Status 응답 헤더는 complete. 상세 데이터 보강이 완료되면, 동일한 요청으로 추가 비용 없이 캐시된 상세 프로필을 반환합니다.

사용 enrichment=fast UI 채우기 등의 사용 사례에서 빠른 결과가 필요한 경우. 사용하세요 enrichment=detailed 전체 응답이 필요하고 대기 시간이 문제가 되지 않는 경우.
fast
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

유효한 입력 조합

조합 예시
work_email 단독으로 [email protected]
first_name + employer_website ?first_name=John&employer_website=https://stripe.com
employer_website + role ?employer_website=https://stripe.com&role=CTO
slug 또는 id ?slug=elon-musk

결과 정확도를 높이기 위해 추가 파라미터를 항상 포함할 수 있습니다.

응답

설명 예시
id 고유 인물 ID입니다. 저장된 인물 레코드가 있는 프로필에만 존재합니다. "abc123de-f456-7890-abcd-ef1234567890"
slug 고유 인물 슬러그입니다. 저장된 인물 레코드가 있는 프로필에만 존재합니다. "elon-musk"
profile_pic_url 인물 프로필 사진 URL (X/Twitter 출처). 값이 null. "https://pbs.twimg.com/.../photo_400x400.jpg"
first_name 이름 "Elon"
middle_name 중간 이름. 다음일 수 있습니다: null. "Reeve"
last_name "Musk"
full_name 전체 이름 "Elon Reeve Musk"
bio X/Twitter 프로필의 소개/설명. 다음일 수 있습니다 null. "Mars & Cars, Chips & Dips"
follower_count X/Twitter 팔로워 수. 다음일 수 있습니다: null. 195000000
following_count 팔로우 중인 X/Twitter 계정 수. 다음일 수 있습니다: null. 782
country 거주 국가. ISO 3166-1 alpha-2 코드. "US"
city 거주 도시. UN/LOCODE 형식. "USAUS"
state 거주 주 또는 지역. ISO 3166-2 세분 코드. "US-TX"
x_handle X/Twitter 핸들 (@ 제외). 다음일 수 있습니다: null. "elonmusk"
x_profile_url X/Twitter 프로필 URL. 다음일 수 있음: null. "https://x.com/elonmusk"
personal_website 개인 웹사이트 URL. 다음일 수 있음: null. "https://elonmusk.com"
work_experience 경력 항목 목록 (최신순) [WorkExperience 객체]
education 학력 항목 목록 (최신순) [학력 객체]
work_email_lookup 미리 생성된 URL ( 업무용 이메일 엔드포인트 이 사람에 대한 정보로, first_name, last_name, 그리고 domain (가장 최근 경력의 웹사이트)가 이미 채워져 있습니다. bearer 토큰으로 직접 호출하면 해당 인물의 업무용 이메일을 확인할 수 있으며, 파라미터를 다시 전달할 필요가 없습니다. 비용: 2 크레딧 / 호출. 다음이 될 수 있습니다: null 현재 재직 중인 기업의 웹사이트를 알 수 없는 경우. "https://nubela.co/api/v1/employee/work-email?first_name=Elon&last_name=Musk&domain=tesla.com"
similar_people 미리 생성된 URL ( 유사 인물 엔드포인트 이 사람에 대한 정보로, 다음을 키로 사용합니다: id. 직접 호출하면 경쟁사에서 동일한 직무를 가진 인물을 가져올 수 있습니다. 검색 파라미터를 다시 전달할 필요가 없습니다. "https://nubela.co/api/v1/employee/similar?id=abc123de-..."

WorkExperience 객체

설명 예시
role 직함 또는 역할 "CEO"
company_name 기업 이름 "Tesla"
company_website 기업 웹사이트 도메인. 다음일 수 있음: null. "tesla.com"
description 해당 역할에서 수행한 업무에 대한 설명. 다음일 수 있음: null. "Leading Tesla's mission..."
start_date YYYY-MM 형식의 시작 날짜. 다음일 수 있습니다: null. "2008-10"
end_date YYYY-MM 형식의 종료 날짜. null 현재 해당 직책에 재직 중임을 의미합니다. null

학력 객체

설명 예시
major 학위 및 전공 분야 "B.S. Economics"
school 학교 또는 대학교 이름 "Wharton School, University of Pennsylvania"
start_date YYYY-MM 형식의 시작 날짜. 다음일 수 있습니다: null. "1992-01"
end_date YYYY-MM 형식의 종료 날짜. 다음일 수 있음: null. "1997-01"

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 3
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12
X-NinjaPear-Enrichment-Status v2 인물 프로필 응답에 대한 상세 데이터 보강 상태. pending 응답이 빠른 프로필임을 의미하며, 상세 데이터 보강이 아직 실행 중이거나 완료 대기 중입니다. complete 응답이 상세한 캐시된 프로필 또는 enrichment=detailed 결과. 이 헤더가 complete. complete

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 입력값이 유효하지 않습니다. 다음을 제공해야 합니다: work_email, 또는 first_name + employer_website, 또는 employer_website + role.
400 아니요 유효하지 않음 enrichment. 사용하세요 fast 또는 detailed. 더 이상 사용되지 않는 speed 파라미터는 허용되지 않습니다.
400 아니요 work_email 개인/무료 이메일입니다 (예: [email protected]). 법인 업무용 이메일을 제공하세요.
403 아니요 크레딧 부족
404 아니요 work_email 역할 기반 / 공용 메일박스입니다 (예: info@, support@, sales@, noreply@) 가 특정 개인에 매핑되지 않는 경우.
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only
404 예 (크레딧 3개) 주어진 입력에 대한 프로필 데이터를 찾을 수 없습니다
503 아니요 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요.

유사 인물 엔드포인트

GET /api/v1/employee/similar

비용: 10 크레딧 기본 + 5 크레딧 / 시도된 (기업, 역할) 튜플. 기본 비용은 유사한 사람의 발견 여부와 관계없이 청구됩니다. 이는 엔드포인트가 모든 요청을 처리하기 위해 실시간 데이터 보강 리소스를 사용하기 때문입니다. 캐시된 결과는 무료입니다 (아래 참조).

다음에 해당하는 사람 찾기: 유사한 타겟 인물에 대해 — 다음 직책을 보유한 사람으로 정의됩니다 경쟁사에서 동일한 역할. 대상(예: CEO of nubela.co), 엔드포인트는 대상의 현재 고용주를 파악하고, 해당 고용주의 경쟁사를 조회한 뒤, 각 경쟁사에서 동일한 직책의 인물을 실시간으로 데이터 보강을 시도합니다. 응답에는 대상의 프로필, 검색을 시도한 (기업, 직책) 튜플 목록, 그리고 성공적으로 데이터 보강된 유사 인물이 포함됩니다.

입력값은 다음과 동일합니다: Person Profile 엔드포인트. 다음 입력 조합 중 하나 이상을 제공해야 합니다:

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --max-time 300 \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v1/employee/similar"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    # Set a generous read timeout — calls can take up to 5 minutes.
    result = api.get_similar_people(work_email="[email protected]", _request_timeout=300)
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";
defaultClient.timeout = 300000; // 5 minutes

var api = new NinjaPear.EmployeeAPIApi();
api.getSimilarPeople({ workEmail: "[email protected]" }).then(function (data) {
  console.log(data);
});

예시 응답

{
  "target": {
    "first_name": "Tim",
    "last_name": "Cook",
    "full_name": "Tim Cook",
    "work_experience": [
      {
        "role": "CEO",
        "company_name": "Apple",
        "company_website": "apple.com",
        "start_date": "2011-08",
        "end_date": null
      }
    ]
  },
  "attempted_searches": [
    { "employer_website": "samsung.com", "role": "CEO" },
    { "employer_website": "google.com", "role": "CEO" },
    { "employer_website": "microsoft.com", "role": "CEO" },
    { "employer_website": "huawei.com", "role": "CEO" }
  ],
  "similar_people": [
    {
      "first_name": "Sundar",
      "last_name": "Pichai",
      "full_name": "Sundar Pichai",
      "work_experience": [
        {
          "role": "CEO",
          "company_name": "Google",
          "company_website": "google.com",
          "start_date": "2015-08",
          "end_date": null
        }
      ]
    },
    {
      "first_name": "Satya",
      "last_name": "Nadella",
      "full_name": "Satya Nadella",
      "work_experience": [
        {
          "role": "CEO",
          "company_name": "Microsoft",
          "company_website": "microsoft.com",
          "start_date": "2014-02",
          "end_date": null
        }
      ]
    }
  ],
  "credit_cost": 30
}

간결성을 위해 위 예시는 일부만 표시합니다. PersonProfile 필드. 아래의 각 항목은 타겟 그리고 similar_people 전체 PersonProfile 객체 — 다음을 참조하세요: Person Profile 엔드포인트 응답 다음을 포함한 전체 스키마를 보려면: profile_pic_url, bio, country, x_handle, education, 등.

URL 파라미터

다음과 동일: Person Profile 엔드포인트 URL 파라미터.

파라미터 필수 설명 예시
work_email 조건부 대상 인물의 업무용 이메일 주소. 다음 경우 필수: employer_website 제공되지 않습니다. [email protected]
first_name 조건부 대상의 이름. 이름 + 사용 시 필수 employer_website 조합. Tim
middle_name 아니요 대상의 중간 이름. 다른 파라미터와 함께 사용하면 정확도가 향상됩니다. Donald
last_name 아니요 대상의 성. 다른 파라미터와 함께 사용하면 정확도가 향상됩니다. Cook
employer_website 조건부 대상 고용주의 웹사이트 URL 또는 기업명. 정확도를 위해 웹사이트 URL을 강력히 권장합니다. 다음 경우 필수: work_email 제공되지 않습니다. https://apple.com
role 아니요 현재 직책 또는 역할. 다음 사용 시 필수: employer_website 이름 없이. CEO

유효한 입력 조합

조합 예시
work_email 단독으로 [email protected]
first_name + employer_website ?first_name=Tim&employer_website=https://apple.com
employer_website + role ?employer_website=https://apple.com&role=CEO

응답

설명 예시
타겟 확인된 대상 인물의 전체 프로필입니다. 스키마는 Person Profile 엔드포인트. { "first_name": "Tim", ... }
attempted_searches 보강을 시도한 (기업, 역할) 튜플 목록. 대상의 현재 고용주의 경쟁사당 하나의 항목. 튜플별 청구(각 5 크레딧)의 기준이 됩니다. [AttemptedSearch 객체]
similar_people 경쟁사에서 동일한 역할을 수행하는 사람들의 데이터 보강이 완료된 프로필 목록. 전체의 일부일 수 있습니다. attempted_searches (일부 시도는 데이터를 반환하지 않을 수 있습니다). 각 항목은 동일한 스키마를 사용합니다: Person Profile 엔드포인트. [PersonProfile, ...]
credit_cost 이 호출에 청구된 총 크레딧. 다음과 같음: 10 + 5 * len(attempted_searches), 또는 0 이전에 비용을 지불한 동일한 제품에 제공되는 캐시된 결과의 경우. 30

AttemptedSearch 객체

설명 예시
employer_website 조회를 시도한 경쟁사 기업의 웹사이트 도메인. "google.com"
role 해당 경쟁사에서 검색한 역할(타겟을 반영합니다). "CEO"

응답 헤더

이 엔드포인트는 응답을 스트리밍하므로 크레딧 비용을 헤더로 반환할 수 없습니다. HTTP 트레일러는 스트리밍 레이어에서 지원되지 않습니다. credit_cost 응답 본문의 필드 (일반적인 필드 대신): X-NinjaPear-Credit-Cost 헤더.

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 입력값이 유효하지 않습니다. 다음을 제공해야 합니다: work_email, 또는 first_name + employer_website, 또는 employer_website + role.
400 아니요 work_email 개인/무료 이메일입니다 (예: [email protected]). 법인 업무용 이메일을 제공하세요.
403 아니요 크레딧이 부족합니다. 유사 인물 검색을 시작하려면 최소 10 크레딧이 필요합니다.
404 아니요 work_email 역할 기반 / 공용 메일박스입니다 (예: info@, support@, sales@, noreply@) 가 특정 개인에 매핑되지 않는 경우.
404 아니요 대상 인물을 확인할 수 없습니다.
503 아니요 리소스를 일시적으로 사용할 수 없습니다. 다시 시도해 주세요.

직원 검색 엔드포인트

GET /api/v1/employee/search

비용: 기본 2 크레딧 / 호출 (직원이 반환되지 않아도 청구됨), 추가로 1 의 직원당 크레딧 직원 배열. 직원 10명을 반환하는 쿼리의 비용: 2 + 10 = 12 크레딧.

역할별로 필터링된 기업의 현재 직원을 찾아보세요. 선택적으로 지역별로 범위를 좁힐 수 있습니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "company_website=stripe.com" \
  --data-urlencode "role=VP of Engineering" \
  "https://nubela.co/api/v1/employee/search"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.EmployeeAPIApi(api_client)
    result = api.search_employees(
        company_website="stripe.com",
        role="VP of Engineering",
    )
    print(result)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.EmployeeAPIApi();
api.searchEmployees({
  companyWebsite: "stripe.com",
  role: "VP of Engineering",
}).then(function (data) {
  console.log(data);
});

예시 응답

{
  "employees": [
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "role": "VP of Engineering",
      "company_website": "stripe.com",
      "company_details": "https://nubela.co/api/v1/company/details?website=stripe.com",
      "person_profile": "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com",
      "work_email": "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"
    },
    {
      "first_name": "John",
      "last_name": "Smith",
      "role": "Director of Engineering",
      "company_website": "stripe.com",
      "company_details": "https://nubela.co/api/v1/company/details?website=stripe.com",
      "person_profile": "https://nubela.co/api/v2/employee/profile?first_name=John&last_name=Smith&employer_website=https%3A%2F%2Fstripe.com",
      "work_email": "https://nubela.co/api/v1/employee/work-email?first_name=John&last_name=Smith&domain=stripe.com"
    }
  ]
}

URL 파라미터

파라미터 필수 설명 예시
company_website 대상 기업입니다. 웹사이트(예: stripe.com 또는 다음과 같은 전체 URL https://stripe.com). 기업명(예: Stripe) 도 허용됩니다. stripe.com
role 검색 범위를 좁히기 위한 직무 역할. 관련 역할 변형과 매칭됩니다 (예: VP of Engineering 도 일치합니다 Vice President, Engineering). VP of Engineering
country 아니요 검색을 제한할 ISO 3166-1 alpha-2 국가 코드. US
state 아니요 제한할 주 또는 지역(자유 형식). 캘리포니아
city 아니요 검색을 제한할 도시 (자유 형식). San Francisco
use_cache 아니요 캐시 사용 방식을 제어합니다. 대소문자 구분 없음. 값: if-recent (기본값; 마지막 수집이 29일 이내이면 캐시 데이터를 사용하고, 그렇지 않으면 실시간으로 데이터를 보강), if-present (캐시를 먼저 반환하고, 없으면 실시간으로 데이터를 보강), if-present-only (캐시만 반환; 없으면 404 반환), never (항상 실시간으로 데이터를 보강합니다). 유효하지 않은 값은 엔드포인트 기본값으로 대체됩니다. if-recent

응답

설명 예시
직원 대상 기업의 조건에 맞는 직원 목록. 없을 경우 빈 배열. [직원 객체]

직원 객체

설명 예시
first_name 직원의 이름입니다. "Jane"
last_name 직원의 성입니다. 다음일 수 있습니다: null 사용할 수 없는 경우. "Doe"
role 대상 기업에서 직원의 현재 직책입니다. "VP of Engineering"
company_website 직원이 근무하는 대상 고용주의 웹사이트. 해석된 값을 반영합니다: company_website 모든 레코드의 입력 파라미터. "stripe.com"
company_details 미리 채워진 URL ( 기업 상세 정보 엔드포인트, 다음으로 채워진: 웹사이트. bearer 토큰으로 인증하여 기업 상세 정보를 조회하세요. "https://nubela.co/api/v1/company/details?website=stripe.com"
person_profile 미리 채워진 URL ( Person Profile 엔드포인트, 다음으로 채워진: first_name, last_name, 그리고 employer_website. bearer 토큰으로 직접 호출하여 인물 데이터를 보강하세요. 비용: 3 크레딧 / 호출. "https://nubela.co/api/v2/employee/profile?first_name=Jane&last_name=Doe&employer_website=https%3A%2F%2Fstripe.com"
work_email 미리 채워진 URL ( 업무용 이메일 엔드포인트, 다음으로 채워진: first_name, last_name, 그리고 domain. bearer 토큰으로 직접 호출하여 업무용 이메일을 확인하세요. 비용: 2 크레딧 (결과 있을 때), 0.5 크레딧 (이메일이 없는 경우). "https://nubela.co/api/v1/employee/work-email?first_name=Jane&last_name=Doe&domain=stripe.com"

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 호출에 청구된 총 크레딧. 다음과 같음: 2 + N 다음의 경우 N 반환된 직원 수입니다 (2 배열이 비어 있는 경우). 12
X-NinjaPear-Cache-Age-Days 반환된 데이터의 경과 일수(정수). 0 라이브 데이터 보강에서 최신 데이터가 반환된 경우. 12

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 누락되었거나 유효하지 않음 company_website 또는 role 파라미터.
403 아니요 크레딧이 부족합니다. 최소 2 크레딧으로 검색을 시작합니다.
404 아니요 다음 경우 캐시된 데이터를 찾을 수 없습니다: use_cache=if-present-only
404 아니요 제공된 company_website 알려진 기업으로 확인할 수 없습니다.
503 아니요 리소스를 일시적으로 사용할 수 없습니다. 다시 시도해 주세요.

Meta API

크레딧 잔액 조회 엔드포인트

GET /api/v1/meta/credit-balance

비용: 0 크레딧 / 성공한 요청.

현재 크레딧 잔액을 조회합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/meta/credit-balance"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.MetaAPIApi(api_client)
    response = api.get_credit_balance()
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.MetaAPIApi();
api.getCreditBalance().then(function (data) {
  console.log(data);
});

예시 응답:

{
  "credit_balance": 100000
}

응답

설명 예시
credit_balance 현재 크레딧 잔액 100000

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 0

오류 코드

상태 코드 과금됩니까? 설명
401 아니요 유효하지 않은 API key

Contact API

일회용 이메일 검사 엔드포인트

GET /api/v1/contact/disposable-email

비용: 0 크레딧 / 성공한 요청. (무료)

이메일 주소가 일회용(임시/단기) 이메일인지 또는 무료 이메일 제공업체인지 확인합니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "[email protected]" \
  "https://nubela.co/api/v1/contact/disposable-email"
import ninjapear

configuration = ninjapear.Configuration(
    host="https://nubela.co",
    access_token="YOUR_API_KEY"
)

with ninjapear.ApiClient(configuration) as api_client:
    api = ninjapear.ContactAPIApi(api_client)
    response = api.check_disposable_email(email="[email protected]")
    print(response)
var NinjaPear = require("ninjapear");
var defaultClient = NinjaPear.ApiClient.instance;
defaultClient.authentications["bearerAuth"].accessToken = "YOUR_API_KEY";

var api = new NinjaPear.ContactAPIApi();
api.checkDisposableEmail("[email protected]").then(function (data) {
  console.log(data);
});

예시 응답:

{
  "email": "[email protected]",
  "is_disposable_email": true,
  "is_free_email": false
}

URL 파라미터

파라미터 필수 설명 예시
이메일 확인할 이메일 주소 [email protected]

응답

설명 예시
이메일 확인된 이메일 주소 "[email protected]"
is_disposable_email 이메일 도메인이 알려진 일회용/임시 이메일 제공업체인지 여부 true
is_free_email 이메일 도메인이 무료 이메일 제공업체인지 여부 (예: gmail.com, yahoo.com) false

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 0

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 이메일 형식이 올바르지 않습니다

Monitor API

Monitor API를 사용하면 기업의 업데이트를 모니터링할 수 있습니다. 새로운 업데이트는 모두 단일 RSS 피드로 통합됩니다. 시스템은 기업 블로그, X (Twitter) 프로필, 웹사이트 변경 사항을 모니터링합니다.

핵심 개념

사용 방법

경쟁사 웹사이트 그룹의 블로그 게시물, X 활동, 웹사이트 변경 사항을 모니터링하고, 이를 Feedly, Slack, Zapier 또는 임의의 RSS 리더에 연결할 수 있는 단일 RSS 피드로 받아보고 싶다고 가정해 보세요.

1. 대상이 포함된 피드 생성 — 모니터링할 기업들을 피드로 묶으세요. 각 기업은 타겟 웹사이트 URL로 식별됩니다.

curl -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "SaaS Competitors", "targets": [ { "website_url": "https://stripe.com" }, { "website_url": "https://shopify.com" }, { "website_url": "https://vercel.com" } ] }' \ "https://nubela.co/api/v1/monitor/feeds"

응답에는 rss_url — 이것이 구독할 URL입니다.

{ "id": "feed_abc123", "rss_url": "https://nubela.co/.../rss.xml?token=sec_live_..." }

2. RSS 피드 구독 — 다음을 복사하세요: rss_url RSS 리더(Feedly, Slack, Zapier 등)에 추가하세요. 모든 대상의 블로그 게시물, X 게시물, 웹사이트 변경 사항이 단일 피드의 항목으로 표시됩니다.

Stripe: Expanding our Payment Network [blog] Vercel on X: "Next.js 16 is here" [x] Shopify: Pricing Page [website update]

각 항목에는 카테고리(블로그, x, website update, 또는 website new page). 참조: 피드 소비 엔드포인트 전체 RSS 스키마를 보려면.

3. 새 대상 추가 — 새로운 경쟁사가 시장에 진입했나요? 피드에 추가하세요.

curl -X POST \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "website_url": "https://linear.app" }' \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets"

4. 대상 제거 — 더 이상 관련 없는 기업이 생겼나요? 피드에서 제거하세요.

curl -X DELETE \ -H "Authorization: Bearer YOUR_API_KEY" \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

5. 모니터링 설정 변경 — 기본적으로 모든 대상은 7일 주기로 블로그 게시물, X 게시물, 웹사이트 변경 사항을 모니터링합니다. PATCH를 사용하여 채널을 전환하거나 주기를 변경하세요.

curl -X PATCH \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "settings": { "monitor_x": false, "frequency_days": 1 } }' \ "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

포함된 필드만 변경되며, 생략된 필드는 현재 값을 유지합니다. 다음을 참조하세요: 설정 객체 모든 사용 가능한 옵션을 확인하세요.

요금제

작업 비용
피드 만들기 3 크레딧 (1회)
블로그 게시물 수집 (대상별) 1 크레딧/조회
웹사이트 모니터링 풀 (대상별) 1 크레딧/조회
X 게시물 업데이트 풀 (대상별) 2 크레딧/조회
YouTube 업데이트 수집 (대상별) 1 크레딧/조회
기타 모든 엔드포인트 (피드 목록 조회, 설명, 삭제, 대상 관리) 0 크레딧

각 수집은 하나의 소스(블로그, X, 웹사이트 또는 YouTube)에 대해 하나의 대상을 확인합니다. 네 가지 소스를 모두 활성화하면 단일 대상의 비용은 조회당 5 크레딧 (블로그 1개 + X 2개 + 웹사이트 1개 + YouTube 1개).

예시 월간 비용

시나리오 대상 빈도 크레딧/월
20개 포트폴리오 기업을 추적하는 VC 20 주간 ~433 크레딧 (일회성 3 + 20 × 5 × 4.3주)
스타트업이 10개 경쟁사를 모니터링 10 매일 ~1,503 크레딧 (일회성 3 + 10 × 5 × 30일)
영업팀이 5개의 잠재 고객 계정을 모니터링(블로그 + X만, 웹사이트 제외) 5 매일 ~453 크레딧 (일회성 3 + 5 × 3 × 30일)

피드 생성 일회성 비용 (크레딧 3개)은 첫 달에만 포함됩니다.

피드 목록 엔드포인트

GET /api/v1/monitor/feeds

비용: 0 크레딧 / 요청.

인증된 사용자가 소유한 모든 피드 목록을 가져옵니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds"

예시 응답:

{
  "feeds": [
    {
      "id": "feed_abc123",
      "name": "SaaS Competitors",
      "is_public": false,
      "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
      "created_at": "2026-02-24T00:00:00Z",
      "target_count": 2
    }
  ]
}

응답

설명 예시
feeds 피드 객체 목록 참조: 피드 객체

피드 객체

설명 예시
id 고유 피드 식별자 "feed_abc123"
name 피드 이름 "SaaS Competitors"
is_public 피드가 공개적으로 접근 가능한지 여부 false
is_suspended 피드가 현재 일시 중단 상태인지 여부 false
suspension_reason 정지된 경우 정지 사유 null 또는 "insufficient_credits"
rss_url RSS 피드 URL입니다. 비공개 피드의 경우 토큰 쿼리 파라미터가 포함됩니다. "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321"
email_notifications 이메일 알림 모드 "skip" 또는 "on_updates"
created_at ISO 8601 생성 타임스탬프 "2026-02-24T00:00:00Z"
target_count 피드의 대상 수 2

새 피드 엔드포인트

POST /api/v1/monitor/feeds

비용: 3 크레딧 / 요청 (일회성 요금).

새 피드를 생성하며, 선택적으로 초기 대상 배열을 받을 수 있습니다.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "SaaS Competitors",
    "is_public": false,
    "targets": [
      {
        "website_url": "https://stripe.com",
        "settings": {
          "monitor_blog": true,
          "monitor_x": true,
          "monitor_website": true,
          "monitor_youtube": true,
          "frequency_days": 7
        }
      },
      {
        "website_url": "https://vercel.com"
      }
    ]
  }' \
  "https://nubela.co/api/v1/monitor/feeds"

예시 응답 201 Created:

{
  "id": "feed_abc123",
  "name": "SaaS Competitors",
  "is_public": false,
  "is_suspended": false,
  "suspension_reason": null,
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
  "created_at": "2026-02-24T09:55:00Z",
  "targets": [
    {
      "id": "target_xyz789",
      "website_url": "https://stripe.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    },
    {
      "id": "target_xyz790",
      "website_url": "https://vercel.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    }
  ]
}

요청 본문

파라미터 필수 설명 예시
name 아니요 피드 이름. 생략 시 자동으로 생성됩니다. "SaaS Competitors"
is_public 아니요 피드가 공개적으로 접근 가능한지 여부 (기본값: false) false
email_notifications 아니요 이메일 알림 모드. "on_updates" 새로운 업데이트가 감지될 때 이메일을 수신하려면, "skip" 비활성화하려면 (기본값: "skip") "on_updates"
targets 피드에 추가할 초기 대상 배열 (최소 1개 필요) 참조: 대상 입력 객체

대상 입력 객체

파라미터 필수 설명 예시
website_url 모니터링할 기업의 웹사이트 URL "https://stripe.com"
settings 아니요 모니터링 설정. 생략 시 기본값이 적용됩니다. 참조: 설정 객체

설정 객체

파라미터 필수 설명 예시
monitor_blog 아니요 기업 블로그의 새 게시물 모니터링 (기본값: true) true
monitor_x 아니요 기업의 X(Twitter) 계정 모니터링 (기본값: true) true
monitor_website 아니요 기업 웹사이트의 콘텐츠 변경 및 새 페이지 모니터링 (기본값: true) true
monitor_youtube 아니요 기업 공식 YouTube 채널의 새 동영상 모니터링 (기본값: true) true
frequency_days 아니요 업데이트 확인 주기(일 단위). 1~30 사이의 값이어야 합니다(기본값: 7) 7

유효성 검사 규칙

응답

반환값 201 Created. 응답에는 생성된 피드 객체 추가로 targets 를 포함하는 배열 대상 객체 항목.

대상 객체

설명 예시
id 고유 타겟 식별자 "target_xyz789"
website_url 모니터링 중인 기업의 웹사이트 URL "https://stripe.com"
settings 모니터링 설정 객체 참조: 설정 객체
last_polled_at 마지막 폴링의 ISO 8601 타임스탬프, 또는 null 한 번도 폴링하지 않은 경우 null
is_baseline_complete 초기 기준 스냅샷이 캡처되었는지 여부 false
created_at ISO 8601 생성 타임스탬프 "2026-02-24T09:55:00Z"

응답 헤더

헤더 키 설명 예시
X-NinjaPear-Credit-Cost 이 API 호출에 대한 총 크레딧 비용 3

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 유효성 검사 오류 (타겟 누락, URL 접근 불가, 모니터 플래그 미활성화)

피드 조회 엔드포인트

GET /api/v1/monitor/feeds/{feed_id}

비용: 0 크레딧 / 요청.

연결된 모든 타겟을 포함하여 단일 피드의 전체 세부 정보를 가져옵니다.

curl -G \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"

예시 응답:

{
  "id": "feed_abc123",
  "name": "SaaS Competitors",
  "is_public": false,
  "is_suspended": false,
  "suspension_reason": null,
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=sec_live_987654321",
  "created_at": "2026-02-24T09:55:00Z",
  "targets": [
    {
      "id": "target_xyz789",
      "website_url": "https://stripe.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": "2026-02-24T12:00:00Z",
      "is_baseline_complete": true,
      "created_at": "2026-02-24T09:55:00Z"
    },
    {
      "id": "target_xyz790",
      "website_url": "https://vercel.com",
      "settings": {
        "monitor_blog": true,
        "monitor_x": true,
        "monitor_website": true,
        "monitor_youtube": true,
        "frequency_days": 7
      },
      "last_polled_at": null,
      "is_baseline_complete": false,
      "created_at": "2026-02-24T09:55:00Z"
    }
  ]
}

URL 파라미터

파라미터 필수 설명 예시
feed_id 피드의 ID feed_abc123

응답

반환값: 피드 객체 추가로 targets 를 포함하는 배열 대상 객체 항목.

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 피드를 찾을 수 없음

피드 삭제 엔드포인트

DELETE /api/v1/monitor/feeds/{feed_id}

비용: 0 크레딧 / 요청.

피드 및 관련 대상을 모두 영구 삭제합니다.

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"

URL 파라미터

파라미터 필수 설명 예시
feed_id 삭제할 피드의 ID feed_abc123

응답

반환값 200 OK 확인 메시지와 함께.

{
  "message": "Feed deleted."
}

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 피드를 찾을 수 없음

대상 추가 엔드포인트

POST /api/v1/monitor/feeds/{feed_id}/targets

비용: 0 크레딧 / 요청.

기존 피드에 새 기업을 추가합니다.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "website_url": "https://shopify.com",
    "settings": {
      "monitor_blog": true,
      "monitor_x": true,
      "monitor_website": false,
      "frequency_days": 3
    }
  }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets"

예시 응답 201 Created:

{
  "id": "target_xyz791",
  "website_url": "https://shopify.com",
  "settings": {
    "monitor_blog": true,
    "monitor_x": true,
    "monitor_website": false,
    "frequency_days": 3
  },
  "last_polled_at": null,
  "is_baseline_complete": false,
  "created_at": "2026-02-24T10:00:00Z"
}

URL 파라미터

파라미터 필수 설명 예시
feed_id 대상을 추가할 피드의 ID feed_abc123

요청 본문

파라미터 필수 설명 예시
website_url 모니터링할 기업의 웹사이트 URL "https://shopify.com"
settings 아니요 모니터링 설정. 생략 시 기본값이 적용됩니다. 참조: 설정 객체

응답

반환값: 대상 객체.

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 피드를 찾을 수 없음

타겟 업데이트 엔드포인트

PATCH /api/v1/monitor/feeds/{feed_id}/targets/{target_id}

비용: 0 크레딧 / 요청.

특정 대상의 모니터링 설정을 수정합니다.

curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": {
      "frequency_days": 1,
      "monitor_website": true
    }
  }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

URL 파라미터

파라미터 필수 설명 예시
feed_id 피드의 ID feed_abc123
target_id 업데이트할 대상의 ID target_xyz789

요청 본문

파라미터 필수 설명 예시
settings 부분 설정 업데이트. 제공된 필드만 변경됩니다. 참조: 설정 객체

응답

업데이트된 값을 반환합니다: 대상 객체.

예시 응답:

{
  "id": "target_xyz789",
  "website_url": "https://stripe.com",
  "settings": {
    "monitor_blog": true,
    "monitor_x": true,
    "monitor_website": true,
    "monitor_youtube": true,
    "frequency_days": 1
  },
  "last_polled_at": "2026-02-24T12:00:00Z",
  "is_baseline_complete": true,
  "created_at": "2026-02-24T09:55:00Z"
}

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 유효한 설정이 제공되지 않았습니다
404 아니요 피드 또는 대상을 찾을 수 없음

대상 제거 엔드포인트

DELETE /api/v1/monitor/feeds/{feed_id}/targets/{target_id}

비용: 0 크레딧 / 요청.

웹사이트 모니터링을 중지하고 피드에서 제거합니다.

curl -X DELETE \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123/targets/target_xyz789"

URL 파라미터

파라미터 필수 설명 예시
feed_id 피드의 ID feed_abc123
target_id 제거할 대상의 ID target_xyz789

응답

반환값 200 OK 확인 메시지와 함께.

{
  "message": "Target deleted."
}

오류 코드

상태 코드 과금됩니까? 설명
404 아니요 피드 또는 대상을 찾을 수 없음

피드 소비 엔드포인트

GET /api/v1/monitor/feeds/{feed_id}/rss.xml

비용: 0 크레딧 / 요청 (모니터링 비용은 각 대상에 대한 풀마다 발생합니다 — 참조: 요금제).

RSS 리더(Feedly, Slack, 브라우저 확장 프로그램 등)에서 사용하는 표준 RSS 2.0 XML 피드를 반환합니다.

피드의 is_public 입니다 false, 유효한 토큰을 다음으로 전달해야 합니다: token 쿼리 파라미터.

curl "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=YOUR_RSS_TOKEN"

예시 응답:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
  <title>SaaS Competitors</title>
  <link>https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml</link>
  <description>Automated updates for Stripe, Shopify, and Vercel.</description>
  <lastBuildDate>Tue, 24 Feb 2026 10:00:00 +0800</lastBuildDate>

  <item>
    <title>Stripe: Expanding our Global Payment Network</title>
    <link>https://stripe.com/blog/global-network-2026</link>
    <guid isPermaLink="true">https://stripe.com/blog/global-network-2026</guid>
    <pubDate>Mon, 23 Feb 2026 14:30:00 +0800</pubDate>
    <category>blog</category>
    <dc:creator>Stripe</dc:creator>
    <description>Stripe is expanding its payments infrastructure to 15 new countries, enabling merchants to accept local payment methods seamlessly.</description>
    <enclosure url="https://b.stripecdn.com/blog/og-global-network.jpg" length="150000" type="image/jpeg" />
  </item>

  <item>
    <title>Vercel on X: "Next.js 16 is here..."</title>
    <link>https://x.com/vercel/status/123456789</link>
    <guid isPermaLink="false">x_post_123456789</guid>
    <pubDate>Sun, 22 Feb 2026 10:15:00 +0800</pubDate>
    <category>x</category>
    <dc:creator>Vercel</dc:creator>
    <description>Next.js 16 is here, featuring completely redesigned server components and faster builds. Read the changelog.</description>
    <enclosure url="https://pbs.twimg.com/media/vercel-next16.jpg" length="85000" type="image/jpeg" />
  </item>

  <item>
    <title>Shopify: Pricing Page</title>
    <link>https://shopify.com/pricing</link>
    <guid isPermaLink="false">website_update_shopify_pricing_1708416000</guid>
    <pubDate>Fri, 20 Feb 2026 08:00:00 +0800</pubDate>
    <category>website update</category>
    <dc:creator>Shopify</dc:creator>
    <description>Compare Shopify's pricing plans to find the best fit for your business. Start your free trial today.</description>
    <enclosure url="https://cdn.shopify.com/assets/og-pricing.png" length="210000" type="image/png" />
  </item>

  <item>
    <title>Shopify: Enterprise Plus Solutions</title>
    <link>https://shopify.com/enterprise-plus</link>
    <guid isPermaLink="true">https://shopify.com/enterprise-plus</guid>
    <pubDate>Thu, 19 Feb 2026 11:20:00 +0800</pubDate>
    <category>website new page</category>
    <dc:creator>Shopify</dc:creator>
    <description>Unleash your brand's potential with Shopify Enterprise Plus. High-volume solutions for global commerce.</description>
    <enclosure url="https://cdn.shopify.com/assets/og-enterprise.jpg" length="320000" type="image/jpeg" />
  </item>

</channel>
</rss>

URL 파라미터

파라미터 필수 설명 예시
feed_id 피드의 ID feed_abc123

응답 형식

응답은 표준 RSS 2.0 XML 문서입니다. 구조는 다음과 같습니다:

채널 요소

요소 설명 예시
<title> 피드 이름 SaaS Competitors
<link> RSS 피드의 URL https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml
<description> 모니터링 중인 기업의 자동 생성 요약 Automated updates for Stripe, Shopify, and Vercel.
<lastBuildDate> 마지막 피드 빌드의 RFC 2822 타임스탬프 Tue, 24 Feb 2026 10:00:00 +0800

항목 요소

<item> 모니터링 중인 기업의 단일 업데이트를 나타냅니다.

요소 설명 예시
<title> 기업 이름이 접두사로 붙은 업데이트 제목 Stripe: Expanding our Global Payment Network
<link> 원본 콘텐츠의 URL https://stripe.com/blog/global-network-2026
<guid> 항목의 고유 식별자입니다. isPermaLink 입니다 true GUID가 URL인 경우. https://stripe.com/blog/global-network-2026
<pubDate> RFC 2822 게시 타임스탬프 Mon, 23 Feb 2026 14:30:00 +0800
<category> 업데이트 유형 (아래 카테고리 참조) 블로그
<dc:creator> 기업명 (Dublin Core 네임스페이스 사용) Stripe
<description> 업데이트 요약 또는 발췌 텍스트 콘텐츠
<enclosure> 선택적 이미지 첨부 파일( url, length (바이트), 그리고 type (MIME 타입) 속성 <enclosure url="..." length="150000" type="image/jpeg" />

RSS 항목 카테고리

<item> 다음을 포함합니다 <category> 업데이트 유형을 나타내는 요소:

카테고리 설명
블로그 기업의 새 블로그 게시물
x 기업의 X (Twitter) 계정의 게시물
website update 기존 페이지에서 변경 사항이 감지됨
website new page 기업 웹사이트에서 새 페이지가 감지됨
website unreachable 기업 웹사이트에 접근할 수 없게 되었습니다 (1회 발생)

오류 코드

상태 코드 과금됩니까? 설명
403 아니요 비공개 피드의 토큰이 누락되었거나 유효하지 않습니다
404 아니요 피드를 찾을 수 없음

피드 업데이트 엔드포인트

PATCH /api/v1/monitor/feeds/{feed_id}

비용: 0 크레딧 / 요청.

피드의 이름, 공개 여부, 일시 중지 상태 등 설정을 업데이트합니다. 다음 기간 동안 일시 중지된 피드: insufficient_credits 크레딧이 추가되면 자동으로 재개됩니다.

# Suspend a feed
curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "is_suspended": true, "suspension_reason": "manual" }' \
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123"
import requests

response = requests.patch(
    "https://nubela.co/api/v1/monitor/feeds/feed_abc123",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"is_suspended": True, "suspension_reason": "manual"},
)
const response = await fetch(
  "https://nubela.co/api/v1/monitor/feeds/feed_abc123",
  {
    method: "PATCH",
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ is_suspended: true, suspension_reason: "manual" }),
  },
);

예시 응답 (Describe Feed와 동일):

{
  "id": "feed_abc123",
  "name": "My Feed",
  "is_public": false,
  "is_suspended": true,
  "suspension_reason": "manual",
  "rss_url": "https://nubela.co/api/v1/monitor/feeds/feed_abc123/rss.xml?token=...",
  "created_at": "2025-01-15T10:30:00Z",
  "targets": [...]
}

URL 파라미터

파라미터 필수 설명 예시
feed_id 피드의 ID feed_abc123

요청 본문

파라미터 필수 설명 예시
name 아니요 새 피드 이름 "My Feed"
is_public 아니요 RSS 피드가 공개적으로 접근 가능한지 여부 true
is_suspended 아니요 설정 true 일시 중단하려면, false 재개하려면 true
suspension_reason 아니요 정지 사유 (해당하는 경우에만 is_suspended 입니다 true, 기본값 "manual") "manual"
email_notifications 아니요 이메일 알림 모드. "on_updates" 새로운 업데이트가 감지될 때 이메일을 수신하려면, "skip" 비활성화하려면 "on_updates"

최소 하나의 필드를 제공해야 합니다.

응답

업데이트된 값을 반환합니다: 피드 객체 추가로 targets 를 포함하는 배열 대상 객체 항목.

오류 코드

상태 코드 과금됩니까? 설명
400 아니요 유효한 필드가 제공되지 않았습니다
404 아니요 피드를 찾을 수 없음

Claude AI

NinjaPear는 Claude와의 직접 통합을 위한 MCP (Model Context Protocol) 서버를 제공합니다. 이를 통해 대화 방식으로 B2B 기업 데이터를 조회할 수 있으며, Claude에게 특정 기업의 고객, 투자자, 직원 수 등을 질문할 수 있습니다.

빠른 시작

  1. 다음에서 커넥터 문자열 가져오기: 대시보드
  2. Claude에 NinjaPear를 커넥터로 추가 (아래 설정 안내 참조)
  3. 새 대화를 시작하고 B2B 기업 데이터를 대화형으로 조회하세요

설정

커넥터 문자열은 대시보드. 형식은 다음과 같습니다: https://nubela.co/mcp/sse?api_key=YOUR_API_KEY

  1. 다음에서 커넥터 문자열 가져오기: 대시보드
  2. Claude에 로그인한 상태에서 다음을 방문하세요: 커스텀 커넥터 추가
  3. 다음을 입력하세요:
    • 이름: NinjaPear
    • 원격 MCP 서버 URL: 1단계의 커넥터 문자열을 붙여넣기
  4. 클릭 커넥터 추가
  5. 새 대화를 시작하고 Claude에게 NinjaPear를 사용하도록 요청하세요

Claude Code CLI

다음에서 커넥터 문자열 가져오기: 대시보드, 그런 다음 실행:

claude mcp add ninjapear --transport sse "YOUR_CONNECTOR_STRING"

사용 가능한 도구

도구 설명 비용
get_customer_listing 기업의 고객, 투자자, 파트너 조회 1 + 2/기업
get_company_details 기업 정보, 임원, 재무 데이터 조회 2~4 크레딧
get_employee_count 기업의 직원 수 조회 2 크레딧
check_disposable_email 이메일이 일회용/무료인지 확인 무료
get_credit_balance 크레딧 잔액 확인 무료
get_company_logo_url 기업 로고 URL 조회 무료
list_feeds 모든 모니터링 피드 목록 조회 0 크레딧
create_feed 대상이 포함된 새 모니터링 피드 생성 3 크레딧
describe_feed 모든 대상이 포함된 피드 상세 정보 조회 0 크레딧
update_feed 피드 이름, 공개 여부 또는 일시 중지 상태 업데이트 0 크레딧
delete_feed 피드와 해당 피드의 모든 대상을 삭제합니다 0 크레딧
add_target 피드에서 모니터링할 기업 추가 0 크레딧
update_target 타겟의 모니터링 설정 업데이트 0 크레딧
remove_target 피드에서 기업 제거 0 크레딧
consume_feed 피드에서 최신 업데이트 읽기 무료

예시 프롬프트

연결되면 Claude에게 다음과 같은 질문을 할 수 있습니다:

경쟁사 인텔리전스

경쟁사의 동향을 파악하는 제품 관리자라면.

VC 포트폴리오 모니터링

포트폴리오 기업 활동을 파악하려는 VC라면, 포트폴리오 기업의 CSV 또는 스크린샷을 Claude에 업로드한 후 다음과 같이 질문하세요:

영업 잠재 고객 발굴

영업 담당자로서 아웃리치 전에 계정을 조사하고 싶다면.

시장 조사

업계 현황을 분석하는 애널리스트라면.

모니터링 및 알림

지속적인 모니터링을 설정하고 나중에 업데이트를 확인하려는 경우.

계정 관리

NinjaPear 사용 현황을 빠르게 확인하세요.

오류 처리

오류는 Claude가 설명하는 서술형 메시지로 반환됩니다:

오류 메시지
유효하지 않은 API key "Error: 401 Unauthorized"
크레딧 부족 "Error: 402 Payment Required"
요청 속도 제한됨 "Error: 429 Too Many Requests"
서버 오류 "Error: 500 Internal Server Error"

기술 세부 정보

MCP Protocol

NinjaPear MCP 서버는 Model Context Protocol 사양으로, 이는 AI 어시스턴트를 외부 데이터 소스 및 도구에 연결하기 위한 Anthropic의 공개 표준입니다.

전송

실시간 통신에는 Server-Sent Events (SSE) 전송 방식을 사용합니다:

인증

다음을 통해 API 키를 전달하세요: api_key 쿼리 파라미터 또는 X-API-Key 헤더