HubSpot API で会社に紐づくすべてのプロパティ情報を取得してみた

HubSpot API で会社に紐づくすべてのプロパティ情報を取得してみた

2025.07.26

HubSpot API を利用して会社に紐づくすべてのプロパティを取得するために必要だったことを紹介します。

テストオオムラ株式会社-3.png

検証結果

HubSpot API で会社情報の全プロパティを取得するには以下の手順が必要した。

  1. プロパティ一覧を事前に取得 /crm/v3/properties/companies エンドポイントを使用
  2. 取得したプロパティ名を?properties=name,industry,annualrevenue,domain のように列挙
  3. /crm/v3/objects/companies エンドポイントに対してプロパティ指定付きでリクエスト

背景

HubSpot に保存されている企業情報を BI ツールで分析するため、HubSpot API 利用して全ての会社情報をエクスポートできるか検証していました。分析に必要だったカスタムロパティ情報を出力するために試行錯誤した記録です。

HubSpot API で会社情報を取得

/crm/v3/objects/companies エンドポイントを使用した場合、取得できる項目は以下です。

  • name:会社名
  • domain:ドメイン名
  • createdate:作成日時
  • hs_lastmodifieddate:最終更新日時
  • hs_object_id:オブジェクト ID

https://developers.hubspot.jp/docs/reference/api/crm/objects/companies

分析のために欲しかった情報

私の分析用途で必要だった情報は、規定で用意されている「業種」や、追加したカスタムプロパティの内容です。

  • 営業関連:industry(業界)、annualrevenue(年間売上)
  • カスタムプロパティ:独自に作成した業務固有の項目

テストオオムラ株式会社-2.png

HubSpot API の動作確認

認証情報

HubSpot の非公開アプリを作成し、HubSpot API にアクセスするためのアクセストークンを払い出せるようにします。アクセストークンを環境変数に設定します。

$ HUBSPOT_ACCESS_TOKEN=[YOUR_ACCESS_TOKEN]
$ export HUBSPOT_ACCESS_TOKEN

会社情報の取得

会社情報を取得してみたところ、求めているプロパティ情報が含まれていないことがわかりました。

curl -s "https://api.hubapi.com/crm/v3/objects/companies?limit=1" \
  -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" | jq .
レスポンス例
{
  "results": [
    {
      "id": "26311978602",
      "properties": {
        "createdate": "2023-02-24T09:58:57.633Z",
        "domain": "example.com",
        "hs_lastmodifieddate": "2025-07-02T05:45:20.115Z",
        "hs_object_id": "26311978602",
        "name": "テストオオムラ株式会社"
      }
    }
  ]
}

プロパティ情報を出力するにはプロパティ名を付与してリクエストしないといけないことがわかり、先にすべてのプロパティ名を確認する必要がでてきました。

利用可能プロパティ一覧の取得

全プロパティの一覧を取得します。エンドポイントが変わりcrm/v3/properties/companiesです。

curl -s "https://api.hubapi.com/crm/v3/properties/companies" \
  -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" \
  | jq -r '.results[] | "表示名: \(.label)\nプロパティ名: \(.name)\n---"'

HubSpot の WebUI に表示されている名前と、API リクエスト時に必要なプロパティ名をわかりやすいように以下のような形式で表示されます。

表示名: 業界
プロパティ名: industry
---
表示名: 年間売上
プロパティ名: annualrevenue
---

プロパティを指定した会社情報の取得検証

特定のプロパティを指定して会社情報を取得できるか検証します。properties=に確認したプロパティ名をカンマ区切りで追加します。nameは明示的に指定しないと会社名も出力されませんでした。

curl -s "https://api.hubapi.com/crm/v3/objects/companies?limit=1&properties=name,industry,annualrevenue" \
  -H "Authorization: Bearer $HUBSPOT_ACCESS_TOKEN" | jq .
レスポンス例
{
  "results": [
    {
      "id": "26311978602",
      "properties": {
+       "annualrevenue": null,
        "createdate": "2023-02-24T09:58:57.633Z",
        "hs_lastmodifieddate": "2025-07-25T08:21:53.053Z",
        "hs_object_id": "26311978602",
+       "industry": "IT・ビジネスコンサルティング",
        "name": "テストオオムラ株式会社"
      },
      "createdAt": "2023-02-24T09:58:57.633Z",
      "updatedAt": "2025-07-25T08:21:53.053Z",
      "archived": false
    }
  ],
  "paging": {
    "next": {
      "after": "26311978603",
      "link": "https://api.hubapi.com/crm/v3/objects/companies?limit=1&properties=name%2Cindustry%2Cannualrevenue&after=26311978603"
    }
  }
}

