100 free credits on signup · no card required

X/Twitter Profile API

One handle in. Clean JSON out.

Give this endpoint an X (Twitter) handle and it returns that account's public profile as JSON: follower and following counts, post count, bio, join date, location, avatar and verification flag. No X developer account, no OAuth dance, no paid API tier. One GET to /v1/twitter/profile, 5 credits per lookup.

Credits 5 / lookup
Input ?handle=
Cache 12h
GET · BEARER
Request composing…
Cached 12 hours
cheap to re-poll
Works with your stack
cURL Python Node.js Zapier n8n Make MCP
One key · one credit balance · plain REST

The difference

Stop parsing markup. Start reading fields.

On the left, what a headless browser hands you. On the right, what the endpoint hands you.

Scraping it yourself raw HTML · every call
<article data-testid="tweet" class="css-175oi2r r-1adg3ll r-1ny4l3l"><div class="css-175oi2r r-18u37iz"><div dir="ltr" class="css-901oao r-1nao33i">Shipping notes: response times are down 40% after this week&#39;s cache work.</div></div><div role="group" aria-label="90211 views, 1211 likes, 204 reposts" class="css-175oi2r r-1kbdv8c"><div data-testid="like"><span class="css-1jxf684">1,211</span></div><div data-testid="retweet"><span>204</span></div></div><time datetime="2026-07-06T08:15:00.000Z">8h</time><script>window.__INITIAL_STATE__={"entities":{"tweets":{"entities":{"186112...
×Class names rotate; your selectors break weekly ×Headless browsers, proxies, blocks to babysit ×Counts arrive as strings, not numbers
One GET request 11 typed fields
{
"data": {
"platform": "twitter",
"handle": "XDevelopers",
"name": "Example Creator",
"bio": "Tutorials and behind-the-scenes. New video every Tuesday.",
"verified": true,
"metrics": {
"followers": 2450318,
"following": 132,
"posts": 842
}
},
"request_id": "req_01JZX4M8Q2TE9W"
}
Stable field names, documented nulls No proxies, no browser, no login session Counters are integers you can sort on

The payload

What comes back

{ data, meta?, request_id }
01 One object per handle

One object per handle, describing the account rather than any of its posts. Think of it as the header of a profile page turned into structured data: who they say they are, how many people follow them, how long the account has existed, and where they claim to be.

02 Public counts, slow cache class

The counters are the figures X shows publicly when the profile is loaded logged out. Follower counts on large accounts drift constantly and the platform is not always precise about them, so treat the number as a reading rather than an audited total. Because profile data changes slowly compared with post engagement, this endpoint sits in the slow cache class — repeat lookups of the same handle inside the window come back in milliseconds and still cost 5 credits.

03 Bio and location are self-reported

Everything here is self-reported except the counts. Bio, location and display name are free text the account owner typed. Location in particular is not geocoded and is frequently a joke, an emoji, or empty. Do not build address logic on it.

Field explorer Pick a key to see its type and the caveats.
number|null Nullable Per item
posts

Lifetime post count including replies and reposts, as X reports it. Deleted posts are not subtracted retroactively in any reliable way.

{
"handle": "XDevelopers",
"name": "Example Creator",
"followers": 2450318,
"following": 132,
"posts": 842,
"bio": "Tutorials and behind-the-scenes. New video every Tuesday.",
"verified": true,
"avatar": "…",
"url": "…",
"created_at": "…",
"location": "…"
}
Good fit

Reach for this when

  • Screening a list of handles before you spend money on deeper calls — pull the profile for each one, drop the accounts with no followers or a two-week-old join date, and only then fetch their posts.
  • Influencer and partner vetting, where account age, follower/following ratio and bio text together tell you more than the follower number alone.
  • Enriching a CRM or lead record that already stores an X handle, so a sales or research view shows audience size and bio without anyone opening a browser.
  • Tracking audience growth for a set of accounts you care about: snapshot the follower count on a daily schedule and store it with a timestamp.
  • Resolving a handle you found somewhere else — in a mention, a spreadsheet, a scraped byline — into a real account with a real bio.
Different job?

There's an endpoint for that

  • You want the account's actual posts. This endpoint returns zero post content — use the X User Tweets API, which returns up to `limit` of their recent posts in a single call.
  • You want engagement numbers on one specific post. That is the X Post Stats API, keyed by post URL.
  • You are looking for accounts rather than checking a known one. Start with the X Search API and search by keyword; profiles are a follow-up call once you have handles.
  • You need a professional or employment profile. X bios are not resumes — the LinkedIn Profile API is the right shape for job title, company and work history.

Pricing

Start free, pay for what comes back

One profile lookup is 5 credits — about 2.5¢ on the monthly plan. $5 covers roughly 200 handles, and calls that fail on a protected or missing account are never charged.

Estimate your bill
$15/ month
30 lookups/day × 5 credits × 365 days = 54,750 credits/yr, or $183/yr on the annual plan plus 43 top-up blocks Whichever plan is cheaper for that volume, divided by 12.
30
102,000
Credits / yr 54,750
Plan Annual $54/yr
Per lookup

Estimate only, on a full-year basis. 5 credits per returned lookup. Monthly: $5 per 1,000 credits with $4/1,000 top-ups. Annual: $54 per 12,000 credits with $3/1,000 top-ups. We show whichever plan is cheaper for your annual volume, divided by 12. Failed calls are never charged; cache hits cost the same as fresh calls.

Free trial
100 credits

On signup, no card. Your key is on screen immediately.

