X/Twitter Search
Extract public X/Twitter profile metadata from a handle or profile URL, including display name, bio, user id, joined date, avatar, banner image, follower count, following count, and post count.
Overview
X/Twitter Search is the marketplace entry point for public X data in Better Fetch. Version 0.1 focuses on the reliable public profile surface: provide a handle or profile URL and the tool returns normalized account metadata from X's public JSON-LD and meta tags without requiring account cookies, passwords, or private API keys.
Last validated: Jul 3, 2026
Playground
Input
handlestringX/Twitter handle, with or without @. Use handle or profile_url.
profile_urlstring (uri)Public X/Twitter profile URL. Use handle or profile_url.
Output
biostringProfile bio text
avatarstringVisible profile image URL
handlestringrequiredX/Twitter handle without @
user_idstringX/Twitter numeric user id
joined_atstringISO timestamp when X exposes profile creation time
post_countintegerVisible post/tweet count
profile_urlstringrequiredFetched public X/Twitter profile URL
banner_imagestringVisible profile banner image URL
display_namestringrequiredVisible display name
joined_labelstringHuman joined date label from public meta tags
follower_countintegerVisible follower count
following_countintegerVisible following count
protected_accountbooleanWhether X marks the account as protected when visible
Examples
openai-profile
{
"handle": "openai"
}Use cases
FAQ
Does X/Twitter Search require an X account?
No. Version 0.1 reads public profile metadata visible in the logged-out X profile page and does not use private cookies, passwords, bearer tokens, or exported sessions.
Does this version search tweets?
No. The tool name is reserved for the broader marketplace benchmark, but version 0.1 only returns public profile metadata. Tweet search, latest posts, replies, and timeline pagination remain future validated slices.
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, Cursor, any client)
# Add the Better Fetch MCP connector (or paste the URL into # Claude → Settings → Connectors → Add custom connector): claude mcp add --transport http better-fetch https://betterfetch.co/api/mcp \ --header "Authorization: Bearer bf_your_key_here" # Then ask for the tool by name: twitter_search
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/twitter-search && cd twitter-search && npm i
BETTER_FETCH_API_KEY=bf_your_key_here npx bf-tool run --input '{"handle":"openai"}'