Skip to main content
This guide walks you through getting Post counts (volume) for the last 7 days.
PrerequisitesBefore you begin, you’ll need:

Get recent Post counts

1

Build a query

Use the same query syntax as recent search. For example, to count Posts from @XDevelopers:
from:XDevelopers
2

Make the request

cURL
curl "https://api.x.com/2/tweets/counts/recent?\
query=from%3AXDevelopers&\
granularity=day" \
  -H "Authorization: Bearer $BEARER_TOKEN"
from xdk import Client

client = Client(bearer_token="YOUR_BEARER_TOKEN")

# Get recent Post counts
response = client.posts.count_recent(
    query="from:XDevelopers",
    granularity="day"
)

for bucket in response.data:
    print(f"{bucket.start}: {bucket.tweet_count} Posts")

print(f"Total: {response.meta.total_tweet_count}")
import { Client } from "@xdevplatform/xdk";

const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

// Get recent Post counts
const response = await client.posts.countRecent({
  query: "from:XDevelopers",
  granularity: "day",
});

response.data?.forEach((bucket) => {
  console.log(`${bucket.start}: ${bucket.tweet_count} Posts`);
});

console.log(`Total: ${response.meta?.total_tweet_count}`);
3

Review the response

{
  "data": [
    {
      "end": "2024-01-16T00:00:00.000Z",
      "start": "2024-01-15T00:00:00.000Z",
      "tweet_count": 5
    },
    {
      "end": "2024-01-17T00:00:00.000Z",
      "start": "2024-01-16T00:00:00.000Z",
      "tweet_count": 3
    },
    {
      "end": "2024-01-18T00:00:00.000Z",
      "start": "2024-01-17T00:00:00.000Z",
      "tweet_count": 8
    }
  ],
  "meta": {
    "total_tweet_count": 16
  }
}

Granularity options

Control how counts are grouped:
GranularityDescription
minuteCounts per minute
hourCounts per hour (default)
dayCounts per day
cURL
# Get hourly counts
curl "https://api.x.com/2/tweets/counts/recent?\
query=python%20lang%3Aen&\
granularity=hour" \
  -H "Authorization: Bearer $BEARER_TOKEN"
from xdk import Client

client = Client(bearer_token="YOUR_BEARER_TOKEN")

# Get hourly counts
response = client.posts.count_recent(
    query="python lang:en",
    granularity="hour"
)

for bucket in response.data:
    print(f"{bucket.start}: {bucket.tweet_count}")
import { Client } from "@xdevplatform/xdk";

const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

// Get hourly counts
const response = await client.posts.countRecent({
  query: "python lang:en",
  granularity: "hour",
});

response.data?.forEach((bucket) => {
  console.log(`${bucket.start}: ${bucket.tweet_count}`);
});

Filter by time range

Limit counts to a specific time period:
cURL
curl "https://api.x.com/2/tweets/counts/recent?\
query=from%3AXDevelopers&\
start_time=2024-01-10T00%3A00%3A00Z&\
end_time=2024-01-15T00%3A00%3A00Z&\
granularity=day" \
  -H "Authorization: Bearer $BEARER_TOKEN"
from xdk import Client

client = Client(bearer_token="YOUR_BEARER_TOKEN")

# Get counts for a specific time range
response = client.posts.count_recent(
    query="from:XDevelopers",
    start_time="2024-01-10T00:00:00Z",
    end_time="2024-01-15T00:00:00Z",
    granularity="day"
)

print(f"Total Posts: {response.meta.total_tweet_count}")
import { Client } from "@xdevplatform/xdk";

const client = new Client({ bearerToken: "YOUR_BEARER_TOKEN" });

// Get counts for a specific time range
const response = await client.posts.countRecent({
  query: "from:XDevelopers",
  startTime: "2024-01-10T00:00:00Z",
  endTime: "2024-01-15T00:00:00Z",
  granularity: "day",
});

console.log(`Total Posts: ${response.meta?.total_tweet_count}`);

Common parameters

ParameterDescriptionDefault
querySearch query (required)
granularityTime bucket sizehour
start_timeOldest timestamp (ISO 8601)7 days ago
end_timeNewest timestamp (ISO 8601)Now

Next steps

Full-archive counts

Get historical Post counts

Build a query

Master query syntax

API Reference

Full endpoint documentation