{
  "openapi": "3.0.1",
  "info": {
    "title": "X (Twitter) Trends Scraper | $0.00015/Trend | Pay-Per-Result",
    "description": "Twitter trends scraper. Get real-time X trends by country & city, or past trends from a Twitter trends archive since 2026-10-13. Get rank, volume, query & links from $0.00015 per delivered row. No X login. World's fastest & cheapest X (Twitter) scraper service. Not affiliated with X Corp.",
    "version": "1.0",
    "x-build-id": "eJfWS6RH7iMUA34jd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/xquik~x-trends-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-xquik-x-trends-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/xquik~x-trends-scraper/runs": {
      "post": {
        "operationId": "runs-sync-xquik-x-trends-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/xquik~x-trends-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-xquik-x-trends-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Country or town names, such as Worldwide, United States, Japan or London. 2-letter country codes work too. Turn on List Trend Locations to see every name.",
            "items": {
              "type": "string"
            }
          },
          "woeids": {
            "title": "Location WOEIDs",
            "type": "array",
            "description": "Numeric Yahoo Where On Earth IDs. Use this for any supported X trend location.",
            "items": {
              "type": "string"
            }
          },
          "maxTrendsPerLocation": {
            "title": "Trends per Location",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum trends requested for each location.",
            "default": 50
          },
          "maxItems": {
            "title": "Maximum Delivered Rows",
            "minimum": 1,
            "type": "integer",
            "description": "Global result cap across all locations & place search terms. The run fills it in input order, so the first term can use it all. Set Rows per Target for an even split. The form starts at 1,000. A run can return 100,000 rows & more, so raise it for a full export.",
            "default": 100000
          },
          "maxItemsPerTarget": {
            "title": "Rows per Target",
            "minimum": 1,
            "type": "integer",
            "description": "Optional row cap for each location & each place search term."
          },
          "at": {
            "title": "Past Time",
            "type": "string",
            "description": "Read what was trending on Twitter at a past time, such as yesterday. Write a date such as 2026-10-13, a time such as 2026-10-13T14:00:00Z, or Unix seconds. A time without a zone is UTC. Or write a span back from the run, such as 24h or 7d, so a schedule reads yesterday on every run. Each row gets the time of its stored list in capturedAt. History starts 2026-10-13 02:20 UTC."
          },
          "from": {
            "title": "Range Start",
            "type": "string",
            "description": "Read the Twitter trends history of each location from this time on, 1 stored list per step. It takes the forms of Past Time, so 24h reads the last 24 hours. History starts 2026-10-13 02:20 UTC. Past Time wins when both are set."
          },
          "to": {
            "title": "Range End",
            "type": "string",
            "description": "End of the range, which it leaves out. It takes the forms of Past Time. Leave it empty to read up to now."
          },
          "every": {
            "title": "Range Step",
            "type": "string",
            "description": "Time between 2 lists of a range, as a number & m, h or d, such as 15m, 1h or 1d. Leave it empty for 1 list an hour. Xquik stores 12 lists an hour."
          },
          "listLocations": {
            "title": "List Trend Locations",
            "type": "boolean",
            "description": "List the places X offers trends for, with their WOEIDs, instead of trends. Each place is one pay-per-result row.",
            "default": false
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "With List Trend Locations, keep places in this country. Use a name or 2-letter code, such as Turkey or TR."
          },
          "placeType": {
            "title": "Place Type",
            "enum": [
              "country",
              "town",
              "worldwide",
              "unknown"
            ],
            "type": "string",
            "description": "With List Trend Locations, keep one kind of place. X labels a few towns unknown."
          },
          "nameContains": {
            "title": "Name Contains",
            "type": "string",
            "description": "With List Trend Locations, case-insensitive text required in the place name."
          },
          "placeSearchTerms": {
            "title": "Place Search Terms",
            "type": "array",
            "description": "Search X places by name, such as New York, instead of trends. Each place is one pay-per-result row with the ID that X post search takes as place.",
            "items": {
              "type": "string"
            }
          },
          "listHashflags": {
            "title": "List Hashflags",
            "type": "boolean",
            "description": "List the custom emoji X shows after some hashtags, instead of trends. Each hashflag is one pay-per-result row.",
            "default": false
          },
          "hashtagContains": {
            "title": "Hashtag Contains",
            "type": "string",
            "description": "With List Hashflags, case-insensitive text required in the hashtag."
          },
          "activeOnly": {
            "title": "Running Hashflags Only",
            "type": "boolean",
            "description": "With List Hashflags, keep the hashflags X shows now. Turn off to add ended & upcoming ones.",
            "default": true
          },
          "dedupeAcrossTargets": {
            "title": "Deduplicate Across Locations",
            "type": "boolean",
            "description": "Remove the same trend returned for multiple equivalent inputs before billing.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Maximum Concurrency",
            "minimum": 1,
            "maximum": 128,
            "type": "integer",
            "description": "How many locations to process at once. The default is the fastest safe setting.",
            "default": 100
          },
          "fields": {
            "title": "Fields to keep",
            "type": "array",
            "description": "Keep only these fields in each row. Pick names or type your own. Use a dot for a field inside an object. Columns arrive in the order & spelling you write. Every row keeps its id. Leave empty for every field. The price per row stays the same. A wrong name stops the run before it reads, at no charge. If names cannot be checked, the run reads on & lists unseen names last.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "rank",
                "capturedAt",
                "requestedAt",
                "name",
                "tweetVolume",
                "query",
                "url",
                "woeid",
                "country",
                "countryCode",
                "placeType",
                "fullName",
                "centroid",
                "boundingBox",
                "attributes",
                "containedWithin",
                "hashtag",
                "assetUrl",
                "startsAt",
                "endsAt",
                "isHashfettiEnabled",
                "animations",
                "placeTypeCode",
                "parentWoeid",
                "isHashtag",
                "tweetVolumeAvailable",
                "description",
                "promotedContent",
                "id",
                "author",
                "username",
                "text",
                "createdAt",
                "media",
                "actor",
                "actorVersion",
                "timestamp",
                "resultType",
                "sourceTarget",
                "status",
                "message"
              ]
            }
          },
          "omitFields": {
            "title": "Fields to drop",
            "type": "array",
            "description": "Drop these fields & keep the rest. Every row keeps its id.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "rank",
                "capturedAt",
                "requestedAt",
                "name",
                "tweetVolume",
                "query",
                "url",
                "woeid",
                "country",
                "countryCode",
                "placeType",
                "fullName",
                "centroid",
                "boundingBox",
                "attributes",
                "containedWithin",
                "hashtag",
                "assetUrl",
                "startsAt",
                "endsAt",
                "isHashfettiEnabled",
                "animations",
                "placeTypeCode",
                "parentWoeid",
                "isHashtag",
                "tweetVolumeAvailable",
                "description",
                "promotedContent",
                "id",
                "author",
                "username",
                "text",
                "createdAt",
                "media",
                "actor",
                "actorVersion",
                "timestamp",
                "resultType",
                "sourceTarget",
                "status",
                "message"
              ]
            }
          },
          "renameFields": {
            "title": "Rename fields",
            "type": "array",
            "description": "Give a field a new column name. The key is the field. The value is the new name. A renamed field becomes a top-level column.",
            "items": {
              "type": "object",
              "required": [
                "key",
                "value"
              ],
              "properties": {
                "key": {
                  "type": "string",
                  "title": "Key"
                },
                "value": {
                  "type": "string",
                  "title": "Value"
                }
              }
            }
          },
          "flatten": {
            "title": "Flat columns",
            "type": "boolean",
            "description": "Turn each nested object into top-level columns. Lists stay lists. Use it for CSV & spreadsheets.",
            "default": false
          },
          "fillMissingFields": {
            "title": "Fill missing fields with null",
            "type": "boolean",
            "description": "With Fields to keep, a field a row lacks arrives as null. Every row then has the same columns. Turn it off to leave such fields out.",
            "default": true
          },
          "joinFields": {
            "title": "Lists to join",
            "type": "array",
            "description": "Turn each of these lists into 1 text value. Use it for CSV cells.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "rank",
                "capturedAt",
                "requestedAt",
                "name",
                "tweetVolume",
                "query",
                "url",
                "woeid",
                "country",
                "countryCode",
                "placeType",
                "fullName",
                "centroid",
                "boundingBox",
                "attributes",
                "containedWithin",
                "hashtag",
                "assetUrl",
                "startsAt",
                "endsAt",
                "isHashfettiEnabled",
                "animations",
                "placeTypeCode",
                "parentWoeid",
                "isHashtag",
                "tweetVolumeAvailable",
                "description",
                "promotedContent",
                "id",
                "author",
                "username",
                "text",
                "createdAt",
                "media",
                "actor",
                "actorVersion",
                "timestamp",
                "resultType",
                "sourceTarget",
                "status",
                "message"
              ]
            }
          },
          "joinSeparator": {
            "title": "Join separator",
            "type": "string",
            "description": "Text between the items of a joined list.",
            "default": ", "
          },
          "constantFields": {
            "title": "Constant columns",
            "type": "array",
            "description": "Add a column with the same text on every row. The key is the column name, such as campaign. The value is its text.",
            "items": {
              "type": "object",
              "required": [
                "key",
                "value"
              ],
              "properties": {
                "key": {
                  "type": "string",
                  "title": "Key"
                },
                "value": {
                  "type": "string",
                  "title": "Value"
                }
              }
            }
          },
          "alwaysSaveRunRecords": {
            "title": "Always save run records",
            "type": "boolean",
            "description": "Save run-report on every run. When off, small runs that go well skip it & cost less.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}