ここまでの検証で、プロパティを指定すれば必要な情報を取得できることがわかりました。

私が本当に必要だったもの

すべてのプロパティを先に出力し、properties=に追加して実行することになりました。

get_company_all_properties.sh
#!/bin/bash

# HubSpot全会社の全プロパティを取得するスクリプト
# 使用方法: ./get_company_all_properties.sh [limit]

# 設定
TOKEN="${HUBSPOT_ACCESS_TOKEN}"
LIMIT="${1:-10}"  # デフォルトは10件

# トークンの存在チェック
if [ -z "$TOKEN" ]; then
  echo "エラー: HUBSPOT_ACCESS_TOKEN環境変数が設定されていません"
  echo "使用方法: export HUBSPOT_ACCESS_TOKEN=your_token_here"
  exit 1
fi

# 全プロパティ名を取得
echo "=== 利用可能なプロパティ一覧を取得中 ==="
PROPS=$(curl -s "https://api.hubapi.com/crm/v3/properties/companies" \
  -H "Authorization: Bearer $TOKEN" \
  | jq -r '.results[].name' \
  | tr '\n' ',' \
  | sed 's/,$//')

if [ -z "$PROPS" ]; then
  echo "エラー: プロパティの取得に失敗しました"
  exit 1
fi

echo "取得したプロパティ数: $(echo $PROPS | tr ',' '\n' | wc -l)"

# 全会社の全プロパティを取得(ページネーション対応)
echo "=== 全会社の全プロパティ情報を取得中(最大${LIMIT}件) ==="

AFTER=""
TOTAL_COUNT=0
ALL_RESULTS="[]"

while [ $TOTAL_COUNT -lt $LIMIT ]; do
  REMAINING=$((LIMIT - TOTAL_COUNT))
  BATCH_LIMIT=$((REMAINING > 100 ? 100 : REMAINING))

  if [ -n "$AFTER" ]; then
    URL="https://api.hubapi.com/crm/v3/objects/companies?limit=$BATCH_LIMIT&properties=$PROPS&after=$AFTER"
  else
    URL="https://api.hubapi.com/crm/v3/objects/companies?limit=$BATCH_LIMIT&properties=$PROPS"
  fi

  RESPONSE=$(curl -s "$URL" -H "Authorization: Bearer $TOKEN")

  # レスポンスをチェック
  if [ $? -ne 0 ] || [ -z "$RESPONSE" ]; then
    echo "エラー: API呼び出しに失敗しました"
    break
  fi

  # 結果を追加
  RESULTS=$(echo "$RESPONSE" | jq '.results // []')
  ALL_RESULTS=$(echo "$ALL_RESULTS" | jq ". + $RESULTS")

  # 取得件数を更新
  BATCH_COUNT=$(echo "$RESULTS" | jq 'length')
  TOTAL_COUNT=$((TOTAL_COUNT + BATCH_COUNT))

  echo "取得済み: ${TOTAL_COUNT}件"

  # 次のページがあるかチェック
  AFTER=$(echo "$RESPONSE" | jq -r '.paging.next.after // empty')
  if [ -z "$AFTER" ] || [ $BATCH_COUNT -eq 0 ]; then
    break
  fi
done

echo "=== 取得完了: 総件数 ${TOTAL_COUNT}件 ==="

# 最終結果を出力
echo "$ALL_RESULTS" | jq .

まとめ

HubSpot API で会社情報の全プロパティを取得するには事前にプロパティ一覧を取得します。/crm/v3/properties/companies エンドポイントで利用可能なプロパティを確認できます。/crm/v3/objects/companiesエンドポイントに対してproperties パラメータで全プロパティを指定することで、カスタムプロパティを含む全ての会社情報を取得できました。

おわりに

今後 HubSpot 上で管理する会社データを BI ツールで分析するために、定期的なデータエクスポートと、JSON から CSV への変換処理を追加すればデータ連携可能になる見込みです。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.