Threads Details API
API health
- 24h health
- Limited
- Healthy / normal
- Available
- Limited
- Mostly down
Last 24 hours
Last 30 days
Check a Threads account from its handle. Get display name, bio, follower count, external link and verification and privacy flags. Pass the handle with or without the @, not a profile URL. Private profiles are not opened.
Send POST https://api.everyinfra.com/api/v1/social with platform set to threads and action set to profile. Price $0.56 per 1,000 requests ($0.000556 per call). Failed calls and empty results are not charged. Synchronous. For slow jobs add "mode": "async" to the body, take the job_id and poll.
Threads Details reads the public profile of one Threads account from its handle and returns a single record: user_id, handle, display name, bio, follower count, verification and privacy flags, the profile link and the avatar. Creator marketers and social researchers use it to confirm who is behind a handle and how large the audience is, to vet creators before a campaign, or to keep a dated record of follower counts for the accounts they track.
username is the handle alone, with or without the @, because this capability does not parse full profile links. display_name can differ from the handle, and bio is the account's own text, which may include line breaks and emoji, so normalize it before keyword matching. A null follower_count signals an undisclosed number, not an empty audience. avatar_url can be a sized link that expires, so download the image if you need to keep it.
AI prompt
#Please help me write a data collection script with the EveryInfra Threads Details endpoint (threads/profile).
How the endpoint works:
- Request: POST https://api.everyinfra.com/api/v1/social with the header Authorization: Bearer <API key>. Read the key from the EVERYINFRA_API_KEY environment variable and never hard-code it.
- In the request body, set platform to threads and action to profile, and put the parameters inside params.
- Required parameters:
- username: Specifies the Threads handle (with or without @) for profile, user_posts, and followers actions. The profile and user_posts actions do not accept full profile URLs.
- Returns one object. Main fields: user_id, username, display_name, bio, follower_count, is_verified, is_private, url, avatar_url, external_url.
- Example request body:
{
"platform": "threads",
"action": "profile",
"params": {
"username": "zuck"
}
}
- Price: $0.56 per 1,000 requests; failed and empty results are not charged.
- For dozens or hundreds of targets, add "mode": "async" to the body: you get a job_id at once and poll GET https://api.everyinfra.com/api/v1/jobs/{job_id} for the result.
- On 422, fix the request using the suggested parameter names and allowed values in the error; on 429 or 503, wait for Retry-After and try again.
Before writing code, ask me which targets I need, how many, which fields, and what output format I want; then confirm the plan and the rough cost with me.Request parameters
#| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
Authorization | header | string | Yes | - | Bearer followed by your API key. Create it in the console; never put it in a URL or a code repository. |
platform | body | string | Yes | threads | Platform identifier, fixed value. |
action | body | string | Yes | profile | Capability identifier, fixed value. |
username | body.params | string | Yes | - | Specifies the Threads handle (with or without @) for profile, user_posts, and followers actions. The profile and user_posts actions do not accept full profile URLs. The followers action returns aggregate follower counts rather than a user member list. |
Code samples
#curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "threads",
"action": "profile",
"params": {
"username": "zuck"
}
}'OpenAPI definition (JSON)Samples read the key from the EVERYINFRA_API_KEY environment variable; copied code never contains your key.
Response example
#{ "id": "req_…", "platform": "threads", "action": "profile", "results": { "user_id": "•••", "username": "zuck", "display_name": "•••", "bio": "Mostly superintelligence and MMA takes", "follower_count": 5744623, "is_verified": true, "is_private": false, "url": "https://www.threads.net/@zuck", "avatar_url": "https://instagram.fbau6-1.fna.fbcdn.net/•••", "platform": "threads" }, "billing": { "charged": …, "charged_usd": …, "balance_after_usd": …, … }, "quota": { … }}
Response fields
#Business data is in results. The table lists the fields a record can contain; values the platform does not show are never made up.
| Field | Meaning |
|---|---|
user_id | User's unique ID on the platform. |
username | Username (@handle). |
display_name | Display name; can differ from username. |
bio | Profile bio written by the account; may contain line breaks and emoji. |
follower_count | Followers. null means not disclosed, not 0. |
is_verified | Whether the platform verified the account. null means it cannot be determined. |
is_private | Keeps the platform's own meaning |
url | Link to the record on the platform. |
avatar_url | Avatar image link. Some platforms return sized CDN links that can expire. |
platform | Source platform identifier, the same as platform in the request (for example xiaohongshu, tiktok). |
external_url | Keeps the platform's own meaning |
FAQ
#Can I pass a threads.net or threads.com profile link?
#No. Send only the handle, the part after the @ in a link such as threads.com/@zuck, so zuck or @zuck. This capability does not parse full profile URLs from either domain, and a display name does not identify the account either.
How do I tell verified and private accounts apart?
#is_verified is true for accounts Threads has verified; null means the check could not be made, which is different from false. is_private is true when the account keeps its posts private: the profile still comes back, but its posts are not public.
How do I read the account's posts?
#Pass the same handle to the Threads Posts by user capability, which, like this one, takes the handle rather than a profile link. For a single post you already have a link to, the Threads Post details capability takes the full post URL, shaped like threads.com/@<handle>/post/<code>.
Errors and billing
#- 401
- Missing or invalid key.
- 402
- Insufficient balance. Top up first.
- 422
- Invalid parameter name or value. Fix it using the suggestions in the error. No charge.
- 429
- Per-minute request limit reached. Wait for Retry-After, then try again.
- 503
- Could not complete. The held charge is returned to your balance. If the outcome is unknown, verify it before you retry.
- 200 empty
- No data. No charge.
Official references
#Used only to check objects and terms. They do not imply authorization or endorsement of EveryInfra by the platform.
- Official Meta Documentation: Threads Profiles, Follower Counts, and Access Constraints ↗
Meta official sources define `username`, display name, bio, and `follower_count`, noting that public profile discovery requires specific permissions, standard access is restricted to select official accounts, and public account/follower thresholds apply. Referenced here strictly to explain platform terminology, this does not imply that this API holds those permissions or matches official endpoint capabilities.
Checked 2026-09-04