Practical Tools
twitter-trendsx-apiweb-scrapingsocial-monitoring

Monitor Twitter Trends Free: No API Key Needed

Track global Twitter hashtag trends without paying for the X API. Use a pay-per-event Apify actor to monitor trends free and at scale.

Monitor Twitter Trends Free: A Practical Workaround for the Dead Free Tier

You can monitor Twitter (X) hashtag trends globally without paying for the X API by using a pay-per-event Apify actor that scrapes the public trends panel directly from X.com. Since X deprecated trends/available and trends/place for free-tier developers in 2023, the cheapest legitimate path is a maintained scraper that returns the same WOEID-keyed data structure for cents per call. The Twitter Trends API Global/Country actor does exactly this and costs roughly $0.20–$1 per 1,000 trend pulls depending on region count.

Quick Answer

To monitor Twitter trends free of the $200/month X API Basic tier, run the Twitter Trends API Global/Country actor on Apify and pay only for the calls you make. It pulls real-time trending topics for global and country-level locations (US, UK, Japan, Brazil, India, and ~60 others) directly from X.com's public web interface. You get the trend name, tweet volume when available, and location code in JSON — the same fields the deprecated GET trends/place endpoint returned. Schedule it every 15–60 minutes via Apify's built-in scheduler, push results to a webhook or dataset, and stay under $10/month for most monitoring use cases. No OAuth, no developer account approval, no rate-limit math.

In February 2023, X (then Twitter) killed free access to the v1.1 trends endpoints. The current pricing as of 2026:

  • Free tier: Post tweets only, no read access to trends.
  • Basic: $200/month, includes some read endpoints but trends are limited and rate-capped.
  • Pro: $5,000/month for full trends access at reasonable volume.
  • Enterprise: Custom pricing, typically $42,000+/year.

For a marketer who just wants to know what's trending in São Paulo every hour, $200/month is absurd. A scraper that costs $3/month for the same data is the obvious answer.

The trends panel on x.com/explore/tabs/trending is rendered server-side and exposed as JSON in the page's initial state. A scraper hits that endpoint, parses the payload, and returns clean data. You don't need an API key, OAuth tokens, or even a logged-in account for top-level trend lists.

Here's the minimum input for the Twitter Trends API Global/Country actor:

{
  "locations": ["worldwide", "united-states", "japan", "brazil"]
}

Run it via the Apify API:

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"locations":["worldwide","united-states"]}'

Output looks like:

[
  {
    "location": "worldwide",
    "trends": [
      {"name": "#Champions", "tweet_volume": 412000, "rank": 1},
      {"name": "Bitcoin", "tweet_volume": 287000, "rank": 2}
    ],
    "fetched_at": "2026-05-07T14:22:11Z"
  }
]

That's it. No exponential backoff, no token refresh, no 429 handling.

Apify's pay-per-event model means you're charged only for successful runs. Concrete math:

ScheduleLocationsRuns/monthApprox. cost
Every hour, 1 country1720$1–$2
Every 15 min, 5 countries514,400$8–$12
Every hour, 30 countries3021,600$15–$25
Every 5 min, worldwide only18,640$4–$6

Compare to X API Basic: $200/month flat, and you still hit caps. The scraper is 20–50× cheaper for typical monitoring workloads, and you only pay for what you actually pull.

Which countries and regions are supported?

The actor uses X's WOEID-style location slugs. As of writing it supports global trends plus ~60 country-level feeds, including:

  • Americas: United States, Canada, Brazil, Mexico, Argentina, Colombia, Chile
  • Europe: United Kingdom, Germany, France, Spain, Italy, Netherlands, Poland, Turkey
  • Asia: Japan, India, Indonesia, Philippines, South Korea, Thailand, Vietnam, Saudi Arabia
  • Oceania: Australia, New Zealand
  • Africa: South Africa, Nigeria, Egypt, Kenya

City-level trends (the old "Madrid" or "Tokyo" WOEIDs) were removed by X across the board in 2023, so no scraper can return them — this isn't a tool limitation, it's a data limitation.

How do I track a specific hashtag over time?

Trends data is a snapshot, not a time series. To build a history, store every run's output and aggregate:

  1. Schedule the actor every 15 minutes via Apify's scheduler UI.
  2. Push to a dataset (default behavior) or a webhook into your DB.
  3. Query by hashtag to build a timeline of rank and tweet volume.

