마케팅 팀은 적합한 크리에이터가 활동 중인지, 팔로워 규모가 어떻게 바뀌는지, 프로필이 마지막으로 언제 업데이트됐는지 파악하려고 수십 개 계정을 일일이 확인해야 합니다. 한 번 만든 표는 금세 오래된 정보가 됩니다. 팔로워 수와 프로필 소개가 바뀌고 게시 날짜와 개별 게시물 지표도 다시 수집해야 하기 때문입니다.

실용적인 방법은 작은 관측 기록을 만드는 것입니다. 미리 작성한 목록의 공개 프로필을 하루에 한 번 요청하고, 수집 시각과 함께 응답을 저장한 다음 새 값과 이전 스냅샷을 비교합니다. 이 방식은 추가 검토가 필요한 계정을 추리고 활동을 파악하며 정기 보고서를 준비하는 데 도움이 됩니다. 다만 계정 소유자가 보는 분석을 대신하지는 않습니다. 예를 들어 공개 프로필 정보만으로는 내부 도달 지표에 접근할 수 없습니다.
먼저 추적할 항목을 정하세요
잠재적 파트너를 찾는 데는 보통 사용자 이름, 프로필 식별자, 인증 여부, 팔로워 수, 게시물 수, 자기소개, 수집 시각 정도의 짧은 필드 목록이면 충분합니다. 이런 값을 이용하면 프로필 변경을 파악하고 선택한 분야에 따라 계정을 비교할 수 있습니다. 실제 필드 구성은 API 응답에 따라 다르므로, 처리에 앞서 문서에서 현재 JSON 구조를 확인하고 존재하지 않는 필드가 있다고 가정하지 마세요.
콘텐츠 활동을 확인하려면 게시물 데이터로 프로필 정보를 보완할 수 있습니다. IG Scraper API의 경로 목록에는 사용자 미디어와 동영상 클립을 위한 별도 경로뿐 아니라 미디어 및 댓글 요청도 나와 있습니다. 프로필을 확인한 뒤 별도 단계로 연결하세요. 먼저 Postman에서 필요한 매개변수와 응답 구조를 검증한 다음, 보고서에 실제로 필요한 필드만 기록합니다.
모니터링에서 유용한 원칙은 원시 응답과 정규화된 행을 따로 저장하는 것입니다. API 응답이 바뀌었을 때 원시 JSON으로 해석을 다시 확인할 수 있고, 정규화된 표는 차트와 필터에 편리합니다. 어느 쪽이든 요청 시각을 저장해 현재 값과 과거 값을 구분하세요.
IG Scraper API 연결하기
jsonscraper의 IG API 기본 주소는 https://ig.jsonscraper.com입니다. 공식 문서에는 사용자 이름으로 프로필을 요청하는 방법이 나와 있습니다. GET /v1/user/by/username 요청에 username, license_key, cache_timeout 매개변수를 사용합니다. 예를 들어 테스트 계정의 URL은 다음과 같습니다. https://ig.jsonscraper.com/v1/user/by/username?username=apple&license_key=YOUR_LICENSE_KEY&cache_timeout=60. 캐시 매개변수는 해당 경로의 조건과 실제 작업에 맞게 사용해야 합니다. 업데이트가 필요한 시점에 따라 요청 빈도를 정하세요.
응답 구조를 확인하려면 IG Scraper API 페이지를 열고 연결된 Postman 컬렉션으로 이동하세요. 예시의 성공 응답에는 상태, 프로필 식별자와 사용자 이름 및 인증 여부가 포함된 ig 객체, 타임스탬프가 들어 있습니다. 문서에는 사용자, 미디어, 검색, 해시태그, 위치별 경로 그룹도 별도로 정리되어 있어 분석 과제가 구체화되면 수집 범위를 확장할 수 있습니다.
API 키는 소스 코드나 클라이언트 애플리케이션에 넣지 말고 환경 변수에 저장하세요. jsonscraper 문서는 키를 환경 변수에 보관하고 클라이언트 빌드에 포함하지 말 것을 권장합니다. 실제 작업 흐름에서는 키 접근을 제한하세요. 예를 들어 백그라운드 수집 작업만 키를 사용하도록 설정할 수 있습니다.
Python으로 만드는 최소 실행 예제
아래 스크립트는 환경 변수에서 사용자 이름을 읽어 각 프로필을 요청하고 JSONL 파일에 기록합니다. JSONL은 한 줄에 스냅샷 하나를 저장하므로 초기 프로토타입에 편리합니다. 이 코드는 프로필 필드가 항상 존재한다고 가정하지 않고 전체 응답 객체를 저장합니다. 첫 실행 후 실제 응답을 살펴본 다음 안정적인 표 스키마를 만드세요.
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="your_key"
export IG_USERNAMES="creator_one,creator_two,creator_three"
python monitor.py
예제의 대기 시간은 목록을 여유 있게 순차 처리하기 위한 것이며, API의 공표된 제한을 의미하지 않습니다. 실제 운영 일정의 빈도와 오류 처리는 사용 중인 요금제, 문서, 최신성 요구사항을 고려해 설정하세요. 요청에 실패해도 기록이 남으므로 계정이 조용히 누락되지 않고 문제를 확인할 수 있습니다.
응답을 확인한 뒤 데이터를 정규화하세요
사용하는 경로의 응답을 살펴본 뒤 안정적으로 유지되는 열을 골라내세요. 예를 들어 관측 표에는 수집 시각, 사용자 이름, 프로필 식별자, 검증된 응답 상태, JSON에 존재하는 경우 필요한 카운터를 넣을 수 있습니다. 각 필드가 누락됐을 때의 처리 방식을 명확히 정하세요. 빈 값으로 저장할지, 불완전한 행으로 표시할지, 재검토 대상으로 보낼지 결정합니다.
어제의 행을 오늘의 값으로 덮어쓰지 마세요. 스냅샷 기록이 있어야 날짜별 차이를 계산하고 변경 사항을 파악할 수 있습니다. 팔로워 수는 동일한 프로필의 연속된 성공 관측값끼리 비교해 차이를 계산하세요. 변경될 수 있는 사용자 이름만 비교하는 것보다 안정적인 식별자를 기준으로 비교하는 편이 좋습니다.
원시 응답에 보고서에 필요한 것보다 많은 데이터가 들어 있다면 보관 기간을 제한하는 것이 좋습니다. 정규화된 표에는 구체적인 작업에 필요한 필드만 포함하세요. 공개 크리에이터를 조사할 때 이는 보통 데이터 양을 줄이고 해당 정보를 수집하는 이유를 설명하기 쉽게 합니다.
매일 실행하고 알림을 추가하세요
서버에서는 cron 같은 작업 스케줄러로 스크립트를 실행할 수 있고, 자동화 도구에서는 일정에 따라 HTTP 요청을 보낼 수 있습니다. 기본 흐름은 트리거, 프로필 목록 읽기, 경로를 순차적으로 호출하기, 성공 응답 확인, 저장소에 행 기록하기, 요약 생성으로 구성됩니다. n8n이나 Make에서는 각 단계를 별도 노드로 나누면 프로필 하나에서 오류가 나더라도 전체 목록 처리가 중단되지 않습니다.
보고서에는 간단한 지표를 계산하세요. 성공적으로 처리된 프로필 수, 이전의 성공 스냅샷과 비교해 팔로워 수가 바뀐 프로필, 마지막으로 기록이 업데이트된 시각 등이 있습니다. 오류 목록을 따로 만들면 잘못된 사용자 이름, 접근할 수 없는 프로필, 일시적인 요청 문제를 빠르게 발견할 수 있습니다. 게시물 데이터를 추가한다면 먼저 필요한 기록 기간과 필드 범위를 정한 뒤 문서의 해당 경로를 연결하세요.
캐싱도 목적에 맞게 설정해야 합니다. 문서에 따르면 cache_timeout은 지원되는 경로에서 최근 결과를 재사용하기 위한 매개변수입니다. 매일 비교하는 보고서에는 필요한 데이터 최신성에 맞는 설정을 사용하세요. 캐시된 응답을 새로운 기준 시점의 값처럼 취급하지 말고, 기록에 캐시 사용 여부를 표시해야 합니다.
이 모니터링으로 확인할 수 있는 것
스냅샷이 쌓이면 팀은 선택한 공개 프로필의 관측 기록을 확인할 수 있습니다. 카운터 변화를 비교하고, 오랫동안 갱신되지 않은 기록을 찾고, 사람이 직접 평가할 계정의 짧은 목록을 만들 수 있습니다. 선택한 경로와 작업에서 미디어 수집이 가능하다면, 해당 필드가 문서로 확인된다는 전제하에 프로필에 게시물을 추가해 게시 빈도나 콘텐츠 형식을 분석할 수도 있습니다.
지표는 조사 작업을 위한 필터로 사용하고, 협업 여부를 자동으로 결정하는 기준으로 삼지 마세요. 팔로워 수만으로는 브랜드와의 적합성, 콘텐츠 품질, 창작자의 상업적 활용 가능성을 알 수 없습니다. 프로필에 대한 사람의 검토 절차를 추가하고, 선정 기준은 기술적인 수집 작업과 별도로 관리하세요.
시험 운영을 시작하려면 Postman의 IG API 컬렉션을 열어 키를 설정하고 프로필 요청을 실행하세요. 그런 다음 검증한 매개변수를 스크립트나 자동화에 옮기면 됩니다. 이렇게 하면 직접 페이지 파서를 만들지 않고도 재현 가능한 일일 수집, 변경 기록, 분석 보고서의 기반을 마련할 수 있습니다.