Twitter Analytics Without Premium (2026): What You Can See
Twitter analytics without Premium: the counts every post shows, what X's own pages say about the dashboard, and a free script that saves posts to CSV.
Tarun Khatri
Published · Updated · 7 min read
You can see Twitter analytics without Premium, because public posts show their views, likes, reposts, replies and bookmarks to anyone.
This guide is for you if you want your numbers, or a brand's, without paying for X Premium. You get what X's own pages say about its dashboard, then a free script that saves an account's posts to a CSV and a chart. We run Weir, the API it calls.
Pull an account's latest posts, with their counts, in one call:
curl "https://api.weirapp.io/v1/x/users/NASA/posts?limit=5" \
--header "Authorization: Bearer $WEIR_API_KEY"
- Read a post's numbersViews sit by the analytics icon.
- Try X's dashboardLogged in, see if it asks you to pay.
- Pull recent postsGET /v1/x/users/{user}/posts.
- Save a CSVWith the engagement rate per post.
- Chart itViews per post, with the median.
Step 1: Check Twitter impressions without a blue tick
Views are the public number closest to impressions, and you don't need a checkmark to see them.
X's help page says "anyone on X can see view counts on posts." They sit next to the analytics icon under each post.
A few rules from that page:
- Every logged-in view counts, wherever it happens, and yours count on your own posts.
- Views aren't unique. One person on web and phone counts twice.
- Embedded posts don't add views.
- Older posts have no view count at all.
The other counts are public too. X's API docs split post metrics into two groups:
| Metric | Who can see it | Note |
|---|---|---|
| Views | Anyone | Not on older posts |
| Likes, reposts and replies | Anyone | Every public post |
| Quotes and bookmarks | Anyone | Every public post |
| Link and profile clicks | The author | API: last 30 days |
So a brand's reach is public, but its clicks are not.
That's the line between a free checker and X's own analytics.
Step 2: Can you open Twitter analytics without Premium?
X's own pages don't give one answer.
- X's ads help (a June 2026 copy) says X Analytics "is a free service available to all X users" with an ads account or a sign-up at analytics.x.com.
- X's Premium page (October 2026) lists no analytics feature in any tier.
- Hootsuite's guide (December 2025) says the full dashboard needs Premium on desktop, and the app still shows "limited analytics for individual posts."
- X's help article on the dashboard now redirects to
x.com/i/account_analytics, which needs a login.
So the honest test is to open that page while logged in. If it asks you to subscribe, the dashboard is locked for your account.
Premium starts at $3 a month for Basic in the US, as of October 2026. Since X lists no analytics in any tier, read the offer before you pay.
Premium doesn't include API access either, as our X Premium API guide explains.
Step 3: Pull recent posts with a free Twitter analytics checker
A script can read any public account's numbers, yours or a brand's.
Weir's timeline endpoint returns posts newest first, with every count above and any pinned post on top. You need Python 3, requests, matplotlib and a free key in WEIR_API_KEY.
This part pages until meta.nextCursor is null, with a page cap:
import csv, os, statistics, sys, requests
HEAD = {"Authorization": f"Bearer {os.environ['WEIR_API_KEY']}"}
def recent_posts(user, limit=20, max_pages=3):
url = f"https://api.weirapp.io/v1/x/users/{user}/posts"
params, posts = {"limit": limit}, []
for _ in range(max_pages):
r = requests.get(url, params=params, headers=HEAD, timeout=60)
r.raise_for_status() # 404: protected, suspended or not found
page = r.json()
posts += page["data"]
if not page["meta"]["nextCursor"]:
break
params["cursor"] = page["meta"]["nextCursor"]
return posts
Reposts need care. A repost carries the original in retweetedPost, and its own likes read 0.
In our run, NASA's repost showed 50,488 views. The original had 172,445. In earlier tests, other reposts came back with viewCount: null.
So the next part skips reposts and posts without views. Searching instead? Add -filter:nativeretweets to the query.
Step 4: Save a CSV with the engagement rate
X defines engagement rate as engagements divided by impressions. Its engagements include clicks, which only the author sees.
Our public rate counts likes, reposts, replies, quotes and bookmarks. So it runs lower than X's own figure.
COUNTS = ["likeCount", "retweetCount", "replyCount", "quoteCount", "bookmarkCount"]
def to_row(p):
actions = sum(p[k] or 0 for k in COUNTS)
return {"posted": p["createdAt"][:16], "text": " ".join(p["text"].split())[:32],
"views": p["viewCount"], **{k: p[k] for k in COUNTS},
"rate": round(100 * actions / p["viewCount"], 4), "url": p["url"]}
user = sys.argv[1].lstrip("@")
rows = [to_row(p) for p in recent_posts(user)
if not p["retweetedPost"] and p["viewCount"]] # skip reposts and no-view posts
if not rows:
sys.exit(f"No posts with view counts from @{user}.")
Then write the CSV and print the medians, so one viral post can't skew the picture:
with open(f"{user}_posts.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=list(rows[0]))
writer.writeheader()
writer.writerows(rows)
print("posts:", len(rows))
print(f"median views: {statistics.median(r['views'] for r in rows):,.0f}")
print(f"median engagement rate: {statistics.median(r['rate'] for r in rows):.2f}%")
We ran the same call for @NASA on 22 October 2026, with limit at 5 and one page. It cost 8 credits and printed:
posts: 4
median views: 635,827
median engagement rate: 0.24%
Five posts came back. The script dropped the repost and kept NASA's own four.
Step 5: Chart views per post with matplotlib
A bar per post shows which ones travelled. This part draws them, with each post's rate at the tip and a line at the median:
import matplotlib.pyplot as plt
rows.sort(key=lambda r: r["views"])
y = range(len(rows))
fig, ax = plt.subplots(figsize=(9, 1.5 + 0.5 * len(rows)))
bars = ax.barh(y, [r["views"] for r in rows], height=0.5, color="#2a78d6")
ax.set_yticks(y, [r["text"] for r in rows])
ax.bar_label(bars, [f'{r["views"]:,} ({r["rate"]:.2f}%)' for r in rows], padding=4)
ax.axvline(statistics.median(r["views"] for r in rows), color="#52514e", lw=1)
ax.xaxis.set_major_formatter("{x:,.0f}")
ax.margins(x=0.3)
ax.spines[["top", "right"]].set_visible(False)
ax.set_title(f"Views per post, @{user} (engagement rate; line = median)", loc="left")
fig.tight_layout()
fig.savefig(f"{user}_views.png", dpi=150)
Save all four parts as post_stats.py and run python post_stats.py NASA. Our PNG had one bar per post. Here is the same data:
The most-viewed post, a live news conference, had the lowest rate. The Moon Base video drew about half its views but over 7 times the rate.
Views alone don't tell you what landed.
One page of 20 posts costs 23 credits. Weir's 5,000 free monthly credits cover over 200 of those runs.
When not to use Weir
- A few posts are enough. X shows the public counts on each post for free.
- You need link or profile clicks. Only X shows those, and only to the author.
- The account is protected. Weir reads public data only and returns a 404.
- Cost per post matters most. TwitterAPI.io lists $0.15 per 1,000 tweets, which is less than Weir at small volumes.
X's Terms of Service say you "cannot scrape the Services without X's express written permission," so check what applies to you. This isn't legal advice.
FAQ
How do I check Twitter impressions without a blue tick?
Look at the view count under the post. X's help says anyone can see view counts on posts, checkmark or not. Views aren't unique people, and older posts have none.
Is there a free Twitter account stats checker?
Yes. Any public profile shows its posts' counts for free, and our script turns one account's recent posts into a CSV on Weir's free monthly credits. For many accounts, our guide to getting tweets with Python shows the search side.
Is X Analytics free in 2026?
X's ads help page still calls it free with an ads account. Guides like Hootsuite's say the full dashboard needs Premium. Open it logged in to see which applies to you.
Sources
Checked on 22 October 2026. X's help and business pages blocked direct reads, so we read Wayback copies, dated in brackets:
- X Help Center, view counts (27 July 2026): https://help.x.com/en/using-x/view-counts
- X Business, post activity dashboard (13 June 2026): https://business.x.com/en/help/campaign-measurement-and-analytics/tweet-activity-dashboard
- X Help Center, About X Premium, with US prices (10 October 2026): https://help.x.com/en/using-x/x-premium
- X Help Center, dashboard article, now a redirect: https://help.x.com/en/managing-your-account/using-the-post-activity-dashboard
- X Terms of Service, effective 9 October 2026 (17 October 2026): https://x.com/en/tos
- X API metrics, read directly: https://docs.x.com/x-api/fundamentals/metrics
- Hootsuite, X analytics guide (12 December 2025): https://blog.hootsuite.com/twitter-hacks/
- TwitterAPI.io pricing: https://twitterapi.io/pricing
- Weir docs: https://docs.weirapp.io/reference/x/getXUserPosts and https://docs.weirapp.io/billing
- Our @NASA timeline call through Weir, 22 October 2026, 8 credits