Skip to main content
GET
Twitter trends archive API & trends history by date
1 credit per list returned · All plans from $0.00012/credit
Use GET /x/trends/history to read the Twitter trends archive of a place. It answers what was trending on Twitter yesterday, last week, or on any day since 2026-10-13. Xquik stores 1 list per place every 5 minutes and keeps each list for 25 months. The archive starts 2026-10-13 02:20 UTC. Earlier trends are not available. Each returned list costs 1 credit, so 24 lists cost 24 credits. A step with no stored list returns nothing and costs nothing. Pick the place by country, location, or woeid. Without one, trends are worldwide. Set the range with from and to, and the step with every. Each step returns the first list Xquik stored in it, oldest first. Every list carries capturedAt, the time Xquik read it from X. Xquik never estimates that time. A request returns 24 lists, or up to 100 with limit. A wider range answers has_next_page as true. Send next_cursor as cursor for the next lists. For 1 past moment, send at to Get X trends instead.

Query parameters

integer
Positive Where On Earth ID for the region. It wins over country and location. Invalid or nonpositive values fall back to those names, then to 1 (worldwide). List trend locations returns every place.
string
Country to read trends history for, by name or 2-letter code, such as Turkey or TR. Case insensitive.
string
Town or country to read trends history for, by name, such as Istanbul. Case insensitive. Add country when 2 towns share a name.
string
Start of the range. Takes an ISO 8601 time, a date such as 2026-10-13, or Unix seconds. A time without a zone reads as UTC. Defaults to 24 hours before to. History starts 2026-10-13 02:20 UTC, and a range that begins earlier returns the stored part. Alias sinceTime.
string
End of the range, which it leaves out. Takes the forms of from. Defaults to now. Alias untilTime.
string
Step between 2 returned lists, as a number and m, h, or d, such as 15m, 1h, or 1d. Default 1h. A step under 5m returns every stored list.
integer
Number of trends in each list. Default 30, max 50. Invalid or below-minimum values fall back to 30.
integer
Maximum lists 1 request returns and charges. Default 24, max 100. Your credit balance can return fewer.
string
The next_cursor of the page before, for the next lists.

Choose fields

string
Fields to keep in each row, comma-separated, such as id,text,author.username. Use dots for nested fields. Case & underscores do not matter. A row that lacks a field leaves it out. Cursors, counts & diagnostics always stay. An unknown name returns 400 unknown_field with the valid names, before any read. The price stays the same.
string
Fields to drop from each row, comma-separated, such as entities,media. It takes the same names as fields. With fields, it drops from the kept fields.

Headers

string
Send a full Xquik account API key.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

object[]
1 stored list per step, oldest first. A step with no stored list is left out. Snapshot object fields.
string
When Xquik read this list from X, as ISO 8601 in UTC. It comes from the stored list and is never estimated.
number
Trends in this list.
The trends of the list, with the fields of Get X trends. rank is the trend’s place in X’s list at that time.
number
Lists returned and charged.
number
WOEID used for the request.
object
The place country or location named, with the fields of a trend location. Absent when woeid picked the place or the request named none.
boolean
Whether the range holds more lists.
string
Send it as cursor for the next lists. Empty on the last page.

400 Invalid input

The range ends before the place’s first stored list. The message names that first time. An unknown place, a time or step Xquik cannot read, and a from after to also return 400. The request costs nothing.

401 Unauthenticated

Anonymous requests get WWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.

402 Payment required

Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.

502 X API unavailable

The read service returned an error. Retry after a short delay.

503 Service busy

Xquik is busy. Wait for Retry-After, then retry.

429 Rate limit exceeded

The Xquik tier limit blocked the request. Use Retry-After when present. Otherwise, use the JSON retryAfter field.

424 Dependency failed

The opt-in normalized contract returns 424 when the read service fails. Send xquik-api-contract: 2026-04-29 to opt in. Default v1 returns 502. Call GET /x/trends/history with yesterday’s date as from and today’s date as to. Add every=1h for 1 list per hour, or every=1d for the first list of the day. It starts 2026-10-13 02:20 UTC. Xquik keeps each list for 25 months. A range that ends before the start returns 400 and costs nothing.

How often does Xquik store a list?

Every 5 minutes, for every place X offers trends for. A step under 5m returns every stored list. Each returned list costs 1 credit, so 24 lists cost 24 credits. A step with no stored list costs nothing. A request returns 100 lists at most.

What if no list matches a step?

The response leaves that step out. Xquik never fills a gap with a made-up list. Each returned list states its own capturedAt.

Does this replace X’s official API?

No. This page documents Xquik, an independent third-party service. It does not document X’s official API.
Next steps. Get X trends reads the current trends of a place, or 1 past moment with at.