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: 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