X (Twitter) Boolean Search Scraper | Posts & Trends avatar

X (Twitter) Boolean Search Scraper | Posts & Trends

Pricing

from $0.26 / 1,000 matching x posts

Go to Apify Store
X (Twitter) Boolean Search Scraper | Posts & Trends

X (Twitter) Boolean Search Scraper | Posts & Trends

Search public X posts with AND, OR, NOT, exact phrases, hashtags, dates, media, language, engagement, and verified-author filters. Deduplicated results stream to JSON, CSV, Excel, or API.

Pricing

from $0.26 / 1,000 matching x posts

Rating

5.0

(1)

Developer

Scraping Solutions

Scraping Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Find public X posts with one precise Boolean query. Combine keywords, hashtags, exact phrases, AND, OR, NOT, parentheses, dates, language, media type, engagement thresholds, and author filters without managing cookies or a developer account.

The Actor validates your expression, creates a safe search plan, discovers candidate posts, checks the complete Boolean logic locally with Unicode-aware whole-term matching, removes duplicates, and streams matching rows to the dataset.

What You Can Do

  • Monitor brands, products, executives, competitors, or events.
  • Find purchase intent, complaints, feature requests, and campaign conversations.
  • Compare alternative names, spellings, hashtags, and phrases in one run.
  • Exclude job posts, giveaways, spam terms, or unrelated meanings.
  • Keep only recent, popular, verified, image, video, reply, or original posts.
  • Export structured results to JSON, CSV, Excel, XML, RSS, or the Apify API.

Supported syntax:

OperatorMeaningExample
ANDBoth expressions must matchOpenAI AND agents
OREither expression may matchOpenAI OR Anthropic
NOTExclude a matching expressionAI AND NOT hiring
"..."Exact phrase"artificial intelligence"
( ... )Control precedence(OpenAI OR Anthropic) AND agents
#hashtagMatch an exact hashtag#AI OR #MachineLearning

Terms use complete Unicode word boundaries. A query for IA matches the standalone term IA, but not tia, viaje, or diario. Matching is case-insensitive and accent-insensitive.

Validate and explain an expression before a paid run with the free FlujoDato Boolean Search Validator.

Input Example

{
"searchQuery": "(OpenAI OR Anthropic) AND (agents OR automation) AND NOT hiring",
"resultsLimit": 100,
"searchSection": "latest",
"searchCoverage": "efficient",
"contentType": "all",
"language": "en",
"oldestPostDate": "",
"newestPostDate": "",
"minimumViews": 0,
"minimumLikes": 5,
"minimumReposts": 0,
"minimumReplies": 0,
"minimumQuotes": 0,
"minimumBookmarks": 0,
"verifiedAuthorsOnly": false,
"excludeReplies": false,
"excludeReposts": true,
"strictBooleanSyntax": false
}

Input Fields

FieldDescriptionDefault
searchQueryKeyword, hashtag, phrase, or Boolean expressionExample query
resultsLimitMaximum unique matching posts saved100
searchSectionlatest or top rankinglatest
searchCoverageefficient scans up to 3x; comprehensive scans up to 6x and adds exact-term and hashtag variants that preserve the Boolean conditionefficient
contentTypeAll, text, media, images, or videosall
languageAll languages or one supported languageall
oldestPostDateInclusive start dateEmpty
newestPostDateInclusive end dateEmpty
minimumViewsMinimum reported views0
minimumLikesMinimum likes0
minimumRepostsMinimum reposts0
minimumRepliesMinimum replies0
minimumQuotesMinimum quote posts0
minimumBookmarksMinimum reported bookmarks0
verifiedAuthorsOnlyKeep verified authors onlyfalse
excludeRepliesRemove repliesfalse
excludeRepostsRemove repostsfalse
strictBooleanSyntaxRequire explicit operatorsfalse

Output Example

{
"query": "OpenAI AND AI",
"normalizedQuery": "OpenAI AND AI",
"matchedTerms": ["OpenAI", "AI"],
"discoveryQuery": "OpenAI AI",
"searchSection": "latest",
"tweetId": "1234567890123456789",
"url": "https://x.com/example/status/1234567890123456789",
"text": "A new OpenAI release for practical AI agents.",
"hashtags": ["#AI"],
"publishedAt": "2026-09-07T12:00:00Z",
"language": "en",
"contentType": "text",
"mediaUrls": [],
"videoUrls": [],
"likeCount": 42,
"repostCount": 7,
"replyCount": 3,
"quoteCount": 1,
"viewCount": 2500,
"bookmarkCount": 4,
"isReply": false,
"isRepost": false,
"isQuote": false,
"authorUsername": "example",
"authorName": "Example",
"authorProfileUrl": "https://x.com/example",
"authorVerified": true,
"authorFollowerCount": 12500,
"scrapedAt": "2026-09-07T12:01:00Z"
}

Every row represents one unique matching post. Numeric zero values remain 0. Optional unavailable values are returned as null or empty arrays according to their type.

Pricing And Search Coverage

resultsLimit is a maximum, not a guarantee. Search feeds are ranked, can repeat posts across pages, and can end before the requested count.

  • Efficient can inspect up to 3 times the requested result limit.
  • Comprehensive can inspect up to 6 times the requested result limit for restrictive queries.
  • When an end date is set, Efficient can use up to 0.5 successful pages per requested result and Comprehensive up to 1 page per result, shared across the complete search plan.
  • Restrictive AND, NOT, date, media, author, or engagement filters may return fewer results.
  • A successful page containing new candidate posts is charged even if local filters reject every candidate.
  • Failed requests, retries, empty pages, and pages containing only previously seen posts are not charged.
  • Each saved dataset item is charged once. Duplicate posts are never saved or charged as results.

The start date is sent to the upstream search, while the end date is verified locally. Boolean-qualified posts rejected only by the end date or another local filter keep that source active so historical pagination is not stopped as irrelevant.

Before discovery begins, the Actor estimates the maximum result and page charges required by the plan. If the run can afford at least one successful page and one result, it can start in partial mode, stream affordable output, and stop safely when the charge limit is reached. A run is rejected before provider use only when it cannot fund that minimum useful operation.

Reliability

  • Results are streamed after every completed page, so partial output survives an interrupted run.
  • Stable post IDs prevent duplicate result billing.
  • Temporary network, rate-limit, and server failures retry after 4, 16, and 64 seconds.
  • Repeated cursors and duplicate-only pagination cycles stop automatically.
  • Live progress is available in RUN_PROGRESS; the final counters are stored in RUN_SUMMARY.
  • Credentials, endpoints, provider payloads, and pagination tokens are never written to the dataset or logs.

Tips For Better Results

  1. Start with 25 to 100 results in Efficient mode.
  2. Test each positive term separately if a complex query returns few matches.
  3. Add engagement filters gradually; high thresholds can remove most candidates.
  4. Use Latest for monitoring and Top for research on prominent conversations.
  5. Switch to Comprehensive only when the first sample confirms that the query is useful.

Responsible Use

Use only public data and follow applicable laws, privacy requirements, platform terms, and your organization's data retention policies. Do not use the Actor for harassment, surveillance, discrimination, or collection of sensitive personal data.

Support

For reproducible support, share the Actor run ID, input with secrets removed, expected behavior, and the relevant log lines. Do not send API keys or private credentials.