X's official API splits access into paid tiers, and the useful parts — full-archive search, meaningful volume, anything beyond a trickle of recent posts — sit behind the higher ones. A team that just wants to know what people are saying about a launch or a competitor doesn't need a developer account and a monthly API bill to find out.
If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.
Why does X's own API get in the way here?
The free tier caps you at a low monthly post limit and blocks search entirely. Paid tiers unlock search and higher volume, but the entry-level paid plan still starts in the hundreds of dollars a month, priced for building a product on top of X, not for a one-off pull of what's being said about a topic this week. None of that maps well to "check what people thought of a launch" or "pull a list of accounts talking about a competitor" — a task that should cost a few dollars, not a subscription.
How do you pull tweets from a handle or a search?
Twitter/X Tweets takes either a handle, a single tweet URL, or a search query, and returns the same full record either way.
curl -X POST "https://api.mindcase.co/v1/data/twitter/tweets/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"query": "from:rivalbrand min_retweets:50 since:2026-10-01",
"maxResults": 100
}
}'
# $0.00025 per tweet returnedThe query parameter takes real X search operators — from:, min_retweets:,
since:, and the rest — so you can narrow to exactly the posts worth
reading instead of a raw firehose. Say a competitor just shipped a feature
and you want to see the reaction: a query like the one above catches posts
about them that already picked up traction, not every stray mention. Swap
query for a bare handle in inputs and you get that account's own
timeline instead, retweets included. Each row comes back with 35 fields —
full text, engagement counts, quoted and retweeted content, hashtags,
mentions, and any linked media — so you're not making a second call just to
find out how many likes a post got.
How do you check who's behind the accounts posting?
A list of tweets tells you what's being said. Twitter/X Profiles tells you who's saying it — useful for filtering out bot accounts and low- follower noise before you read further, or for finding real people to follow up with.
curl -X POST "https://api.mindcase.co/v1/data/twitter/profiles/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": {
"inputs": ["jane_pmleader", "growth_marcus"],
"maxResults": 0
}
}'
# $0.0005 per profile returnedPass a list of handles you've pulled from the tweets above, and each comes
back with follower/following counts, bio, verification status, and account
age — 22 fields in total. You can also skip the handle list entirely and
pass searchTerms instead, which runs a real account search (e.g. "SaaS
growth marketer") rather than requiring you to already know who you're
looking for.
How do you turn tweets and profiles into a shortlist worth acting on?
A search query on its own returns everyone who happened to use the right
words, not everyone worth following up with. The two calls above are
designed to chain: pull the tweets, collect the author handles from the
rows that matched, then run those handles through Profiles in one batch.
From there, filtering is just reading fields you already have. followers
and blueVerified separate accounts with real reach from noise. bio
catches role-relevant language a broad search query would've missed on its
own — someone who mentions "growth" or "product" in their bio, reacting to
a competitor's launch, is a different lead than an anonymous account doing
the same. None of this needs a second API: it's the same 22 fields from
the call above, read with intent instead of taken as a flat list.
What can't you get from Mindcase?
Two cases.
Anything behind a login. Protected accounts, DMs, and anything gated by an authenticated session are outside what a public-data API returns — that's true of any vendor pulling public X data, not a Mindcase-specific gap.
A full historical archive in one call. Each run reads what's live on
X right now; there's no separate archive index to page through beyond what
maxResults and your search window return. For deep historical research
spanning years, that's a different kind of product than a live-data API.
Which endpoint should you use for which job?
| Endpoint | Input | Price | Best for |
|---|---|---|---|
| Twitter/X Tweets | Handle, tweet URL, or search query | $0.00025 / tweet | Reading a timeline or a search-operator query |
| Twitter/X Profiles | Handles/URLs, or a keyword search | $0.0005 / profile | Vetting who's behind the accounts posting |
FAQ
No. Requests run against public tweet and profile data — no X login, developer account, or API tier required on your end.
Yes. Pass a search query with real X search operators to the Tweets endpoint, or a topic phrase to searchTerms on the Profiles endpoint to find accounts rather than posts.
$0.00025 per tweet returned and $0.0005 per profile returned. There's no separate search fee on either endpoint.
Live on every run. Each request reads the current state of the timeline, search, or profile at the moment you call it, not a cached snapshot.
