/ ディレクトリ / プレイグラウンド / Apify
● 公式 apify 🔑 自分のキーが必要

Apify

作者 apify · apify/apify-mcp-server

Apify上の3,000以上のビルド済みActorを活用して、Google、Amazon、LinkedIn、TikTok、Mapsなどをスクレイピングできます。カスタムスクレイピングコードのメンテナンスは不要です。

Apify公式MCPは、ApifyのActorマーケットプレイスを呼び出し可能なツールとして公開します。サイトごとに独自のスクレイパーを書く代わりに、既存の実績あるActorを選んで入力を渡すだけで、構造化されたJSONをストリーミングで取得できます。汎用スクレイパーでは継続的なメンテナンスが必要になるようなニッチなターゲット(Googleマップのリスティング、Amazon商品、Twitterプロフィールなど)に最適です。

なぜ使うのか

主な機能

ライブデモ

実際の動作

apify.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "apify",
      "command": "npx",
      "args": [
        "-y",
        "@apify/actors-mcp-server"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "apify": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@apify/actors-mcp-server"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add apify -- npx -y @apify/actors-mcp-server

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Apify

ローカルビジネスのリード獲得のためにGoogleマップのリスティングをスクレイピング

👤 テリトリーリストを作成する営業・SDRチーム ⏱ ~15 min beginner

使うタイミング: 「ベルリンのコーヒーショップ」500件分の住所、電話番号、ウェブサイト、評価が必要で、実行途中でブロックされたくない場合。

前提条件
  • Apifyアカウント + APIトークン — console.apify.com → Settings → Integrations → API token
  • 実行サイズに応じた十分なApifyプラットフォームクレジット — 無料プランは月$5のクレジット付き。Googleマップの実行は1,000件あたり約$1
フロー
  1. ターゲットに適したActorを選ぶ
    Find the best-maintained Apify Actor for scraping Google Maps places. Prefer one with >5 stars and recent updates.✓ コピーしました
    compass/crawler-google-placesのようなActorスラッグと入力スキーマ
  2. クエリを指定して実行する
    Run that Actor with searchStringsArray=['coffee shop Berlin'], maxCrawledPlacesPerSearch=500, language='en'. Wait for completion.✓ コピーしました
    → 実行ステータスがSUCCEEDEDになり、データセットIDが返される
  3. データセットを取得してクリーニングする
    Get the dataset items. Keep only name, address, phone, website, rating, reviewsCount. Drop places without a phone. Output as CSV.✓ コピーしました
    → クリーニング済みの400〜500件のリードのCSV

結果: CRMインポート可能な重複排除済みリードリスト。Apifyクレジットは通常$1〜3程度。

注意点
  • 間違ったActorを実行してしまう — 信頼性の低い類似Actorが多数存在する — Apifyストアで利用回数と最終更新日でフィルタリングし、ターゲットごとに上位3つのActorに絞る
  • 大規模データセットをインラインで返すとコンテキストウィンドウを超過する — Claudeにアイテムをページネーション(limit+offset)で処理させるか、先にファイルシステムに保存してから要約させる
組み合わせ: filesystem · postgres

Amazon商品の価格と在庫状況をスケジュールでトラッキング

👤 Eコマース、アフィリエイトマーケター、競合価格分析チーム ⏱ ~20 min intermediate

使うタイミング: 200件のASINについて、スクレイパーの管理なしに日次の価格・在庫スナップショットを取得したい場合。

前提条件
  • ASINまたは商品URLのリスト — https://www.amazon.com/dp/B0XXXXXX のようなURLのCSV
フロー
  1. Amazon Product Scraper Actorを呼び出す
    Run Actor junglee/amazon-crawler with urls=<my list>, maxReviews=0, scrapeProductDetails=true.✓ コピーしました
    → 商品データセットを含む実行が完了
  2. 価格と在庫を正規化する
    From the dataset, extract asin, title, price, currency, in_stock (bool), seller. Flag any asin where price dropped vs my last snapshot [paste].✓ コピーしました
    → ASINごとの現在値と前回値の比較
  3. 日次スケジュールを設定する
    Create a daily Apify schedule for this Actor with the same inputs. Name it 'amazon-price-tracker-<category>'.✓ コピーしました
    → スケジュールが作成され、次回実行時刻が表示される

結果: 200件のASINに対して1日あたり約$0.30のコストで、継続的な価格・在庫モニタリングが稼働。

注意点
  • Amazonはレジデンシャルプロキシを使用しても積極的にスロットリングするため、実行が部分的に失敗することがある — Actorのリトライを有効にし、5〜10%のアイテム欠損を許容する。失敗したASINは小バッチで再実行する
組み合わせ: postgres · notion

公開Twitter/XまたはTikTokプロフィールから最近の投稿を収集

👤 ソーシャルリスニングアナリスト、コンテンツリサーチャー ⏱ ~20 min intermediate

使うタイミング: 公人やブランドをトラッキングしており、過去30日間の投稿を構造化データとして分析したい場合。

前提条件
  • 対象アカウントのプロフィールURL — 公開プロフィールリンクのみ — プライベートまたはログインが必要なスクレイピングは行わないこと
フロー
  1. 信頼性の高いTwitter/TikTok Actorを選ぶ
    Find the top Apify Actor for fetching public tweets from a handle. Show pricing per 1000 tweets.✓ コピーしました
    → 1,000件あたりの価格を含むActorの候補リスト
  2. 各ターゲットに対して実行する
    Run it for handles [list] with maxTweets=300 and start_date=30 days ago.✓ コピーしました
    → ツイートとエンゲージメント数を含むデータセット
  3. トーンやトピックの変化を要約する
    Cluster these posts into 5 topics and show engagement averages per topic. Call out any sharp rise in one topic.✓ コピーしました
    → トピックテーブルとトレンドの解説

結果: 構造化されたソーシャル投稿データセットと、1ページのトピック別トレンドサマリー。

注意点
  • プライベート/ログイン必須のコンテンツをスクレイピングするとプラットフォームの利用規約に違反し、いつでも動作しなくなる可能性がある — 公開プロフィールのみに限定する。部分的な失敗はバグではなく想定内として扱う
組み合わせ: notion · postgres

大規模クロールジョブを非同期で実行し、後から結果を収集

👤 10,000ページ以上のクロールを実行するエンジニア ⏱ ~45 min advanced

使うタイミング: クロールに30分〜6時間かかる場合で、MCP呼び出しをその間ブロックしたくない場合。

フロー
  1. 待機せずに実行を開始する
    Start Actor apify/website-content-crawler with startUrls=[...], maxCrawlPages=10000. Return the runId, don't wait.✓ コピーしました
    → runIdが即座に返される
  2. 定期的にステータスをポーリングする
    Check run <runId> status. How many pages done, how many errored, ETA?✓ コピーしました
    → 進捗数値
  3. 準備ができたら結果をストリーミングする
    Run is SUCCEEDED. Page through the dataset 1000 items at a time and save each page to /crawls/<runId>/page-<n>.jsonl.✓ コピーしました
    → 後続処理用のローカルJSONLファイルが準備完了

結果: チャットセッションをブロックせずに大規模クロールが完了し、インデックス作成用の結果がディスクに保存された状態。

注意点
  • Claudeに1回の呼び出しでデータセット全体を取得させるとコンテキストがメモリ不足になる — 必ずページネーションを使用する。データセット全体を一度にリクエストしないこと
  • 上限なしのディープクロールでコストが膨れ上がる — 開始前にmaxCrawlPagesとメモリ/CPU制限をActorに設定する
組み合わせ: filesystem · qdrant

組み合わせ

他のMCPと組み合わせて10倍の力を

apify + postgres

Apify Actorでスクレイピングし、正規化された行を商品DBにupsertする

Run the Amazon Actor for my ASIN list, then upsert each result into the product_prices table with today's date.✓ コピーしました
apify + qdrant

ドキュメントサイトをクロールし、各ページをベクトルコレクションに埋め込んでRAGに活用する

Use Website Content Crawler on docs.stripe.com, then embed each page and upsert into the Qdrant stripe_docs collection.✓ コピーしました
apify + filesystem

後続処理の前に、生のクロール出力をJSONLとしてローカルに保存する

Run the Google Maps Actor for 'dentist Paris', save the raw dataset to /data/leads/paris-dentists.jsonl.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
search-actors query: str, limit?: int 実行前にターゲットに適したActorを検索する free
get-actor actorId: str 呼び出し前にActorの入力スキーマと料金を確認する free
call-actor actorId: str, input: object, timeout?: int Actorを実行し完了を待つ(短時間の実行のみ) Actor固有。Apifyプラットフォームクレジットで課金
get-dataset-items datasetId: str, limit?: int, offset?: int 完了した実行のデータセットをページネーションで取得する free
get-run runId: str 長時間実行中のジョブのステータスをポーリングする free

コストと制限

運用コスト

APIクォータ
Apify APIの利用枠は十分。Actor自体はプラットフォームクレジットで従量課金されます
呼び出しあたりのトークン
Actorの入出力レスポンスは通常500〜3,000トークン。大規模データセットはページネーションで取得してください
金額
無料プラン:月$5のプラットフォームクレジット付き。有料プランは月$49から($49以上のクレジット込み)。Actorごとの料金は異なります(1,000件あたり$0.25〜$5が一般的)。
ヒント
呼び出し前に必ずget-actorでActorの料金を確認してください。実行ごとにmaxResults/maxCrawlPagesを設定してコストに上限を設けましょう。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Apify API token with default scope
認証情報の保管: APIトークンを環境変数APIFY_TOKENに保存
データ送信先: api.apify.comへの通信が発生します。Actor自体は、指定された任意の公開URLにアクセスする場合があります
絶対に付与しない: Root/admin tokens if user-scoped tokens suffice

トラブルシューティング

よくあるエラーと対処法

401 Unauthorized

APIFY_TOKENが未設定または失効しています。console.apify.com/settings/integrationsで再発行してください。

確認: curl -H 'Authorization: Bearer $APIFY_TOKEN' https://api.apify.com/v2/users/me
Actor run FAILED with 'Not enough platform credits'

Apifyコンソールの課金画面でクレジットをチャージするか、より安価なActorバリアントを選択してください。次回はmaxResultsを設定してコストに上限を設けましょう。

Run succeeds but dataset is empty(実行は成功するがデータセットが空)

入力スキーマが間違っています。get-actorを実行して必須フィールド名を確認してください。Actorが入力を無視している可能性があります。

Timeout waiting for call-actor

長時間のクロールがMCP呼び出しのタイムアウトを超過しています。実行を開始してrunIdを取得し、ブロッキングの代わりにget-runでポーリングしてください。

代替案

Apify 他との比較

代替案代わりに使う場面トレードオフ
Firecrawl MCP任意のサイトを対象とした汎用的なページからMarkdownへのスクレイピングAmazonやMapsなど特定ターゲットへの特化度は低い
Bright Data MCP高性能なレジデンシャルプロキシとSERP APIが必要な場合より高コスト。ビルド済みActorよりもブロック回避に特化
Playwright MCPカスタムフロー(ログイン、複数ステップのクリック操作)をスクリプトで制御する必要がある場合スクレイピングロジックを自分で記述・メンテナンスする必要がある

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る