Threads hub

Threads profile posts API

List recent public Threads posts for a handle — captions, engagement, and media — in the shared Social Fetch response envelope.

GET /v1/threads/profiles/{handle}/posts

1 credit Failed requests are free

About this endpoint

GET /v1/threads/profiles/{handle}/posts takes the Threads username in the path (with or without @). Send x-api-key, then branch on data.lookupStatus before you write rows — found or not_found. On found, data.posts is the list for this call. Each post can include id, shortcode, public URL, caption, createdAt (ISO-8601), optional author snapshot, metrics (likes, replies, reposts, reshares, quotes when Threads exposes them), media (images, videos, carousel items), plus optional pinned and reply flags. Pass trim=true when you want a smaller body with fewer fields per post.

This route lists posts for a handle. It does not expose cursor pagination — call again later for a fresh snapshot, or use GET /v1/threads/posts when you already have a permalink. Keyword discovery is GET /v1/threads/search. The profile card alone is GET /v1/threads/profiles/{handle}. Bill from meta.creditsCharged.

Threads profile posts API FAQ

How do I list Threads posts for a profile via API?

Call GET /v1/threads/profiles/{handle}/posts with your Social Fetch API key (x-api-key) and the Threads username in the path. Read data.lookupStatus, then data.posts. See the API docs for parameters and examples.

How much does the Threads profile posts endpoint cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

Does Threads profile posts support cursor pagination?

No. This operation returns the posts available for the resolved handle in a single response. There is no cursor query param and no data.page object. For a later snapshot, call the same path again. For one known permalink, use GET /v1/threads/posts.

What fields are in each Threads profile post?

Items can include id, shortcode, public URL, caption, createdAt, optional author (handle, verified, avatar), metrics (likes, replies, reposts, reshares, quotes when present), media (image and video renditions, optional carousel), and optional pinned / reply flags when Threads exposes them.

What does the trim query parameter do?

Optional trim=true returns a smaller payload with fewer fields per post when available. Use it when you only need core text and counts and want less JSON per call.

What happens for missing handles or empty feeds?

lookupStatus of not_found means the handle did not resolve; posts is empty. found with an empty posts array means the handle resolved but no public posts came back on this call. Keep meta.requestId if you need support on a failed list call.

Profile posts vs single Threads post vs search?

Use this route to list posts for a username. Use GET /v1/threads/posts when you already have a post URL. Use GET /v1/threads/search to find posts by keyword. They are separate operations on the Threads hub.

Do I need Meta Threads API access to list a feed?

No. You authenticate to Social Fetch with an API key. The route reads publicly visible posts; it does not require Meta app review or act on behalf of a logged-in Threads user.