mcpField
S
scraping-instagram-profile-data

scraping-instagram-profile-data

github.com/apidojo-ioデータ・データベース1843 回インストール24 週間前に更新
リポジトリ

scraping-instagram-profile-data について

Instagramアカウントの統計を一括エクスポートし、最近の投稿も任意で取得するデータ収集スキルです。プロフィール一覧から構造化データを作りたいユーザー向けです。

主な機能

  1. 01Instagram URLからプロフィールを取得
  2. 02アカウント単位の統計を収集
  3. 03最近の投稿を任意で取得
  4. 04非公開・取得不能なアカウントへの対応
  5. 05プロフィールデータセットの出力

活用シーン

  1. 01ユーザー名一覧からデータセットを作成
  2. 02複数アカウントのフォロワー数や投稿数を確認
  3. 03エンゲージメント分析用の投稿データを取得

MCP 対応

Apify MCP サーバーを使ってInstagramスクレイパー Actor を実行できます。コマンドラインと REST API の代替手段も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/apidojo-io/apidojo-skills --skill scraping-instagram-profile-data

インストール後、Claude Code で/scraping-instagram-profile-dataを入力して読み込まれたか確認します。

詳細

Instagram プロフィールデータのスクレイピング

任意の Instagram ユーザー名セットのプロフィールを一括エクスポートします。アカウントレベルの統計情報と、オプションで最近の投稿データを返します。

前提条件

  • APIFY_TOKEN 環境変数が設定されていること
  • オプション:Apify MCP サーバーがインストールされていること

入力

パラメーター型必須デフォルト備考
startUrlsarray✅[]Instagram の URL — プロフィール、ハッシュタグ、位置情報、音声ページ、リール
untilstringオプション—この日付まで投稿をスクレイピングします(YYYY-MM-DD)
maxItemsnumberオプション無制限返す投稿の最大数
customMapFunctionstringオプション—各出力オブジェクトを変換する JavaScript 関数

ワークフロー

Progress:
- [ ] Step 1: Normalize username list
- [ ] Step 2: Run instagram-scraper
- [ ] Step 3: Poll for SUCCEEDED
- [ ] Step 4: Deliver profile dataset
ステップ 2:アクターを実行する

推奨 — run_actor.js(待機、出力、ファイル保存を自動で処理します):

# Quick answer (prints table to chat)
node scripts/run_actor.js \
  --actor "apidojo~instagram-scraper" \
  --input '{"param": "value"}'

# Save as CSV
node scripts/run_actor.js \
  --actor "apidojo~instagram-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.csv --format csv

# Save as JSON
node scripts/run_actor.js \
  --actor "apidojo~instagram-scraper" \
  --input '{"param": "value"}' \
  --output YYYY-MM-DD_results.json --format json

APIFY_TOKEN は環境変数または .env ファイルに設定する必要があります。

Apify MCP が利用可能な場合:

Tool: apify:run-actor
Actor: "apidojo~instagram-scraper"
Input:
{
  "usernames": ["handle1", "handle2"],
  "includeRecentPosts": false
}

REST API の代替手段:

curl -X POST \
  "https://api.apify.com/v2/acts/apidojo~instagram-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"usernames": ["handle1", "handle2"]}'

id を RUN_ID として保存します。status = SUCCEEDED になるまでポーリングします:

curl "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_TOKEN" | grep '"status"'

結果を取得します:

curl "https://api.apify.com/v2/actor-runs/$RUN_ID/dataset/items?token=$APIFY_TOKEN&format=json"
ステップ 3:エッジケースに対応する
  • 非公開アカウント:プロフィールの統計情報は返されますが、投稿は返されません — isPrivate: true として記録します。
  • アカウントが見つからない:ハンドル名が変更されたか、アカウントが停止された可能性があります — 出力に記載します。
  • ビジネスアカウントと個人アカウント:ビジネスアカウントでは連絡先情報が公開されますが、個人アカウントでは公開されません。

出力形式

# Instagram Profile Dataset
Accounts requested: N | Returned: N | Private: N | Not found: N

| Username | Followers | Following | Posts | Bio (truncated) | Business | Verified |
|----------|-----------|-----------|-------|-----------------|----------|----------|
| ...      | ...       | ...       | ...   | ...             | ...      | ...      |

Available fields: username, fullName, followersCount, followingCount, postsCount,
biography, isVerified, isBusinessAccount, businessCategory, externalUrl, profilePicUrl

トラブルシューティング

アカウントが見つからない場合: リストの作成後にユーザー名が変更されたか、アカウントが停止されています。 エンゲージメントデータがない場合: エンゲージメントは投稿ごとのデータです。投稿レベルのデータを取得するには、includeRecentPosts: true を使用してください。

コメント