Are repeated X posts deduplicated in Grok's search usage counts?

The Citead team, updated

In short. Repeated X posts count again when returned by another X Search call in the same request.

Definition: No. In xAI's Responses API, x_posts_fetched is an accumulated item count for an X Search request. If the same post is returned by two searches in that request, xAI's documentation says that post counts twice.

Key facts

  • xAI's X Search documentation says that X Search supports keyword search, semantic search, user search, and thread fetch on X.
  • X Search is billed at $5 per 1k posts fetched and $10 per 1k user profiles fetched, in addition to token costs.
  • x_posts_fetched includes posts returned by keyword search, semantic search, and thread fetch, including parent posts, quoted posts, and every post in a fetched thread.
  • The counts accumulate across every X Search call in one request and are not de-duplicated. xAI's Tool Usage Details also distinguishes item counts from per-call billing. A post returned by two searches counts twice.

What does the usage count measure?

xAI's X Search documentation describes X Search as a server-side tool that Grok can use for keyword search, semantic search, user search, and thread fetch. The documentation maps keyword search and semantic search to “Posts fetched,” user search to “Profiles fetched,” and thread fetch to “Posts fetched.” Each call appears in the response as a custom_tool_call item, while the response also reports usage counts.

The count is separate from the model's token usage. xAI states that X Search is billed per 1k posts or user profiles fetched, in addition to token costs. The companion Tool Usage Details documentation says that X Search is billed per post and per user profile fetched rather than per call, and identifies usage.server_side_tool_usage_details.x_posts_fetched and x_users_fetched as the reported fields.

How are repeated posts and thread items counted?

The X Search page defines x_posts_fetched as the number of posts returned by x_keyword_search, x_semantic_search, and x_thread_fetch. Its definition includes parent and quoted posts and every post of a fetched thread. The same page then states that both post and profile counts accumulate over every X Search call in the request and are not de-duplicated. A post returned by two searches therefore contributes two to the post count.

This is per request accounting. The documentation also says that a thread fetch does not use the handle and date parameters, while those parameters apply to every keyword and semantic search, whatever query the model writes. A date range starts at 00:00 UTC on from_date and ends before to_date, and both fields use YYYY-MM-DD.

Where can the count be checked?

For a Responses API response, read the usage object at usage.server_side_tool_usage_details. xAI's X Search documentation shows the following response shape after two X searches:

"server_side_tool_usage_details": {
  "web_search_calls": 0,
  "x_search_calls": 2,
  "x_posts_fetched": 44,
  "x_users_fetched": 3
}

The X Search documentation says that a streamed response exposes the total on the terminal response.completed event, or on response.incomplete when the response was truncated. The usage page distinguishes attempted tool calls from successful tool executions and says that failed attempts are not charged. For X Search, the item fields remain the relevant accounting fields.

FAQ

Does one repeated post count once per request?

No. If two X Search calls return the same post, the documented count includes it twice.

Do quoted and parent posts contribute to x_posts_fetched?

Yes. The field includes parent posts, quoted posts, and every post in a fetched thread.

Does x_search_calls replace x_posts_fetched for billing?

No. x_search_calls records the number of X Search calls shown in the usage block. xAI documents X Search billing per post and per user profile fetched.

Does streaming change the total?

No. The terminal usage event reports the total for the request, including response.incomplete when the response was truncated.

Sources

  1. xAI, "X Search", 10 October 2026
  2. xAI, "Tool Usage Details", 10 October 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark