X (Twitter) Trends Scraper
Pricing
from $3.50 / 1,000 results
X (Twitter) Trends Scraper
Get trending hashtags and topics on X (Twitter) for worldwide, 50+ countries and 400+ cities, live or past 24 hours. Each trend has rank, rank change, hours trending and reach across your locations as clean JSON. Bulk locations, no account needed.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
📈 What is X (Twitter) Trends Scraper?
X (Twitter) Trends Scraper gives marketers, social media managers, newsrooms and analysts social media monitoring and trend detection for X: see what is trending in each country and city, and how each trend moves from hour to hour. This Twitter trends scraper returns the X trending topics and hashtags for worldwide, a country or a city: the current list plus the lists from up to about 24 hours ago, each trend with its rank, rank change, hours on the list and best rank. Enter a location such as worldwide or Japan and click Start: you need no code, no X account and no cookies, and you can try it on the Apify Free plan with the $5 monthly credit.
- 📡 Social media monitoring: see what each of your markets is talking about in one run, instead of switching between countries by hand.
- 🆕 Emerging trend detection: spot new entries (
isNew) and fast climbers (rankChange) compared with the previous list, about an hour earlier. - 🔖 Hashtag research: see how long a trending hashtag has been on the list and the best rank it has reached.
- 🗓️ Content planning: check which trending hashtags on X today still have momentum before you write a post, a newsletter or a campaign.
- 🌐 Market research: compare the same trend across countries and cities and see in how many of your locations it appears (
locationsTrendingIn). - 📰 Newsrooms and PR: use it for trend detection on X. See which topics trend and for how long, with
trendingForHours,firstSeenandpeakRank.
Trend lists are published about every hour and kept for about 24 hours. The Actor reads these public lists for each location you add, compares each list with the one before it, and gives you one clean table that you can export or fetch through the Apify API.
What can X (Twitter) Trends Scraper do?
- 🌍 Many locations in one run: worldwide, countries and cities, as many as you add.
- 🕒 Current and past lists: the current (live) list, the lists from 1, 3, 6, 12 or 24 hours ago, or every list kept (about 24 hours).
- 🚀 Rank movement: previous rank, rank change and a new-entry flag for every trend.
- ⏳ Longevity: hours on the list without a break, first seen, best rank and how many lists the trend appeared in.
- 🔖 Hashtags, topics or both, plus a keyword filter.
- 🔗 A search link to X for every trend.
- 📦 Export to JSON, CSV, Excel, XML or HTML. Run it through the API or on a schedule, or connect it to Google Sheets, Make, Zapier and MCP clients.
🗃️ Twitter trends scraper data: what can you extract?
Each row is one trend from one list. All times are in UTC.
| Field | What it means |
|---|---|
🔥 trend | The trending hashtag or topic |
🏅 rank | Position in its list (1 = top) |
📍 location | Worldwide, the country or the city |
🕒 timePeriod | Live, or how long before the live list it was published (for example 3 hours ago) |
🚀 rankChange / previousRank | Places gained (+) or lost (-) since the previous list, and the rank in that list |
🆕 isNew | true when the trend was not in the previous list |
⏳ trendingForHours / firstSeen | Hours on the list without a break, and when that streak started |
⌛ startedBeforeWindow | true when the streak reaches the oldest list, so the real start is earlier |
⭐ peakRank / peakRankAt | Best rank so far and when it was reached |
🔁 appearancesIn24h | In how many lists of the window the trend showed up |
🔖 isHashtag | true for hashtags, false for plain topics |
🌐 locationsTrendingIn | In how many of your locations the same trend appears (only when you request several locations) |
🔗 url | Link to the live X search for the trend |
🔢 volume | Number of posts, only when the list shows a count |
📅 time, snapshotTime, snapshotAgeHours | Run time, when the list was published and how old the list is in hours |
🗂️ source, degraded | Whether the row came from the main lists or the backup list (degraded: true) |
A trend list is the ranked list of trends for one place at one moment. Because a new list comes out about every hour, the Actor can tell you whether a trend is new, climbing, falling or long-running.
Note:
volumeis often missing, because many lists show no post count.rankChange,previousRankandisNeware empty for the oldest list, which has nothing earlier to compare with.Backup list: sometimes the full hourly lists for a country or for worldwide can't be read. The Actor then uses a simpler backup list with the current trends only. Those rows have the rank but no history fields, and
degradedistrue. Cities have no backup list.
What data can't X (Twitter) Trends Scraper extract?
- The posts behind a trend. You get the search link instead.
- Lists older than about 24 hours. Use scheduled runs to build your own archive.
- Account or user data, and trend categories.
For news coverage of a trending topic, use Google News Scraper. For public posts about it on Threads, use Search Threads By Keywords.
▶️ How to scrape Twitter trends
- Create a free Apify account with your email.
- Open X (Twitter) Trends Scraper.
- Add your places under Locations, one per line (for example
WorldwideandUnited States). - Click Start. Trends show up in the Output tab while the run is still going.
- Download your data in JSON, CSV, Excel, XML or HTML.
💲 Twitter trends scraper pricing: how much does it cost?
X (Twitter) Trends Scraper uses pay-per-event pricing. Your bill has three parts:
- Results: each trend saved to the main Trends table is charged at your plan's price (see the table below).
- Start fee: $0.00005 per run.
- Platform usage: the computing time the run uses, billed to your Apify account.
The Hashtags, Topics and Locations tables and the run summary are free copies. Only rows in the main Trends table are charged. Rows removed by your filters are not charged.
| Apify plan | Price per trend | Price per 1,000 trends |
|---|---|---|
| 🆓 Free | $0.00499 | $4.99 |
| 🌱 Starter | $0.0045 | $4.50 |
| 📶 Scale | $0.004 | $4.00 |
| 🏢 Business and higher | $0.0035 | $3.50 |
The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.
Examples (result charges and start fee only, before platform usage):
- Free plan price, a run that saves 10 trends: 10 × $0.00499 = $0.0499, plus the $0.00005 start fee = $0.04995.
- Starter plan, the prefilled input (2 locations × 10 trends = 20 trends): 20 × $0.0045 = $0.09, plus $0.00005.
How long each list is depends on the place and the hour, and the Actor doesn't fix a number. So maxItems set to 0 (all trends), especially together with all time periods (about 24 lists per location) and many locations, can create many rows. Do a small test run first and read the cost on the run page. All events are also listed on the pricing tab.
Is scraping X trends free?
You can start for free. The Apify Free plan gives you $5 of credit every month. That credit pays the result charges ($0.00499 per trend on the Free plan), the start fee and platform usage. Free-plan runs work the same as paid runs: the Actor sets no extra limit for them. Do one small test run and check its cost on the run page to see how far your credit goes.
On every plan, your Max trends per location setting and your maximum charge limit decide how many trends you get.
To cap your spend on any plan, set a maximum charge limit in the run options when you start a run. When the limit is reached, the Actor stops and keeps every trend saved so far.
⬇️ Input
The only required field is Locations. Everything else has a working default.
Settings most people change
| Setting | What to enter | Default |
|---|---|---|
📍 Locations (urls) | Place names, one per line: Worldwide, a country (United States, Japan), a city (New York), or a city with its country (Mumbai, India) | prefilled: worldwide, united-states |
🎚️ Max trends per location (maxItems) | Most trends to save for each location. 0 = all trends of the chosen periods | 10 |
🕒 Time periods (timePeriods) | live, 1h, 3h, 6h, 12h, 24h, or all (every list kept, about 24 hours) | live |
🔖 Trend type (trendType) | all (hashtags and topics), hashtags or topics | all |
🔍 Keyword filter (keywords) | Keep only trends that contain one of these words. Empty = no filter | empty |
The names in brackets are the API names. The Locations field is called urls in the API, but you enter place names, not links. The Proxy (proxyConfiguration) setting is optional. Leave it as it is unless you want to use your own proxy.
Example: Twitter trends USA and worldwide in one run
This is the prefill with the default settings. It saves up to 20 trends: 10 for worldwide and 10 for the United States.
{"urls": ["worldwide", "united-states"],"timePeriods": ["live"],"trendType": "all","keywords": [],"maxItems": 10}
See the input tab for every field.
Locations: Twitter trends by country or city
Names are not case-sensitive, and spaces or hyphens both work: United States and united-states are the same location. Write each place on its own line. For Twitter trends India-wide, enter India. For one city, enter Mumbai, India.
- ✅ Good:
Mumbai, India,New York,Japan,Worldwide - ❌ Bad:
Mumbai India, Pune(two places on one line)
⚠️ A city name that exists in several countries returns every matching city. Each match is saved and charged. Add the country (
Birmingham, United Kingdom) to get only the city you want.
There is no fixed list of places in this README. The supported cities are checked on every run. If a name isn't supported, the Locations table shows not_found for it, usually with "did you mean" suggestions.
Max trends per location
maxItems counts per location, across all chosen time periods together. Rows are taken in order: the live list first, then the older lists, each in rank order. With the default 10 and two periods, you usually get only the top 10 of the live list.
- ✅ Good:
"timePeriods": ["live", "3h"], "maxItems": 0(both lists in full) - ❌ Bad:
"timePeriods": ["live", "3h", "24h"], "maxItems": 10(expecting 10 per period)
⚠️ Every saved trend is charged.
0withallperiods and many locations can create many rows, so set a maximum charge limit.
Twitter trends last 24 hours: how the time periods work
live is the newest list. 1h to 24h are the lists published that long before it, and all returns every list kept. About 24 hours of lists are kept, sometimes a bit less. A period older than that uses the oldest list, and snapshotAgeHours shows its real age. A period with no list close to it is skipped, and two periods that point to the same list are saved once. Each of these cases adds a note to the Locations table.
Trend type: only Twitter trending hashtags, only topics, or both
hashtags keeps the trends that start with #, and topics keeps the rest. Every saved trend is also copied into a separate Hashtags or Topics table.
Keyword filter
The filter is a case-insensitive "contains" match, and a leading # on your keyword is ignored. Use specific words: ai also matches Dubai and Thailand.
⬆️ Output
Where do I find the Twitter trends data after a run?
Watch the rows arrive in the Output tab while the run is going. To download them, go to Storage → Datasets, open the dataset and click Export to get JSON, CSV, Excel, XML or HTML. Times are in UTC, and Excel or Google Sheets can convert them to your time zone.
| Table | What's inside |
|---|---|
| 📈 Trends (main, charged) | Every saved trend. Views: Trends, Rank movement, Longevity and reach, Freshness |
| 🔖 Hashtags | The same rows, only hashtags |
| 💬 Topics | The same rows, only plain topics |
| 📍 Locations | One row per location: status (ok; backup = backup list with current trends only; not_found = name not recognized; error = lists couldn't be read), lists found, current trends, trends saved, newest list time and a note |
The run also saves a short summary record called RUN_SUMMARY: trends saved and charged, locations read, and whether your charge limit was reached. Find it under Storage → Key-value store (the run's small file storage). The run's Log tab shows the same progress in plain sentences.
JSON example
These are shortened rows for the input example above. The first row is from a real run. The second row shows what a brand-new entry looks like, with an example topic name. Real values change every hour.
[{"time": "2026-10-23T08:03:24.017Z","timePeriod": "Live","location": "Worldwide","trend": "#RoVTPOPTournament","rank": 4,"rankChange": 1,"previousRank": 5,"isNew": false,"trendingForHours": 2.6,"startedBeforeWindow": false,"firstSeen": "2026-10-23T04:37:00.444Z","peakRank": 4,"peakRankAt": "2026-10-23T07:12:57.189Z","appearancesIn24h": 4,"isHashtag": true,"locationsTrendingIn": 1,"url": "https://x.com/search?q=%23RoVTPOPTournament","snapshotTime": "2026-10-23T07:12:57.189Z","snapshotAgeHours": 0.8},{"time": "2026-10-23T08:03:24.017Z","timePeriod": "Live","location": "United States","trend": "Example Topic","rank": 12,"rankChange": null,"previousRank": null,"isNew": true,"trendingForHours": 0,"startedBeforeWindow": false,"firstSeen": "2026-10-23T07:10:41.502Z","peakRank": 12,"peakRankAt": "2026-10-23T07:10:41.502Z","appearancesIn24h": 1,"isHashtag": false,"locationsTrendingIn": 1,"url": "https://x.com/search?q=Example%20Topic","snapshotTime": "2026-10-23T07:10:41.502Z","snapshotAgeHours": 0.9}]
💡 Tips and advanced usage
How many results can you scrape with X (Twitter) Trends Scraper?
That depends on how many locations you add, the time periods, maxItems, your filters and how long each list is. The Actor sets no cap of its own on any plan. A small test run shows how many trends your locations give.
How to get cheaper results
- Pick only the time periods you need.
allgives about 24 lists per location. - Keep
maxItemssmall and usetrendTypeorkeywordsto save only relevant rows. - Put all your locations into one run instead of starting one run per location. You pay the start fee once.
Run it on a schedule: follow Twitter hashtag trends every day
This recipe turns the Actor into a simple Twitter trends tracker for daily trend monitoring in one market. It does hashtag tracking for trending hashtags only: a hashtag that isn't trending won't appear.
- Set Locations to
United States, Time periods tolive, Trend type tohashtagsand Max trends per location to10. - Click Save as new task.
- In the task, open Schedules and add a schedule.
- Within each run,
isNew,rankChangeandtrendingForHoursalready show what changed since the previous list. To follow Twitter trends over time beyond 24 hours, send each run to Google Sheets (see the setup below).
Cost of the schedule at 10 trends per run, Free plan price (result charges only, before start fees and platform usage):
| Schedule | Result charges per day | Per 30 days |
|---|---|---|
| ☀️ Daily | 10 × $0.00499 = $0.0499 | $1.497 |
| ⏰ Hourly | 24 × 10 × $0.00499 = $1.1976 | $35.928 |
At these rates, an hourly schedule uses more than the $5 monthly credit in under 5 days, sooner once platform usage is added. If you rely on the monthly credit, run it daily. Set a maximum charge limit in the task's run options, so a single run can't cost more than you planned.
Known issues
volumeis missing in most rows.- History reaches back about 24 hours only.
- Cities have no backup list. If a city's lists can't be read, the Locations table shows
errorfor it. Run again a little later. - If the newest list for a location is more than 4 hours old, the Log tab shows a warning that it may not be fully up to date. Run again later to get a fresher list.
🔌 Twitter trends scraper integrations and API
Can I use X (Twitter) Trends Scraper as a Twitter trends API?
Yes. The Apify API lets you start runs, schedule them and fetch results, so you get an X trends API without an X developer account. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. The API tab has ready-to-use code.
Twitter trends Python example
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("insights_data/twitter-trends-scraper").call(run_input={"urls": ["worldwide", "united-states"],"timePeriods": ["live"],"trendType": "all","keywords": [],"maxItems": 10,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["location"], item["rank"], item["trend"])
Twitter trends Google Sheets setup
- Create the scheduled task from the recipe above.
- In the task, open the Integrations tab and choose Google Sheets.
- Connect your Google account, pick the spreadsheet and follow the setup steps.
After each finished run, the results go to your spreadsheet. Your team gets a Twitter trends report without opening Apify.
Can I integrate X (Twitter) Trends Scraper with other apps?
Yes. You can connect it to many cloud services through Apify integrations, such as Make, Zapier, Google Sheets, Google Drive, Airbyte, GitHub and LangChain. Three workflows that fit trend data:
- 📄 Google Sheets: a sheet that fills itself after every scheduled run (steps above).
- 🔔 Slack alert for new trends: this needs a webhook plus Make, Zapier or n8n. Add a webhook that fires when a run succeeds. In Make, Zapier or n8n, read the run's dataset, keep only rows where
isNewistrue, and post them to a Slack channel. - 📊 Twitter trends analytics dashboard: load the dataset into your BI tool through the API and chart rank and streak length per location.
Can I use X (Twitter) Trends Scraper with AI agents (MCP)?
Yes. Connect it to Claude and other AI assistants through the Apify MCP server, so an agent can start a run and read the results. Open the MCP tab for setup steps.
🧭 Other social trend and news research scrapers
X is one network. For social media trend monitoring on TikTok, Threads and Weibo, or to follow a trend into the news and into Google search demand, use these Actors from the same team:
| Actor | What it adds |
|---|---|
| 📰 Google News Scraper | News headlines, publishers, dates and article links by search term, topic or link |
| 🧵 Search Threads By Keywords | Threads posts by keyword, #hashtag, phrase or @username, with likes, replies and reposts |
| 🎵 TikTok Hashtag Scraper | TikTok videos under any hashtag with views, likes, comments, shares and author stats |
| 📣 Weibo Scraper — Posts, Comments, Profiles & Hot Search | Weibo posts, #topics# with read counts and hot search boards |
| 💹 Stocktwits Scraper | Stock and crypto messages, bullish/bearish sentiment and trending symbols |
| 🔑 Keyword Search Volume — Bulk Google Metrics (CPC & Trend) | Google search volume, CPC and a 12-month trend for a trending term |
❓ FAQ
Is it legal to scrape Twitter trends?
Scraping publicly available data is generally legal, and trend lists are public, ranked lists of topics. Still, take X's Terms of Service into account, respect intellectual property, and only collect personal data (for example when you open the posts behind a trend) with a legitimate reason under laws like GDPR. This isn't legal advice.
How does this X trends scraper work?
For each location you add, it reads the public trend lists (the current list and the past lists it keeps) and picks the lists for your time periods. It compares each list with the one before it to work out rank movement, streaks and best rank. It then applies your filters and limits and saves each trend as a row.
How is it different from the official X API?
| Official X API trends endpoint | X (Twitter) Trends Scraper | |
|---|---|---|
| Account | Needs X API credentials (X API docs) | No X account needed |
| Trends per request | Up to 50 per location (X API reference) | Every trend in the chosen lists, limited by maxItems |
Are the Twitter trends live?
The live list is the newest list available. Lists are published about every hour, so it isn't a minute-by-minute feed. snapshotTime and snapshotAgeHours tell you how fresh each row is.
How far back does the Twitter trends history go?
About 24 hours, which is how long the lists are kept. Pick all for every list in that window. For a longer history, run the Actor on a schedule and keep each run's data.
How to get worldwide trends on Twitter?
Add worldwide under Locations and click Start. The worldwide location gives you Twitter trends worldwide: the global list with ranks and movement. Add countries or cities on new lines to compare them with it.
How can I check Twitter trends today for several countries at once?
Put every country on its own line under Locations, for example United States, United Kingdom and India, and start one run. Max trends per location applies to each country, so 3 countries with 10 give up to 30 trends.
Can I get Twitter trends by location, such as a single city?
Yes. Enter the city with its country, for example Mumbai, India or New York. Cities only come from the main lists, because the backup list doesn't cover cities.
How do I view Twitter trends without account or login?
Run this Actor. It reads public trend lists, so you get Twitter trends without login, cookies or an X account. Every trend comes with a search link you can open in your browser.
Does it cover TikTok, Threads or other networks?
No, it covers X (Twitter) only. For trending topics today on social media sites like TikTok, Threads or Weibo, see the Actors listed above.
Does it return Twitter trending topics as well as hashtags?
Yes. By default you get both, and isHashtag tells them apart. Set Trend type to topics or hashtags to keep only one kind.
Why scrape Twitter trends?
Mostly for Twitter trend analysis: a dated record of what rose, fell and lasted in each market, which you can't get from screenshots of the app. It also feeds hashtag choices, editorial planning and regional comparisons.
Why am I getting fewer results than expected?
maxItemscounts across all time periods per location (see above). Set it to0to get all of them.- Filters:
keywordsandtrendTyperemove rows that don't match. - Location problems: open the Locations table.
not_foundmeans the name wasn't recognized, so check the spelling and the suggestions.errormeans the lists couldn't be read, so run again a little later. - Charge limit: if your maximum charge limit was reached, the run stopped early.
📧 Support and feedback
Found a bug or want a new field? Please create an issue on the Issues tab.
Need a custom solution, such as a custom trend archive or other data? Contact us at hello.insights.data@gmail.com.
Built and maintained by Insights Data.