| Post scrape One Threads post, charged only when the row is actually written. Every charged row carries the post id, permalink, the full text, a true UTC timestamp, and exact integer counts for likes, replies, reposts and quotes - read from the payload as numbers, never parsed from a rounded display string. Image and video posts carry direct CDN URLs at full resolution, and a post that quotes another carries the quoted text and author. Threads repeats posts across pages whenever a feed shifts under you, and this Actor deduplicates by post id across the WHOLE run, so you are never billed twice for the same post even when a profile is listed under two spellings. Posts removed by the replies, minimum-likes or date filters are never written and never charged. A quoted post is never written as a row of its own: it belongs to a different author and billing it would inflate both your dataset and your invoice with something you did not ask for. Per-profile summary rows are never charged. Error rows are never charged. A request that failed and was retried is never charged. | | |
| Profile open Charged once per profile that Threads actually served, covering the request that opens it. That request is what produces the profile record on the summary row - the exact follower count as a number (Threads' own page rounds it to "5.7M Followers"; this is 5737159), the full bio, display name, verified flag and profile picture - and it is also what makes paging possible at all, since the tokens every later page needs are only present in it. It is charged even when the profile turns out to have no posts, because 'this account exists and posts nothing' cost a real request and is a real answer. It is NOT charged when Threads refuses to serve the profile to a logged-out visitor, which it does for a specific set of accounts and also for handles that do not exist - those return an error row and cost you nothing. It is NOT charged when the request failed after its retries. | | |