mcpField
C
Career Site Job Feed

Career Site Job Feed

リモート
apify.comビジネス・マーケティング09 週間前に更新
リポジトリ公式サイト

Career Site Job Feed について

Career Site Job Feedは、企業の採用管理システムから求人情報を取得するスクリプト集です。求人を集約・追跡する開発者向けに、データ項目の統一やCSV出力、差分確認、給与処理の例を提供します。

主な機能

  1. 0112の採用管理システムに対応
  2. 02求人データ項目の統一
  3. 03新規・終了求人の追跡
  4. 04給与範囲の抽出と年換算
  5. 05新着求人のCSV追記

活用シーン

  1. 01企業ごとの求人開始・終了を追跡
  2. 02前回実行後の求人を出力
  3. 03求人情報の給与範囲を集約

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.apify.com/?tools=starbright_overlap/ats-job-feed
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.apify.com/?tools=starbright_overlap/ats-job-feed認証が必要

ツール

詳細

ATS 求人フィードのレシピ

AllMCPs 検証済み

企業の応募者追跡システムから求人情報を直接取得する実動コードです。 Greenhouse、Lever、Workday、Ashby、Workable、SmartRecruiters、Breezy、Personio、Recruitee、 BambooHR、Pinpoint、Rippling に対応しており、取得した情報を有効活用できます。

各 ATS API で取得できる情報 — 12 のプラットフォーム全体にわたる給与、掲載日、リモート勤務フラグを、1,549,353 件の掲載中の求人で調査しています。これらの数値を公開しているのはここだけです。どのプラットフォームを基盤にするか選ぶ際は、まずこちらをご覧ください。

ここにあるすべてのスクリプトは、そのまま実行できます。APIFY_TOKEN を設定すれば準備完了です。

export APIFY_TOKEN=...        # https://console.apify.com/settings/integrations
python python/new_jobs_to_csv.py

このプロジェクトの目的

これらのプラットフォームはそれぞれ、企業の採用ページが読み込む JSON エンドポイントを公開しています。キーもログインも不要で、レンダリング済みの HTML をスクレイピングする必要もありません。厄介なのは、それ以外のすべてです。

  • プラットフォームごとにデータの形式が異なります。 Greenhouse はオフィスと部門を入れ子にしており、Workday は POST リクエストを送り、掲載期間を "Posted 30+ Days Ago" という文字列で返します。SmartRecruiters は limit に何を指定してもレスポンスが 100 行に制限されます。Breezy は存在しないボードに対して 404 ではなく 403 を返します。
  • どの企業がどのプラットフォームを使っているかを調べるのが、本当の作業です。 Greenhouse や Personio のボードをまとめた公開ディレクトリはありません。採用ページの URL を見つけられれば、そのどこかにスラッグがあります。
  • 日付はあてになりません。 10 のプラットフォームのうち 3 つは掲載日を一切公開していません。そのため、「過去 N 日以内に掲載された求人」というフィルターでは、掲載期間が不明な求人をどう扱うか決める必要があります。

以下のスクリプトでは、こうした問題にすでに対処しており、すべてのプラットフォームで統一された形式の行を返す Apify Actors を使用します。生のエンドポイントを直接指定することもできます。ページ下部のメモに一覧があります。

レシピ

ファイル内容
javascript/watch-companies.mjs実行ごとに企業の候補リストを比較し、新しく掲載された求人と掲載終了した求人を確認します
javascript/salary-data.mjs給与範囲を公開している求人を取得し、年収に換算します
python/one_company.py採用ページの URL から、ある企業の募集中の求人をすべて取得します
python/new_jobs_to_csv.py前回の実行後に掲載された求人だけを取得し、CSV に追記します

これらの Actor は、取得した行数に応じて課金されます。すべてのスクリプトには数百行程度の上限が設定されており、より多く取得したい場合は MAX_ROWS を読み込みます。そのため、サンプルを実行しても予期せず大量に取得されることはありません。

行の形式

どのプラットフォームの求人でも、すべてのレシピで同じフィールドを取得できます。

{
  "provider": "greenhouse",
  "company": "Databricks",
  "companySlug": "databricks",
  "jobId": "7845321",
  "title": "Staff Software Engineer",
  "location": "San Francisco, CA",
  "department": "Engineering",
  "employmentType": "Full-time",
  "remote": false,
  "postedAt": "2026-08-14T09:12:00.000Z",
  "applyUrl": "https://boards.greenhouse.io/databricks/jobs/7845321",
  "salary": null,
  "descriptionText": "...",
  "scrapedAt": "2026-08-19T11:02:41.883Z"
}

companySlug:jobId は求人の掲載中は変わらないため、差分を確認するレシピで使用できます。

各プラットフォームが実際に公開している情報

ベンダーのドキュメントではなく、稼働中の求人ボードを測定した結果です。いずれかのプラットフォームを基盤に構築する前に役立ちます。

