X (Twitter) Advanced Search Scraper | $0.12/1K | All Operators avatar

X (Twitter) Advanced Search Scraper | $0.12/1K | All Operators

Pricing

from $0.10 / 1,000 post returneds

Go to Apify Store
X (Twitter) Advanced Search Scraper | $0.12/1K | All Operators

X (Twitter) Advanced Search Scraper | $0.12/1K | All Operators

Run X (Twitter) advanced search without learning its syntax. Filter by account, mentions, replies, language, date window, likes, reposts, media and verification, then export every matching post with full engagement metrics, author profile and the compiled query. JSON, CSV or Excel. By FeedMiner.

Pricing

from $0.10 / 1,000 post returneds

Rating

0.0

(0)

Developer

FeedMiner

FeedMiner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

🎛️ Every operator is a field, including the ones with a minus. From, replying to, mentioning, language, dates, minimum likes, reposts and replies, media, verification, and the four nobody else exposes: words to exclude, no reposts, no replies, and a place with a radius. No -crypto -filter:retweets near:"San Francisco" within:25km to remember.

💸 $0.12 per 1,000 posts, down to $0.10 on the larger Apify plans. The closest tool with this feature set charges $15 per 1,000 on the free plan and $0.35 plus a start fee on the paid ones. Same index, same rows, no start fee here.

🔍 The query is in the output. Every row carries the exact X query the form compiled to, so the day you want the syntax, you already have it.

📅 A date window that actually stops. Set until and the run stops at your date instead of walking a whole timeline and filtering afterwards.

FeedMiner · X (Twitter) suite • Posts, profiles, audiences, media, trends
X Advanced Search Scraper
➤ You are here
X Media Scraper
Photos, videos, every encoding · $0.40/1K files
X Mentions Monitor
Brand watch, only what is new · $0.12/1K mentions

Copy to your AI assistant

