레딧 API, 검색 1크레딧에 25건이 온다
레딧 API 검색은 1크레딧에 약 7건이 아니라 25건이에요. 한국어 '기계식 키보드'는 22건이고, 댓글은 5크레딧에 647개예요. 2026-09-05에 13크레딧으로 쟀어요.
레딧 API 검색은 1크레딧에 25건이 와요. 예전 약 7건이 아니에요. 한국어 기계식 키보드를 sort=new로 치면 22건이 오고 1크레딧이 빠져요. 댓글 한 호출은 flatten 647개, 5크레딧이에요. 측정일은 2026-09-05이고, 이번 수확은 13크레딧이에요. 페이지 크기는 호출마다 달라서 items.length를 읽어요.
호출은 HTTP예요. 헤더는 x-api-key고, 경로는 GET /v1/reddit/*예요. 공식 Reddit OAuth 앱은 필요 없어요.
측정 전에 뭐가 필요한가요?
다시 치려면 이 정도면 돼요.
- SocialCrawl API 키. 헤더는
x-api-key. Reddit 개발자 허브 OAuth 앱은 필요 없어요. - curl, 또는 Python
requests. 공식 래퍼 PRAW는 이 재현에 안 썼어요. 키는 환경 변수SOCIALCRAWL_API_KEY에 두고 코드에 붙이지 마세요. - 읽을 값: 목록은
data.items.length, 댓글은 트리 flatten, 응답의credits_used. - 재현 쿼리:
best mechanical keyboard,기계식 키보드+sort=new, r/technology 목록에서 고른 큰 스레드.
가입 보너스와 팩 단가는 가격에 있어요. 캐시 히트와 빈 페이지 환불은 0이에요. 크레딧이 빠지는 순간도 같이 보면 돼요.
레딧 검색 API는 1크레딧에 몇 건이 오나요?
레딧 검색 API GET /v1/reddit/search는 성공하면 1크레딧이에요. 2026-09-05에 영문 쿼리 3개를 쳤고, 세 번 모두 data.items.length가 25, credits_used가 1이었어요. 2026-09-03 발표치의 약 7건 페이지와 비교하면 같은 1크레딧에서 행이 늘었어요. 25를 고정값으로 코딩하면 안 돼요. 이번 런에서 본 최대예요.
세는 법은 이거예요.
page_len = Array.isArray(data.items) ? data.items.length : 0
| 쿼리 | page_len | credits_used | cached | has_more |
|---|---|---|---|---|
best mechanical keyboard | 25 | 1 | false | true |
python web scraping | 25 | 1 | false | true |
best programming languages | 25 | 1 | false | true |
25 / 7 ≈ 3.57배처럼 보이지만, 분모 약 7은 오늘 다시 잰 값이 아니에요. 비교는 25 vs 약 7로 봐요. 페이지가 매번 가득 찬다는 가정에서만, 175건을 받으려면 호출이 25회에서 7회로 줄어요. 가정이에요. 이번 런에서 trim=true로 쳐도 같은 쿼리가 25라, trim 때문에 7이 25가 된 건 아니에요.
공식 Reddit Data API의 GET /search는 페이지 크기 표를 안 줘요. reddit api 문서에도 한 페이지가 몇 건인지 없어요. 레딧 검색 API 크레딧당 행은 아래 호출의 len(items)예요.
import os
import requests
BASE = "https://www.socialcrawl.dev"
r = requests.get(
f"{BASE}/v1/reddit/search",
params={"query": "best mechanical keyboard"},
headers={"x-api-key": os.environ["SOCIALCRAWL_API_KEY"]},
timeout=60,
)
r.raise_for_status()
payload = r.json()
items = payload["data"]["items"]
pag = payload.get("pagination") or {}
print(len(items), payload.get("credits_used"), pag.get("has_more"))이번 레딧 API 수확에서 출력은 25 1 True였어요. 같은 GET을 curl로 치면 이래요.
curl -sS --get "https://www.socialcrawl.dev/v1/reddit/search" \
--data-urlencode "query=best mechanical keyboard" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"첫 행을 잘라 보면 본문·아바타·upvote ratio·플레어·언어가 이미 붙어 있어요. engagement.shares는 검색 행에서 null이었어요.
{
"id": "1w4c63y",
"author": { "username": "freecoinsbabyhe" },
"engagement": { "likes": 6, "comments": 36, "shares": null },
"ext": {
"subreddit": "keyboards",
"title": "What's The Best Mechanical Keyboard In 2026? (Price, Switches)",
"upvote_ratio": 0.875,
"flair": "Discussion",
"content_language": "en"
}
}
한국어로 레딧 검색하면 결과가 오나요?
와요. 같은 엔드포인트에 query=기계식 키보드, sort=new를 넣으면 22건이 오고 1크레딧이 빠져요. has_more=false라 이 결과는 한 페이지가 끝이에요. 예전 한국어·비라틴 검색은 빈 페이지였고, 빈 페이지는 0으로 환불됐어요. 공짜 프로브로 쓰던 코드는 이제 비용이 생겨요.
공식 API가 한글 q=를 거절한다는 말은 Reddit Data API 위키에 없어요. 막혔던 건 우리 검색 페이지예요.
r = requests.get(
f"{BASE}/v1/reddit/search",
params={"query": "기계식 키보드", "sort": "new"},
headers={"x-api-key": os.environ["SOCIALCRAWL_API_KEY"]},
timeout=60,
)
r.raise_for_status()
payload = r.json()
items = payload["data"]["items"]
print(len(items), payload.get("credits_used"), (payload.get("pagination") or {}).get("has_more"))curl -sS --get "https://www.socialcrawl.dev/v1/reddit/search" \
--data-urlencode "query=기계식 키보드" \
--data-urlencode "sort=new" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"출력은 22 1 False였어요. 제목에 한글이 들어간 행은 22건 중 19건이에요. 빈 페이지가 아닌데도 최신 sort=new 행은 얇아요. content_language는 ko 5, en 7, null 10이에요. 아바타와 upvote ratio도 22 중 15만 채워져 있어요. 필드 빈칸과 빈 페이지는 다른 이야기예요.
{
"credits_used": 1,
"pagination": { "has_more": false, "page_size": 22 },
"data": {
"items": [
{
"id": "1vo4hxh",
"ext": {
"title": "Human Fall Flat 콜라보 제품으로 마그네틱 스위치의 탑재로작동점과 래피드 트리거 모드 설정이 가능한 기계식 키보드 #기계식키보드",
"upvote_ratio": null,
"flair": null,
"content_language": null
}
}
]
}
}
레딧 댓글 API는 한 스레드에 몇 개가 오나요?
레딧 댓글 API GET /v1/reddit/post/comments는 advanced 5크레딧이에요. 1이 아니에요. 이번 웨이브가 가격을 바꾸지 않았어요. 표본은 r/technology의 Xbox Cloud 스레드고, 목록 행 num_comments 힌트는 1,320이었어요.
댓글 트리를 펼치면 flatten 647, 최상위 data.items는 480, ext.depth 최대는 9예요. data.truncated는 false, next_cursor는 null이었어요.
| 항목 | 값 |
|---|---|
목록 행 num_comments 힌트 | 1,320 |
top-level data.items | 480 |
| flatten | 647 |
ext.depth 최대 | 9 (0–9: 479 / 62 / 44 / 19 / 18 / 12 / 5 / 4 / 3 / 1) |
credits_used | 5 |
data.truncated | false |
next_cursor | null |
| 마크다운 | **bold** 8개, [label](url) 2개 |
647은 1,320이 아니에요. Reddit 쪽 카운트는 삭제·필터 댓글을 넣어서, 목록이 다 안 줘요. truncated false여도 전부가 아니에요. 체인지로그가 말한 약 4배·깊이 8은 다른 스레드 발표치예요. 한 스레드 168→687도 오늘 재측정이 아니에요. 이번 런 숫자는 647, 깊이 9예요. 647/168 ≈ 3.85배를 이번 런 비율로 단정하지 마세요.
큰 스레드에서 새 응답은 예전 응답의 상위집합이 아니에요. 양쪽 다 부분 응답이고 멈추는 지점이 달라요. 예전에 있던 댓글 77–103개가 새 응답에 없을 수 있어요. 빠진 댓글을 기능 회귀로 보지 마세요.
comment.text에는 Reddit 원본 마크다운이 남을 수 있어요. 예전 flatten 본문과 달라요. 이번 런 예는 You'll just **also** have to pay $20/hr to play it. (p7pz30q, depth 2). 첫 댓글은 @HG21Reaper의 "And that is the end of cloud gaming.", likes 7,568, depth 0이었어요.
def flatten_comments(nodes):
found = []
def walk(items):
for node in items or []:
found.append(node)
walk(node.get("replies") or [])
walk(nodes)
return found
r = requests.get(
f"{BASE}/v1/reddit/post/comments",
params={
"url": "https://www.reddit.com/r/technology/comments/1w6p54w/microsoft_announces_big_changes_to_xbox_cloud/"
},
headers={"x-api-key": os.environ["SOCIALCRAWL_API_KEY"]},
timeout=60,
)
r.raise_for_status()
payload = r.json()
items = payload["data"]["items"]
flat = flatten_comments(items)
print(
len(items),
len(flat),
payload.get("credits_used"),
payload["data"].get("truncated"),
)이번 수확 출력은 480 647 5 False였어요.
curl -sS --get "https://www.socialcrawl.dev/v1/reddit/post/comments" \
--data-urlencode "url=https://www.reddit.com/r/technology/comments/1w6p54w/microsoft_announces_big_changes_to_xbox_cloud/" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"truncated=true인데 next_cursor가 없으면, 스레드가 불완전하고 이 엔드포인트로는 나머지를 더 가져올 수 없어요. 이번 스레드에서는 그 패턴이 안 나왔어요. 그래도 한 호출이 목록 힌트 전체를 주는 건 아니에요.
{
"credits_used": 5,
"data": { "truncated": false },
"sample": {
"id": "p7orkjh",
"author": "HG21Reaper",
"text": "And that is the end of cloud gaming.",
"likes": 7568,
"ext": { "depth": 0 }
}
}레딧 데이터 API 행에 어떤 필드가 붙나요?
레딧 데이터 API 검색 행에는 본문, 작성자 아바타, 이미지·영상, upvote ratio, 플레어, content language가 붙어요. 크레딧은 그대로 1이에요. 링크 포스트는 selftext가 null인 게 정상이에요. include_body=true는 그대로 동작하고, 본문이 이미 있으면 거의 필요 없어요. 가져올 본문이 없으면 추가 크레딧은 전액 환불돼요.
영문 best mechanical keyboard 25행, 이번 런 라이브 기준이에요.
| 필드 | non-null / 비어 있지 않음 |
|---|---|
ext.selftext | 23 / 25 |
author.avatar_url | 25 / 25 |
content.media_urls | 7 / 25 |
ext.upvote_ratio | 25 / 25 |
ext.flair | 23 / 25 |
ext.content_language | 25 / 25 |
검색의 content.media_urls는 배열이고, 이미지 포스트 한 행에 URL 14개가 붙은 적도 있어요. 서브레딧 목록의 같은 키는 문자열이라 r/technology는 기사 URL, r/MechanicalKeyboards는 갤러리 URL이 와요. 검색 행마다 이미지가 있는 건 아니에요.
서브레딧 목록은 왜 행을 안 늘렸나요?
서브레딧 목록은 행을 안 늘렸어요. GET /v1/reddit/subreddit?subreddit=technology는 19건, MechanicalKeyboards는 24건, 둘 다 1크레딧, has_more=true예요. 예전 약 15–25 밴드 안에 있어요. 검색처럼 25로 점프한 값이 아니에요. 서브레딧 행 수를 검색처럼 최대 25로 보지 마세요.
페이지를 넓히면 프로모티드 포스트가 유기 순위에 섞이고, 구분 필드가 없어요. 그래서 이미 읽는 목록과 순서는 그대로 두고, 행에 아바타·미디어·upvote ratio·플레어·content language만 붙였어요.
curl -sS --get "https://www.socialcrawl.dev/v1/reddit/subreddit" \
--data-urlencode "subreddit=technology" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"items.length는 19 근처예요. 검색 25와 같은 숫자가 아니에요. 엔드포인트 목록은 레딧 플랫폼 페이지, 필드 설명은 레딧 문서에 있어요.
레딧 게시물 API는 뭐가 달라졌나요?
레딧 게시물 API GET /v1/reddit/post는 형태와 가격이 그대로예요. 성공하면 1크레딧이고, 더 안정적으로 와요. 검색 행 1w4c63y를 상세로 치면 engagement.shares가 14, likes 6, comments 36, selftext 535자, upvote_ratio 0.875, flair Discussion, language en이었어요.
이 응답의 shares는 이제 공유 수예요. 예전엔 크로스포스트 수였어요. 필드는 같은데 지표가 바뀌었어요. 검색 행의 같은 키는 이번 런 전부 null이라, 검색 페이지에서 합치면 안 돼요. 숫자 14는 상세에서만 읽어요.
레딧 스크래퍼를 직접 돌린 값이 아니에요. 아래 URL 한 건을 친 응답이에요.
r = requests.get(
f"{BASE}/v1/reddit/post",
params={
"url": "https://www.reddit.com/r/keyboards/comments/1w4c63y/whats_the_best_mechanical_keyboard_in_2026_price/"
},
headers={"x-api-key": os.environ["SOCIALCRAWL_API_KEY"]},
timeout=30,
)
r.raise_for_status()
post = r.json()["data"]
print(r.json().get("credits_used"), post["engagement"]["shares"])출력은 1 14였어요.
어떤 부분에서 막힐 수 있을까요?
- 25로 코딩함. 한국어 검색은 22예요. 영문 3쿼리가 25였다고 다음 호출도 25가 아니에요.
items.length를 읽어요. - 댓글을 1크레딧으로 예산. advanced 5예요. 웨이브가 가격을 안 바꿨어요.
- 목록 1,320 = 받은 댓글. flatten은 647이었어요. truncated false여도 전부가 아니에요.
truncated=true인데next_cursor없음. 스레드가 불완전하고, 이 엔드포인트로 나머지를 더 가져올 수 없어요. 이번 런은 truncated false예요.- 한국어가 0건일 줄 알고 환불을 기대함. 예전 빈 페이지 경로예요. 지금은 결과가 오면 1크레딧이 빠져요. 최신 행 필드 빈칸은 빈 페이지가 아니에요.
- 검색 행
shares를 집계. 이번 런 검색 페이지는 전부 null이었어요. 상세에서만 숫자가 와요.
같은 밀도 측정을 틱톡에서도 보려면?
같은 방식으로 1크레딧 페이지를 잰 글은 틱톡 API 1크레딧 측정이에요. 레딧 필드는 문서, 호출 목록은 플랫폼 페이지, 크레딧은 가격에서 보면 돼요.
자주 묻는 질문
레딧 API 1크레딧에 검색 결과는 몇 건인가요?
영문 3쿼리(best mechanical keyboard, python web scraping, best programming languages)는 모두 25건, 1크레딧이었어요. 예전 발표치는 약 7건이고, 25는 이번 런 최대예요. 고정이 아니에요.
레딧 검색 API 페이지 크기는 항상 25인가요?
아니요. 이번 영문은 25, 한국어 기계식 키보드 sort=new는 22예요. 코드는 25를 넣지 말고 data.items.length를 읽어요.
한국어로 레딧 검색이 되나요?
돼요. query=기계식 키보드, sort=new에서 22건이 왔고 1크레딧이 빠졌어요. has_more=false였어요. 예전 빈 페이지는 0으로 환불됐어요.
레딧 댓글 API는 몇 크레딧인가요?
5크레딧(advanced)이에요. 1이 아니에요. 이번 런 Xbox Cloud 스레드는 flatten 647, 최상위 480, 깊이 9, truncated=false였어요. 웨이브가 이 가격을 바꾸지 않았어요.
레딧 크롤링 대신 API로 받으면 한 페이지에 몇 건인가요?
검색은 이번 런 영문 25, 한국어 22예요. 서브레딧 목록은 r/technology 19, r/MechanicalKeyboards 24예요. 크롤 튜토리얼이 아니라, 호출 1회의 items.length예요.
레딧 댓글이 잘리면 나머지를 더 가져올 수 있나요?
data.truncated=true이고 next_cursor가 없으면 이 엔드포인트로는 나머지를 더 가져올 수 없어요. 이번 스레드는 truncated false, next_cursor null이었어요. 그래도 flatten 647은 목록 힌트 1,320의 전부가 아니에요.
레딧 API 검색을 다시 치려면 GET /v1/reddit/search?query=best%20mechanical%20keyboard에 x-api-key를 붙이면 돼요. len(items)와 credits_used가 나와요. 중간 20건대가 오고, 매번 25는 아니에요. 한글 쿼리에 sort=new를 붙이면 행이 오고 1크레딧이 빠져요.
함께 읽으면 좋은 글
dart api로는 일봉이 없어요. 같은 스키마로 붙여요
dart api로 공시만 받으면 일봉이 없어요. 삼성전자 5년 1,220봉과 분기 매출 133조 원을 한 스키마로 붙인 /v1/finance/ 호출을 보여 드려요.
인스타그램 이메일 찾기, 1크레딧에 국가까지
인스타그램 이메일 찾기, 2026-09-05에 about 9계정 호출했어요. 국가는 9/9, 공개 메일은 3/9. 유튜브 채널 이메일은 60크레딧 about에서만 채워졌어요.
스레드 검색 API, 한 호출에 55건
스레드 검색 API에서 limit으로 창을 이어 55건, 긴 구절은 분할해 44건을 모아요. 2026-09-04 UTC 실측 크레딧·응답을 그대로 보여 드려요.
