Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

Threads Proxies: 12.7M Followers in the Head

What one public Threads profile returns to a proxied client without JavaScript, measured on 28 September 2026: about one megabyte from each of the United States, Germany and Brazil, each carrying the follower count in the meta description formatted for the exit country as 12.7M, 12,7 Mio. and 12,7 mi, against 2,028,277 bytes for the rendered page whose word count changed with every exit
What one public Threads profile returns to a proxied client without JavaScript, measured on 28 September 2026: about one megabyte from each of the United States, Germany and Brazil, each carrying the follower count in the meta description formatted for the exit country as 12.7M, 12,7 Mio. and 12,7 mi, against 2,028,277 bytes for the rendered page whose word count changed with every exit

Threads is the Meta platform that gives a proxied client the most for the least, and the number is in the head. On 28 September 2026 we fetched one public profile thirteen times through residential exits in the United States, Germany and Brazil. A plain HTTP client with no login and no JavaScript received 1,034,341 bytes with the follower count and post count in the meta description, the h1, the canonical and the recent posts in the HTML. Rendering the same page cost 2,028,277 bytes for a word count that changed with every exit. What the exit country changed was the number itself: 12.7M, 12,7 Mio., 12,7 mi.

Search for Threads proxies and Google thinks you mean concurrency

This is the only keyword in the series where the SERP is about a different noun. "Threads" is the word proxy vendors use for concurrent connections, and the first page is a forum post asking what threads mean in a residential plan, two vendor help pages on thread limits, a forum answer recommending no more than ten threads per proxy, and a plan page priced by thread count. Two results are about the Meta app, both selling proxies for running many accounts, and two are posts on threads.com written by proxy sellers. Autocomplete for the head term returns nothing; "proxies for threads" suggests "proxy threads", the concurrency meaning, and "threads scraper" is where the data intent lives: github, api, apify, post, profile, comment, search.

If you are here for connection limits: our residential and rotating endpoints have no per-account thread cap, and the number that matters on Threads is bytes per profile, below. If you are here for the Meta app, read on, and note that Meta's terms apply to Threads exactly as they apply to Instagram and Facebook, because Threads accounts are Instagram accounts.

The profile is server-rendered, and the counts are in the meta description

We audited threads.com/@nasa with and without JavaScript from each of the three exits, weighed it over plain HTTP from all three, and rendered it from one.

FetchExitBytesWords, strict countDescription opens withTitle ends with
Profile, no JavaScriptUS1,034,34117712.7M Followers • 137 ThreadsThreads, Say more
Profile, no JavaScriptDE1,033,24816212,7 Mio. Follower • 137 ThreadsThreads – sag mehr
Profile, no JavaScriptBR1,059,35418912,7 mi seguidores • 137 threadsThreads, diga mais
Profile, renderedUS2,028,27719812.7M Followers • 137 ThreadsThreads, Say more
Profile, renderedDE38312,7 Mio. Follower • 137 ThreadsThreads – sag mehr
Profile, renderedBR23212,7 mi seguidores • 137 threadsThreads, diga mais

Read the description column first. Every plain fetch carried the follower count and the post count in the head, server-rendered, with no script involved. On Facebook the same trick gives you the follower count of a Page for 923,794 bytes; on Threads it gives you followers and posts for about one megabyte, and the canonical, the h1 and an Open Graph block come with it. There is no JSON-LD of any kind on the profile, so the description is the structured surface.

The strict word count in the table is the audit's conservative measure of main content, and it undersells the page. A full Markdown extraction of the same plain HTML returned 2,132 words and 17 images from the US exit, 2,110 from Germany and 2,235 from Brazil: the recent posts, with their text, are in the HTML that a client without JavaScript receives. That is the whole difference from Instagram and Facebook, where the posts arrive only after hydration. On Threads the first page of a public profile is a plain HTTP read.

