MindCase
Kritish Puri

Getting Twitter/X Data Without Hitting API Tier Limits

X's own API gates real search and volume behind paid tiers. Here's how to pull tweets and profiles without one.

twitterproduct
Getting Twitter/X data without hitting API tier limits

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.

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 returned

The 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 returned

Pass 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?

EndpointInputPriceBest for
Twitter/X TweetsHandle, tweet URL, or search query$0.00025 / tweetReading a timeline or a search-operator query
Twitter/X ProfilesHandles/URLs, or a keyword search$0.0005 / profileVetting 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.