Twitter Trends by Country: How to Read Them and How to Get Them Programmatically

12 min readSocialAPI Engineering

Twitter Trends by Country: How to Read Them and How to Get Them Programmatically

The trends list in your sidebar is not the trends list. It's a trends list — one of several hundred, picked for wherever X thinks you are.

That's the single most misunderstood thing about trends, and it has practical consequences. Two people looking at "what's trending on Twitter" at the same moment are often looking at genuinely different data, and neither is wrong.

This covers how the regional system actually works, what the ranking does and doesn't mean, and how to pull any region's list yourself.


X maintains separate trend lists for individual locations — worldwide, countries, and many individual cities. Each is computed from activity associated with that place.

In the interface you get the list for your detected location, which you can change: More → Settings and privacy → Content preferences, then turn off "Trends for you" to pick a different location manually.

What this means in practice: a topic can dominate one country's list and be entirely absent from its neighbour's. A US political story might rank #1 in the United States, #12 worldwide, and nowhere at all in India. None of those is the "real" number.

★If you're tracking trends for work, the location you query is the measurement.★ Comparing a number you pulled from the worldwide list against one someone pulled from a country list is comparing two different things. (All 467 regions are queryable individually if you need to be precise about which one you mean.)


This trips up a lot of people, so it's worth being precise.

Trending is about acceleration, not volume. A topic with steady high chatter — a football club, a major brand — may never trend, because its volume is normal for it. A topic that jumps sharply from a low baseline trends immediately, even at a fraction of the absolute volume.

That's why you see unfamiliar things trending above obviously bigger topics. The ranking isn't "most discussed", it's closer to "most unusually discussed right now".

Two consequences worth internalising:

  • Big steady topics under-appear. If you're monitoring a well-known brand, absence from trends doesn't mean absence of conversation. You need keyword monitoring for that, not the trends list.
  • Trends decay fast. A topic that trends at 9am is often gone by noon — not because discussion stopped, but because it stopped accelerating. If you're only checking once a day, you're missing most of what trended.

⚠️ The volume number, when shown, is not a total. Some entries display a post count; many display nothing. When it's absent that's not an error — it isn't published for every entry. Build for it being missing.


Reading a trend list properly

A raw list of fifty strings isn't much use on its own. What makes it useful is comparison.

Across time. One snapshot tells you what's happening; a series tells you what's rising. Poll on a schedule, store each snapshot with a timestamp, and you can see a topic climb before it peaks — which is the only version of this data that's actionable in advance.

Across locations. The same query against several regions tells you whether something is local or global. A topic in one country's list only is a local story. The same topic in fifteen countries is something else entirely, and you'd want to know which one you're looking at before reacting.

Against your own baseline. For any recurring interest — a sector, a competitor set, a topic area — what matters isn't whether something trends, but whether it trends more than usual. That needs history, which means collecting from now on.


Two calls: one for the list of available regions, one for a region's current trends.

import requests

BASE = "https://api.socialapi.tech"
KEY  = "your_api_key"
HDRS = {"X-API-Key": KEY}

def available_locations():
    """Every region X publishes a trend list for, with its WOEID."""
    r = requests.get(f"{BASE}/v1/trends/locations", headers=HDRS, timeout=60)
    r.raise_for_status()
    return r.json()["data"]

def trends_for(woeid=1):
    """Current trends for one region. woeid=1 is worldwide."""
    r = requests.get(
        f"{BASE}/v1/trends/place",
        params={"woeid": woeid},
        headers=HDRS,
        timeout=60,
    )
    r.raise_for_status()
    return r.json()["data"]

locations = available_locations()
print(f"{len(locations)} regions available")

world = trends_for(1)
print(f"as of {world['as_of']}\n")

for i, trend in enumerate(world["trends"], 1):
    volume = trend.get("tweet_volume")
    suffix = f"  ({volume:,} posts)" if volume else ""
    print(f"{i:>2}. {trend['name']}{suffix}")

What comes back: each region returns a fixed list of 50 trends, plus an as_of timestamp and the location it belongs to. Every trend has a name; tweet_volume is present on some and null on others, so the .get() above isn't defensive padding — it's the normal case.

Regions: 467 of them, worldwide plus countries plus individual cities. woeid=1 is worldwide; look up the rest from the locations call rather than hardcoding IDs.


Comparing several countries at once

This is where it stops being a sidebar widget and becomes analysis:

def compare(woeids):
    """Which trends are shared across regions, and which are local?"""
    from collections import Counter

    seen = Counter()
    per_region = {}

    for name, woeid in woeids.items():
        data = trends_for(woeid)
        names = [t["name"] for t in data["trends"]]
        per_region[name] = names
        seen.update(names)

    print("appearing in multiple regions:")
    for trend, count in seen.most_common():
        if count > 1:
            where = [r for r, ts in per_region.items() if trend in ts]
            print(f"  {trend:<30} {count} regions: {', '.join(where)}")

# WOEIDs from the locations call
compare({"Worldwide": 1, "United States": 23424977, "India": 23424848})

What this answers that the sidebar can't: whether the thing you're looking at is a global event or a local one.★ That distinction usually determines whether it's worth responding to.


Two honest limitations

Trends are a snapshot, not a history. X publishes what's trending now. There's no endpoint that returns "what was trending last Tuesday" — that history exists only if someone was recording it. If you want to be able to answer questions about past trends, start storing snapshots today. The same asymmetry applies here as to archiving posts: forward is cheap and complete, backward is impossible.

The ranking method isn't published. X doesn't document how position is computed, and it demonstrably involves more than raw counts — personalisation, deduplication of near-identical topics, and some filtering all appear to play a part. Treat position as a signal, not a measurement. Anyone claiming to know the exact formula is guessing.


Questions people ask

How do I see Twitter trends for another country? In the interface: Settings and privacy → Content preferences → turn off "Trends for you" and pick a location. In code: query that region's WOEID.

What are Twitter trends based on? Sharp increases in discussion, not total volume. A topic that jumps from a low baseline trends; a consistently busy topic often doesn't.

How many trends does Twitter show? The interface shows a short list, typically around ten. The underlying regional list is 50.

How often do Twitter trends update? Continuously — they shift over minutes, not hours. Checking once a day misses most of what trended that day.

What is a WOEID? "Where On Earth ID" — a numeric identifier for a place. 1 is worldwide. Get the rest from the locations list rather than hardcoding.

How many locations have trends? 467 regions, covering worldwide, countries, and many individual cities.

Why is something trending in one country but not another? Because the lists are computed per location. That's the system working as designed, not an inconsistency.

Can I see historical Twitter trends? Not from X — it publishes current trends only. Historical data exists only where someone recorded snapshots over time.

What does the number under a trend mean? Post count for that topic, when shown. It's frequently absent, which is normal rather than an error.

Why do my trends look different from someone else's in the same country? Personalisation. The interface blends location with your interests, which is why two people in one city can see different lists. A location query returns the unpersonalised list.

How do I get trends for a specific city? Find the city in the locations list and query its WOEID. Not every city has one — coverage is broad but not total.

Can I turn off personalised trends? Yes — Content preferences → turn off "Trends for you", then choose a location explicitly.

How long does a trend last? Often under a few hours. Because trending measures acceleration, topics drop off once growth flattens even if discussion continues.

Why isn't my hashtag trending despite lots of posts? Probably steady rather than accelerating, or the volume is small next to what's competing for the same list. Steady volume rarely trends.

Can I track when a topic starts trending? Only by polling and comparing snapshots. Nothing pushes you an alert when something enters a list — you detect it by seeing it appear in a poll that it wasn't in before.

Are trends the same as most-posted topics? No, and this is the most common misreading. Most-posted is volume; trending is change in volume.

How do I find trending hashtags? They appear in the same list — hashtags and plain phrases both trend, and the list mixes them.

Can trends be manipulated? Coordinated activity to push a topic is a known phenomenon and X takes action against it. In practice, treat unusual entries with some scepticism rather than as pure organic signal.

What's the difference between trends and search? Trends tell you what's rising. Search tells you what's being said about a thing you already named. Different questions.

How do I monitor trends automatically? Poll the regions you care about on a schedule and store each snapshot. That collection is what turns a live list into something you can analyse.

Do trends differ on mobile and web? The underlying data is the same; presentation and how many entries are shown differ.

Can I get trends without an account? Some are visible logged out, with restrictions. Not a reliable basis for anything automated.

What are the top trends in Twitter right now? Whatever the trends list for your location shows this minute. "Trends on Twitter now" and "current trends on Twitter" change continuously — a list you screenshot at 9am is stale by lunchtime.

How do I see Twitter trend topics for India? Query India's WOEID, or set your location to India in Content preferences. The same method gets you Twitter trends India, Pakistan, the United States, or any of the 467 regions.

Why do top Twitter trends in Pakistan differ from India? Because trend lists are computed per location. Neighbouring countries routinely show almost no overlap — that's the design, not an inconsistency.

What is trending in America right now? Pass the US WOEID to the trends call. ★There is no single "American" list★ — the country and its major cities each have their own.

What are the US Twitter trends? A national list plus separate city lists. ★A topic can top New York and be absent nationally★, which is normal.

What is trending in India today? Same mechanism, different WOEID. India's list is among the most active on the platform.

What is trending worldwide? A global list exists, but ★it is dominated by the largest language communities★ and rarely reflects any individual user's experience. Several hundred locations are available, each with its own WOEID.

How do I get a trending checker? Read the trends endpoint on a schedule. ★That is all any checker does★ — the value is in storing the history.

What is trending today versus right now? ★The endpoint only knows "right now."★ "Today" requires that you saved earlier readings — nobody serves you yesterday's list.

Are trending hashtags different from trending topics? The same list contains both. A trend is any term accelerating, tagged or not.

How often do trends update? Continuously, on the order of minutes. ★Poll far less often than that★ — the list is shared and heavily cached.

How many trends are returned? Around fifty per location. The visible top ten in the app is a truncation.

Can I see historical trends? Only what you recorded. ★The platform serves the current list and keeps no archive for you.★

Why is a trend missing from my app but present in the API? Your app list is personalised; ★the regional list is not★. They are genuinely different lists.

Can I find trends for a city? If that city has a WOEID. ★Major cities do; smaller ones fall back to the country.★

What makes something trend? Acceleration, not volume. ★A term used steadily for years never trends★, however large.

How do I track a trend over time? Poll on a fixed interval and store each snapshot. The interval must stay constant to be comparable.

Can I see how long something trended? Only by having sampled throughout. Duration is something you measure, not something you fetch.


If you're building on this

The trends themselves are one call. What takes the work is everything around it: polling several regions on a schedule, storing snapshots so you have a baseline to compare against, and handling the fact that tweet_volume is often null.

That's what our API covers — all 467 regions, 50 trends each, with the region dictionary available as its own call so you're not maintaining a hardcoded WOEID table. Flat price per call, no rate limit of your own to manage, and read-only: it reads public data and never acts on your account.

Two things we don't bill for: requests we reject before they leave us, and errors on our side.

Related reading: monitoring specific keywords in real time · advanced search operators · measuring engagement on what you find.