페이스북 댓글 크롤링, 게시물 25개를 한 번에 읽어요
페이스북, 인스타그램, 틱톡, 유튜브 게시물 25개의 댓글을 API 호출 한 번으로 읽어요. since를 넣으면 새 댓글만 읽고 새 댓글이 없으면 크레딧도 들지 않아요.
POST /v1/prism/post-comments 한 번이면 게시물 링크 최대 25개의 댓글을 읽어요. 인스타그램, 틱톡, 유튜브, 페이스북, 레딧, X, 스레드, 링크드인 링크를 섞어서 보내도 돼요. 링크마다 행이 하나씩 와요. 순서는 보낸 순서 그대로예요. since를 넣으면 그 시각 이후에 달린 댓글만 와요. 새 댓글이 없는 게시물은 크레딧이 들지 않아요.
페이스북 2개, 인스타그램 2개, 틱톡, 유튜브, X, 스레드, 레딧 각 1개에 게시물이 아닌 링크 1개를 섞어 보내면 33크레딧이 들어요. 플랫폼별 내역은 아래 표에 있어요.
여러 게시물의 댓글을 한 번에 읽으려면 어떻게 하나요?
items에 게시물 URL을 넣어 보내요. per_post는 게시물마다 읽을 댓글 수예요. 기본은 20개고 최대 200개까지 돼요. 키는 x-api-key 헤더에 넣어요.
curl -X POST "https://www.socialcrawl.dev/v1/prism/post-comments" \
-H "x-api-key: $SOCIALCRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"per_post": 20,
"items": [
"https://www.facebook.com/examplepage/posts/pfbid0Example",
"https://www.instagram.com/p/EXAMPLE_CODE/",
"https://www.tiktok.com/@example/video/7000000000000000000",
"https://www.youtube.com/watch?v=EXAMPLE_ID",
"https://x.com/example/status/2000000000000000000",
"https://www.threads.com/@example/post/EXAMPLE_CODE",
"https://www.reddit.com/r/example/comments/abc123/example_thread/",
"https://example.com/not-a-post"
]
}'링크가 어느 플랫폼 것인지 알려 줄 필요는 없어요. 주소를 보고 그 플랫폼의 댓글 엔드포인트로 알아서 보내요. 아래 응답은 페이스북 행 하나와 마지막 행만 남기고 줄였어요.
{
"success": true,
"endpoint": "/v1/prism/post-comments",
"data": {
"results": [
{
"index": 0,
"target": "https://www.facebook.com/examplepage/posts/pfbid0Example",
"status": "ok",
"data": {
"platform": "facebook",
"endpoint": "/v1/facebook/post/comments",
"items": [
{
"comment": {
"id": "Y29tbWVudDo...",
"parent_id": null,
"text": "Holaguay hola",
"author": { "username": null, "display_name": "Example Person" },
"engagement": { "likes": 0, "replies": 0 },
"published_at": "2026-11-11T19:09:02.000Z"
}
}
],
"truncated": true,
"next_cursor": "eyJ...",
"pages": 2
},
"cost": 2
},
{
"index": 7,
"target": "https://example.com/not-a-post",
"status": "unsupported",
"cost": 0
}
],
"summary": { "total": 8, "ok": 7, "unsupported": 1, "credits_charged": 33 }
}
}data.items 안의 comment는 어느 플랫폼이든 모양이 같아요. id, text, author, engagement.likes, published_at, parent_id가 들어 있어요. 페이스북 행을 읽는 코드가 인스타그램 행도 그대로 읽어요. 페이스북 댓글은 display_name이 오고 username은 비어 있을 때가 있어요. 스크립트에서 둘 중 있는 쪽을 쓰게 해 두면 편해요.
status는 ok, not_found, unsupported, error, deferred 중 하나예요. 잘못된 링크는 자기 행만 실패해요. deferred는 제때 시작하지 못한 행이에요. 크레딧은 들지 않으니 다음 호출에 다시 넣으면 돼요.
게시물 25개의 댓글을 읽으면 크레딧이 얼마나 들어요?
게시물마다 해당 플랫폼 댓글 엔드포인트의 페이지 가격이 붙어요. 댓글이 실제로 온 페이지만 세요. 페이스북, 틱톡, 유튜브, X, 스레드는 페이지당 1크레딧이에요. 인스타그램, 링크드인, 레딧은 5크레딧이에요. 호출을 시작할 때 per_post로 읽는 최대치만큼 잡아 두었다가 쓰지 않은 만큼 돌려줘요.
| 호출에 넣은 링크 | 읽은 댓글 | 크레딧 |
|---|---|---|
| 페이스북 게시물 | 20 | 2 |
| 인스타그램 게시물 | 20 | 10 |
| 틱톡 영상 | 20 | 1 |
| 유튜브 영상 | 20 | 1 |
| X 게시물 | 20 | 1 |
| 스레드 게시물 (스레드 전체) | 8 | 1 |
| 레딧 글 (스레드 한 번 읽기) | 5 | 5 |
| 게시물이 아닌 링크 | 없음 | 0 |
찾을 수 없는 게시물, 게시물이 아닌 링크, 댓글이 없는 게시물은 모두 0크레딧이에요. 페이스북과 인스타그램은 한 페이지에 댓글이 10개쯤 오기 때문에 20개를 읽으면 2페이지가 돼요. 플랫폼을 섞은 목록에서는 인스타그램 게시물이 비용을 가장 크게 좌우해요.
더 읽을 댓글이 있는지도 행에 나와요. truncated: true와 next_cursor가 함께 오면 per_post를 넘는 댓글이 더 있다는 뜻이에요. 행의 data.endpoint에 적힌 엔드포인트에 그 커서를 보내 이어 읽거나 per_post를 올려요. 레딧 행은 스레드를 한 번 읽은 결과예요. 한 스레드의 답글 트리를 전부 보려면 GET /v1/reddit/post/comments를 쓰세요.
파이썬으로 페이스북 댓글을 수집하려면요?
위 호출을 스크립트로 옮긴 거예요. 게시물 3개를 읽어 댓글을 전부 CSV로 저장해요. deferred로 돌아온 행은 다시 보내요.
import csv
import os
import requests
API = "https://www.socialcrawl.dev/v1/prism/post-comments"
HEADERS = {"x-api-key": os.environ["SOCIALCRAWL_API_KEY"]}
posts = [
"https://www.facebook.com/examplepage/posts/pfbid0Example",
"https://www.tiktok.com/@example/video/7000000000000000000",
"https://x.com/example/status/2000000000000000000",
]
def read_comments(urls, since=None, per_post=50):
body = {"items": urls, "per_post": per_post}
if since:
body["since"] = since
res = requests.post(API, headers=HEADERS, json=body, timeout=120)
res.raise_for_status()
return res.json()
payload = read_comments(posts)
rows = payload["data"]["results"]
# 제때 시작하지 못한 게시물은 "deferred"로 오고 크레딧이 들지 않아요.
# 그 링크만 다시 보내요.
deferred = [posts[r["index"]] for r in rows if r["status"] == "deferred"]
if deferred:
rows += read_comments(deferred)["data"]["results"]
with open("comments.csv", "w", newline="", encoding="utf-8") as f:
out = csv.writer(f)
out.writerow(["post_url", "platform", "comment_id", "author", "text", "likes", "published_at"])
for row in rows:
if row["status"] != "ok":
print(row["target"], row["status"])
continue
for item in row["data"]["items"]:
c = item["comment"]
author = c["author"]["username"] or c["author"]["display_name"]
out.writerow([row["target"], row["data"]["platform"], c["id"], author,
c["text"], c["engagement"]["likes"], c["published_at"]])
print("credits:", payload["credits_used"])URL 세 개를 25개까지의 내 목록으로 바꿔서 쓰세요. 게시물 목록부터 모으려면 GET /v1/facebook/search/posts로 검색하거나 GET /v1/facebook/profile/posts로 페이지의 게시물을 불러온 뒤, 그 URL을 이 스크립트에 넣으면 돼요. 그 첫 단계는 페이스북 수집 가이드와 인스타그램 수집 가이드에 있어요.
새로 달린 댓글만 가져오려면요?
since를 넣어요. 각 행에는 그 시각 이후에 올라온 댓글만 남아요. 새 댓글이 없는 게시물은 0크레딧이에요.
curl -X POST "https://www.socialcrawl.dev/v1/prism/post-comments" \
-H "x-api-key: $SOCIALCRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"since": "2026-11-13T00:00:00Z",
"per_post": 20,
"items": [
"https://www.instagram.com/p/EXAMPLE_CODE/",
"https://www.youtube.com/watch?v=EXAMPLE_ID",
"https://x.com/example/status/2000000000000000000",
"https://www.facebook.com/examplepage/posts/pfbid0Example"
]
}'since 이후 댓글이 하나도 없으면 모든 행이 댓글 없이 ok로 오고 크레딧도 0이에요. 조용한 게시물을 주기적으로 확인하는 작업은 비용이 거의 들지 않아요.
인스타그램, 유튜브, X, 링크드인은 댓글을 최신순으로 나열해요. 그래서 since보다 오래된 댓글이 나오는 순간 읽기를 멈춰요. 틱톡, 페이스북, 레딧, 스레드는 그렇지 않아서 per_post만큼 읽고 나서 거르는 방식이에요. 댓글이 많이 붙는 게시물에서는 per_post를 올려 두세요. 그러지 않으면 최신 댓글이 읽은 범위 밖에 남아요. 스케줄러로 주기적으로 돌리면서 지난 실행 시각을 since로 넘기면 돼요. TypeScript 버전은 Comments in bulk 레시피에 있어요. 출시 내용은 변경 내역에 있어요.
X, 스레드, 링크드인 게시물 하나의 댓글은요?
링크가 하나고 그 글을 끝까지 넘겨 보고 싶다면 GET /v1/prism/comments를 써요.
curl "https://www.socialcrawl.dev/v1/prism/comments?url=https://x.com/example/status/2000000000000000000&max=20&replies=false" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"X와 스레드는 페이지당 1크레딧이고 한 번 호출하면 최소 2크레딧이에요. 링크드인은 댓글 10개 한 페이지에 5크레딧이에요. 스레드 /t/ 짧은 링크도 돼요. 이 세 플랫폼은 답글을 펼치지 않아요. 응답의 _warnings에 그렇게 적혀 있어요. 스레드에서 짧은 글은 completed: true로 통째로 와요. X에서 댓글이 많은 글은 한 페이지와 이어 읽을 next_cursor가 와요. 추가된 플랫폼은 변경 내역에서 확인하세요.
프로필의 새 댓글은 어떻게 모으나요?
GET /v1/prism/profile/comments는 프로필의 최근 게시물을 읽어 새 댓글을 최신순 목록 하나로 돌려줘요. 호출이 아니라 게시물 단위로 크레딧을 세요.
curl "https://www.socialcrawl.dev/v1/prism/profile/comments?url=https://www.instagram.com/example/&posts=3&per_post=10&since=2026-11-01T00:00:00Z" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"인스타그램 게시물 3개에 since 없이 호출하면 16크레딧이었어요. 게시물 목록 1크레딧에 게시물마다 댓글 한 페이지 5크레딧이에요. 두 게시물에만 그 이후 댓글이 있는 since를 넣으면 11크레딧이었어요. 조용한 게시물은 posts[].credits에 0으로 나왔어요. 모든 댓글보다 늦은 since를 넣으면 게시물 목록 1크레딧만 들었어요. 예전에는 새 댓글이 하나만 있어도 목록에 있는 모든 게시물의 댓글 페이지 요금이 붙었어요(변경 내역).
반복문은 언제 한 번의 호출로 바꾸나요?
댓글 엔드포인트를 반복문으로 하나씩 부르고 있다면 API가 먼저 알려 줘요. 키 하나로 1분 안에 서로 다른 대상을 10번 이상 단건 호출하면 응답에 한 번에 처리하는 방법을 가리키는 meta.hint가 붙어요. 댓글이라면 POST /v1/prism/post-comments예요. 힌트는 키마다 하루에 한 번만 와요. X-SocialCrawl-Hints: off 헤더를 보내면 꺼져요.
게시물이 25개를 넘으면 목록을 나누거나 POST /v1/prism/jobs로 최대 1,000건의 댓글 읽기를 백그라운드에서 돌려요(비동기 요청). Idempotency-Key 헤더를 보내면 시간 초과된 호출을 다시 보내도 첫 응답이 0크레딧으로 돌아와요(멱등성). 일괄 엔드포인트 전체는 Batch 문서에 있어요.
한계는 뭐가 있나요?
읽을 수 있는 깊이는 플랫폼마다 달라요. per_post는 200까지 되지만 게시물이 실제로 내주는 양은 플랫폼과 공개 범위가 정해요. X, 스레드, 링크드인의 답글은 여기서 펼치지 않고 접힌 채로 와요. 페이스북, 인스타그램, 틱톡, 유튜브 답글은 전용 엔드포인트가 따로 있어요.
찾을 수 없는 게시물은 not_found로 오고 무료예요. 다른 행에는 영향이 없어요. since는 플랫폼마다 읽는 방식이 달라서 위의 최신순 구분을 보고 per_post를 조정하세요. 레딧 행은 스레드를 한 번 읽은 결과이고 답글 트리 전체가 아니에요.
유튜브와 틱톡은 각각 전용 가이드가 있어요. 영상 하나를 끝까지 넘겨 읽는 방법은 유튜브 댓글 스크래퍼 가이드에, 틱톡은 파이썬으로 틱톡 댓글 수집하기에 정리해 뒀어요. 댓글을 파일로 모은 다음에는 댓글 감성 분석과 댓글에서 고객 질문 찾기가 이어져요.
어떻게 시작하나요?
socialcrawl.dev에서 키를 받으세요. 새 계정에는 100크레딧이 들어 있고 카드는 필요 없어요. 위의 첫 curl에 내 링크 두세 개를 넣어 돌려 보세요. 파라미터 전체는 post-comments 엔드포인트 페이지에, 댓글 엔드포인트별 가격은 페이스북과 인스타그램 페이지에 있어요.
자주 묻는 질문
페이스북 댓글은 어떻게 수집하나요?
페이스북 게시물 URL을 items에 넣어 x-api-key 헤더와 함께 POST /v1/prism/post-comments로 보내요. 게시물마다 같은 모양의 댓글 행이 와요. 한 페이지에 댓글이 10개쯤 오고 페이지당 1크레딧이에요. 게시물 하나를 끝까지 읽으려면 GET /v1/facebook/post/comments에서 next_cursor를 따라가요.
인스타그램 댓글도 같은 호출로 읽을 수 있나요?
네. 인스타그램 링크도 페이스북, 틱톡, 유튜브, 레딧, X, 스레드, 링크드인 링크와 같은 items 목록에 넣어요. 인스타그램은 페이지당 5크레딧이라서 게시물 하나에서 댓글 20개를 읽으면 10크레딧이에요.
게시물 25개의 댓글을 읽으면 얼마인가요?
게시물마다 해당 플랫폼의 댓글 가격으로 세고 댓글이 온 페이지만 포함해요. 틱톡, 유튜브, 페이스북, X, 스레드는 페이지당 1크레딧이고 인스타그램, 링크드인, 레딧은 5크레딧이에요. 게시물이 아닌 링크, 찾을 수 없는 게시물, 댓글이 없는 게시물은 0크레딧이에요.
지난번 이후에 달린 댓글만 가져올 수 있나요?
네. since에 ISO 시각을 넣어요. 각 행에는 그 시각 이후 댓글만 남고 새 댓글이 없는 게시물은 크레딧이 들지 않아요. 인스타그램, 유튜브, X, 링크드인은 더 오래된 댓글이 나오면 읽기를 멈춰요. 틱톡, 페이스북, 레딧, 스레드는 댓글이 많은 게시물에서 per_post를 올리세요.
답글도 같이 오나요?
X, 스레드, 링크드인 답글은 펼치지 않아요. 각 행에는 게시물에 바로 달린 댓글만 있어요. 페이스북, 인스타그램, 틱톡, 유튜브는 답글 전용 엔드포인트가 따로 있고 레딧 스레드의 답글 트리는 GET /v1/reddit/post/comments로 받아요.
게시물이 아닌 링크를 넣으면 어떻게 되나요?
그 행만 unsupported로 오고 0크레딧이에요. 나머지는 그대로 처리돼요. 찾을 수 없는 게시물은 not_found로 오고 마찬가지로 0크레딧이에요.
함께 읽으면 좋은 글
인플루언서 검색 API: 팔로워가 아니라 조회수로 크리에이터 고르기
인플루언서 검색 API 한 번으로 주제와 국가, 규모에 맞는 크리에이터를 찾아요. 최근 게시물에서 잰 중간 조회수로 순위를 매기고 드라이런으로 비용도 미리 확인해요.
틱톡과 유튜브 이메일 찾기 API, include=contacts 한 줄로
프로필 호출에 include=contacts를 붙이면 크리에이터가 공개한 비즈니스 이메일과 출처가 와요. 결과 상태 다섯 가지와 재시도, 크레딧 규칙까지 담았어요.
SNS 데이터로 AI 리포트 만들기, PDF·워드·마크다운
가져온 SNS 데이터로 AI 리포트를 만들어요. PDF, 워드, 마크다운으로 받고 이미지도 넣을 수 있어요. 무엇이 들어가고 어떻게 요청하면 좋은지 알려 드려요.
