サービス市場 / 荷物追跡 API 開発ドキュメント
転送荷物追跡 API · v1

荷物追跡 API 開発ドキュメント

追跡番号から転送荷物の状況を一連の流れでリアルタイムに照会できます。中国での宅配便の集荷、深圳の転送倉庫への入庫、台湾への輸送から、台湾税関の通関段階(GC329)、ラストワンマイル配送の受取まで追跡できます。HowBridge 公式サイトと同じデータを使い、0337.tw などの越境 EC プラットフォームとの連携向けに設計されています。

番号で照会

中国の宅配便追跡番号/顧客注文番号/運送業者の追跡番号

全行程のタイムライン

集荷 → 入庫 → 輸送 → 受取

GC329

台湾税関の通関段階

個人情報なし

ステータスのみを返し、受取人の情報は含みません

1 概要

追跡番号ひとつで、転送荷物が「今どこにあるか」を自社プラットフォームで確認できます。

荷物の流れ

中国で集荷→ 深圳の転送倉庫に入庫→ 転送用に梱包/台湾へ輸送→ 台湾税関で通関(GC329)→ ラストワンマイル配送/受取済み

API が追跡番号から荷物の現在の段階を自動で判定し、現在のステータス、全体のタイムライン、(台湾税関に入っている場合は)GC329 の 5 段階の通関進捗を返します。

