Tony Wang5 分で読めます2026年版 求人情報スクレイピング完全ガイド(13種のATS対応・Python)
2026年版、求人情報スクレイピングガイド。Greenhouse、Workdayなど13種のATSプラットフォームを自前で個別統合するか、1つの構造化APIとデータセットで取得するかを解説します。
なぜ求人情報をスクレイピングするのか
求人情報データは、採用市場リサーチやリクルーティング系プロダクトの基盤になります。
- 採用シグナルのリサーチ — どの企業が、どの部門・地域・職種で積極的に採用しているかを追跡。
- 報酬・市場ベンチマーク — 業界横断で掲載中の職種と応募要件を集計。
- 採用・ソーシングツール — 多数の企業の求人を1つの検索可能なフィードに集約。
- 企業リサーチ — 企業自身の求人掲載数の推移から、成長や縮小の兆候を推測。
求人情報のスクレイピングは合法か
方法1:ATSごとに個別統合を自前で行う
実務上の難しさはボット対策ではなく、標準規格が存在しないことです。企業の採用ページは、その企業が使っているATSの薄いラッパーに過ぎず、ATSごとに異なる(多くの場合非公開の)JSONエンドポイントを持っています。
import requests
# Greenhouse — トークンが企業を識別する
gh = requests.get("https://boards-api.greenhouse.io/v1/boards/stripe/jobs").json()
# Lever — 別のホスト、別の形式
lever = requests.get("https://api.lever.co/v0/postings/netflix").json()
# Workday — tenant + datacenter + site が必要で、GETではなくPOST、そしてまた別の形式
wd = requests.post(
"https://acme.wd1.myworkdayjobs.com/wday/cxs/acme/External/jobs",
json={"limit": 20, "offset": 0},
).json()
各統合作業がそれぞれ小さなプロジェクトになります。
- 10種類以上のベンダー、10種類以上のスキーマ。 GreenhouseはリクエストIDを数値の
idとしてjobs[]の下にネストして返し、Leverは文字列のidをキーとするフラットなリストをHTML形式の説明文フィールド付きで返します。Workdayは企業ごとに調べる必要があるtenant、datacenter、siteを伴うPOSTリクエストが必要で、トークンではなくlimit/offsetでページングします。これに加えて iCIMS、SmartRecruiters、Recruitee、Rippling、Oracle Recruiting、UKG、Personio、Ashby、Eightfold、Teamtailorがあり、合計10種類以上のパーサーを保守することになります。 - まずその企業がどのATSを使っているかを調べる必要があります。 ディレクトリは存在しないため、採用ページのURLパターンから推測する(
boards.greenhouse.io/<company>、jobs.lever.co/<company>、<company>.wd1.myworkdayjobs.com)か、ページをクロールして埋め込まれたAPI呼び出しを検出するしかありません。 - Workdayだけでも対応する価値があります。 エンタープライズの掲載件数で見ると最大級のATSプラットフォームの1つであり、POSTベースでテナント単位のAPIがシンプルなGETエンドポイントより手間がかかるからといって省略すると、市場の無視できない割合を取りこぼします。
- クローズ済み・古い求人は静かに残り続けます。 ほとんどのベンダーはクローズされた求人をすぐには物理削除しないため、単純な全件リフレッシュでは、古い『募集中』の求人が何日も残ってしまうことがあります。新着の求人を追加するだけでなく、ステータスの変化を検出・反映する必要があります。
方法2:ノーコードツール
汎用のWebスクレイパーは個々の採用ページを取得できますが、実際のボトルネック — 10種類以上の異なるATSバックエンドを統合し、そのスキーマを正規化すること — は、ビジュアルツールをクリックして操作してもPythonを書いても同じ問題です。1つのページ形式向けに作られたツールでは、ベンダーの分断という問題そのものは解決できません。
方法3:構造化された求人API
求人スクレイピングAPI は、Ashby、Eightfold、Greenhouse、iCIMS、Lever、Oracle Recruiting、Personio、Recruitee、Rippling、SmartRecruiters、Teamtailor、UKG、Workable、Workdayの14種類のATSプラットフォームを1つのスキーマの背後でカバーし、さらに特定の企業が実際にどのATSを使っているかを調べるルックアップも提供します。
企業がどのATSで求人を掲載しているかを調べる:
curl "https://api.crawlora.net/api/v1/jobs/company-search?slug=stripe" \
-H "x-api-key: $CRAWLORA_API_KEY"
プロバイダーが分かったら、その企業のボードを取得 — ここではGreenhouseとWorkdayを例示していますが、残り11種類も同じパターンでそれぞれのパスに従います。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/jobs"
greenhouse_board = requests.get(f"{base}/greenhouse/board", headers=h, params={"token": "stripe"}).json()["data"]
workday_board = requests.get(f"{base}/workday/board", headers=h, params={
"tenant": "acme", "datacenter": "wd1", "site": "External", "limit": 50,
}).json()["data"]
あるいは、ベンダーごとの呼び出しを一切行わずに、正規化されたデータセットを通じてカバー対象の全企業を横断検索することもできます。
api_base = "https://api.crawlora.net/api/v1"
postings = requests.get(f"{api_base}/datasets/jobs/search", headers=h, params={
"q": "data engineer", "location": "Tokyo", "remote": "true", "page_size": 50,
}).json()["data"]
datasets/jobs/search は company、provider、department、location、employment_type、remote によるフィルタを受け付け、募集中の求人だけでなくステータス履歴も必要な場合は include_closed を使えます。datasets/jobs/companies は、どの企業がどのプロバイダーを通じて採用中かを一覧表示し、min_open_roles フィルタを備えているため、ATSを事前に知らなくても積極採用中の企業を見つけるのに役立ちます。
取得できるデータ
求人ごとに:職種名、部門、勤務地、雇用形態、リモート可否フラグ、掲載日/更新日、募集中/クローズのステータス、本文全体 — に加えて、どの企業のどのATSプロバイダーから取得したかも分かります。jobs/hiring-signals は、個々の求人をすべて取得することなく、企業のボードを部門・地域別の時系列の募集件数として集計します。
制約とよくある課題
- 統一されたスキーマが存在しない。 ATSごとにフィールド名やネスト構造が異なります。レポートを作るたびにではなく、取り込み時に正規化してください。
- 直接クエリする前に、まずプロバイダーを特定する必要があります。 採用ページのURLパターンを推測するのではなく、企業ルックアップを使うか、ベンダーごとのエンドポイントではなく統合データセット検索を使ってください。
- クローズ済みの求人はすぐには消えません。 求人が見つからないことをクローズしたと解釈するのではなく、ステータスを明示的に追跡してください(データセット検索の
include_closed)。 - WorkdayのAPIはPOSTベースでテナント単位です。 他のほとんどのATSが採用しているGETベースのAPIとは異なるため、自前でベンダーを統合する場合は別枠で工数を見込んでください。
活用例
- 採用シグナル・市場リサーチ — どの企業・業界が積極的に採用しているかを追跡。関連ユースケースは求人市場リサーチのハブを参照。
- 採用・タレントソーシングツール — 複数企業の求人を1つの検索可能なフィードに集約。
- Job Postingsデータセット — 同等のカバレッジをあらかじめ収集・検索可能な形で提供。集計データが実際に何を示しているかについてはWorkdayが求人市場を動かしているも参照してください。
出典
収集を始める
まずは無料で試す: Free Web Scraperで任意の公開URLを実行するか、Anti-Bot Checkerでサイトがボットをブロックしているか確認できます — サインアップ不要です。
よくある質問
求人情報のスクレイピングは合法ですか?
Greenhouse、Workday、Leverなどの採用管理システム上の求人ボードは公開されていて認証不要であり、掲載されている職種名や勤務地などの事実は著作権の対象になりません。一部のATSの規約は公開求人であっても自動アクセスを制限している場合があるため、該当ATSと採用企業の規約を確認し、求人本文をまるごと再掲載しないでください。
すべての求人情報をカバーする単一のAPIはありますか?
いいえ。企業はWorkday、Greenhouse、Lever、iCIMSなど10種類以上ある採用管理システム(ATS)のいずれかを通じて求人を掲載しており、それぞれ独自のエンドポイントとJSON形式を持ちます。ベンダーに依存しない単一の公開APIは存在しません。
企業がどのATSを使っているかはどう調べますか?
公開ディレクトリは存在しません。採用ページのURLパターンから推測する(例:boards.greenhouse.io/<company>、jobs.lever.co/<company>)か、ページをクロールして埋め込まれたAPI呼び出しを検出するか、プロバイダーを直接返す企業ルックアップを使う方法があります。
Workdayはなぜ特別な対応が必要なのですか?
他の多くのATSがシンプルなGETエンドポイントを提供しているのに対し、Workdayは企業ごとに調べる必要があるtenant・datacenter・siteを指定したPOSTリクエストを必要とします。それでも、エンタープライズの掲載件数で見ると最大級のATSプラットフォームの1つであるため、追加の統合コストをかける価値があります。
クローズした求人はすぐに消えますか?
通常はすぐには消えません。多くのATSはクローズした求人をすぐには物理削除しないため、単純な全件リフレッシュでは古い『募集中』の求人が何日も残ることがあります。求人が見つからないことをクローズと解釈するのではなく、ステータスを明示的に追跡してください。