apidirect-io Threads API

Search Threads posts and users, get full profile details with follower counts and bio links, and fetch any user's recent posts.

Operations 4

GET /v1/threads/posts Search Threads Posts #
GET /v1/threads/users Search Threads Users #
GET /v1/threads/user Threads User Profile #
GET /v1/threads/user/posts Threads User Posts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apidirect-io:apidirect-io-threads-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

apidirect-io-threads-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Apidirect Io Threads API
  version: 1.9.1
  contact:
    name: API Direct support
    url: https://apidirect.io
    email: support@apidirect.io
  termsOfService: https://apidirect.io/terms
  x-refined-note:
  - x-guidance differs across the merged source definitions and was not carried
  x-logo:
    url: https://apidirect.io/static/A.png
    altText: API Direct
  description: 'Operations tagged Threads across 2 of this provider''s published API definitions: apidirect-io-openapi.json, apidirect-io-x402-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://apidirect.io
  description: Production
- description: x402 (pay per request in USDC, no API key)
  url: https://x402.apidirect.io
tags:
- name: Threads
  description: Search Threads posts and users, get full profile details with follower counts and bio links, and fetch any user's recent posts.
paths:
  /v1/threads/posts:
    get:
      tags:
      - Threads
      operationId: searchThreads
      summary: Search Threads Posts
      description: 'Search for Threads posts by keyword. Returns post text, engagement metrics (likes, replies, reposts, quotes), author metadata, hashtags, mentions, and a direct link to each post. Set get_sentiment=true to add AI emotion analysis (+$0.001/request).


        **Price:** $0.006 per page. **Free tier:** 50 requests/month.'
      externalDocs:
        url: https://apidirect.io/docs/threads-posts
      parameters:
      - name: query
        in: query
        required: true
        description: Search keyword (max 500 characters)
        schema:
          type: string
          maxLength: 500
        example: technology
      - name: pages
        in: query
        required: false
        description: 'Number of pages to fetch, 1-200 (default: 1). The first page returns about 20 posts and later pages about 10; you are billed per page returned.'
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 1
        example: 2
      - name: get_sentiment
        in: query
        required: false
        description: Set to true to add AI emotion analysis to each result (+$0.001/request)
        schema:
          type: boolean
          default: false
      x-example-query:
        query: technology
        pages: 2
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchThreadsResponse'
              example:
                pages: 2
                count: 30
                posts:
                - title: '@mosseri on Threads'
                  url: https://www.threads.com/@mosseri/post/DGx1a2bcdef
                  date: '2026-06-20 14:12:05'
                  author: mosseri
                  source: Threads
                  domain: threads.com
                  snippet: We're rolling out a few new things on Threads this week.
                  likes: 8421
                  replies: 342
                  reposts: 517
                  quotes: 88
                  reshares: 40
                  author_name: Adam Mosseri
                  author_verified: true
                  is_reply: false
                  media_type: text
                  image_url: ''
                  video_url: ''
                  hashtags: []
                  mentions: []
                  carousel_media: []
                  link_preview: null
                  quoted_post: null
                  post_id: '3921002011550001234'
                  code: DGx1a2bcdef
                  ai_label:
                    detection_method: NONE
        '400':
          description: Bad request — missing or invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Free tier used up for this endpoint and no payment method on file (`payment_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Account blocked after a failed payment (`account_blocked`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded or too many concurrent requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The data source returned an error or could not be reached. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Service temporarily unavailable. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: The data source did not respond in time. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - ApiKeyAuth: []
    servers:
    - url: https://apidirect.io
      description: Production
  /v1/threads/users:
    get:
      tags:
      - Threads
      operationId: searchThreadsUsers
      summary: Search Threads Users
      description: 'Search for Threads users by keyword. Returns username, full name, user ID, verification status, privacy status, profile picture URL, and a direct profile link.


        **Price:** $0.006 per request. **Free tier:** 50 requests/month.'
      externalDocs:
        url: https://apidirect.io/docs/threads-users
      parameters:
      - name: query
        in: query
        required: true
        description: Search keyword (max 500 characters)
        schema:
          type: string
          maxLength: 500
        example: technology
      x-example-query:
        query: technology
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchThreadsUsersResponse'
              example:
                count: 24
                users:
                - username: natgeo
                  full_name: National Geographic
                  user_id: '787132'
                  is_verified: true
                  is_private: false
                  profile_pic_url: https://scontent.cdninstagram.com/v/t51.2885-19/natgeo.jpg
                  url: https://www.threads.com/@natgeo
        '400':
          description: Bad request — missing or invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Free tier used up for this endpoint and no payment method on file (`payment_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Account blocked after a failed payment (`account_blocked`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded or too many concurrent requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The data source returned an error or could not be reached. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Service temporarily unavailable. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: The data source did not respond in time. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - ApiKeyAuth: []
    servers:
    - url: https://apidirect.io
      description: Production
  /v1/threads/user:
    get:
      tags:
      - Threads
      operationId: threadsUserProfile
      summary: Threads User Profile
      description: 'Look up a single Threads user by username. Returns biography, follower count, verification status, privacy status, profile picture, bio links, and the topic tags shown on the profile.


        **Price:** $0.006 per request. **Free tier:** 50 requests/month.'
      externalDocs:
        url: https://apidirect.io/docs/threads-user
      parameters:
      - name: username
        in: query
        required: true
        description: Threads username, with or without leading @ (max 100 characters)
        schema:
          type: string
          maxLength: 100
        example: zuck
      x-example-query:
        username: zuck
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadsUserProfileResponse'
              example:
                user:
                  username: mosseri
                  full_name: Adam Mosseri
                  user_id: '1099735954'
                  biography: Head of Instagram and Threads.
                  follower_count: 1875432
                  is_verified: true
                  is_private: false
                  profile_pic_url: https://scontent.cdninstagram.com/v/t51.2885-19/mosseri.jpg
                  profile_pic_url_hd: https://scontent.cdninstagram.com/v/t51.2885-19/mosseri_640.jpg
                  bio_links:
                  - url: https://about.instagram.com/blog
                    title: Instagram Blog
                  profile_tags: []
                  url: https://www.threads.com/@mosseri
        '400':
          description: Bad request — missing username or value too long
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Free tier used up for this endpoint and no payment method on file (`payment_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Account blocked after a failed payment (`account_blocked`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Threads user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded or too many concurrent requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The data source returned an error or could not be reached. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Service temporarily unavailable. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: The data source did not respond in time. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - ApiKeyAuth: []
    servers:
    - url: https://apidirect.io
      description: Production
  /v1/threads/user/posts:
    get:
      tags:
      - Threads
      operationId: threadsUserPosts
      summary: Threads User Posts
      description: 'Get a single Threads user''s recent posts (their feed) by username. Returns post text, engagement metrics (likes, replies, reposts, quotes), author metadata, hashtags, mentions, and media details. Set get_sentiment=true to add AI emotion analysis (+$0.001/request).


        **Price:** $0.006 per page. **Free tier:** 50 requests/month.'
      externalDocs:
        url: https://apidirect.io/docs/threads-user-posts
      parameters:
      - name: username
        in: query
        required: true
        description: Threads username, with or without leading @ (max 100 characters)
        schema:
          type: string
          maxLength: 100
        example: mrbeast
      - name: pages
        in: query
        required: false
        description: 'Number of pages to fetch, 1-60 (default: 1). Each page returns up to about 35 posts, newest first; you are billed per page returned.'
        schema:
          type: integer
          minimum: 1
          maximum: 60
          default: 1
        example: 2
      - name: get_sentiment
        in: query
        required: false
        description: Set to true to add AI emotion analysis to each result (+$0.001/request)
        schema:
          type: boolean
          default: false
      x-example-query:
        username: mrbeast
        pages: 2
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThreadsUserPostsResponse'
              example:
                pages: 2
                count: 66
                posts:
                - title: '@natgeo on Threads'
                  url: https://www.threads.com/@natgeo/post/DGw9k2aQ1rT
                  date: '2026-06-19 17:40:11'
                  author: natgeo
                  source: Threads
                  domain: threads.com
                  snippet: A curious fox pauses in the first snow of the season.
                  likes: 2210
                  replies: 54
                  reposts: 133
                  quotes: 7
                  reshares: 12
                  author_name: National Geographic
                  author_verified: true
                  is_reply: false
                  is_pinned: false
                  media_type: image
                  image_url: https://scontent.cdninstagram.com/v/t51.82787-15/fox.jpg
                  video_url: ''
                  hashtags: []
                  mentions: []
                  carousel_media: []
                  link_preview: null
                  quoted_post: null
                  post_id: '3919887766554430021'
                  code: DGw9k2aQ1rT
                  ai_label:
                    detection_method: NONE
        '400':
          description: Bad request — missing username or value too long
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized — invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Free tier used up for this endpoint and no payment method on file (`payment_required`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Account blocked after a failed payment (`account_blocked`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Threads user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded or too many concurrent requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The data source returned an error or could not be reached. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Service temporarily unavailable. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '504':
          description: The data source did not respond in time. Please retry shortly.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - ApiKeyAuth: []
    servers:
    - url: https://apidirect.io
      description: Production
components:
  schemas:
    SearchThreadsResponse:
      type: object
      properties:
        pages:
          type:
          - number
          - 'null'
        count:
          type:
          - number
          - 'null'
        posts:
          type:
          - array
          - 'null'
          items:
            type:
            - object
            - 'null'
            properties:
              title:
                type:
                - string
                - 'null'
              url:
                type:
                - string
                - 'null'
              date:
                type:
                - string
                - 'null'
              author:
                type:
                - string
                - 'null'
              source:
                type:
                - string
                - 'null'
              domain:
                type:
                - string
                - 'null'
              snippet:
                type:
                - string
                - 'null'
              likes:
                type:
                - number
                - 'null'
              replies:
                type:
                - number
                - 'null'
              reposts:
                type:
                - number
                - 'null'
              quotes:
                type:
                - number
                - 'null'
              reshares:
                type:
                - number
                - 'null'
              author_name:
                type:
                - string
                - 'null'
              author_verified:
                type:
                - boolean
                - 'null'
              is_reply:
                type:
                - boolean
                - 'null'
              media_type:
                type:
                - string
                - 'null'
              image_url:
                type:
                - string
                - 'null'
              video_url:
                type:
                - string
                - 'null'
              hashtags:
                type:
                - array
                - 'null'
                items: {}
              mentions:
                type:
                - array
                - 'null'
                items: {}
              carousel_media:
                type:
                - array
                - 'null'
                items: {}
              link_preview: {}
              quoted_post: {}
              post_id:
                type:
                - string
                - 'null'
              code:
                type:
                - string
                - 'null'
              ai_label:
                type:
                - object
                - 'null'
                properties:
                  detection_method:
                    type:
                    - string
                    - 'null'
      description: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
    SearchThreadsUsersResponse:
      type: object
      properties:
        count:
          type:
          - number
          - 'null'
        users:
          type:
          - array
          - 'null'
          items:
            type:
            - object
            - 'null'
            properties:
              username:
                type:
                - string
                - 'null'
              full_name:
                type:
                - string
                - 'null'
              user_id:
                type:
                - string
                - 'null'
              is_verified:
                type:
                - boolean
                - 'null'
              is_private:
                type:
                - boolean
                - 'null'
              profile_pic_url:
                type:
                - string
                - 'null'
              url:
                type:
                - string
                - 'null'
      description: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
    Error:
      type: object
      required:
      - error
      - code
      properties:
        error:
          type: string
          description: Human-readable error message.
        code:
          type: string
          description: Machine-readable error code, such as `missing_parameter`, `invalid_parameter`, `missing_api_key`, `invalid_api_key`, `payment_required`, `account_blocked`, `not_found`, `concurrency_limit_exceeded`, `daily_limit_exceeded`, `monthly_limit_exceeded`, `upstream_rate_limit`, `upstream_error`, `upstream_timeout`, `service_unavailable`, `endpoint_suspended`, `payload_too_large` or `rate_limited`. New codes may be added.
      example:
        error: 'Missing required parameter: query'
        code: missing_parameter
    ThreadsUserProfileResponse:
      type: object
      properties:
        user:
          type:
          - object
          - 'null'
          properties:
            username:
              type:
              - string
              - 'null'
            full_name:
              type:
              - string
              - 'null'
            user_id:
              type:
              - string
              - 'null'
            biography:
              type:
              - string
              - 'null'
            follower_count:
              type:
              - number
              - 'null'
            is_verified:
              type:
              - boolean
              - 'null'
            is_private:
              type:
              - boolean
              - 'null'
            profile_pic_url:
              type:
              - string
              - 'null'
            profile_pic_url_hd:
              type:
              - string
              - 'null'
            bio_links:
              type:
              - array
              - 'null'
              items:
                type:
                - object
                - 'null'
                properties:
                  url:
                    type:
                    - string
                    - 'null'
                  title:
                    type:
                    - string
                    - 'null'
            profile_tags:
              type:
              - array
              - 'null'
              items: {}
            url:
              type:
              - string
              - 'null'
      description: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
    ThreadsUserPostsResponse:
      type: object
      properties:
        pages:
          type:
          - number
          - 'null'
        count:
          type:
          - number
          - 'null'
        posts:
          type:
          - array
          - 'null'
          items:
            type:
            - object
            - 'null'
            properties:
              title:
                type:
                - string
                - 'null'
              url:
                type:
                - string
                - 'null'
              date:
                type:
                - string
                - 'null'
              author:
                type:
                - string
                - 'null'
              source:
                type:
                - string
                - 'null'
              domain:
                type:
                - string
                - 'null'
              snippet:
                type:
                - string
                - 'null'
              likes:
                type:
                - number
                - 'null'
              replies:
                type:
                - number
                - 'null'
              reposts:
                type:
                - number
                - 'null'
              quotes:
                type:
                - number
                - 'null'
              reshares:
                type:
                - number
                - 'null'
              author_name:
                type:
                - string
                - 'null'
              author_verified:
                type:
                - boolean
                - 'null'
              is_reply:
                type:
                - boolean
                - 'null'
              is_pinned:
                type:
                - boolean
                - 'null'
              media_type:
                type:
                - string
                - 'null'
              image_url:
                type:
                - string
                - 'null'
              video_url:
                type:
                - string
                - 'null'
              hashtags:
                type:
                - array
                - 'null'
                items: {}
              mentions:
                type:
                - array
                - 'null'
                items: {}
              carousel_media:
                type:
                - array
                - 'null'
                items: {}
              link_preview: {}
              quoted_post: {}
              post_id:
                type:
                - string
                - 'null'
              code:
                type:
                - string
                - 'null'
              ai_label:
                type:
                - object
                - 'null'
                properties:
                  detection_method:
                    type:
                    - string
                    - 'null'
      description: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Your API key (starts with `ak_live_`), from https://apidirect.io/dashboard/keys.
externalDocs:
  description: API Direct documentation
  url: https://apidirect.io/docs
x-refined-from:
- apidirect-io-openapi.json
- apidirect-io-x402-openapi.json