X Search & Discovery Scraper avatar

X Search & Discovery Scraper

Pricing

from $0.80 / 1,000 x search results

Go to Apify Store
X Search & Discovery Scraper

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

Chronometrica

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

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 groupExample fields
๐Ÿ” Query contextinputQuery, executedQuery, searchMode, resultPosition
๐Ÿ”— Post identitypostId, postUrl, conversationId
๐Ÿงพ Post detailstext, createdAt, hashtags, mentions, and links
๐Ÿ‘ค AuthorauthorId, authorHandle, authorName, authorUrl
๐Ÿ” Relationshipsreply, quote, and repost IDs and flags
๐Ÿ“Š Public metricslikes, reposts, replies, views, bookmarks
๐Ÿ–ผ๏ธ Mediaphotos, videos, preview URLs, and alt text
๐Ÿ•’ ObservationobservedAt

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 caseHow the data helps
๐Ÿ“ฃ Brand monitoringFind public posts that mention a brand or product.
๐Ÿง‘โ€๐ŸŽจ Creator discoveryFind people posting about a market or topic.
๐Ÿ”ฅ Trend researchCompare visible conversations and engagement.
๐Ÿ•ต๏ธ Competitor monitoringWatch public discussion around competing products.
๐Ÿงฑ Data-pipeline seedingFeed 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?

  1. Open X Search & Discovery Scraper in Apify Console.
  2. Add one or more search queries.
  3. Choose Latest posts, Top posts, Photos, or Videos.
  4. Set the number of posts to save per query.
  5. Add an optional start or end date.
  6. Click Start.
  7. 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"
}
SettingWhat it controls
queries1 to 20 simple or advanced X search queries.
searchModeLatest posts, Top posts, Photos, or Videos.
maxItemsPerQuerySaves up to 1,000 rows for each query after exclusions and repeats.
startTimeOptional first calendar date to include.
endTimeOptional last calendar date to include.

Safety limits and pacing are handled automatically. They are not exposed as input settings.

๐Ÿงญ Simple query examples

GoalQuery example
๐Ÿ” Topic searchartificial 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.

GoalOperator example
๐Ÿ‘ค Posts from one profilefrom:OpenAI
๐Ÿ“ˆ Minimum public likesmin_faves:100
๐Ÿšซ Exclude one profile-from:OpenAI
๐Ÿ–ผ๏ธ Require attached mediafilter: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

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.