The rendered rows are the ones that ruin a benchmark. The browser downloaded twice the bytes, ran for 7.8 seconds, and produced 198 words from the United States, 383 from Germany and 232 from Brazil for the same profile. The feed hydrates progressively and the capture window catches a different amount of it every time, so a rendered word count on Threads is not a measurement, it is a timing. Assert on the plain HTML, where the counts are stable within a few words across exits, and where the description carries the numbers you actually want.

The exit country rewrites the number, not just the label

We sent no Accept-Language header and changed nothing between exits. Threads localised the whole head from the IP: the title suffix, the description, and, the part that matters, the format of the counter.

ExitCounter as servedWhat a naive parser reads
United States12.7M Followers12.7 million
Germany12,7 Mio. Follower127, or 12 with a comma split, and no match on "Followers"
Brazil12,7 mi seguidores12,7 mi is not a suffix any English regex knows

The German exit writes the decimal as a comma and the magnitude as "Mio."; the Brazilian exit writes "mi". A parser built on the US page, matching ([\d.]+)M, matches nothing from Germany and Brazil, and one that strips non-digits first turns 12,7 Mio. into 127. Both failures are silent. Either pin the exit country per job and parse for that locale, or parse the counter with a locale table: decimal separator, magnitude suffix, and the label word, which is "Followers", "Follower" and "seguidores" respectively. On Threads geo targeting is a parsing dependency before it is anything else, exactly as we found on Facebook, and the safest storage is the string as served plus the exit country, so the parse can be redone.

The canonical did not move: https://www.threads.com/@nasa from all three countries, and the bytes stayed within 2.5 percent of each other. Threads does not shard by region or redirect to country domains the way Pinterest does. It rewrites the strings and nothing else.

The Threads API wants a token, and its limits are about posting

Threads has an official API at graph.threads.com (and graph.threads.net), and every call carries an access token obtained through Meta's app review and a user's authorisation. It is a publishing and insights API for accounts that granted your app access. The documented limits make its purpose clear: an app's call count is 4,800 multiplied by the number of impressions the app's users generated, per rolling 24 hours; a profile may publish 250 posts, 1,000 replies and 100 deletions per 24-hour window, and run 500 location searches. None of those numbers describes reading strangers' public profiles, because the API does not do that at scale. The keyword-search endpoint it offers also requires a token.

So the map is the same as on the other Meta platforms. The public web profile is the surface a proxied client can read without an identity, and on Threads it is a good one: counters in the head, posts in the HTML, no browser needed. The API is for accounts you are authorised to act for. Neither is a licence to build a dataset, and robots.txt says so in its first four lines.

What robots.txt says, and who is on the list

threads.com/robots.txt is 8,149 bytes and opens with a notice rather than a rule: collection of data on Threads through automated means is prohibited unless you have express written permission from Threads, and every authorised user agent listed must comply with Meta's Automated Data Collection Terms, whose URL is in the comment. Then fourteen named agents get a flat Disallow: /: Amazonbot, Applebot-Extended, Brightbot, ClaudeBot, Google-Extended, GPTBot, PerplexityBot, PetalBot, Scrapy, uptimerobot, viberbot, YaK, Yandex and Yeti. Then Googlebot, Bingbot, Applebot, DuckDuckBot, the link unfurlers of Discord, Telegram, Twitter, LinkedIn and Pinterest, and a few SEO crawlers get a shared block that disallows accounts, settings, the ajax and query endpoints and the /publicapi/ path, with Googlebot and Bingbot additionally kept out of individual posts and comment pages. Then the last block:

User-agent: *
Disallow: /

Followed by fifteen Sitemap: lines: profile sitemaps in five tiers, US top creators, emerging creators, active producers, micro producers, high-potential posts, hashtags and typeahead tags. As on Facebook, the platform publishes a map of its public accounts and tells any client it has not named to stay out of all of it. The Automated Data Collection Terms, 2,765 words, are the document behind the notice, and their first requirement is written permission.