Get your free API key
Monthly $5/mo 1,000 credits. Top-ups $4 per extra 1,000.
Annual $54/yr 12,000 credits. Top-ups $3 per extra 1,000.

Entry price, side by side

Cheapest way to start

Verified July 2026 from each vendor's live pricing page
ScraperSocial
$5 / mo 1,000 credits · 100 free credits, no card
Supadata
$5 / mo 300 credits, annual commitment · 100 free/mo
SocialKit
$29 / mo 12,000 credits · 20 free credits
Dumpling AI
$40 / mo Billed annually · free tier size unpublished
ScrapeCreators
$47 pack 25,000 credits, no subscription · 100 free once

Credits are not equivalent units across vendors — each meters differently. Price your own workload on both before deciding on entry price alone. At high volume, several of these are cheaper per credit than we are.

Engineering notes

Docs you can build on

We document exactly how every endpoint behaves — nulls, caching, billing — so what you ship on day one is still running in month six. No surprises, no support tickets.

Failed calls are never charged Public data only, no login session Built for parallel traffic

X lets people rename themselves, and a freed-up handle can be claimed by someone else. This response is keyed on the handle, so a stored handle that used to point at one account can quietly start pointing at a different one. If you are tracking accounts over months, store `created_at` alongside the handle and treat a sudden change in join date as a signal that you are now looking at a different account.

For an account with a few hundred followers the number is exact. For one with millions it is a figure X computes and updates on its own schedule, and it can move up and down without anyone gaining or losing anything real. Sample on a fixed daily cadence if you want a growth curve, and ignore movements smaller than a fraction of a percent on large accounts.

We read public pages logged out, so a protected (private) account has no public profile body for us to read and a suspended or deleted one has no page at all. All three return an error rather than an object with nulls in it. Failed calls are not charged. There is no mode, flag or parameter that reaches private content.

Profile responses are cached in the slow class because bios and join dates barely move. A cached hit returns in milliseconds and sets `x-cache: hit`; it costs the same 5 credits as a fresh call. If you are running a daily follower-count snapshot and need the reading to be genuinely fresh, pass `fresh=true` to skip the cache.

A profile describes a person. If you store these responses, that is a processing activity under GDPR and similar regimes even though everything in it is public. Keep a retention period, keep it short, and be ready to delete on request. We do not disclose email addresses, phone numbers or anything else X keeps behind a login, and there is no version of this endpoint that does.

Questions

Frequently asked

Call /v1/twitter/profile with the handle and your API key. You get followers, following, post count, bio, join date and verification back as JSON. X's own API requires a developer account, an approved project and a paid tier for most useful access, and the free tier does not cover user lookups at all. This endpoint reads the public profile page instead, so there is nothing to apply for.

5 credits. Credits are $0.005 each on monthly billing and $0.0045 on annual, so a lookup is about 2.5 cents and $5 buys roughly 200 of them. Cached lookups cost the same as fresh ones. Calls that fail — suspended account, protected account, handle that does not exist — are not charged at all.

Send the bare handle: `nasa`, not `@nasa` and not https://x.com/nasa. We pass the value through to the profile lookup as given, so a stray @ or a full URL is the most common cause of a failed call on this endpoint. Handles are case-insensitive on X, so `NASA` and `nasa` reach the same account, and the `handle` field comes back in the casing X stores.

No. A protected account shows nothing publicly, and we only read what a logged-out browser can read, so the call returns an error rather than a stub object. The same applies to suspended and deleted accounts. This is a hard limit, not a plan restriction — there is no upgrade that unlocks private profiles.

Accurate for small accounts, approximate for large ones. X computes public follower counts on its own schedule and the figure for a big account can drift by hundreds without any real change in audience. Use it for scale and for trends measured over days, not for exact reconciliation. Snapshot on a fixed daily cadence so your intervals are even.

It means the account displays a verification badge, nothing more. X has attached that badge to both legacy verification and paid subscriptions, so a true value tells you the account pays for or was granted a badge, not that the person behind it was identity-checked. For vetting, `created_at` and the followers-to-following ratio are usually more informative than the badge.

One handle per call, run concurrently. Nothing in a lookup depends on any other lookup, so a few dozen in flight at once is normal. Deduplicate your handle list first — repeated lookups of the same handle hit the cache but still bill 5 credits each, so the saving is latency, not money.

Next

Pairs well with

Full X/Twitter API reference →
/v1/twitter/tweets
X/Twitter Tweets API Latest posts from an account on X with per-post metrics. 1 cr / tweet
/v1/twitter/search
X/Twitter Search API Keyword and advanced-search over public posts on X. 2 cr / result
/v1/instagram/channel-stats
Instagram Channel Stats API Follower counts, bio and profile metadata for an Instagram account. 3 cr / profile
/v1/linkedin/profile
LinkedIn Profile API Public profile data for a LinkedIn member: headline, positions, education. 10 cr / profile

More X/Twitter endpoints

/v1/twitter/transcript Full transcript of a video attached to a post on X. 7 credits / video /v1/twitter/summary Short AI summary of a video posted on X, built on its transcript. 9 credits / video /v1/twitter/stats Views, likes, reposts and replies for a single post on X. 1 credit / tweet /v1/twitter/tweets Latest posts from an account on X with per-post metrics. 1 credit / tweet /v1/twitter/search Keyword and advanced-search over public posts on X. 2 credits / result

Try the X/Twitter Profile endpoint free

100 trial credits on signup — no card, key on screen immediately.

1 Sign up free no card · 30 seconds
2 Copy your key sk_live_...
3 GET the endpoint /v1/twitter/profile
Get your free API key