使える番号: 中国の宅配便追跡番号(顧客が深圳の転送倉庫へ発送する際の番号)、顧客注文番号(customer order no)、運送業者の追跡番号(carrier tracking no)。システムが複数のデータソースを自動で照合します。
プライバシー保護: この API は「荷物 1 件の追跡番号」でのみ照会でき、返されるデータには受取人の氏名・住所・電話番号などの個人情報は含まれません。マスター運送状番号(B######)で他人の荷物を一括表示する機能も提供していません。

2 認証と基本情報

すべてのリクエストに API キーが必要です(送料 API と同じキーを使用できます。shipment:read 権限の付与が必要です)。

Base URL

https://0523.tw/api/v1/shipment

認証ヘッダー(いずれか一方)

Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx
// 或
X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

必ずサーバー側から呼び出し、キーをフロントエンドの JavaScript に含めないでください。レート制限はキー単位で、残り回数はレスポンスヘッダー X-RateLimit-Remaining で確認できます。上限を超えると HTTP 429 を返します。

3 エンドポイント:荷物追跡

GETPOST /api/v1/shipment/track

追跡番号で荷物 1 件の状況を照会します。GET(クエリ文字列)と POST(JSON/フォーム)のどちらでも利用できます。

リクエストパラメータ

パラメータ型必須説明
tracking_numberstring必須荷物の追跡番号(4〜64 文字、英数字と - _)。中国の宅配便追跡番号/顧客注文番号/運送業者の追跡番号のいずれも使えます。

リクエスト例(GET)

curl "https://0523.tw/api/v1/shipment/track?tracking_number=SF1234567890123" \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

応答 200 (例はすでに倉庫にある/輸送中)

{
  "success": true,
  "cached": false,
  "tracking_number": "SF1234567890123",
  "data": {
    "tracking_number": "SF1234567890123",
    "customer_order_no": "LK260601001",
    "carrier_tracking_no": "SF1234567890123",
    "logistics": "順豐速運",
    "status_code": 2,
    "status": "已入倉",
    "description": "包裹已進入深圳集運倉,等待集運打包",
    "is_delivered": false,
    "is_final": false,
    "last_event_time": "2026-06-01 12:30:00",
    "updated_at": "2026-06-01 12:31:05",
    "timeline": [
      { "name": "已攬收", "completed": true,  "time": "2026-05-30 09:00:00" },
      { "name": "已入倉 (深圳集運倉)", "completed": true,  "time": "2026-06-01 12:30:00" },
      { "name": "集運打包/台灣運送", "completed": false, "time": null },
      { "name": "已簽收", "completed": false, "time": null }
    ],
    "customs_stages": null,
    "events": null
  }
}

応答 404 (注文番号が見つかりません)

{
  "success": false,
  "error": "not_found",
  "message": "查無此單號。請確認單號正確,或包裹尚未進入集運系統。",
  "tracking_number": "SF1234567890123"
}

4 レスポンスフィールドの説明 (data)

フィールド型説明
statusstring現在のステータス(人が読める文字列)。例:「已預報」「已入倉」「運輸中」「台灣派送中」「已簽收」(順に事前登録済み/入庫済み/輸送中/台湾で配送中/受取済み)。この文字列をそのまま表示することをおすすめします。
status_codenumberステータスコード(データソースによって異なります。次の節を参照)。UI の制御には status、is_delivered、is_final を使うことをおすすめします。
is_deliveredbool受取済みかどうか。
is_finalbool最終状態(受取済み/返送/キャンセル/配達不能)かどうか。true ならポーリングを停止できます。
logisticsstring物流業者(中国の宅配便、または台湾のラストワンマイル配送)。
descriptionstring最新イベントの説明。
last_event_timedatetime直近の物流イベントの日時。
timelinearray段階ごとのタイムライン。各項目に name / completed / time / description を含みます。
customs_stagesobject|null台湾税関 GC329 の通関進捗(通関前は null)。次の節を参照。
eventsarray|null未加工の物流イベント履歴(ラストワンマイル配送の追跡時に提供)。

5 ステータスとタイムライン

転送の主な段階(timeline)

段階意味
事前登録済み(未入庫)顧客が追跡番号を事前登録済みで、荷物はまだ深圳の転送倉庫に届いていません。
入庫済み(深圳の転送倉庫)深圳の転送倉庫が荷物を受け取りました。
転送用に梱包/台湾へ輸送梱包して出荷し、海上輸送/航空輸送で台湾へ送ります。
輸送中/台湾で配送中台湾到着後の通関と、ラストワンマイル配送の段階です。
受取済み受取人が受け取りました(is_delivered = true)。

税関の通関段階(customs_stages、GC329)

荷物が台湾税関に入ると、customs_stages に 5 段階の進捗と全体の進捗率が含まれます:

{
  "hbl": "691MK539819",
  "trans_type_name": "海運",
  "current_stage_name": "海關放行",
  "progress_percent": 80,
  "is_completed": false,
  "stages": [
    { "code": "XX", "name": "船(機)抵達",   "done": true },
    { "code": "E1", "name": "連線收單建檔", "done": true },
    { "code": "D1", "name": "計稅",        "done": true },
    { "code": "RL", "name": "海關放行",     "done": true },
    { "code": "OW", "name": "出倉",        "done": false }
  ],
  "source": "關港貿單一窗口 GC329"
}

6 エラーコード

HTTPerror説明
401missing_api_key / invalid_api_keyAPI キーがないか、無効です。
403insufficient_scopeキーに shipment:read 権限が付与されていません。
404not_foundこの追跡番号が見つからないか、荷物がまだ転送システムに登録されていません。
422validation_failedtracking_number がないか、形式が正しくありません。
429rate_limit_exceeded1 分あたりのリクエスト上限を超えました。Retry-After を確認してください。

7 サンプルコード

$client = new GuzzleHttp\Client(['base_uri' => 'https://0523.tw']);

$res = $client->get('/api/v1/shipment/track', [
    'headers' => ['Authorization' => 'Bearer ' . env('LUCKY_FREIGHT_KEY')],
    'query'   => ['tracking_number' => 'SF1234567890123'],
]);

$d = json_decode($res->getBody(), true)['data'];
echo $d['status'];  // 已入倉
const r = await fetch('https://0523.tw/api/v1/shipment/track?tracking_number=SF1234567890123', {
  headers: { 'Authorization': `Bearer ${process.env.LUCKY_FREIGHT_KEY}` },
});
const { data } = await r.json();
console.log(data.status, data.is_delivered);
curl "https://0523.tw/api/v1/shipment/track?tracking_number=SF1234567890123" \
  -H "Authorization: Bearer $LUCKY_FREIGHT_KEY"

8 ベストプラクティス

  • ポーリング頻度:同じ追跡番号の照会は 15〜30 分に 1 回で十分です。結果はこのサービス側で 5 分間キャッシュされます(cached: true はキャッシュヒットを示します)。
  • ポーリングの停止:is_final = true(受取済み/返送/キャンセル)になったらポーリングを停止してください。
  • ステータスで判断:表示には status の文字列を使い、処理の分岐は is_delivered / is_final で判断してください。status_code のハードコードは避けてください(データソースごとにコードの定義が異なります)。
  • 番号が見つからない場合:404 の多くは、荷物がまだ転送システムに登録されていないことを意味します(顧客が注文した直後で未発送など)。しばらくしてから再試行してください。

9 サポートとバージョン

技術サポート: howyunqisoftware@gmail.com

API バージョン: v1(安定版)。

変更履歴: 2026-06-01 — 荷物追跡 API v1 を公開。

送料 API ドキュメント API キーを申請