アメリカの運送会社USPSのAPIで貨物追跡がしたい

概要

日本→アメリカ移住にあたり船便でいくつか荷物を送ったが、到着まで3ヶ月くらいタイムラグがある。
普段すっかり忘れてるんだけど、時々寝る前に突如思い出してロストしてないか心配になるサイクルを4ヶ月くらいやっていたのだが、公式がちゃんとAPを提供していることに気づいた。
これを使って追跡情報をフェッチして眠れない夜を回避する。

説明すること・しないこと

この記事ではAPIの使用方法の解説だけ。日本語でこのAPIに関しての情報がなかったので書き残しておくのが目的。
このAPIを使ってなにやらやることについては解説しない。

USPS APIでできること

無料でできることは以下の4つ。

  1. 価格計算ツール
  2. 荷物追跡
  3. 配達所要日数計算
  4. 住所確認(住所・郵便番号引きDB)

基本的に日本から使いたくなるのは荷物追跡・住所確認あたりだろうか。
さらに、有料で下記のオプションも使用申請できるらしい。ただ、アメリカ国内でしか恩恵はなさそう。

  1. USPSウェブツール(eコマースで出荷する人用のサービス)

USPS APIXMLで提供されている。しかもリクエストもXMLで書く。びっくらこいた。
RESTじゃないのでものすごくめんどくさい。パーサーが要る…つらい。
アメリカの企業、公式でAPIを提供してくれるのはありがたいんだけどちょいちょいXMLに出会うのなんなん(怒り)

使い方

登録

  1. USPSのWeb Tools APIポータルにアクセス。Developer Centerの項目を参照。 www.usps.com
  2. 利用には登録が必要なのでサインアップする。情報入力。
  3. 送信後、ユーザーID、パスワードが記載されたメールが届くので確認する。

APIコール

リクエストもまさかのXMLである。
GETで以下のようなリクエストを投げる。ちょっとびっくりなクエリでリクエストすることになるのでびっくりしてしまう。
USERID にはメールで通知されたユーザーIDを、 TrackID には追跡したい番号を入れる。
APIドキュメントを見るとMin=1と書いてあるので、TrackIDはいくつ指定してもよさそう。ペイロードサイズ上限を超えない限り…

https://secure.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML=<TrackRequest USERID="XXXXXXXXXXXX">
<TrackID ID="XXXXXXXXXXX1"></TrackID>
<TrackID ID="XXXXXXXXXXX2"></TrackID>
</TrackRequest>

実装

github.com

調べてたらすべてめんどくさくなった。
Pypiにはなんでもある。
ありがとう先人よ。