Better Fetch

X/Twitter Search

Extract public X/Twitter profiles, visible posts, Communities, and speech transcripts from public post videos.

Socialv0.4.0~2 credits/runSource on GitHub

Workspace

Configure

Inputs stay here while results become exportable artifacts.

Start from an example

Public profile, visible profile posts, one post, Community details, Community posts, or a public post-video transcript. Inferred as post when post_url is supplied.

X/Twitter handle, with or without @. Use handle or profile_url.

Optional spoken-language hint for transcript mode; omit for detection.

Public x.com or twitter.com post URL for post or transcript mode.

Maximum visible profile posts to return.

Public X/Twitter profile URL. Use handle or profile_url.

Public x.com or twitter.com Community URL.

Sign in and run
~2 base credits/run10 runs/minute

Results

Preview, inspect, copy, or export the complete output.

Your result will become an artifact

Run the tool to inspect structured rows, raw JSON, execution details, and downloadable JSON, CSV, and Markdown files.

biomodecounttweetavatarhandletweetsuser_id

Overview

X/Twitter Search reads the structured data in X's logged-out public pages. Provide a handle for profile metadata or visible profile posts, or a post URL for one post, and receive normalized account, text, engagement, and media fields without private cookies or API keys.

Last validated: Jul 15, 2026

Input

mode"profile" | "user_posts" | "post" | "community" | "community_posts" | "transcript"

Public profile, visible profile posts, one post, Community details, Community posts, or a public post-video transcript. Inferred as post when post_url is supplied.

handlestring

X/Twitter handle, with or without @. Use handle or profile_url.

languagestring

Optional spoken-language hint for transcript mode; omit for detection.

post_urlstring (uri)

Public x.com or twitter.com post URL for post or transcript mode.

max_resultsintegerdefault: 10

Maximum visible profile posts to return.

profile_urlstring (uri)

Public X/Twitter profile URL. Use handle or profile_url.

community_urlstring (uri)

Public x.com or twitter.com Community URL.

Output

biostring

Profile bio text

modestringrequired

Resolved operation mode

countintegerrequired

Number of profiles or posts returned

tweetobject

One normalized public X post

tweet.idstring

X post id

tweet.urlstring

Canonical public post URL

tweet.textstring

Visible post text

tweet.author_idstring

Author numeric user id

tweet.created_atstring

ISO post creation timestamp

tweet.like_countinteger

Like count

tweet.media_urlsstring

Newline-separated public media URLs

tweet.view_countinteger

View count when visible

tweet.author_namestring

Author display name

tweet.quote_countinteger

Quote count

tweet.reply_countinteger

Reply count

tweet.author_avatarstring

Author avatar URL

tweet.author_handlestring

Author handle

tweet.retweet_countinteger

Repost count

avatarstring

Visible profile image URL

handlestring

X/Twitter handle without @

tweetsobject[]

Visible public posts from an X profile page

user_idstring

X/Twitter numeric user id

communityobject

Normalized public X Community details

community.idstring

Community id

community.urlstring

Canonical public Community URL

community.namestring

Community name

community.created_atstring

Community creation timestamp

community.post_countinteger

Visible discussion count when exposed

community.descriptionstring

Community description

community.join_policystring

Public join policy

community.banner_imagestring

Community banner image URL

community.member_countinteger

Visible member count

community.creator_handlestring

Community creator handle

joined_atstring

ISO timestamp when X exposes profile creation time

post_countinteger

Visible post/tweet count

source_urlstringrequired

Public X page fetched

transcriptobject

Speech transcript generated from the highest-quality public MP4 rendition.

transcript.textstring

Normalized spoken text.

transcript.languagestring

Detected or requested language code.

transcript.duration_secondsnumber

Media duration in seconds.

transcript.language_probabilitynumber

Language-detection confidence when available.

profile_urlstring

Fetched public X/Twitter profile URL

banner_imagestring

Visible profile banner image URL

display_namestring

Visible display name

joined_labelstring

Human joined date label from public meta tags

follower_countinteger

Visible follower count

following_countinteger

Visible following count

protected_accountboolean

Whether X marks the account as protected when visible

transcript_segmentsobject[]

Timed transcript segments.

Examples

openai-profile

{
  "handle": "openai"
}

visible-profile-posts

{
  "mode": "user_posts",
  "handle": "levelsio",
  "max_results": 10
}

public-post

{
  "mode": "post",
  "post_url": "https://x.com/jack/status/20"
}

public-community

{
  "mode": "community",
  "community_url": "https://x.com/i/communities/1926186499399139650"
}

public-community-posts

{
  "mode": "community_posts",
  "max_results": 10,
  "community_url": "https://x.com/i/communities/1926186499399139650"
}

public-video-transcript

{
  "mode": "transcript",
  "language": "en",
  "post_url": "https://x.com/WarnerBrosUK/status/1768322581868744740"
}

Use cases

Social account research

Collect public profile context for brands, founders, creators, journalists, competitors, or communities before deeper monitoring workflows run.

Lead qualification

Give an agent a structured profile snapshot with bio, public counts, avatar, banner image, and canonical URL for enrichment or routing.

Profile monitoring

Track public follower, following, and post counts over time for accounts that matter to a market, product, or campaign.

FAQ

Does X/Twitter Search require an X account?

No. The tool reads structured data visible in logged-out public X pages and does not use private cookies, passwords, bearer tokens, or exported sessions.

Does it return a user's latest chronological timeline?

It returns posts visible on the logged-out public profile, which X may rank rather than expose chronologically. It does not claim private or exhaustive timeline access.

Why can fields be missing?

The tool only returns fields present in X's public profile response. Protected, suspended, removed, or region-limited profile data is not bypassed or guessed.

Use it anywhere

MCP (Claude, ChatGPT, Codex)

# After connecting https://betterfetch.co/api/mcp, ask your AI to:
1. Call search_tools for "X/Twitter Search"
2. Call run_tool with:
   name: "twitter_search"
   input: {"handle":"openai"}

REST

curl -sS -X POST "https://betterfetch.co/api/tools/twitter_search/run" \
  -H "Authorization: Bearer bf_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"input": {"handle":"openai"}}'

Run locally

git clone https://github.com/better-fetch/tools/tree/main/tools/twitter-search && cd twitter-search && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"handle":"openai"}'