Skip to content

SEARCH

The Twitter Search API at $0.04 per 1,000 Tweets

Updated July 2026

How do you search Twitter (X) with an API?

TwitterAPIs ships a Twitter/X search API that hits the live firehose, takes the full advanced-search operator set, and returns clean JSON for $0.04 per 1,000 tweets. Filter by handle, keyword, date window, language, or a minimum engagement bar, all in real time, with no developer account and no throttles.

We bill each search call at $0.0008 (source: our published pricing), and one call returns about 20 tweets, so a full 1,000-tweet pull lands near $0.04.

Why reach for a Twitter search API

Typing a query into the X web app is fine for a one-off. The trouble starts the moment search has to live inside a product, a dashboard, an alert pipeline, or an AI agent, where you need it as a callable endpoint. The official X API does ship search, and it is the sanctioned channel, yet the price and the gatekeeping shut a lot of teams out:

  • Price plus a standing monthly floor. Sanctioned search reads land around $5 per 1,000 inside a paid tier, so even a light monitoring job owes a recurring monthly minimum before a single tweet comes back.
  • Sign-off and tier ceilings. First you request a developer account and wait on review, then you meet hard read ceilings and a short lookback on the lower tiers. The throttle decides your ceiling, not your code.
  • Roll your own and watch it crack. Free libraries that scrape X internals collect IP bans and snap the next time the site shifts, so you swap a monthly invoice for proxy churn and endless patching.

TwitterAPIs sits in the managed middle. One Bearer key, one documented search endpoint, structured JSON in return, and $0.04 per 1,000 tweets with no monthly floor and one flat 600 req/min ceiling. You send a query, matching tweets come back, and none of the plumbing underneath is yours to babysit.

Inside the search endpoint

Everything routes through a single endpoint, GET /twitter/tweet/advanced_search. Put your query in the query parameter, set a product ranking, and step through pages using cursor. A call costs $0.0008 and brings back about 20 tweets.

ParameterRequiredPurpose
queryRequiredYour search string. Takes every operator the X advanced-search box understands, such as from:elonmusk min_faves:500 since:2026-01-01.
productOptionalChoose Latest for a newest-first live stream, or Top for the highest-engagement matches. Falls back to Latest when you leave it unset.
cursorOptionalPaging marker handed back on every response. Send it on the next request to walk forward until it comes back empty.

One request, matching tweets

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/tweet/advanced_search?query=from:elonmusk&product=Latest"

What comes back is structured JSON plus a cursor for the next page, so there is no markup to scrape and no proxy pool to keep rotating. See the advanced search endpoint docs.

Operators you can hand the query parameter

OperatorMatchesExample
from:usernamePosts authored by a single handlefrom:elonmusk
to:usernameReplies aimed at a given handleto:nasa
filter:verifiedRestricts results to verified authorsai agents filter:verified
min_faves:NPosts holding N or more likessolana min_faves:1000
min_retweets:NPosts holding N or more repostslaunch min_retweets:50
since: / until:Bounds a date range (YYYY-MM-DD)nvda since:2026-01-01 until:2026-03-01
lang:xxPosts written in a single languagemundial lang:es
geocode:lat,long,rPosts within a radius of a coordinateprotest geocode:40.7,-74,10km

Stack several operators into the same query, for instance from:elonmusk min_faves:500 since:2026-01-01. The Twitter advanced search operators guide covers the full set, combination recipes, and the corner cases. For the date operators on their own, including why an end bound excludes its own day, see how to search tweets by date.

The product parameter: Latest vs Top

productReturnsBest forFreshness
LatestNewest-first, reverse chronologicalAlerting, live dashboards, streaming ingestionSeconds-fresh, straight off the timeline
TopHighest-engagement matches firstDigests, highlight pulls, sentiment rollupsRecent set, weighted by likes plus reposts

Skip the parameter entirely and the endpoint assumes Latest. Reach for Top when the most-engaged tweets for a query matter more than the freshest ones.

Real-world query templates

Operators are only useful once you see them combined. These are queries that answer a question a team actually has, written to be pasted into the query parameter and edited. Each one is a single call at $0.0008, and each pages with the cursor until it comes back empty.

