A public Minds channel hands a plain HTTP client a 37-word shell from every exit, and a browser fills it only from Europe: 738 words from a German residential exit and 764 from a British one, against 38 words from the United States with an HTTP 200 and nothing inside. The unauthenticated channel endpoint returned the same 3,485 bytes of JSON from all three countries on 28 September 2026, but the platform's robots.txt closes /api/ to crawlers and opens exactly one path, /api/v3/discovery. On Minds the setting is a German or British exit, rendered, and the discovery endpoint for search.
Nobody writes about this keyword. The search results are the platform's own pages, a 2017 Quora thread, a Trustpilot listing and one unofficial Python client whose code passes a proxy dictionary to its HTTP session without saying which proxy works. Minds describes itself as open source and decentralised, which is true of its code and not of its data access. We measured what a proxied client actually gets.
Plain HTTP returns a shell, and the shell changes shape by country
We audited www.minds.com/minds/, the platform's official channel, through residential exits in three countries, once without JavaScript and once rendered.
| Exit country | Plain HTTP | Rendered in a browser |
|---|---|---|
| United States | 37 words, title Minds (@minds) | Minds, canonical, description | 38 words, title Minds, no canonical, 13.8 s |
| Germany | 37 words, same shell | 738 words, canonical, description, 29.8 s |
| United Kingdom | 8 words, title Minds, no canonical, no description | 764 words, canonical, description, 23.1 s |
The plain response is an Angular shell. From the US and Germany it is the friendly version: title with the handle, a canonical URL, the channel's description and robots: all. From the UK, in the same minute, it was a barer 8-word shell with no canonical at all. A separate plain scrape from the US needed three attempts to settle on a 3,555-byte document with 20 words. Three different shells for one URL, all HTTP 200, none with a post in it. Do not parse the plain page.
The rendered pass is where Minds separates from most platforms we have measured: it works, but not from everywhere. From Germany the browser produced 738 words with the canonical intact; from the United Kingdom, 764. From the United States it produced 38 words, one more than the shell, with an HTTP 200. That is the expensive failure mode we documented on Bluesky: not an error, a short page you might store as an empty channel. Assert on words, never on status.
The browser costs 2.66 MB per channel and gives 1,450 words
We weighed the working render from Germany: 2,663,716 bytes and 12.4 seconds for 1,450 extractable words, 4 headings and 3 images, with the channel's posts, their engagement counts and the subscriber count in the DOM. That is 749 times the bytes of the plain shell for the only page view that contains data.
Two settings make it reliable. Pin the exit to Germany or the United Kingdom for the whole job, because the US exit did not hydrate in either of our passes. And wait on a content selector, not on page load: the German audit pass took 29.8 seconds against 12.4 for the scrape that waited for content, which is the difference between a timeout and a page. Our web scraping API does both at $0.001 per rendered page; the SEO audit is what produced the two-view rows above, at $0.0012 per URL.
The API answers without a key, and robots.txt says which part you may use
Minds runs its own API, and the web client is a consumer of it. We called three endpoints unauthenticated.
| Request | Status | On-wire bytes | What came back |
|---|---|---|---|
| /api/v1/channel/minds, US, DE and UK exits | 200 | 3,485 each | guid, username, name, description, tags, language, subscriptions count (351), impressions (41,518,864), creation time, avatar and banner URLs, verified and founder flags, x-robots-tag: noindex |
| /api/v2/feeds/container/<guid>/activities?limit=1&sync=1 | 200 | 49,994 | One activity with its full entity embedded, 1.0 s |
| /api/v3/discovery/search?q=opensource&f=top&t=all, DE exit | 200 | 87,323 | 300 activity references with owner guids and URNs, 0.9 s |
The channel record is byte-identical from the three countries, so the geographic split above is a property of the web client, not of the data. Now read the robots.txt, which is 141 bytes: Disallow: /api/ for every user agent, then Allow: /api/v3/discovery and Allow: /api/v3/newsfeed/activity/og-image/, and a sitemap. That is a precise instruction. The channel and feed endpoints answer a plain client, and crawlers are told not to use them; the discovery search is the one API surface the platform opens on purpose, and it returned 300 results for one 87-kilobyte request.
So the honest architecture for public Minds data is: discovery search over /api/v3/discovery for finding content by keyword, the rendered channel page from a European exit for a specific channel, and the other API paths only with the platform's permission. The developer documentation site at developers.minds.com is itself a JavaScript application (3,544 bytes over plain HTTP) and the engine is published on GitLab, which is where the endpoint list lives.
What it costs, counting a gigabyte as one billion bytes
| How you fetch it | On-wire bytes | What you get | Per GB | Cost at $0.80/GB |
|---|---|---|---|---|
| Channel page, plain HTTP | 3,555 | A shell: title, description, no posts | ~281,000 pages | $0.0000028 |
| Channel page, rendered, German exit | 2,663,716 | 1,450 words, posts with counts, 12.4 seconds | ~375 pages | $0.00213 |
| Channel page, rendered, US exit | n/a | 38 words, never hydrated | n/a | wasted |
| Discovery search, one call | 87,323 | 300 activity references | ~11,450 calls | $0.00007 |
| Feed, one activity with entity | 49,994 | One post in full | ~20,000 calls | $0.00004 |
Refresh 10,000 channels a day for a month from a German exit: about 799 GB rendered, about $640 at the residential Basic rate. Do the same job with a US exit and you pay the render fee for 38-word pages, which is the one number on this page that should change a budget: the country is not a preference on Minds, it is the difference between data and nothing. Discovery, by contrast, is cheap: a million search results cost about $0.23 in bandwidth.
What Minds' own terms permit, in one line
Section 3.6 of the Terms of Service prohibits creating accounts or accessing data, including user information, "through unauthorized means, by using an automated device, caching, script, bot, spider, crawler or scraper". Read together with the robots.txt, that is the line: automated collection through the closed API paths and mass account creation are out; the discovery endpoint the platform opens to crawlers, and reading public channels you follow at a human pace, are what remains. Minds is also a platform with tokens, boosts and rewards attached to engagement, so engagement automation is not a grey area there; it is the thing the rules exist to stop.
What this is properly for: social listening on public keywords through discovery, monitoring a known list of public channels, checking that your own channel renders from the countries your audience lives in, and research on public posts with the retention and deletion obligations that personal data carries everywhere. The contrast with Mastodon, whose public API is open to unauthenticated reads by design, is the useful one: two decentralised platforms, two different answers, and only the measurement tells you which.
The setting that works on Minds
- Network: residential, Basic at $0.80/GB. Residential exits in Germany and the United Kingdom rendered the channel on the first pass; the US exit did not hydrate in two passes.
- Fetch mode: rendered, waiting on a content selector. 738 words from Germany and 764 from the UK, against 37 over plain HTTP; the plain page is a shell in three different shapes.
- Country to pin: Germany or the United Kingdom, for the whole job. From the United States the rendered page returned 38 words with HTTP 200, which a status check counts as success.
- For search: /api/v3/discovery/search, plain HTTP, the one API path robots.txt opens: 300 results in 87,323 bytes.
- When the proxy is not enough: the web scraping API at $0.001 per rendered page pins the exit and waits for content for you; for cross-platform listening alongside Minds, the Reddit collector returns public posts as rows with no fetch layer on your side.
- Free tier: every account gets $2 of free API usage per month, which covers 2,000 rendered channel pages.