So be accurate about what you are standing on. A Threads profile is readable over plain HTTP, and it publishes the counts and the recent posts to every client. Meta's position is that automated collection needs written permission, and the notice is the first line of robots.txt. Reading a few public profiles to verify a creator, or checking how your own account and posts render in another market, sits inside ordinary use; crawling the profile sitemap is what the notice is about. Under United States case law the two questions are separate, and we cover that ground in is web scraping legal in the US; Meta's terms do not depend on it, and a residential IP settles none of it.

What a Threads profile costs to read

Every number here came through residential proxies on the Basic line at $0.80/GB, counting a gigabyte as 10^9 bytes.

JobBytes per requestRequests per GBCost per request
Profile with counts and recent posts, no JavaScript, US exit1,034,341967$0.00083
Profile, no JavaScript, BR exit1,059,354944$0.00085
Profile, rendered2,028,277493$0.0016 plus 7.8 s of browser

A gigabyte holds 967 profile pages over plain HTTP, each with the follower count, the post count and the first page of posts. Ten thousand creators is 10.3 GB and about $8.30; rendered, 20.3 GB, $16.20, and 22 hours of browser time for a word count you cannot compare between exits. The same 10,000 pages on mobile at $2.30/GB would be $24 for a surface that never asked what network we came from: thirteen fetches, thirteen complete pages, no address-level obstacle from any exit. On Threads the cost is the megabyte of application every profile ships, and the only lever is to never render it.

The setting that works on Threads

  • Network: residential proxies, Basic line, $0.80/GB. Thirteen fetches from three countries returned complete plain-HTTP pages; the Premium ($2.20/GB) and Mobile ($2.30/GB) lines returned nothing extra on logged-out reads.
  • Fetch mode: engine: tls, plain HTTP, never rendered. The profile returns the follower and post counts in the meta description and the recent posts in the HTML, 2,132 words in a full extraction, for 1,034,341 bytes; rendered it costs 2,028,277 bytes and 7.8 seconds for a word count that varied from 198 to 383 by exit.
  • Country: pin the exit per job and parse for that locale. The counter is served as 12.7M from the United States, 12,7 Mio. from Germany and 12,7 mi from Brazil; store the string as served with the exit country, and never match on the English label. The canonical stays on www.threads.com from every exit.
  • When the proxy is not enough: there is no Threads collector in our catalogue. The web scraping API without rendering returns the profile as clean Markdown from $0.0002 per page, with a CSS extraction schema for the description counters and the post list; failed requests are never billed. To run the same no-JS versus rendered comparison on your own list of profiles, the SEO Audit API does both fetches in one call at $0.0012 per URL. For the same counters on the sibling platform, the Instagram profile collector returns them as rows.
  • Free tier: every account gets $2 of free API usage per month, which is 10,000 profile pages through the scraping API before you pay anything.

Read the profile over plain HTTP, take the counts from the description, parse them for the exit's locale, and read Meta's notice before you read the sitemap. For the platform in this series where the counts are also in the head but the posts are not, compare Instagram; for the one that puts the whole feed in the HTML with no terms notice at all, Telegram.

What we will not help you do

The two results on this keyword that are about the Meta app sell running many Threads accounts through proxies. We will not write that. Threads accounts are Instagram accounts, Meta's terms forbid bulk registration, account farming, engagement automation and evading enforcement, the enforcement runs on device and behavioural signals a proxy never touches, and no proxy restores a disabled account. What proxies legitimately serve on Threads is creator research and sponsorship due diligence on public profiles, brand and impersonation monitoring, checking that your own account, posts and any promoted content render correctly in each market, which the localised head makes a real per-country question, and social listening on public conversations within the limits Meta's terms set. Public does not mean unlicensed: posts and profiles are their authors' content and, where they name people, personal data, so purpose, retention and deletion still apply.

Sources & further reading

FAQ

Quick answers on threads proxies.

Something else? Ask us →

Can I get a Threads follower count without an API token?

Yes, from the page head. On 28 September 2026 the public profile threads.com/@nasa served its follower and post counts in the meta description, "12.7M Followers • 137 Threads", to a plain HTTP client with no login and no JavaScript, in 1,034,341 bytes. The format follows the exit country: 12,7 Mio. Follower from Germany and 12,7 mi seguidores from Brazil, so parse for the locale you pinned.

