マーケティングチームが、候補となるクリエイターの活動状況やオーディエンスの変化、プロフィールの最終更新時期を把握するには、何十ものアカウントを手作業で確認しなければならないことがあります。単発の表はすぐに古くなります。フォロワー数やプロフィールの説明は変わり、投稿日時や個別投稿の指標も改めて収集する必要があるためです。

実用的な方法は、小さな観測ログを作ることです。あらかじめ用意したリストの公開プロフィールを1日1回取得し、収集時刻とともにレスポンスを保存して、新しい値を過去のスナップショットと比較します。この方法なら、手作業でさらに確認するアカウントの選別、活動状況の評価、定期レポートの作成に役立ちます。ただし、アカウント所有者向けの分析機能の代わりにはなりません。たとえば、公開プロフィール情報から内部のリーチ指標を確認することはできません。
まず、何を追跡するか決める
提携候補の検索であれば、ユーザー名、プロフィールID、認証済みかどうか、フォロワー数、投稿数、自己紹介、収集時刻といった短い項目リストで通常は十分です。これらの値からプロフィールの変更に気づき、選んだニッチ分野でアカウントを比較できます。実際に取得できる項目はAPIのレスポンスによって異なります。処理を始める前に、ドキュメントで最新のJSONを確認し、存在しない項目を前提にしないでください。
コンテンツの活動状況を把握するには、投稿データをプロフィール情報に追加できます。IG Scraper APIのルート一覧には、ユーザーメディアや動画クリップ用の個別ルートのほか、メディアやコメントに関するリクエストが記載されています。プロフィールを確認した後、別の段階としてこれらを接続してください。まずPostmanで必要なパラメーターとレスポンス形式を確かめ、そのうえでレポートに本当に必要な項目だけを記録します。
モニタリングで役立つルールは、生のレスポンスを正規化済みの行データとは分けて保存することです。APIレスポンスが変わった場合、生のJSONがあれば解釈を再確認できます。一方、正規化した表はグラフやフィルターに便利です。どちらの場合もリクエスト時刻を保存し、現在の値と過去の値を区別できるようにしてください。
IG Scraper APIに接続する
jsonscraperのIG APIベースURLはhttps://ig.jsonscraper.comです。公式ドキュメントには、ユーザー名でプロフィールを取得するリクエストとして、パラメーターusername、license_key、cache_timeoutを指定するGET /v1/user/by/usernameが記載されています。たとえば、テストアカウント用にhttps://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60の形式のURLが示されています。キャッシュパラメーターは、該当ルートの条件と用途に従って使用してください。ポーリング頻度は、更新をどれほど早く必要とするかに合わせる必要があります。
レスポンスの構造を確認するには、IG Scraper APIのページを開き、関連するPostmanコレクションに進んでください。成功時のレスポンス例には、ステータス、プロフィールID、ユーザー名、認証済みかどうかを含むigオブジェクト、そしてタイムスタンプが含まれています。ドキュメントには、ユーザー、メディア、検索、ハッシュタグ、位置情報の各ルートも掲載されています。分析の目的が明確になるにつれて、収集範囲を広げられます。
APIキーは環境変数に保存し、ソースコードやクライアントアプリケーションには記述しないでください。jsonscraperのドキュメントも、キーを環境に保存し、クライアントビルドに埋め込まないよう推奨しています。運用環境では、キーへのアクセスを制限してください。たとえば、バックグラウンドの収集タスクだけが使えるようにします。
Pythonによる最小限の実用例
以下のスクリプトは、環境変数からユーザー名を読み込み、各プロフィールをリクエストして、JSONLファイルに書き込みます。JSONLは、1行に1つのスナップショットを記録できるため、初期のプロトタイプに便利です。このコードは、プロフィールのすべての項目が常に存在するとは仮定せず、レスポンスオブジェクト全体を保存します。最初の実行後に実際のレスポンスを調べてから、安定したテーブルスキーマを作成してください。
import json
import os
import time
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlencode
from urllib.request import Request, urlopen
API_KEY = os.environ["JSONSCRAPER_LICENSE_KEY"]
USERNAMES = [name.strip() for name in os.environ["IG_USERNAMES"].split(",") if name.strip()]
BASE_URL = "https://ig.jsonscraper.com/v1/user/by/username"
OUTPUT = Path("instagram_profiles.jsonl")
def fetch_profile(username: str) -> dict:
query = urlencode({
"username": username,
"license_key": API_KEY,
"cache_timeout": 60,
})
request = Request(f"{BASE_URL}?{query}", headers={"Accept": "application/json"})
with urlopen(request, timeout=30) as response:
return json.load(response)
with OUTPUT.open("a", encoding="utf-8") as output:
for username in USERNAMES:
collected_at = datetime.now(timezone.utc).isoformat()
try:
payload = fetch_profile(username)
row = {
"collected_at": collected_at,
"requested_username": username,
"ok": True,
"payload": payload,
}
except Exception as exc:
row = {
"collected_at": collected_at,
"requested_username": username,
"ok": False,
"error": str(exc),
}
output.write(json.dumps(row, ensure_ascii=False) + "\n")
output.flush()
time.sleep(1)
実行前に、環境変数で設定してください。
export JSONSCRAPER_LICENSE_KEY="あなたのキー"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py
この例の一時停止は、リストを順番に処理するためのものです。APIの利用上限を示すものではありません。運用スケジュールでは、利用プラン、ドキュメント、必要なデータの鮮度に応じて実行頻度とエラー処理を設定してください。リクエストが失敗した場合も記録を保存すれば、アカウントを何も記録せずに飛ばすのではなく、問題を把握できます。
レスポンスを確認してからデータを正規化する
利用するルートのレスポンスを確認したら、安定して使える列を選びます。たとえば、観測テーブルには収集時刻、ユーザー名、プロフィールID、レスポンスの確認済みステータス、そしてJSONに存在する場合に必要なカウンターを含められます。各項目が欠落した場合の扱いを明確にしてください。空の値として保存する、不完全なレコードとして印を付ける、あるいは再確認に回す、といった方法があります。
昨日の行を今日の値で上書きしないでください。スナップショットの履歴があれば、日付間の差分を計算し、変化を把握できます。フォロワー数は、同じプロフィールの連続する成功済み観測間で差分を計算します。変更される可能性があるユーザー名だけでなく、安定したIDを使って比較するのがおすすめです。
レポートに必要なデータを超える情報が生のレスポンスに含まれている場合は、保存期間を定めて保管するとよいでしょう。正規化済みの表には、具体的な目的に照らして必要と認められる項目だけを含めます。公開クリエイターを調査する場合、通常はデータ量を抑え、情報を収集する目的を説明しやすくなります。
毎日の実行と通知を追加する
サーバーでは、cronなどのタスクスケジューラーを使ってスクリプトを実行できます。自動化ツールでは、スケジュールに従ってHTTPリクエストを送る方法があります。基本的な流れは、トリガー、プロフィールリストの読み込み、ルートの順次呼び出し、成功レスポンスの確認、データストアへの行の記録、概要の作成です。n8nやMakeでは同じ処理を個別のノードに分けると、1つのプロフィールでエラーが起きてもリスト全体の処理を止めずに済みます。
レポートでは、正常に処理されたプロフィール数、前回の成功済みスナップショットからフォロワー数が変化したアカウント、記録の最終更新時刻といった簡単な指標を計算します。エラーを別の一覧にまとめると、ユーザー名の誤り、アクセスできないプロフィール、一時的なリクエストの問題を素早く見つけられます。投稿データを追加する場合は、まず必要な履歴の長さと項目を決め、その後ドキュメントに記載された対応ルートを接続してください。
キャッシュも意図をもって設定してください。ドキュメントでは、cache_timeoutを、対応するルートで最近の結果を再利用するためのパラメーターとして説明しています。毎日の比較レポートでは、必要なデータの鮮度に合ったモードを設定してください。キャッシュ済みのレスポンスを新しい観測点として扱う場合は、ログにその旨を記録し、区別できるようにします。
このモニタリングで分かること
スナップショットが蓄積されると、選んだ公開プロフィールについて、検証可能な観測履歴がチームに残ります。カウンターの変化を比較し、長期間更新されていない記録を見つけ、手作業で評価するアカウントの短いリストを作成できます。選んだルートと用途でメディアの収集が利用できる場合は、プロフィールに投稿データを追加し、投稿頻度やコンテンツ形式を分析できます。ただし、個々の項目がドキュメントで確認できることが条件です。
指標は調査作業のフィルターとして使い、提携を自動で決めるためには使わないでください。フォロワー数だけでは、オーディエンスがブランドに合っているか、コンテンツの質、クリエイターの商業的な適性は分かりません。プロフィールを人の目で確認し、選定基準は技術的なデータ収集とは別に記録してください。
試験運用を始めるには、PostmanのIG APIコレクションを開き、キーを設定してプロフィールリクエストを実行してください。次に、確認したパラメーターをスクリプトや自動化に移します。これにより、ページ用のパーサーを一から開発することなく、再現性のある毎日のデータ収集、変更履歴、分析レポートの基盤を整えられます。