【ITニュース解説】How to scrape Greenhouse, Lever and Ashby job postings to CSV/JSON
2026年11月02日に「Dev.to」が公開したITニュース「How to scrape Greenhouse, Lever and Ashby job postings to CSV/JSON」について初心者にもわかりやすく解説しています。
ITニュース概要
Greenhouse、Lever、Ashbyなどの求人管理システムは、公開APIで求人情報を提供している。これを活用すれば、HTML解析なしでPythonで効率的に求人データをCSV/JSON形式で取得できる。企業分析や職探しに役立つ技術を解説する。
ITニュース解説
システムエンジニアを目指す皆さんにとって、日々の情報収集は自身のキャリアプランを考える上で欠かせない。特に企業の求人情報は、個別の求人サイトを閲覧するよりも効率的な方法で取得できる場合がある。それは、企業が採用プロセスで利用する「応募者追跡システム(ATS)」から直接データを取得する手法だ。Greenhouse、Lever、Ashbyは主要なATSであり、多くのスタートアップや成長企業が利用している。これらは通常、公開された「API(Application Programming Interface)」を通じて求人情報を「JSON(JavaScript Object Notation)」形式で提供している。
ATSのAPIを利用する最大の利点は、従来のWebスクレイピングにありがちな複雑なHTML解析やヘッドレスブラウザの操作が不要になることだ。APIは整理されたデータを提供するため、単一のHTTPリクエストでその企業の全ての公開求人情報を効率的かつ安定して取得できる。これは、データの取得が迅速で、Webサイトのレイアウト変更に影響されにくいという点で非常に優れている。
求人情報を取得する最初のステップは、各ATSにおける企業の「slug(スラッグ)」を特定することである。これは企業の採用ページのURLの一部で、例えばboards.greenhouse.io/stripeのstripeのように、企業を識別する文字列だ。もし企業の採用ページが独自のドメインを使用している場合でも、「応募」リンクやHTMLソースコードからATSのドメインとslugを見つけ出すことが可能だ。
slugが特定できたら、各ATSのAPIエンドポイントに対してHTTPリクエストを送信する。Greenhouse、Lever、Ashbyそれぞれに特定のAPIのURLが存在し、これにslugを含めてリクエストを送ると、求人タイトル、所在地、URL、掲載日、部署名、職務内容などの情報がJSON形式で返ってくる。例えばGreenhouseのAPIでは、content=trueというパラメータを加えることで職務内容も取得できる。LeverやAshbyのAPIも、職務内容や時には給与情報を構造化された形で提供する場合がある。
これらのAPIから取得したデータは、Pythonのようなプログラミング言語を使って自動的に処理できる。Pythonのrequestsライブラリを使えば、APIへのリクエスト送信やJSONデータの受け取りが容易だ。スクリプトでは、各ATSのAPIに対応する関数を作成し、取得したJSONデータをPythonの辞書やリストとして扱い、共通のデータ形式(例えば、company、ats、title、location、url、salary、descriptionなど)に整形する。職務内容がHTML形式で提供される場合は、HTMLタグを除去しプレーンテキストに変換する処理を加えることで、データの統一性を保つ。最終的には、特定のキーワードを含む求人を抽出し、それらの情報をCSVファイルとして出力することで、表計算ソフトなどで容易に分析・管理できるようになる。
しかし、データを取得・処理する際にはいくつかの注意点がある。ATSによっては「slugの重複」が発生し、同じslugが異なるATSで存在することがある。この場合、目的の企業が利用しているATSがわかっていれば、そのATS名を指定して区別する必要がある。また、LeverのATSは欧州の企業向けに別のAPIホスト(api.eu.lever.co)を提供している場合があるため、片方で情報が見つからなくても、もう一方も試すことが重要だ。給与情報は、AshbyやLeverでは構造化されたデータとして提供されることがあるが、Greenhouseでは職務内容のテキスト中に含まれることが多いため、テキスト解析による抽出が必要になる場合がある。日付のデータ形式もATSごとに異なるため、取得後に全て同じ形式に「正規化」することで、後のフィルタリングや分析が容易になる。さらに、職務内容には採用担当者の個人情報が含まれる可能性があるので、データを保存・再配布する際にはこれらの情報を除去するべきである。これらのAPIは「現在募集中の求人」のみを返すため、過去の求人履歴が必要な場合は、定期的にデータを取得し、記録していく運用が求められる。
取得した求人情報をさらに有効活用するためには、「エンリッチメント(情報付加)」というステップが考えられる。例えば、職務内容のテキストをLLM(大規模言語モデル)に解析させることで、役職のレベル、必要なスキル、リモートワークの可否、ビザサポートの有無など、より詳細な情報を構造化された形で抽出できる。これにより、生データだけではわからなかった情報を自動で付加し、分析の精度を高めることが可能になる。
このようなデータ取得・処理の仕組みを自力で構築・運用することが難しい場合、Apifyなどのプラットフォームで提供されているホスト型サービスを利用する選択肢もある。これらは、上記の複雑な処理や注意点を全てカバーしており、必要な情報を指定するだけで、正規化されAIによってエンリッチメントされた求人データを手軽に取得できる。これにより、システムの構築やメンテナンスの手間を省き、すぐに求人情報を活用できるというメリットがある。
まとめると、企業の求人情報を効率的に収集するには、ブラウザスクレイピングに頼る前に、Greenhouse、Lever、AshbyのようなATSが提供する公開APIの利用を検討することが非常に有効である。APIを活用することで、安定して迅速にデータを取得でき、プログラミングによるデータ処理の基礎を実践的に学ぶ良い機会となる。取得したデータは、項目を正規化し、必要に応じてAIによるエンリッチメントを行うことで、その価値を最大限に引き出すことができるだろう。