【ITニュース解説】Amazon jobs API: amazon.jobs search as JSON, and five traps between you and all 21,000 openings
2026年10月27日に「Dev.to」が公開したITニュース「Amazon jobs API: amazon.jobs search as JSON, and five traps between you and all 21,000 openings」について初心者にもわかりやすく解説しています。
ITニュース概要
Amazonの求人情報は、公開APIを使ってJSON形式で取得できる。しかし、全データを効率良く取得するには注意点が多い。100件ずつの取得制限や1万件で結果が途切れるため、カテゴリなどで分割して検索する必要がある。検索条件の指定や日付形式の扱いにも工夫が必要だ。
ITニュース解説
Amazonの求人情報を探す際、一般的な求人サイトでは見つからないことに気づくかもしれない。Amazonは独自の求人サイト「amazon.jobs」を運営しており、その検索機能は、実は誰でもアクセスできる技術的な窓口を提供している。これは「API(Application Programming Interface)」と呼ばれるもので、特別な許可やログインなしで、プログラムから直接求人情報をJSONというデータ形式で取得できる仕組みだ。インターネットのウェブページは通常、人間が読むために作られているが、APIはプログラムが読み書きしやすいように作られている。
具体的には、ウェブサイトにアクセスするコマンド「curl」を使い、特定のURLへリクエストを送ることで、最新の求人情報やその詳細をJSONデータとして手に入れられる。JSONはJavaScript Object Notationの略で、データがキーと値のペアで構成される、人間にもプログラムにも分かりやすい構造をしている。取得できるデータには、求人のタイトル、雇用元の会社名、勤務地、掲載日、職務内容(必須スキルと歓迎スキルを含む)、職種カテゴリ、求人詳細へのリンク、そしてその求人を一意に識別する安定したIDなどが含まれる。
しかし、この公開されたAPIを使ってAmazonの全ての求人情報を網羅的に取得しようとすると、いくつかの注意点がある。これらはシステム開発においてよく遭遇する「落とし穴」のようなもので、対処法を知っておくことが重要だ。
一つ目の落とし穴は、一度に取得できる求人数の上限だ。APIに「result_limit=100」のように一度に取得したい件数を指定するが、この値が100を超えると、なぜか0件しか返ってこない。これは「ページング」と呼ばれる技術で、一度に大量のデータを取得するのではなく、100件ずつ区切って少しずつ取得していく必要があることを意味する。例えば、最初の100件、次の100件、と繰り返しリクエストを送ることで、全ての求人情報を取得していくのだ。
二つ目の落とし穴は、APIが返す「hits」という項目が示す件数の不正確さだ。「hits」は検索結果の総件数を示すように見えるが、実際には最大で10,000件までしか表示されない。Amazonの求人総数は実際にはもっと多く、この「hits」だけを頼りにすると、全体の半数以下しか取得できないことになってしまう。正確な求人総数を把握するためには、「ファセット」という別の情報を利用する。ファセットとは、求人を職種カテゴリや国コードといった基準で分類し、それぞれの分類に属する求人数を集計したデータのことだ。これらのファセットの合計を計算することで、本当の求人総数がわかる。例えば、すべてのカテゴリの求人数を足し合わせると、実際の総件数にたどり着くことができる。
三つ目の落とし穴は、10,000件を超える求人情報に直接アクセスできないという制限だ。「offset=9900」のように取得開始位置を指定して100件の求人を取得することはできるが、「offset=10000」と指定すると、求人情報が「null」として返され、エラーメッセージが表示される。これは、一度に10,000件以上の結果を返せないというAPI側の制約によるものだ。この制限を乗り越えて全ての求人を取得するには、二つ目の落とし穴で触れた「ファセット」を活用する。例えば、職種カテゴリごとに検索を分割するのだ。各カテゴリの求人数は通常10,000件以下に収まるため、カテゴリごとにページングして求人情報を取得し、最後にそれらを結合することで、全ての求人情報を網羅的に集められる。この際、求人ごとにユニークなIDである「id_icims」を使って重複を避けながら結合することが大切だ。
四つ目の落とし穴は、勤務地で求人を絞り込む際の指定方法だ。「loc_query」というパラメーターで勤務地を指定しても、それがフィルタとして機能せず、無関係な地域の求人まで返ってきてしまうことがある。正しく勤務地で絞り込むには、「base_query」という、より汎用的なキーワード検索用のパラメーターに地名を加える必要がある。これにより、求人説明や勤務地情報の中から指定した地名が検索され、関連性の高い求人が上位に表示される。さらに、特定の国に厳密に絞り込みたい場合は、「normalized_country_code」というパラメーターに国コードを指定するのが最も確実な方法だ。
最後の五つ目の落とし穴は、求人掲載日のデータ形式だ。「posted_date」という項目には「October 26, 2026」のような人間が読むための文字列形式で日付が記載されており、ISO形式のようなプログラムで扱いやすいタイムスタンプではない。そのため、この文字列をそのまま日付として比較したりソートしたりすると、意図しない結果になる可能性がある。正確な日付処理を行うためには、この文字列をプログラムで日付型に「パース(解析・変換)」する必要がある。これにより、新旧の求人を正しく並べ替えたり、特定の日付以降に掲載された求人だけを抽出したりといった処理が可能になる。
これらの知識と対処法を理解することで、システムエンジニアを目指す初心者は、Amazonのような大規模な企業の求人情報をプログラム的に効率よく、そして網羅的に取得する方法を学ぶことができる。これは、単に情報を集めるだけでなく、APIの特性を理解し、その制約の中でどのように目的を達成するかという、システム開発における重要な思考プロセスを身につける一歩となるだろう。