X Search & Discovery Scraper
Pricing
from $0.80 / 1,000 x search results
X Search & Discovery Scraper
Find public X posts from keywords, hashtags, mentions, advanced queries, profile filters, engagement filters, and date ranges.
Pricing
from $0.80 / 1,000 x search results
Rating
0.0
(0)
Developer
Chronometrica
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
๐ What does X Search & Discovery Scraper do?
X Search & Discovery Scraper finds up to 1,000 public X posts per query from keywords, hashtags, mentions, profiles, date ranges, engagement filters, and other advanced X search operators.
Use it for continuous news monitoring, social listening, creator discovery, brand mentions, competitor research, alerts, bots, and scheduled discovery feeds. Run several searches at once. Every result keeps both the input query and the exact executed query, so rows never lose the keyword or filter that found them.
Each dataset row represents one public X post returned by one executed query. The same post may appear once for query A and once for query B because those are two useful search observations. Repeated appearances inside one query are removed.
This Actor uses logged-out public X data. It does not accept account cookies, passwords, or private tokens. It does not access private posts or promise a complete archive of any profile.
With X Search & Discovery Scraper, you can:
- ๐ Search keywords, phrases, hashtags, and mentions.
- ๐ค Find posts with filters such as
from:OpenAI. - ๐ Use public engagement filters such as
min_faves:100. - ๐๏ธ Limit discovery to a date range.
- ๐งญ Compare Latest posts, Top posts, Photos, and Videos search types.
- ๐ Run up to 20 independent searches in one job.
- ๐ท๏ธ Keep exact query lineage on every saved post.
- ๐ฃ Remove promoted results from the saved dataset.
- ๐ฆ Export rows as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
๐ฆ What X search data can I extract?
One row is one post returned by one executed query.
| Data group | Example fields |
|---|---|
| ๐ Query context | inputQuery, executedQuery, searchMode, resultPosition |
| ๐ Post identity | postId, postUrl, conversationId |
| ๐งพ Post details | text, createdAt, hashtags, mentions, and links |
| ๐ค Author | authorId, authorHandle, authorName, authorUrl |
| ๐ Relationships | reply, quote, and repost IDs and flags |
| ๐ Public metrics | likes, reposts, replies, views, bookmarks |
| ๐ผ๏ธ Media | photos, videos, preview URLs, and alt text |
| ๐ Observation | observedAt |
Missing public values stay null. They are not guessed or changed to fake
zeroes.
โ๏ธ Can I use this Actor through an API?
Yes. Run it in Apify Console or connect it through:
- Apify API
- Python SDK
- JavaScript SDK
- Webhooks
- Scheduled Tasks
- Apify integrations
๐ฏ Why search public X posts?
| Use case | How the data helps |
|---|---|
| ๐ฃ Brand monitoring | Find public posts that mention a brand or product. |
| ๐งโ๐จ Creator discovery | Find people posting about a market or topic. |
| ๐ฅ Trend research | Compare visible conversations and engagement. |
| ๐ต๏ธ Competitor monitoring | Watch public discussion around competing products. |
| ๐งฑ Data-pipeline seeding | Feed discovered post IDs into metrics or research jobs. |
๐ต Pricing event
One paid search result means one real public post row returned by one executed query. Empty pages, promoted results, repeats, date mismatches, and run-summary records are not paid search results. Platform usage is included. A small Actor start event also applies, as shown in the Store pricing table.
Use maxItemsPerQuery to control the possible result count. With several
queries, each query receives its own cap. The Actor stops saving results when
the run reaches your maximum charge.
๐ How do I use X Search & Discovery Scraper?
- Open X Search & Discovery Scraper in Apify Console.
- Add one or more search queries.
- Choose Latest posts, Top posts, Photos, or Videos.
- Set the number of posts to save per query.
- Add an optional start or end date.
- Click Start.
- Open the Output tab to inspect the dataset and run summary.
โฌ๏ธ Input
{"queries": ["artificial intelligence", "#buildinpublic"],"searchMode": "latest","maxItemsPerQuery": 100,"startTime": "2026-01-01","endTime": "2026-06-30"}
| Setting | What it controls |
|---|---|
queries | 1 to 20 simple or advanced X search queries. |
searchMode | Latest posts, Top posts, Photos, or Videos. |
maxItemsPerQuery | Saves up to 1,000 rows for each query after exclusions and repeats. |
startTime | Optional first calendar date to include. |
endTime | Optional last calendar date to include. |
Safety limits and pacing are handled automatically. They are not exposed as input settings.
๐งญ Simple query examples
| Goal | Query example |
|---|---|
| ๐ Topic search | artificial intelligence |
| ๐ฌ Exact phrase | "open source AI" |
| #๏ธโฃ Hashtag tracking | #buildinpublic |
| ๐ฃ Mention monitoring | @OpenAI |
๐งฐ Optional advanced operators
Start with a simple query. Add an operator only when you need to narrow the results.
| Goal | Operator example |
|---|---|
| ๐ค Posts from one profile | from:OpenAI |
| ๐ Minimum public likes | min_faves:100 |
| ๐ซ Exclude one profile | -from:OpenAI |
| ๐ผ๏ธ Require attached media | filter:media |
You can combine a normal search with operators. For example,
AI from:OpenAI min_faves:100 means posts about AI from @OpenAI with at
least 100 public likes.
Optional startTime and endTime values are inclusive. The Actor adds visible
date filters to the executed query and checks each returned post date again.
Do not also add since: or until: operators to a query when using the date
fields.
โฌ๏ธ Output sample
{"platform": "x","discoverySource": "x_search","inputQuery": "artificial intelligence","executedQuery": "artificial intelligence since:2026-01-01 until:2026-07-01","searchMode": "Latest","resultPosition": 1,"postId": "2077446718728425686","postUrl": "https://x.com/OpenAI/status/2077446718728425686","text": "Example post","createdAt": "2026-06-30T12:00:00.000Z","authorId": "4398626122","authorHandle": "@OpenAI","authorName": "OpenAI","authorUrl": "https://x.com/OpenAI","likes": 8000,"reposts": 700,"replies": 400,"views": 1600000,"bookmarks": 2000,"observedAt": "2026-07-17T12:00:00.000Z"}
๐ Run summary
The OUTPUT record reports:
- queries queued and executed;
- rows saved;
- repeats inside each query;
- date exclusions;
- promoted results seen and excluded;
- a safe stop reason and result for every query.
๐งญ Query fields explained
inputQuery is the query supplied by the user.
executedQuery is the exact query sent after optional date operators are added.
resultPosition is the post's observed position inside that executed query. It
is not a permanent rank or a quality score.
๐ฆ Search quality and stop reasons
Only public posts with a stable post ID and author identity become dataset rows. The run summary separates:
- posts returned by X;
- rows saved;
- repeats skipped inside a query;
- posts outside the requested time range;
- promoted results removed;
- source exhaustion, safety limits, and public source errors.
This makes a short result set explainable. Fewer rows than requested does not automatically mean the run failed.
๐ Source boundary
This Actor reads logged-out public X data. It stops safely when that public data is unavailable.
It does not:
- use an X account or account pool;
- accept cookies, passwords, or private tokens;
- access private or protected posts;
- solve login or challenge screens;
- promise complete profile history.
โ ๏ธ Limits and interpretation
- The Actor saves up to 1,000 posts per query.
- The cap is not a promise. X may stop returning matches before the cap is reached.
- X chooses which posts appear and how they are ranked. Fewer rows than the cap can be correct.
- Search results are discovery observations, not a complete profile archive.
- Promoted results are counted in the run summary and excluded from the dataset.
- A source limit, block, or rate limit may stop collection early.
- Deleted, private, age-gated, or region-limited posts may be missing.
- X can change its public surface, so later runs may need an Actor update.
โ FAQ
Does this Actor need an X login, cookie, or API key?
No. It reads logged-out public X data.
Can I search one profile?
Yes. Use an advanced query such as from:OpenAI. This finds posts returned by
X search. It does not promise the profile's complete history.
Why did I receive fewer posts than requested?
The source may have fewer visible matches. Promoted posts, repeats, and posts outside the exact time range are also excluded. Check the run summary for the exact reason.
How are duplicates handled?
A post is saved once inside each executed query. The same post may be saved again for another query because that is a separate discovery observation.
๐ Support
For help, share the run ID, input query, expected result, and actual result. Never share passwords, cookies, or private tokens.
Use public data in line with the law, X rules, and Apify rules.