Do I need a proxy to scrape public Threads profiles?

Not for a handful of requests: all thirteen of our fetches returned complete pages from a single residential exit, with no address-level obstacle. You need a pool for volume, at 967 profiles per gigabyte, and a pinned country for correctness, because the head is localised from the IP and the counter changes format with it.

Should I render Threads pages with a headless browser?

No. The rendered profile cost 2,028,277 bytes and 7.8 seconds and returned 198 words from the United States, 383 from Germany and 232 from Brazil for the same profile, because the feed hydrates progressively and the capture catches a different amount each time. The plain HTML returned the counts in the description and 2,132 words of recent posts for half the bytes, stable across exits.

Does the exit country change what Threads returns?

It changes the strings, not the structure. The same URL returned the same canonical and bytes within 2.5 percent from the United States, Germany and Brazil, but the title suffix became "Say more", "sag mehr" and "diga mais" and the follower counter became 12.7M, 12,7 Mio. and 12,7 mi. A US-built regex reads nothing or 127 from the other two. Store the string as served with the exit country.

What are the Threads API rate limits?

The Threads API at graph.threads.com requires an access token for every call. Its documented limits are about publishing: an app may make 4,800 calls multiplied by its users’ impressions per rolling 24 hours, and a profile may publish 250 posts, 1,000 replies and 100 deletions and run 500 location searches per 24-hour window. It reads and writes for accounts that authorised your app; it does not read strangers’ public profiles at scale.

Does Threads allow scraping in its robots.txt?

No, for an unnamed client. The file opens with a notice that automated collection is prohibited without express written permission from Threads and points at Meta’s Automated Data Collection Terms, gives 14 named agents including GPTBot, ClaudeBot, PerplexityBot and Scrapy a flat Disallow, gives Googlebot, Bingbot and the link unfurlers path rules, and ends with "User-agent: * / Disallow: /" followed by 15 sitemaps of profiles, posts and tags. Readability is a technical fact; permission is a contractual one.

Take the counts from the head, skip the browser

Every number here came from one platform: fetch any Threads URL over plain HTTP or rendered, compare the two views side by side, and extract the description counters as fields. Every account gets $2 of free API usage each month, and failed requests are never billed.

Related reading

Social proxiesPinterest Proxies: 1.3 MB Profile, 107 Words

Fifteen fetches of Pinterest on 28 September 2026 from the United States, Germany and Brazil. A public profile answers a plain HTTP client with 1,304,978 bytes, an h1, a description, ProfilePage JSON-LD and the board grid. Rendering it costs 2,628,042 bytes and 33 seconds for 151 words, and from Brazil the render never hydrated at all. The exit country picks the domain: www, de. or br. Here is the measurement, the oEmbed endpoint that does exist, the robots allowlist of 330 named bots, and the one line in the Terms.

Read →
Social proxiesSnapchat Proxies: 757K Subscribers, No JS

Sixteen fetches of Snapchat on 28 September 2026 from the United States, Germany and India. A public profile returns its subscriber count, category, website and a Spotlight list with view counts to a plain HTTP client in 662,597 bytes, no login, no JavaScript. Rendering the same page costs 2,637,627 bytes for the same 94 words. The exit country rewrites the title and the counter label, and Snapchat tells you which country it saw in a response header. Here is the measurement, the arithmetic, and where the Snap Terms stop you.

Read →
Social proxiesTelegram Proxies: 1,139 Words, No JavaScript

Nineteen fetches of Telegram on 28 September 2026 from the United States, Germany and India. The t.me/s/ web preview of a public channel returns 1,139 words and 127,691 bytes to a plain HTTP client, identical from all three countries, paginated by message id, with no account and no token. Rendering adds 40 words of chrome for 7.6 seconds. The Bot API wants a token for every method, and there is no robots.txt on t.me at all. Here is the measurement, the arithmetic, and the line Telegram’s own terms draw.

Read →