各列の背景にある考え方を含む同じ表を、リファレンスページ全文で確認できます。

プラットフォーム掲載日説明給与リモートの明記
Workday78.2%いいえいいえいいえ
SmartRecruitersはいいいえいいえ7.7%
Greenhouseはいはいいいえいいえ
Workableはいはいいいえ36.3%
BambooHRいいえいいえいいえいいえ
Leverはい94.7%いいえ4.8%
Breezy HRはいいいえ45.7%15.7%
Personioいいえいいえいいえ8.8%
Ashbyはいはい38.9%54.2%
Recruiteeはいはい26.9%9.9%
Ripplingいいえいいえいいえ17.4%
Pinpointいいえはい42.5%8.8%

title、company、location、applyUrlは、すべてのプラットフォームの全行で返されます。

これは機能一覧ではなく、測定値です。 各行は、このプロジェクトが追跡しているそのプラットフォームの稼働中の求人ボードすべてを対象としており、プラットフォームごとに17,000~179,000件の求人を2026-08-20に測定しました。はいは99.5%以上、いいえはエンドポイントに該当するフィールドがまったくないことを意味します。

この表から分かることは3つあります。

  • 給与を公開しているプラットフォームは4つですが、どのプラットフォームも大半の求人には入力していません。 BreezyとPinpointが最も高く、それぞれ45.7%と42.5%です。BreezyとAshbyでは文章形式(「$28 – $100 / hour」、「$211.4K – $290.6K • Offers Equity」)で示されますが、PinpointとRecruiteeでは最低額、最高額、通貨、期間が個別に示されます。ベンチマークを行う場合は、後者の2つを使ってください。
  • 半数のプラットフォームには掲載日がありません。 Personio、Rippling、Pinpoint、BambooHRは掲載日を公開しておらず、Workdayもタイムスタンプではなく「Posted 30+ Days Ago」のような文章を出力するため、掲載日がある行は78.2%にとどまります。鮮度フィルターでは、掲載日がない行を除外するか残すかを決める必要があります。誠実なデフォルトは残すことです。
  • 「リモート」は5つのプラットフォームでは実際のフィールドで、それ以外では推測にすぎません。 Ashbyでは求人の54.2%にリモートの印が付いていますが、これは求人市場よりもAshbyを使っている企業について多くを物語っています。プラットフォームに該当フィールドがない場合、所在地の文字列を照合するしかありませんが、「Anywhere」を見逃し、「Remote Support Engineer, London office」のような求人を誤判定します。

生のエンドポイント

プラットフォームを直接呼び出す場合は、以下が公開エンドポイントです。いずれもキーなしで応答します。{company} をボードのスラッグに置き換えてください。

プラットフォームエンドポイント
Greenhousehttps://boards-api.greenhouse.io/v1/boards/{company}/jobs?content=true
Leverhttps://api.lever.co/v0/postings/{company}?mode=json
Ashbyhttps://api.ashbyhq.com/posting-api/job-board/{company}?includeCompensation=true
SmartRecruitershttps://api.smartrecruiters.com/v1/companies/{company}/postings?limit=100&offset=0
Workablehttps://apply.workable.com/api/v1/widget/accounts/{company}?details=true
Breezyhttps://{company}.breezy.hr/json
Personiohttps://{company}.jobs.personio.de/search.json
Pinpointhttps://{company}.pinpointhq.com/postings.json
Recruiteehttps://{company}.recruitee.com/api/offers/
BambooHRhttps://{company}.bamboohr.com/careers/list
Ripplinghttps://api.rippling.com/platform/api/ats/v1/board/{company}/jobs
WorkdayPOST https://{tenant}.{cluster}.myworkdayjobs.com/wday/cxs/{tenant}/{site}/jobs

独自のクライアントを作成する場合、次の4点に注意してください。

  • SmartRecruiters は、limit に関係なく、1回の応答で最大100件の求人情報を返します。offset を使ってページングし、行数を数えるのではなく、実際の合計件数を totalFound から取得してください。
  • Recruitee は、雇用主が給与欄を省略しても、給与オブジェクトをゼロのまま保持します。そのため、単純な読み取り処理では、給与範囲として "0 USD hour" を返してしまいます。min <= 0 && max <= 0 の場合は、値がないものとして扱ってください。
  • BambooHR の採用 API は2つに分かれています。/careers/list には掲載日、説明、報酬がなく、これらは求人ごとに1回リクエストする /careers/{id}/detail にあります。また、isRemote フィールドは存在しますが、一度も値が設定されていません。調査した50,616件の求人のうち、設定されていたものは1件もありませんでした。
  • Breezy は、ボードのないサブドメインに対して 404 ではなく 403 を返します。これをレート制限として扱って待機すると、30分のジョブが14時間かかることになります。

ライセンス

MITです。このスクリプトが呼び出す Actors は商用で、行数に応じた料金がかかります。このコード自体は無料です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。