What you are trying to findQueryWhy it is shaped this way
Complaints about a product, excluding your own posts"acme" (slow OR broken OR bug) -from:acme -is:retweet lang:enExcluding retweets stops one viral complaint from filling the whole page, and excluding your own handle keeps support replies out of the sample.
Buying intent for a category("looking for" OR "any recommendations" OR "alternatives to") crm -is:retweetPhrase quoting matters here. Without quotes the words match separately and the result set fills with noise.
Launch-day reaction to a specific linkurl:yourdomain.com -is:retweet since:2026-08-01The url operator matches the expanded link, so it catches shortened URLs that resolve to your domain.
What a competitor's customers say to themto:competitorhandle -is:retweet lang:enReplies to an account are usually franker than posts about it, which makes this the highest-signal competitor query there is.
Posts that got real traction, not just postedtopic min_faves:50 -is:retweetAn engagement floor turns a firehose into a shortlist, and cuts the pages you pay for at the same time.
Media-only results for a campaign hashtag#yourcampaign filter:images -is:retweetPair this with the Photos product value when you want ranking to favour media rather than recency.
Local conversation without a geo API(hiring OR "we are hiring") ("san francisco" OR sf) -is:retweetPlace names in the text outperform geotags in practice, because very few posts carry coordinates at all.
A clean training or analysis corpuskeyword lang:en -is:retweet -is:reply filter:safeDropping retweets and replies removes most near-duplicates before they reach your storage bill.

Two habits keep these cheap. Put the narrowest term first so the page you pay for is dense rather than half-relevant, and add an engagement floor whenever you are looking for signal rather than volume. Every call bills the same $0.0008 whether it returns twenty results or three, so a tighter query is a cheaper corpus.

The official X API: pay-per-use rates

X moved to consumption billing in February 2026, so the comparison is now rate against rate rather than plan against plan. Post reads bill at $0.005 each and user reads at $0.010, which puts a thousand tweets at roughly $5 before any profile lookups, against $0.04 here. Writes bill separately, at $0.015 a post and $0.20 when the post carries a URL. The ceiling matters as much as the rate: pay-per-use caps post reads at 3 million a month, and the only route past it is an Enterprise contract with no published price and a procurement cycle attached. There is still a free tier in name, but it is write-centric with roughly 100 reads a month, which is not enough to collect anything. Full workings and every scenario sit on the Twitter API pricing page.

The legacy Basic and Pro tiers

Anyone who priced the X API before 2026 is remembering two plans that no longer work the way they did. Basic ran at $200 a month for 50,000 posts and 15,000 reads; Pro ran at $5,000 a month for 300,000 posts, a million reads, full-archive search and the filtered stream. Both stopped taking new signups at the February 2026 cutover, and Basic went further: X deprecated it outright, monthly and annual alike, and moved remaining subscribers onto pay-per-use from 1 June 2026 at the end of their billing cycle. So being grandfathered in is not the situation any more, and a bill that used to be a fixed $200 is now whatever the call volume prices out at. Pro is a narrower case, closed to new signups, and X has not said publicly whether it faces the same migration, so treat its future as open rather than settled. Search here has no tiers to age out of: one flat rate per call, the same on your first request and your millionth.

How TwitterAPIs search stacks up against the alternatives

OptionPriceAuthRate limitsReal-time
TwitterAPIs$0.0008 a call, ~20 tweets, so $0.04 / 1,000Bearer token, sign up in 30s600 req/min per keyLatest plus Top, seconds-fresh
Official X API search$5+ / 1,000 reads, $200/mo floorDeveloper account plus app reviewPer-tier monthly read ceilingsRecent search only, 7-day lookback on cheaper tiers
RapidAPI Twitter search wrappers$0.20 to $0.50 / 1,000Per-provider RapidAPI keyThrottled by plan quotaProvider-dependent
Free libraries (twscrape, twikit)$0 before proxy and server costScraped cookies or tokensIPs banned in hoursSnaps on each X update

Flat, readable pricing

$0.04

to search 1,000 tweets

$0.50

in signup credits, no card

$0

monthly fee, billing is per call

A search call costs $0.0008 and returns close to 20 tweets, so 1,000 tweets settles around $0.04. The full breakdown sits on the Twitter API pricing page, and you can project a monthly bill with the Twitter API cost calculator.

Go deeper on any single tweet

Search hands you matching tweets and their IDs. Once you hold a tweet ID, three read endpoints expand it into the full picture, all on the same Bearer key at $0.0008 per call. Pass the ID you already have, and structured JSON comes back with no extra auth step.

EndpointReturnsReach for it when
GET /twitter/tweet/detailThe full tweet object for one ID: text, author, counts, and attached media.You have an ID from a link or a webhook and need the whole record, not a truncated card.
GET /twitter/tweet/repliesThe reply thread under a tweet, paged by cursor until it comes back empty.You track how a post is received, or pull a conversation for sentiment and support triage.
GET /twitter/tweet/retweetersThe accounts that reposted a tweet, each as a profile you can page through.You map who amplified a post, or score the reach behind a spike in engagement.