Postgres example:

CREATE TABLE trend_snapshots (
  id SERIAL PRIMARY KEY,
  location TEXT NOT NULL,
  trend_name TEXT NOT NULL,
  rank INT,
  tweet_volume INT,
  fetched_at TIMESTAMPTZ NOT NULL
);

-- Find when #ElonMusk was trending in the US over the last 7 days
SELECT fetched_at, rank, tweet_volume
FROM trend_snapshots
WHERE location = 'united-states'
  AND trend_name = '#ElonMusk'
  AND fetched_at > NOW() - INTERVAL '7 days'
ORDER BY fetched_at;

You now have a free time-series of any hashtag in any supported country. Most BI dashboards (Metabase, Grafana, Looker Studio) plug into this in 10 minutes.

Can I get tweet volume for each trend?

Yes, when X exposes it. Tweet volume is included in the tweet_volume field for trends with > ~10,000 tweets. Smaller trends return null — that's how X's own API behaved too, so it's not a scraper deficiency. Roughly 60–70% of top-50 trends in major countries have a volume number; the long tail does not.

If you need volume for niche trends, you'd have to combine this with a separate tweet-count scraper (search the hashtag, count results in a window). That's a different actor and a different cost model.

Public, unauthenticated trend data is generally treated as public information. The 2022 hiQ Labs v. LinkedIn ruling in the US established that scraping publicly accessible data does not violate the CFAA. That said:

  • This is not legal advice.
  • X's ToS prohibits scraping by signed-in users; the actor avoids login.
  • For commercial redistribution of the data, talk to a lawyer.
  • For internal monitoring, dashboards, and research, this is the standard pattern thousands of teams use.

Apify supports webhooks on run completion. Point one at a tiny serverless function (Cloudflare Workers, Vercel, AWS Lambda) that formats and forwards:

// Cloudflare Worker: post top 5 US trends to Slack
export default {
  async fetch(req) {
    const run = await req.json();
    const items = await fetch(
      `https://api.apify.com/v2/datasets/${run.resource.defaultDatasetId}/items?token=${TOKEN}`
    ).then(r => r.json());

    const us = items.find(i => i.location === 'united-states');
    const top5 = us.trends.slice(0, 5)
      .map(t => `${t.rank}. ${t.name} (${t.tweet_volume?.toLocaleString() || 'n/a'})`)
      .join('\n');

    await fetch(SLACK_WEBHOOK, {
      method: 'POST',
      body: JSON.stringify({ text: `*US trends now:*\n${top5}` })
    });
    return new Response('ok');
  }
};

Total infrastructure cost: $0 (Cloudflare free tier) + actor run cost.

What are the alternatives if this doesn't fit?

  • trends24.in — free website, manual only, no programmatic access.
  • getdaytrends.com — similar, scraping it is a layer of indirection you don't need.
  • Brand24, Talkwalker, Sprout Social — full social listening suites, $99–$500+/month, overkill if you just need trends.
  • X API Pro — $5,000/month, only worth it if you also need firehose tweet data.

For pure trend monitoring at low-to-medium frequency, a pay-per-use Apify scraper wins on price and simplicity every time.

FAQ

Q: Can I monitor Twitter trends in real time without an X developer account? Yes. The scraper hits the public trends page on x.com and doesn't require any developer account, OAuth, or API key. You only need an Apify account to run the actor and receive the JSON output.

Q: How fresh is the trend data compared to the official X API? Each scraper run pulls live data at the moment of execution, so freshness is identical to what x.com itself shows — typically updated by X every 5–15 minutes. The deprecated official API had the same refresh cadence, so there's no quality gap.

Q: What happens if X changes the page structure? The actor is maintained, so structural changes are patched on the publisher's side, usually within a day. With pay-per-use pricing you don't pay during failed runs, and the actor returns clear error codes you can alert on if a fix takes longer.

Q: Can I get historical Twitter trends from before today? No actor can — X doesn't expose historical trends publicly, and they were never available on the free API either. You build history yourself by running the scraper on a schedule and storing snapshots in your own database from day one.

Q: How do I avoid being rate-limited or blocked? You don't manage this manually. The actor handles proxy rotation, request pacing, and retries internally. Stick to reasonable schedules (every 5 minutes or slower per location) and you'll never see a block in practice.