전환은 중단됐다 — apidojo 가 무료 플랜의 API 호출을 거부한다. 그 과정에서 잰 실제 단가로 보면 현재 실지출은 0(유료 게이트가 꺼져 있다)이고, 켜면 월 약 $37, 주범은 tiktok 이 아니라 reddit(66%) 이다.
관련 — tiktok.html · index.html
수집 데이터의 실제 status — 셋 다 한 번도 호출되지 않았다.
instagram skipped_paid 576
tiktok skipped_paid 388 · unsupported 57
reddit error 161 ← IP 차단(현재 actor 로 바꾸기 전, about.json 시절)
추정이 아니라 계정의 실제 usageTotalUsd 다. 우리 fetcher 는 대상 1건당 run 1회를 돌리므로 “run 당”이 곧 “대상 1건당”이다.
| Actor | 소셜 | 실측 과금/run | 관측 | 내역 |
|---|---|---|---|---|
clockworks~tiktok-scraper | tiktok | $0.0047 | 4회 전부 동일 | result $0.0037 + actor-start $0.001 |
apify~instagram-scraper | $0.0027 | 4회 전부 동일 | result $0.0027 | |
harshmaur~reddit-scraper | $0.022 ~ $0.062 URL 종류마다 다르다 | 4회 | 🔴 init $0.02 + result $0.002 × 건수 — 고정비가 결과 단가의 10배 | |
apidojo~tiktok-scraper | (전환 후보) | $0.003 | 4회 — 전부 빈 결과 | 10 rows × $0.0003. 데이터는 0건인데 과금은 됐다 |
이전 값은 $0.04 · 2회 전부 동일 이었다. 내역(init $0.02 + result $0.002)은 정확히 적혀 있었는데 합계만 틀렸다 — $0.02 + $0.002 = $0.022 다. 계정의 run 이력을 전부 조회한 결과 그 시점의 Reddit run 은 2건뿐이었고 둘 다 $0.022 였다. 즉 $0.04 는 관측된 적이 없는 숫자다.
그 값이 코드 주석 4곳·문서 12곳으로 퍼졌고, 공교롭게 subreddit URL 의 실제 값과 같아 오래 걸리지 않았다.
다른 actor 와 달리 “run 1회 = 결과 1건” 이 성립하지 않는다. maxItems:1 과 skipComments:true 를 보내도 글 URL 에서만 지켜진다.
| URL | 반환 | dataType | 과금 |
|---|---|---|---|
/r/{sub}/comments/{id} 글 | 1 | post | $0.022 |
/r/{sub} 서브레딧 | 10 | post ×10 — community 가 안 온다 | $0.04 |
/user/{u} 유저 | 21 | user_profile ×1 + comment ×20 | $0.062 |
| Actor | 이벤트 | FREE | BRONZE | SILVER | GOLD |
|---|---|---|---|---|---|
| clockworks/tiktok | result | $0.0037 | $0.003 | $0.0023 | $0.0017 |
| clockworks/tiktok | actor-start | $0.001 | $0.001 | $0.001 | $0.001 |
| apify/instagram | result | $0.0027 | $0.0023 | $0.0019 | $0.0015 |
| harshmaur/reddit | result | $0.002 | $0.0018 | $0.0016 | $0.0015 |
| harshmaur/reddit | init | $0.02 | $0.02 | $0.02 | $0.02 |
| apidojo/tiktok | dataset-item | $0.0003 | $0.0003 | $0.0003 | $0.0003 |
요금 위에 사용료가 또 붙는 게 아니다 — 낸 만큼 크레딧으로 돌아온다. 단 이월되지 않아 안 쓰면 소멸하고, 그게 실질 고정비다.
| 플랜 | 월 요금 | 포함 크레딧 | 비고 |
|---|---|---|---|
| Free | $0 | $5 | 현재 여기 |
| Starter | $29 | $29 | 3소셜 켜려면 필요 |
| Scale | $199 | $199 | — |
| Business | $999 | $999 | — |
과금 단위는 토큰이 아니라 엔트리다 — 토큰 하나가 같은 소셜 링크를 여러 개 가질 수 있고 각각이 run 1회다.
| 소셜 | 엔트리(=run) | 토큰 | unsupported | 월 환산 |
|---|---|---|---|---|
| tiktok | 388 | 267 | 57 | 1,455 |
| 576 | 359 | 0 | 2,160 | |
| 161 | 116 | 0 | 604 |
샘플은 8일치 토큰(2026-06-19~27)이고 총 1,125 run 이다. 월 환산은 ×3.75.
| 소셜 | 샘플 1회 (FREE) | 월 (FREE) | 월 (BRONZE) | 월 (apidojo 가정) |
|---|---|---|---|---|
| tiktok | $1.82 | $6.84 | $5.82 | $0.44 |
| $1.56 | $5.83 | $4.97 | — | |
| $6.44 | $24.15 | $13.17 | — | |
| 합계 | $9.82 | $36.8 | $23.96 | — |
init $0.02 가 run 당 1회 고정이고 결과 단가($0.002)의 10배다. 대상 1건당 run 1회를 돌리는 지금 패턴에서 고정비가 지배한다.
배치화하면 90% 준다 — startUrls 가 원래 배열이라 actor 는 여러 개를 받게 설계돼 있는데 우리가 1개씩만 넣고 있다. 161 run → 1 run 이면 $3.22 + $0.32 → $0.02 + $0.32.
단 공짜가 아니다 — 결과↔입력 매핑, run-sync 90초 타임아웃(→async+폴링), 실패 단위, 부분 결과 판정. fetch(routed) → fetchMany(routed[]) 구조 변경이다. 절감 $3.4/회 규모라 지금은 미룬다.
ERROR The developer of this actor doesn't allow the use of API in the Free Plan.
Please subscribe to a paid plan on Apify if you want to use the API with this actor.4회 실행 전부 SUCCEEDED 로 기록되지만 데이터는 0건이고 {"noResults": true} 가 10행 나온다. 과금은 정상적으로 됐다($0.012).
README 의 출력 예시에는 아래가 없다(전문 검색 결과 createTime·slideshow·repost·isAd 언급 0회). 다만 README 는 마케팅 문서라 전체 필드를 다 싣지 않았을 수 있어 “없다”가 확정된 게 아니다 — API 가 막혀 실제 출력을 못 받았다.
| 잃을 수 있는 필드 | 무엇 | 심각도 |
|---|---|---|
authorMeta.createTime | 계정 개설일 | 🔴 최악 — 코드 주석이 *“러그리스크 1순위 tell”*. TikTok 에서 계정 나이를 얻는 유일한 경로 |
isSlideshow | photo/video 구분 | 🔴 코드 주석이 *“병합된 tiktok_video 안에서 photo/video 를 가르는 유일한 구분자”* |
slideshowImageLinks | 슬라이드 이미지 | 🔴 audit 이 채택 확정한 필드 |
authorMeta.bioLink | 프로필 외부 링크 | 🔴 |
repostCount | 리포스트 수 | 🟡 |
isAd / isSponsored | 광고 여부 | 🟡 |
mentions / detailedMentions | 멘션 | 🟡 실측 빈 배열이라 손실 작음 |
channel 로 중첩된다. 즉 게시물이 0개인 계정은 항목 자체가 안 온다. clockworks 는 전용 프로필 응답이 있어 이 경우에도 데이터가 온다 — 신규 밈코인 계정은 게시물 0~1개가 흔해 실질 커버리지 손실이 될 수 있다.channel.verified 🆕 · channel.following 🆕 · subtitleInformation[](자막 상세, 기존 videoMeta.subtitleLinks 보다 풍부). 동등 매핑은 15개 — views←playCount, bookmarks←collectCount, song.id←musicMeta.musicId 등.
기록으로 남긴다. 셋 다 실측을 먼저 보지 않고 필드명·단가만으로 계산한 데서 나왔다.
| 틀린 주장 | 실제 |
|---|---|
minimalMaxTotalChargeUsd 를 run당 최소 과금으로 읽었다 | 실제로는 지출 상한(maxTotalChargeUsd)으로 설정 가능한 최솟값이다. clockworks 의 값이 0.5 라 “run 당 $0.50 청구”로 계산했는데, 실행 이력은 4회 전부 $0.0047 이다. $0.50 이 청구된 적이 없다. |
| 그 오해로 월 $659 · tiktok 이 97% 라고 했다 | 실제는 월 $36.8 · reddit 이 66% 다. 자릿수가 틀렸고 주범도 틀렸다. |
| apidojo 절감액을 월 $0.75 · 회수 39개월 이라 했다 | 실제 절감은 월 약 $5(tiktok $5.82 → $0.44). 다만 결론은 같다 — $29 구독료를 정당화하지 못한다. |
| 우선 | 항목 | 근거 |
|---|---|---|
| 1 | 아무것도 안 한다 | 유료 게이트가 꺼져 있어 실지출 0. apidojo 절감액 월 ~$5 는 구독료 $29 를 정당화 못 함 |
| 2 | 유료 fetch 를 켤 때 Starter 가입 | 월 $36.8 → 티어 할인으로 $23.96, $29 크레딧 안에 들어온다. apidojo 때문이 아니라 reddit·instagram 을 켜려면 필요한 것 |
| 3 | 그때 apidojo 1회 검증 | authorMeta.createTime 유무 확증 → 있으면 전환, 없으면 하이브리드(프로필=clockworks 소수 · 비디오=apidojo 다수) 검토 |
| 4 | reddit 물량이 늘면 배치화 | init 고정비 90% 절감. 단 fetchMany 구조 변경이 선행 |
| 항목 | 상태 |
|---|---|
| 필드 손실 미확증 | API 차단으로 실제 출력을 못 받았다. 근거는 README 예시뿐 |
| 티어↔플랜 대응 | 추정이다. API 가 명시하지 않는다 |
| 물량 가정 | 샘플 8일 × 3.75 로 월 환산했다. 실제 발행량·수집 주기가 다르면 달라진다. 그리고 이 샘플 자체가 필터링된 것이라 전체 발행량이 아니다 |
| 단가 변동 | actor 개발자가 언제든 바꾼다. reddit 은 이미 *“Reducing the costs further after I made more optimisations”* 로 한 번 내렸다 |
| apidojo 빈 결과 과금 | 데이터 0건인데 $0.003 씩 나갔다. 차단 상태에서도 과금되는지는 의도인지 버그인지 모른다 |