A common pattern is one search call to find the tweets that matter, then a detail, replies, or retweeters call on each ID to expand the ones worth a closer look. Both steps bill at the same flat rate, so a deep read on a handful of tweets stays well under a cent.

Read what is trending, worldwide or by location

Search answers what people are posting about a query. Trends answers the other direction: what X itself is surfacing right now. Two read endpoints cover it at $0.0008 per call. Call trends locations first to resolve a city or country to its WOEID, then pass that WOEID to trends for the live list in that place.

# 1. Find the WOEID for a place
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/trends/locations"

# 2. Read the live trend list for that WOEID (1 = worldwide)
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/trends?woeid=1"

That pairing drives trend dashboards, timing calls for a launch, and regional monitoring where a topic breaks in one country before it travels. No developer account, one 600 req/min ceiling, same key as every other read.

When search alone is not enough

This is a single endpoint. Need entire timelines, follower lists, and profiles on top of it? The broader Twitter scraper reaches that wider surface on the very same key. Wiring search into an AI agent instead? Point it at the MCP server. Still weighing vendors? Line up the full slate of Twitter API alternatives and compare them head to head.

By the numbers

Twitter search, in numbers.

Sourced figures behind live search costs.

  • The official X API full-archive search enforces a hard 1 request per second floor on top of a 300 per 15-minute window. (X API docs, 2026)

  • The official X API bills post reads pay-per-use at $0.005 per resource, and search results count against that read cost. (X Developer Platform, 2026)

  • Official X API pay-per-use is hard-capped at 3 million post reads per monthly billing cycle before Enterprise pricing applies. (X API docs, 2026)

  • TwitterAPIs advanced search returns about 20 tweets per call at $0.0008, which is $0.04 per 1,000 tweets, under a 600 req/min ceiling per key. (TwitterAPIs pricing, 2026)

  • A new TwitterAPIs account starts with $0.50 in free search credit, roughly 12,500 tweets, and needs no developer account. (TwitterAPIs pricing, 2026)

Twitter search API, common questions

Each advanced_search call runs $0.0008 and hands back roughly 20 tweets, which puts 1,000 tweets at about $0.04. Nothing is billed as a subscription and there is no spend minimum. Compare that to the official X API, where search reads open at $5 per 1,000 on top of a $200 monthly floor, and TwitterAPIs is the cheaper managed route to search at volume. New accounts get $0.50 in credits up front, with no card needed to begin.

There is no X developer account to apply for and no OAuth flow to wire up. The one thing you need is a TwitterAPIs Bearer token, copied straight after a 30-second signup, and it signs every search request. Skip the app review, the per-endpoint sign-off, and the waiting list, and your first query can run inside a minute.

One number: 600 requests a minute and 20 concurrent per key, the same on search as on every other route, with no daily or monthly cap on top. Billing is purely per call at $0.0008, so your spend tracks usage instead of bumping a tier ceiling. Scheduled firehose pulls and full date-range backfills run inside that ceiling without the per-endpoint throttles baked into the official X API search tiers.

Every response carries a cursor value. Feed that value into the cursor parameter on the following call to pull the next page, and keep going until the cursor comes back empty. You can sweep an entire query or date window this way without the server holding any session state for you.

It does. Pass product set to Latest and advanced_search streams a newest-first feed of posts that are only seconds old, which is exactly what alerting and live monitoring need. Pass product set to Top instead and you receive the highest-engagement matches for the same query. Either mode reads the live X index rather than a cached snapshot.

All of the familiar ones. Drop from:, to:, filter:verified, min_faves:, min_retweets:, since:, until:, lang:, and geocode: into the query parameter, mix them freely in one string such as from:elonmusk min_faves:500 since:2026-01-01, and the endpoint honors the combination. The Twitter advanced search operators guide carries the complete list with worked recipes.

Ranking is the only thing the product parameter changes. Latest hands you matches newest-first in reverse-chronological order, the right call for live monitoring. Top reorders those same matches by engagement, strongest first, which fits highlight feeds and sentiment digests. Leave the parameter off and Latest is assumed.

Think of search as the targeted query endpoint: you pass operators and get matching posts. The wider Twitter scraper layers full timelines, followers, profiles, and media on top of that search surface. The same Bearer key and the same flat $0.0008 per call power both. Reach for this endpoint when a query is all you need, and step up to the scraper when you want complete account data.

Search X with no X account

$0.04 per 1,000 tweets, $0.50 in free credits, Latest and Top ranking, no developer account, 600 req/min per key.