
HubSpot API で会社に紐づくすべてのプロパティ情報を取得してみた
HubSpot API を利用して会社に紐づくすべてのプロパティを取得するために必要だったことを紹介します。
検証結果
HubSpot API で会社情報の全プロパティを取得するには以下の手順が必要した。
- プロパティ一覧を事前に取得 /crm/v3/properties/companies エンドポイントを使用
- 取得したプロパティ名を
?properties=name,industry,annualrevenue,domain
のように列挙 - /crm/v3/objects/companies エンドポイントに対してプロパティ指定付きでリクエスト
背景
HubSpot に保存されている企業情報を BI ツールで分析するため、HubSpot API 利用して全ての会社情報をエクスポートできるか検証していました。分析に必要だったカスタムロパティ情報を出力するために試行錯誤した記録です。
HubSpot API で会社情報を取得
/crm/v3/objects/companies
エンドポイントを使用した場合、取得できる項目は以下です。
name
:会社名domain
:ドメイン名createdate
:作成日時hs_lastmodifieddate
:最終更新日時hs_object_id
:オブジェクト ID
分析のために欲しかった情報
私の分析用途で必要だった情報は、規定で用意されている「業種」や、追加したカスタムプロパティの内容です。
- 営業関連:
industry
(業界)、annualrevenue
(年間売上) - カスタムプロパティ:独自に作成した業務固有の項目
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=
に追加して実行することになりました。
#!/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 への変換処理を追加すればデータ連携可能になる見込みです。