feedminer/x-advanced-search-scraper on Apify. Runs X (Twitter) advanced search from structured fields instead of raw operator syntax. One row per post with text, engagement counts (likes, reposts, replies, quotes, bookmarks, views), author profile and the compiled query in searchTerm. Call ApifyClient("TOKEN").actor("feedminer/x-advanced-search-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Input: searchTerms (string[]), from, to, mentioning, language, since, until (YYYY-MM-DD), minLikes, minRetweets, minReplies (int), onlyImages, onlyVideos, onlyQuotes, onlyVerified (bool), sort (latest|top), maxItems (int), sessions (array, optional). Full spec: GET https://api.apify.com/v2/acts/feedminer~x-advanced-search-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

How to run an advanced search on X (Twitter)

Fill what you know, leave the rest empty.

Basic: a keyword with a quality floor

{ "searchTerms": ["web scraping"], "minLikes": 20, "maxItems": 500 }

Everything one account said last month

{ "from": "openai", "since": "2026-07-01", "until": "2026-08-01", "maxItems": 1000 }

No keyword at all is a valid search here. Filters alone are enough.

Complaints sent to a brand, in one language

{ "to": "airfrance", "language": "fr", "minReplies": 1, "maxItems": 2000 }

Cut the noise out of a busy keyword

{
"searchTerms": ["launch"],
"excludeWords": ["crypto", "pump and dump"],
"excludeRetweets": true,
"excludeReplies": true,
"maxItems": 500
}

Three words excluded and two shapes dropped turn a keyword nobody can use into one you can.

What a city is saying

{ "searchTerms": ["blackout"], "near": "San Francisco", "withinKm": 25, "maxItems": 300 }

Only the posts that carry a video

{ "searchTerms": ["product launch"], "onlyVideos": true, "sort": "top", "maxItems": 300 }

A competitor set in one job

{
"searchTerms": ["from:stripe", "from:adyen", "from:checkoutcom"],
"since": "2026-06-01",
"minLikes": 5,
"maxItems": 5000
}

A term already written in X syntax is understood as is, and what you type in a term wins over the same field in the form.


Input parameters

ParameterTypeDefaultDescription
searchTermsarrayWords to look for. Leave empty to search on the filters alone
sortselectlatestNewest first, or the most engaged first
maxItemsinteger1000Stop once this many posts have been collected

Filter tweets

ParameterTypeDefaultDescription
languageselectKeeps only posts X detected in this language
onlyVerifiedbooleanfalseOnly posts from verified accounts
onlyImagesbooleanfalseOnly posts carrying an image
onlyVideosbooleanfalseOnly posts carrying a video
onlyQuotesbooleanfalseOnly posts quoting another post
excludeRetweetsbooleanfalseDrop reposts, keep original posts only
excludeRepliesbooleanfalseDrop replies, keep standalone posts only

Search operators

ParameterTypeDefaultDescription
fromstringOnly posts written by this account
tostringOnly replies sent to this account
mentioningstringOnly posts that mention this account
excludeWordsarrayDrop posts containing any of these words or phrases. This is X's own minus operator, without the syntax
minLikesinteger0Drop posts below this many likes
minRetweetsinteger0Drop posts below this many reposts
minRepliesinteger0Drop posts below this many replies
sincedateYYYY-MM-DD
untildateYYYY-MM-DD

Location

ParameterTypeDefaultDescription
nearstringA city or place name. Only posts X located there
withinKminteger0Radius around the place above

Advanced

ParameterTypeDefaultDescription
sessionsarrayOptional. The Actor works without one. X accounts of your own, for anyone who would rather the run used accounts they control
debugModebooleanfalseVerbose logs for support

Coming from another tweet scraper

The field names used by the most popular X scraper work here as they are: author, inReplyTo, tweetLanguage, minimumFavorites, minimumRetweets, minimumReplies, start, end, onlyImage, onlyVideo, onlyQuote, onlyVerifiedUsers, onlyTwitterBlue. A list in twitterHandles becomes one search per account.

Nothing to connect

Fill the fields and press Start. Keyword search covers all of X, with no account to create and no cookie to copy on your side.

If you would rather the run worked from accounts you own, the optional sessions field takes them.


FieldTypeDescription
idstringPost id
urlstringDirect link to the post
textstringPost text
createdAtstringPublication date, RFC 3339
langstringLanguage X detected
likeCountintegerLikes
retweetCountintegerReposts
replyCountintegerReplies
quoteCountintegerQuotes
bookmarkCountintegerBookmarks
viewCountintegerViews, the number most X scrapers skip
isRetweet isQuote isReplybooleanWhat kind of post this is
conversationIdstringThread this post belongs to
inReplyToUsernamestringAccount being replied to
hashtags mentions links mediaarrayEntities in the post
authorobjectHandle, name, bio, followers, verification, avatar, join date
quote retweetobjectThe nested post, when there is one
searchTermstringThe exact X query this row came from

Pricing: Pay Per Event (PPE)

EventPrice
Post returned$0.00012

That is $0.12 per 1,000 posts, with no start fee and no charge for a run that returns nothing. The price steps down on its own for the larger Apify plans, to $0.11 and then $0.10 per 1,000.


What a run costs

A 500 post search$0.06
A 10,000 post research dataset$1.20

Free tier

The Apify free plan includes $5 of usage every month, which is roughly 41,000 posts here. No card required.

Advanced usage

Find the buying signals, not the noise. to plus minReplies returns the conversations a brand is actually in, which is a much smaller and more useful set than a keyword sweep.

Keep a date window per run. Searching a year in one job returns the maximum X gives per query. Splitting it into monthly windows with since and until gives you the whole year, one run per month.

Sort matters. latest is the complete recent slice. top is X's own engagement ranking, which is what you want for a report and not for a dataset.

Terms and fields combine. searchTerms: ["pricing"] with from: "stripe" is every Stripe post about pricing. Both sides compile into one query, visible in searchTerm.


Integrate X search results into your stack

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("feedminer/x-advanced-search-scraper").call(run_input={
"searchTerms": ["data pipeline"],
"language": "en",
"minLikes": 25,
"since": "2026-08-01",
"maxItems": 1000,
})
for row in client.dataset(run["defaultDatasetId"]).list_items().items:
print(row["likeCount"], row["author"]["userName"], row["url"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('feedminer/x-advanced-search-scraper').call({
from: 'openai',
since: '2026-07-01',
until: '2026-08-01',
maxItems: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const top = items.sort((a, b) => b.viewCount - a.viewCount).slice(0, 10);

No code

Send results to Google Sheets, Airtable, Slack, Zapier, Make or n8n from the Integrations tab of the run.


Performance

MeasureValue
Reading speed27 posts per second, measured on a 600 post run
ParallelismOne worker per search term, up to eight
Partial resultsKept and delivered when a limit is reached

FAQ

How is this different from X Tweet Scraper? Same index, different door. Tweet Scraper takes X syntax and mixed inputs, profiles, threads, lists and communities. This one takes a form and searches. Pick whichever matches how you think.

Do I need an X account? No. The run brings its own. When none is free at that moment, it answers from the public Communities index and says so in the run message.

Can I use raw X operators anyway? Yes. Anything you type in searchTerms is parsed as X syntax, and what you typed wins over the same field in the form.

How far back can I search? As far as X's index serves for a query. Monthly windows with since and until are how you cover a long period completely.

Why do I get fewer posts than maxItems? Because the query ran out of matches. A narrower filter, a shorter window or a lower like threshold widens the result.

Does it return views? Yes, viewCount is on every row.

Can I schedule it? Yes. For a recurring brand watch, X Mentions Monitor is the better fit: it keeps state between runs and returns only what is new.

Does onlyVerified mean paid verification? It matches X's own verified filter. Each row also carries isVerified and isBlueVerified so you can split them yourself.


Support

A field you need, a filter that behaves oddly, a query that returns less than you expect: write from the actor page.


This actor reads the public search index of X. It does not access private accounts, protected posts or direct messages. Personal data in the output is subject to GDPR, CCPA and similar regimes: collect what you have a lawful basis to collect, keep it only as long as you need it, and honour deletion requests.


FeedMiner · Fast, honestly priced scrapers, kept alive when platforms change.

X Tweet Scraper · X Profile Scraper · X Follower Scraper · X Advanced Search Scraper · X Media Scraper · X Mentions Monitor · X Engagement Scraper · X Likes and Reposts Scraper · X Trends Scraper · All FeedMiner Actors