Threads API

Also known asmeta threadsthreads.netthreads.com

4 endpoints read Threads: posts, users. From $0.0020 a call. No Threads login and no cookie; a failed call is free.

Endpoints4 endpointsin 2 groups, one response shape
PriceFrom $0.0020per call. Failed calls are free
When an upstream failsRetried for youChecked every day with real calls · 4 days on record
DataFetched liveat the moment of the call

One call, as it came back

A recorded call, fields already tidied up: ready for an AI or a spreadsheet.
Recorded
GET/v1/threads/posts/search$0.0020
FieldValue
typeimage
published_at2025-03-07 01:13 UTC
author.verifiedtrue
metrics.likes43,152
metrics.comments3,630
metrics.shares1,775
metrics.reposts3,369

The first 7 rows of a response recorded 2026-10-12 19:14 UTC.

Run it in the Playground · $0.0020
Recorded response
{
  "code": "ok",
  "request_id": "e29e0cba-d1da-4448-a7fa-8bee6608fc4e",
  "data": {
    "items": [
      {
        "id": "DAFGOBWKcB_",
        "url": "https://www.threads.com/@fieldnotes_studio/post/DAFGOBWKcB_",
        "type": "image",
        "text": "Everything I wish I knew about nasa before starting.",
        "published_at": "2025-03-07T01:13:54.000Z",
        "author": {
          "id": "56049947906",
          "username": "fieldnotes_studio",
          "name": "Field Notes Studio",
          "avatar_url": "https://scontent.cdninstagram.com/v/t51.2885-19/492990253_10899382458156062_n.jpg",
          "verified": true
        },
        "metrics": {
          "likes": 43152,
          "comments": 3630,
          "shares": 1775,
          "reposts": 3369
        },
        "images": [
          "https://scontent.cdninstagram.com/v/t51.29350-15/482950892_19970165314554455_n.jpg"
        ],
        "hashtags": [],
        "is_pinned": null
      },
      // … 18 more
    ]
  },
  "page": {
    "next_cursor": null,
    "cursor_expires_at": null,
    "has_more": false,
    "returned": 19
  },
  "warnings": [],
  "meta": {
    "capability": "threads.posts.search",
    "result_status": "complete",
    "fetched_at": "2026-10-12T19:14:46.000Z",
    "cached": false,
    "replayed": false,
    "unavailable": {
      "title": "platform",
      "lang": "capability",
      "author.followers": "capability",
      "metrics.favorites": "platform",
      "metrics.views": "capability",
      "mentions": "capability",
      "post_id": "capability",
      "parent_id": "capability",
      "root_id": "capability"
    },
    "billing": {
      "amount": "0.002",
      "currency": "USD",
      "balance_after": "9.998"
    }
  }
}

From a response recorded 2026-10-12 19:14 UTC. Names, text and IDs are examples, and so are the links: none is the recorded one (the page shows no one's personal data); the figures are as recorded. Long lists are cut. The request ID, cursor and balance are made up.

What you can get

Each row is an endpoint: what it returns and what one call costs.

EndpointPathReturnsPrice
Posts2
Threads post searchGET/v1/threads/posts/searchPost list$0.0020
Threads post detailGET/v1/threads/posts/getPost$0.0020
Users2
Threads user profileGET/v1/threads/users/getAccount$0.0020
Threads user postsGET/v1/threads/users/posts/listPost list$0.0020
Prices are the prices in force. A call that fails, or whose result is uncertain, costs nothing.Threads API pricing →Threads data in your AI →See live status →

What people build with it

Ready-made tasks your AI can run on Threads data. Each is a few calls under a spending cap.

Ask about Threads right inside Claude or Cursor

Add the DataXAPI MCP server and the AI finds the Threads endpoint it needs and calls it; answers link back to the source. You pay for the calls it makes.

Threads MCP setup →
https://api.dataxapi.com/mcp

Start in three steps

The call shown here is Threads post search. Every other Threads endpoint is called the same way and answers in the same envelope.

Get a key

Sign in with an emailed code or Google. Free trial, no card needed.

Call it, or let your AI call it

One GET from your code. Or paste this prompt into your agent with your key in it: it sets itself up, then finds and calls these endpoints by itself.

Read https://dataxapi.com/agents.md and set up DataXAPI in this agent. My API key is dx_live_…; use it for every DataXAPI call.

Sign in to copy it with your key

Read the same shape every time

Items are in data.items (one object in data.item), the next page in page.next_cursor, the charge in meta.billing.amount. A failed call is not charged.

Read the quickstart →
curl -G "https://api.dataxapi.com/v1/threads/posts/search" \
  --data-urlencode "query=nasa" \
  -H "Authorization: Bearer $DATAXAPI_API_KEY"
from dataxapi import DataXAPI

dx = DataXAPI()  # reads DATAXAPI_API_KEY
result = dx.threads.posts.search(query="nasa")
print(result["data"]["items"])
import { DataXAPI } from "@dataxapi/sdk";

const dx = new DataXAPI(); // reads DATAXAPI_API_KEY
const result = await dx.threads.posts.search({ query: "nasa" });
console.log(result.data.items);
dataxapi call threads.posts.search query=nasa
{
  "mcpServers": {
    "dataxapi": {
      "type": "http",
      "url": "https://api.dataxapi.com/mcp",
      "headers": {
        "Authorization": "Bearer ${DATAXAPI_API_KEY}"
      }
    }
  }
}

Add this to your MCP client, then ask your agent to call threads.posts.search.

Edge cases

What the Threads endpoints do at their edges, and what to check when a call does not return what you expected.

Page sizes
A list returns 15 to 30 items a page, depending on the endpoint. Each list is one page: there is no next page to ask for.
Fields it cannot give
4 of the 4 endpoints cannot fill every field of the object they return. Each endpoint's page lists which, and every answer repeats them in meta.unavailable: a missing field is never a silent zero.
The post code
A post is named by the last segment of its link: threads.com/@handle/post/<code> or threads.com/t/<code>.
One page only
Search and an account's posts each return one page: the platform shows no more to someone not signed in.
Dates go by the UTC day
since and until filter by the UTC date; the time of day is ignored.
Missing and not public read the same
A post or account that does not exist and one that is not public get the same answer: not found, not charged.
No saves; few views
Posts come without a save count, and search results and an account's posts without a view count.

Questions about the Threads API

Short answers. The details are on each endpoint's page.

How is the Threads API priced?

Per call, no subscription. All 4 endpoints cost $0.0020 a call. You are charged when data comes back; a failed call costs nothing.

Do I need a Threads account or a cookie?

No. One DataXAPI key is all you hold: no Threads login, no cookie, no device to keep alive. The endpoints return publicly visible data only.

Is the data live?

A call fetches from Threads at that moment, and meta.fetched_at says when. A result is kept for 24 hours, so a retry with the same Idempotency-Key is not charged again.

Is an empty result charged?

A list that comes back empty is charged its price: the search was run. Reading one object that does not exist answers not_found and is free.

What happens when Threads changes something?

A call that fails is not charged, whatever the reason. An endpoint that is paused answers capability_paused, also free, and GET /v1/catalog/status says what is up right now.

Related

Call Threads with one key.

Free trial on sign-up: up to 50 calls at $0.0020. No card. No Threads login, no cookie, no subscription. A failed call is free.

Start free