# Threads API

> Threads returns public profiles, recent posts, and post replies through a workflow and API.

Threads returns public profile details from a username or profile link. List recent posts returns an account’s latest public posts from a username or profile link. Get post returns a public post and visible replies from a post link.

- Page: https://fous.com/workflows/threads
- Handle: `@threads`
- Category: [Social](https://fous.com/workflows/category/social)
- Source website: https://threads.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Threads.

## Methods

### Get post

Operation `get_post`, version 1. 1 credit per call.

Get a public Threads post, its engagement and replies visible without logging in. Threads may show only the first 10 replies to visitors even when a higher limit is requested; hidden counts are null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `post` | string | yes | `"https://www.threads.net/@threads/post/DdcPsEkH3NZ"` | Link to a public post on Threads, for example https://www.threads.com/@threads/post/Ddt8NiwkZXm. |
| `max_replies` | integer | no | `20` | Maximum replies to return, up to 20; for example 10. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "post"
  ],
  "properties": {
    "post": {
      "type": "string",
      "description": "Link to a public post on Threads, for example https://www.threads.com/@threads/post/Ddt8NiwkZXm.",
      "examples": [
        "https://www.threads.net/@threads/post/DdcPsEkH3NZ",
        "https://www.threads.com/@threads/post/Ddt8NiwkZXm",
        "https://www.threads.com/@threads/post/Ddt8B_UEf4N"
      ]
    },
    "max_replies": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 0,
      "description": "Maximum replies to return, up to 20; for example 10.",
      "examples": [
        20,
        10,
        2
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "post": "https://www.threads.net/@threads/post/DdcPsEkH3NZ",
      "max_replies": 20
    },
    {
      "post": "https://www.threads.com/@threads/post/Ddt8NiwkZXm",
      "max_replies": 10
    },
    {
      "post": "https://www.threads.com/@threads/post/Ddt8B_UEf4N",
      "max_replies": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `text` | string or null | `"Photographers who send the selects when they said they would"` |  |
| `likes` | integer or null | `483` |  |
| `quotes` | integer or null | `1` |  |
| `post_id` | string | `"3989132369199067993"` |  |
| `replies` | array |  |  |
| `replies[].text` | string or null | `"Here are some of my recent favorites 📸🧡😎"` |  |
| `replies[].likes` | integer or null | `0` |  |
| `replies[].post_link` | string | `"https://www.threads.com/@sophiatesch/post/DdcQQ2vkphd"` |  |
| `replies[].posted_at` | string or null | `"2026-09-18T20:05:58Z"` |  |
| `replies[].author_username` | string | `"sophiatesch"` |  |
| `reposts` | integer or null | `30` |  |
| `post_link` | string | `"https://www.threads.com/@threads/post/DdcPsEkH3NZ"` |  |
| `posted_at` | string or null | `"2026-09-18T20:00:57Z"` |  |
| `replies_count` | integer or null | `91` |  |
| `author_username` | string | `"threads"` |  |
| `author_display_name` | string or null | `"Threads"` |  |
| `media_thumbnail_links` | array |  |  |

**Example input**

```json
{
  "post": "https://www.threads.net/@threads/post/DdcPsEkH3NZ",
  "max_replies": 20
}
```

**Example output**

```json
{
  "text": "Photographers who send the selects when they said they would",
  "likes": 483,
  "quotes": 1,
  "post_id": "3989132369199067993",
  "replies": [
    {
      "text": "Here are some of my recent favorites 📸🧡😎",
      "likes": 0,
      "post_link": "https://www.threads.com/@sophiatesch/post/DdcQQ2vkphd",
      "posted_at": "2026-09-18T20:05:58Z",
      "author_username": "sophiatesch"
    },
    {
      "text": null,
      "likes": 0,
      "post_link": "https://www.threads.com/@korbskilabs/post/DdcQTTkEl80",
      "posted_at": "2026-09-18T20:06:18Z",
      "author_username": "korbskilabs"
    },
    {
      "text": "The Tired Photographer",
      "likes": 9,
      "post_link": "https://www.threads.com/@dr.ayrat/post/DdcQU8wiNZB",
      "posted_at": "2026-09-18T20:06:32Z",
      "author_username": "dr.ayrat"
    }
  ],
  "reposts": 30,
  "post_link": "https://www.threads.com/@threads/post/DdcPsEkH3NZ",
  "posted_at": "2026-09-18T20:00:57Z",
  "replies_count": 91,
  "author_username": "threads",
  "author_display_name": "Threads",
  "media_thumbnail_links": [
    "https://scontent-sea5-1.cdninstagram.com/v/t51.82787-15/815866628_17988992904102532_2006031957805872894_n.jpg?stp=cp6_dst-jpg_e35_tt6&_nc_cat=100&ig_cache_key=Mzk4OTEzMjM2OTE5OTA2Nzk5Mw%3D%3D.3-ccb7-5…"
  ]
}
```

### Get profile

Operation `get_profile`, version 1. 1 credit per call.

Get a public Threads profile by username or profile link, including bio, followers, verification, picture, and bio links. Private profiles are not returned.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `username` | string | yes | `"https://www.threads.com/@spotify"` | Threads username with or without @, or a Threads profile link, for example zuck or https://www.threads.com/@zuck. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "type": "string",
      "description": "Threads username with or without @, or a Threads profile link, for example zuck or https://www.threads.com/@zuck.",
      "examples": [
        "https://www.threads.com/@spotify",
        "zuck",
        "@threads"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "username": "https://www.threads.com/@spotify"
    },
    {
      "username": "zuck"
    },
    {
      "username": "@threads"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `bio` | string or null | `"reliving our fave iconic VMAs performances on Spotify ⏪"` | Profile biography. |
| `username` | string | `"spotify"` | Threads username without @. |
| `bio_links` | array |  | Links shown in the profile bio. |
| `followers` | integer or null | `3205109` | Follower count. |
| `is_verified` | boolean | `true` | Whether the profile has a verified badge. |
| `profile_url` | string | `"https://www.threads.com/@spotify"` | Link to the Threads profile. |
| `display_name` | string or null | `"Spotify"` | Name shown on the profile. |
| `threads_user_id` | string or null | `"63295417283"` | Threads user ID. |
| `profile_picture_url` | string or null | `"https://scontent-sea5-1.cdninstagram.com/v/t51.2885-19/358162502_1038284560473867_7645518712425998110_n.jpg?efg=eyJ2ZW5` | Profile picture link. |

**Example input**

```json
{
  "username": "https://www.threads.com/@spotify"
}
```

**Example output**

```json
{
  "bio": "reliving our fave iconic VMAs performances on Spotify ⏪",
  "username": "spotify",
  "bio_links": [
    "https://open.spotify.com/genre/0JQ5DAqbMKFJ6dHNHTv6Mx",
    "http://open.spotify.com",
    "https://open.spotify.com/genre/section0JQ5IMCbQBLyGf0Sj0c3IJ"
  ],
  "followers": 3205109,
  "is_verified": true,
  "profile_url": "https://www.threads.com/@spotify",
  "display_name": "Spotify",
  "threads_user_id": "63295417283",
  "profile_picture_url": "https://scontent-sea5-1.cdninstagram.com/v/t51.2885-19/358162502_1038284560473867_7645518712425998110_n.jpg?efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4zNzYuYzIifQ&_nc_ht=scontent-sea5-1.cdnins…"
}
```

### List recent posts

Operation `list_recent_posts`, version 1. 1 credit per call.

List an account’s latest public Threads posts, newest first, with text, engagement counts, thumbnails and links. Only posts shown without logging in are returned; requesting more may not yield more.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `username` | string | yes | `"@instagram"` | Threads username, with or without @, or a profile link. Example: zuck. |
| `max_results` | integer | no | `5` | Maximum posts to return, up to 25. Example: 10. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "username"
  ],
  "properties": {
    "username": {
      "type": "string",
      "description": "Threads username, with or without @, or a profile link. Example: zuck.",
      "examples": [
        "@instagram",
        "zuck",
        "https://www.threads.com/@zuck"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 10,
      "maximum": 25,
      "minimum": 1,
      "description": "Maximum posts to return, up to 25. Example: 10.",
      "x-fous-developer": true,
      "examples": [
        5,
        25,
        1
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "username": "@instagram",
      "max_results": 5
    },
    {
      "username": "zuck"
    },
    {
      "username": "https://www.threads.com/@zuck",
      "max_results": 25
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `posts` | array |  | Latest public posts, newest first. |
| `posts[].text` | string or null | `"straight out of a fairytale 🌷💜 \n\n@anthemis_sp"` | Text of the post, if available. |
| `posts[].likes` | integer or null | `179` | Number of likes, or null when hidden. |
| `posts[].quotes` | integer or null | `1` | Number of quotes, or null when hidden. |
| `posts[].post_id` | string | `"3996262280240886063"` | Threads post ID. |
| `posts[].replies` | integer or null | `17` | Number of replies, or null when hidden. |
| `posts[].reposts` | integer or null | `7` | Number of reposts, or null when hidden. |
| `posts[].post_link` | string | `"https://www.threads.com/@instagram/post/Dd1k17rDPEv"` | Public link to the post. |
| `posts[].posted_at` | string | `"2026-09-28T16:06:59Z"` | When the post was published, in UTC. |
| `posts[].thumbnail_links` | array |  | Image and video thumbnail links. |

**Example input**

```json
{
  "username": "@instagram",
  "max_results": 5
}
```

**Example output**

```json
{
  "posts": [
    {
      "text": "straight out of a fairytale 🌷💜 \n\n@anthemis_sp",
      "likes": 179,
      "quotes": 1,
      "post_id": "3996262280240886063",
      "replies": 17,
      "reposts": 7,
      "post_link": "https://www.threads.com/@instagram/post/Dd1k17rDPEv",
      "posted_at": "2026-09-28T16:06:59Z",
      "thumbnail_links": [
        "https://scontent-sea5-1.cdninstagram.com/v/t51.71878-15/829474524_1536301098182084_7924312361584415780_n.jpg?stp=dst-jpg_e15_tt6&_nc_cat=100&ig_cache_key=Mzk5NjI2MjI4MDI0MDg4NjA2Mw%3D%3D.3-ccb7-5&ccb=…"
      ]
    },
    {
      "text": "when the weather matches your mood in the best way possible",
      "likes": 232,
      "quotes": 0,
      "post_id": "3996177280590551786",
      "replies": 33,
      "reposts": 16,
      "post_link": "https://www.threads.com/@instagram/post/Dd1RhBlFhrq",
      "posted_at": "2026-09-28T13:17:56Z",
      "thumbnail_links": []
    },
    {
      "text": "@muse understood the assignment 💎",
      "likes": 424,
      "quotes": 1,
      "post_id": "3994878289474338257",
      "replies": 38,
      "reposts": 15,
      "post_link": "https://www.threads.com/@instagram/post/DdwqKN1Cb3R",
      "posted_at": "2026-09-26T18:17:04Z",
      "thumbnail_links": [
        "https://scontent-sea5-1.cdninstagram.com/v/t51.82787-15/825322201_17987111364118398_4470669708258499527_n.jpg?stp=dst-jpg_e35_tt6&_nc_cat=100&ig_cache_key=Mzk5NDg3ODI4OTQ3NDMzODI1Nw%3D%3D.3-ccb7-5&ccb…"
      ]
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@threads",
  "visibility": "public",
  "operation": "get_post",
  "version": 1,
  "input": {
    "post": "https://www.threads.net/@threads/post/DdcPsEkH3NZ",
    "max_replies": 20
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@threads\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_post\",\n  \"version\": 1,\n  \"input\": {\n    \"post\": \"https://www.threads.net/@threads/post/DdcPsEkH3NZ\",\n    \"max_replies\": 20\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@threads",
  "visibility": "public",
  "operation": "get_post",
  "version": 1,
  "input": {
    "post": "https://www.threads.net/@threads/post/DdcPsEkH3NZ",
    "max_replies": 20
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@threads","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Review public profile details before evaluating an account.
- Track recent public posts and their engagement counts.
- Collect visible replies to a public post.
- Compare follower counts across public profiles.
- Find post links and media thumbnails for review.

## FAQ

### Is Fous affiliated with Threads?

No. Fous is not affiliated with Threads. This workflow reads the public threads.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Threads account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from threads.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What details are in a public profile?

Get profile returns the bio, follower count, verification status, profile picture link, and other public profile details.

### What has an account posted recently?

List recent posts returns the latest public posts, newest first, with text, engagement counts, thumbnails, and links.

### What replies are visible on a post?

Get post returns a public post’s engagement and visible replies. Replies may be limited to those Threads shows visitors without logging in.

## Related

- [Instagram API](https://fous.com/workflows/instagram.md): Instagram provides public photos, videos, profiles, exact headline counts, bio links, and profile pictures, plus recent public posts and reels; some profiles or posts require login, and view counts may be unavailable.
- [Mastodon API](https://fous.com/workflows/mastodon.md): Mastodon provides public profiles and recent public posts, including hashtag posts, but excludes private and unlisted posts and may limit visibility to accounts known to mastodon.social or a selected server.
- [Bluesky API](https://fous.com/workflows/bluesky.md): Bluesky provides public profile details and latest posts, plus searches of up to 100 matching public posts; search results may lag behind new posts.
- [X API](https://fous.com/workflows/x.md): X returns public profile details and public posts with author, media, and engagement; deleted, protected, or unavailable posts cannot be retrieved.
- [TikTok API](https://fous.com/workflows/tiktok.md): TikTok returns public profiles and totals, recent pinned-first videos, and public video details and engagement; private content unavailable, and feeds may be incomplete or empty.
- [Reddit API](https://fous.com/workflows/reddit.md): Reddit returns searchable public posts, community feeds/details, user profiles and recent activity, posts with up to 200 comments; unavailable content limits results; Top defaults weekly.
- [Telegram API](https://fous.com/workflows/telegram.md): Telegram provides public channel details and the latest posts visible in public previews, with media and view totals that may be rounded or approximate.
- [Medium API](https://fous.com/workflows/medium.md): Medium returns public writer, publication, and topic articles, including newest posts and weekly popular picks, plus readable article text; member-only stories remain limited to visible previews.
- [All Social workflows](https://fous.com/workflows/category/social)
