跳到正文

如何按位置搜索 Twitter

要按位置搜索 Twitter,可以用 X 搜索里的“你附近”筛选,输入 near:"city" within:15km,或输入 geocode:lat,long,radius;这三种方式都只能找到 X 能关联到某个地点的帖子,而带地理标记的帖子不到百分之一。

  • 更新于
  • 发布于
  • 阅读约 11 分钟

简短回答: X 把位置查询与作者在帖子上标记的地点相匹配,并且在大约最近一周内,还会匹配作者个人资料里的城市;这些运算符没有文档,2026 年还有失效的报告。Sorsa API 的 POST /search-tweets 在代码里运行同样的查询,并返回每位作者的位置,每 1,000 条帖子 $0.07 起,并附 100 次免费请求。

接口
POST /search-tweets
每页条数
每次请求约 20 条帖子
价格
每 1,000 条 $0.07 起

#如何按位置搜索 Twitter

按位置搜索 X 有三种方式,都在 x.com 或 X 应用里普通的搜索框中完成,并且每一种配合关键词(比如 “power outage” 或 “concert”)效果最好。如果你想知道的是某个账号位于哪里,而不是人们在某个地方发了什么,那是另一个问题:免费的推特账号所在地查询可以读取任意公开账号上 X 的 “Account based in” 标签。

要查找来自某个地方的帖子:

  1. 打开“你附近”。 搜索一个关键词,打开搜索筛选(桌面端在右侧栏,应用里在搜索栏旁边的筛选图标),选择“你附近”。X 随后会使用你设备的位置,见 X 帮助中心(在新标签页打开)。

  2. 输入带半径的 near:。 "street food" near:"Mexico City" within:10km 会请求与该地点关联的帖子。由两个或更多单词组成的地名要加引号,within: 的单位可以是 km 或 mi。

  3. 输入带坐标的 geocode:。 "power outage" geocode:30.2672,-97.7431,25km 会以奥斯汀市中心为圆心画一个 25 公里的圆。先写纬度,再写经度,最后是半径,中间没有空格。

然后打开“最新”标签页。X 的搜索推荐(在新标签页打开)页面说,“最新”按时间顺序返回匹配的帖子,不做排序,而“热门”则按你自己的位置和兴趣挑选候选。2025 年,一位开发者在 X 的论坛上发现,geocode: 筛选在“最新”里有效,在“热门”里无效。

X 的高级搜索表单 x.com/search-advanced 里也有一个“地点”字段,可以把地点加到你的查询里。

#X 把什么算作帖子的位置

X 通过两种方式把帖子和地点关联起来:作者添加的地点标签,以及作者个人资料里填写的位置。两者都是可选的,所以位置搜索只覆盖对话中带有其中一种信息的那一部分。

What an X location search matches: the place tag on a post, the author's profile location for about the last 7 days, never the Account based in label, and a city name in the text only as a keyword 在 x.com、X 应用或运行 X 搜索的 API 上做位置查询 "power outage" near:"Austin, TX" within:25km 推文上的地点标签 由作者逐条添加;不到百分之一的推文带有 已匹配 作者资料中的位置 如 "Austin, TX" 的自由文本;X 从不核实 仅限最近约 7 天 "Account based in" 标签 X 根据 IP 地址推断的国家 未使用 文字中的城市名 只在查询包含该词时才找到 仅按关键词
X 保存的四种位置信息里,有两种会用于位置搜索,其中一种只在大约一周内有效。

有两样东西永远不会让帖子匹配上。个人资料上的 “Account based in” 国家是 X 根据 IP 地址推断的,据 Bellingcat 的调查工具包(在新标签页打开)说,它在位置搜索中不起任何作用。正文里提到的城市名只会作为关键词匹配:near:"Austin, TX" 找不到仅仅在文字里说了 “Austin” 的帖子。

7 天窗口

个人资料位置只对近期的帖子有效。在 Bellingcat 的测试(在新标签页打开)中,X 对大约最近 7 到 8 天使用了个人资料位置;更早的结果里只有带地点标签的帖子,所以近期的数量看上去要大得多。

An X location search over the last 7 to 8 days matches place-tagged posts and posts by authors whose profile location fits; older dates match place-tagged posts only 带地点标签的推文 任何日期都能匹配 作者资料位置符合的推文 较早日期无法匹配 已匹配 4 周前 2 周前 7 到 8 天前 今天 搜索较早日期返回的推文更少,因为资料位置的匹配失效了。
位置搜索的数量,只能在最近一周内或只在这之前做比较,不能跨越这条线。

#位置搜索运算符及示例

X 搜索能识别五个位置运算符。每个运算符紧跟在关键词旁边,冒号后面不加空格,并且可以与所有其他运算符(包括日期)组合。

运算符找到什么示例
near:与某个命名地点关联的帖子;两个词的地名要加引号jazz near:"New Orleans"
within:near: 的半径,单位为 km 或 mijazz near:"New Orleans" within:5mi
geocode:距某个点一定半径内的帖子:纬度、经度、半径"heat wave" geocode:51.5072,-0.1276,20km
near:me你自己所在位置附近的帖子;仅限已登录的 x.com 和应用"lost dog" near:me
place:按 ID 查找带有某个 X 地点标签的帖子place:96683cc9126741d1(美国)
  • near:

    找到什么
    与某个命名地点关联的帖子;两个词的地名要加引号
    示例
    jazz near:"New Orleans"
  • within:

    找到什么
    near: 的半径,单位为 km 或 mi
    示例
    jazz near:"New Orleans" within:5mi
  • geocode:

    找到什么
    距某个点一定半径内的帖子:纬度、经度、半径
    示例
    "heat wave" geocode:51.5072,-0.1276,20km
  • near:me

    找到什么
    你自己所在位置附近的帖子;仅限已登录的 x.com 和应用
    示例
    "lost dog" near:me
  • place:

    找到什么
    按 ID 查找带有某个 X 地点标签的帖子
    示例
    place:96683cc9126741d1(美国)

官方 X API 不接受这些运算符:对 near: 它会返回无效运算符的错误,并在搜索运算符参考(在新标签页打开)里列出它自己的位置运算符。它们是带地名或地点 ID 的 place:、带两位字母国家代码的 place_country:、带坐标的 point_radius: 和 bounding_box:,以及匹配任何带地理数据的帖子的 has:geo。这些运算符只匹配带有地点标签或坐标的帖子。

两套运算符里数字的顺序是反的。geocode: 先写纬度(geocode:40.7128,-74.0060,10km),而 point_radius: 先写经度(point_radius:[-74.0060 40.7128 10km])。如果搞反了,纽约就变成了南极洲的一个点,结果为零,也不会报错。

下面的生成器可以根据一个地点写出所有形式,检查坐标,并给你代码里用的请求体。

以 Austin, TX 为中心、半径 25 km 的圆约覆盖 1,963 km²。geocode: 先写纬度;point_radius: 先写经度。

按地名:x.com、X 应用、Sorsa API
"power outage" near:"Austin, TX" within:25km
按坐标:x.com、X 应用、Sorsa API
"power outage" geocode:30.2672,-97.7431,25km
POST /search-tweets 的 Sorsa API 请求体
{"query": "\"power outage\" geocode:30.2672,-97.7431,25km", "order": "latest"}
官方 X API:仅限带地点标签的帖子,先写经度
"power outage" point_radius:[-97.7431 30.2672 25km]

选择城市或输入坐标:查询语句和 Sorsa API 请求会随你输入更新。

要了解能与这些运算符组合的日期、互动和媒体筛选,请看完整的 Twitter 搜索运算符列表。如果想用点选的方式构建查询,免费的推特高级搜索工具会根据它的“附近城市”和“半径范围”字段写出 near: 和 within:。

#2026 年 near: 和 geocode: 还管用吗?

X 仍然接受 near:、within: 和 geocode:,但它没有为其中任何一个提供文档,而且它们的结果在 2026 年期间发生了变化。在基于某条查询做报告或仪表盘之前,先测试每条查询。

今年有这些报告:

  • 2026 年 3 月 3 日。 一位 OSINT 研究者的帖子(浏览 1.35 万次)说,geocode: 搜索自 2 月 25 日起就不能用了(在新标签页打开)。
  • 2026 年 5 月 23 日。 一位 Reddit 用户在“你附近”筛选失效时,改用 geocode: 绕了过去,他写道它能配合不带 N、S、E、W 的纯十进制坐标和半径使用。
  • 2026 年 6 月 1 日。 X 论坛(在新标签页打开)上的一位开发者称 geocode 筛选“目前已经失效”。

要检查某条位置查询今天是否有效,在“最新”标签页里做两次搜索:一次带位置运算符的关键词,一次不带的同一个关键词。如果两次返回同样的帖子,说明 X 忽略了这个运算符。如果带运算符的搜索返回了帖子,就打开几位作者的个人资料,看看他们的地点标签或个人资料位置是否吻合。

须知

位置搜索结果为空,并不代表没有人在那个地方发过帖。它的意思是,在你搜索的范围内没有任何帖子带地点标签,而且近期也没有作者填写了匹配的城市,或者 X 跳过了这个运算符。接下来搜索这个地点的各种名称,代码之后的那一节会讲到。

#用 Sorsa API 按位置搜索帖子

要在代码里做位置搜索,可以用 Sorsa API 的 POST /search-tweets(在新标签页打开):它接受与 x.com 一样的 near:、within: 和 geocode: 查询,每次请求返回约 20 条帖子,并把每位作者的完整资料(包括 location)放进每条帖子里。它每 1,000 条帖子 $0.07 起,而且 Sorsa API 从不要求你的 X 登录信息,所以你自己的账号不会有风险。

  1. 获取密钥。 注册后,在控制台复制你的 API 密钥。前 100 次请求免费。

  2. 发送查询。 把位置查询放进 query,并请求 latest,也就是不做排序的顺序。

    Terminal
    curl -X POST "https://api.sorsa.io/v3/search-tweets" \
      -H "ApiKey: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "query": "\"power outage\" near:\"Austin, TX\" within:25km",
        "order": "latest"
      }'
    
    Response200 OK
    {
      "tweets": [
        {
          "id": "1985120440187539712",
          "full_text": "Whole block on South Congress is dark again",
          "created_at": "2026-11-01T22:14:09Z",
          "lang": "en",
          "likes_count": 14,
          "reply_count": 3,
          "retweet_count": 2,
          "view_count": 1820,
          "user": {
            "id": "1630221874001645568",
            "username": "southcongress_grid_log",
            "display_name": "SoCo Grid Log",
            "location": "Austin, TX",
            "followers_count": 412
          }
        }
      ],
      "next_cursor": "DAADDAABCgABG4z1bJ9W0DsKAAIbjPVs"
    }
    
  3. 逐页翻阅结果。 把 next_cursor 放回请求体里,直到响应不再返回它。

  4. 检查每位作者的位置。 保留 user.location 里写着你要的地点的帖子,并保留原始文本,这样你能看到是什么匹配上的。

    import re
    import requests
    
    URL = "https://api.sorsa.io/v3/search-tweets"
    HEADERS = {"ApiKey": "YOUR_API_KEY"}
    QUERY = '"power outage" near:"Austin, TX" within:25km'
    PLACE = re.compile(r"\b(austin|atx|travis county)\b", re.I)
    
    
    def search(query, max_pages=10):
        body = {"query": query, "order": "latest"}
        for _ in range(max_pages):
            r = requests.post(URL, headers=HEADERS, json=body, timeout=30)
            r.raise_for_status()
            page = r.json()
            yield from page.get("tweets", [])
            cursor = page.get("next_cursor")
            if not cursor:
                break
            body["next_cursor"] = cursor
    
    
    for t in search(QUERY):
        where = t["user"].get("location") or ""
        tag = "profile" if PLACE.search(where) else "other"
        print(tag, t["created_at"], t["user"]["username"], repr(where))
    

返回 403 表示密钥缺失或请求已用完;返回 429 表示一秒内超过了 20 次请求,等一秒再重试。失败的请求永远不计费。其他所有搜索参数,以及几千页的大规模运行,见 Twitter 搜索 API 指南。

#near: 失效时,搜索地名

当 near: 或 geocode: 返回空结果时,就用文字搜索这个地点,再自己检查作者的个人资料。本地的帖子常常会提到所在的城市、街区或本地话题标签,而 Sorsa API 的每个结果都带有作者的 location,所以第 4 步里同样的筛选就能分出谁是本地人。

用地名构建的查询,比如 "power outage" (Austin OR ATX OR #atxwx OR "South Congress") lang:en,可以触及那些根本没有地点标签的帖子。把它交给 POST /search-tweets 运行,再保留 user.location 与你的别名列表匹配的帖子:城市名、它的昵称、机场代码和所在的县。

这两种方法回答的是不同的问题,所以要记录每条帖子是用哪种方法找到的:

  • 位置运算符找到的是 X 关联到该地点的帖子:在那里打了标签的,或是个人资料里写着那里的人最近发的。
  • 地名加个人资料筛选找到的是自称住在那里的人发的、关于该地点的帖子,日期可回溯到 2006 年的任意一天。

如果想连续几天监测一个地方,而不是只搜索一次,就按计划重新运行这条查询,只保留比上次运行更新的帖子;轮询方面见 Twitter 实时监测。如果想看整座城市在讨论什么,而不是某一个话题,Twitter 趋势 API 会返回 X 针对该地点的热门列表。

#查找某个城市里的 Twitter 账号

要找某个地方的账号,搜索的是个人资料,而不是帖子。在 x.com 上,运行一条位置查询并打开“用户”标签页,或者把城市名和你的话题放在一起搜索,找出同时提到两者的个人资料。

在代码里,Sorsa API 的 POST /search-users(在新标签页打开) 接受像 coffee roaster Austin 这样的关键词,并返回匹配的个人资料,每份都带有 location 字段,通过 next_cursor 逐页获取。用与上面同样的别名列表筛选这些个人资料。

个人资料的位置,是它的主人自己填的。X 自己为账号判定的国家则是另一个字段:“关于此账号”下面的 “Account based in” 一行,是 X 根据 IP 地址推断的。Sorsa API 的 GET /about(在新标签页打开) 会把它作为 country 返回,每次请求一个账号。它有多可信,见X 上的 “Account based in” 是什么意思;要按国家绘制整个粉丝列表的分布,见 Twitter 位置 API 指南。

#位置搜索要花多少钱

在 Sorsa API 上,位置搜索每 1,000 条帖子 $0.07 起,作者资料已包含在内。在官方 X API 上,同样的帖子连同作者,从 2026 年 11 月 22 日起每 1,000 条要 $15.00,因为那时 X 开始对 expansions 返回的每位用户另行收取 $0.010,加上每条帖子 $0.005(见 X 的通知(在新标签页打开))。

找到的帖子数

官方 X API

$1,500

10 万条带作者的帖子

每条带作者的帖子 $0.015

Sorsa API

$7 起

10 万条带作者的帖子

每 1,000 条 $0.07 起

便宜 214 倍

官方路线还会再加价。一条帖子的 place 对象算作又一个 $0.005 的 expansion,这就让一条带作者和地点的已标记帖子达到 $0.020。它的位置运算符只匹配带地点标签的帖子,所以 x.com 在最近一周内显示的、按个人资料位置匹配的结果永远不会返回。而且在按量付费价格(在新标签页打开)下,它每月最多读取 300 万条帖子,再往上是 Enterprise 合同,每月约 $4.2 万起。

在 Sorsa API 上,你按请求付费:一次请求最多返回约 20 条帖子,失败的请求免费,所有套餐都是每秒 20 次请求。100 次免费请求可以覆盖约 2,000 条帖子。

#开始按位置搜索 Twitter

X 上的位置搜索,就是关键词加上 near: 或 geocode:,在“最新”标签页里查看,再对照作者的个人资料检查。要在代码里为一座城市或一百座城市运行它,可以用 Sorsa API:POST /search-tweets 用一个 API 密钥接受同样的查询,返回每位作者的位置,每 1,000 条帖子 $0.07 起。

#常见问题

在 X 上怎么看我附近的推文?

在 x.com 或 X 应用里搜索一个关键词,打开搜索筛选并选择“你附近”;X 随后会使用你设备的位置。你也可以在搜索框里输入 near:me。两种方式都只在你已登录时有效,并且显示的都是 X 通过地点标签或近期作者的个人资料位置,关联到你所在区域的帖子。

怎么按国家筛选 Twitter 搜索?

X 搜索没有国家代码运算符。在 x.com 上,可以用 near: 加国家名,或用 place: 加 X 为该国家分配的 ID(美国是 96683cc9126741d1)。官方 X API 的 place_country:US 只匹配带地点标签的帖子。要按 X 给账号分配的国家来分组,可以读取 “Account based in” 标签:Sorsa API 的 GET /about 把它作为 country 返回,每次请求一个账号。

别人能通过我的推文找到我的位置吗?

只能找到你分享的内容。只有当你打了地点标签,帖子才带有地点,而精确的 GPS 只有在开启定位、使用 X 应用的相机时才会附带。你个人资料里的位置是你自己填的。X 还会在“关于此账号”下显示一个根据你的 IP 地址推断出的国家,任何人都能在你的个人资料上打开查看。

按位置搜索推文该用哪个 API?

用 Sorsa API:POST /search-tweets 接受与 x.com 一样的 near:、within: 和 geocode: 查询,每次请求返回约 20 条帖子,并带上每位作者的个人资料位置,每 1,000 条帖子 $0.07 起,而官方 X API 是 $15.00。一个 API 密钥,不需要开发者账号,所有套餐都是每秒 20 次请求。

有没有免费的办法按位置搜索 Twitter?

有。在 x.com 和 X 应用里,有 X 账号就可以免费使用“你附近”和位置运算符。在代码方面,每个 Sorsa API 账号起步就有 100 次免费请求,位置搜索大约能得到 2,000 条帖子,无需绑卡,也没有到期日期。

#我们如何核实

2026 年 11 月 2 日,我们阅读了 X 帮助中心关于搜索、“你附近”和帖子位置的页面,以及它的搜索运算符参考、数据字典和价格,还有 10 月 23 日关于 expansions 计费的通知。我们把 X 开发者论坛、一位 OSINT 研究者和 Reddit 上关于 geocode: 的 2026 年报告,与 Bellingcat 2021 年的测试及其 2026 年的工具包说明做了对照。这里每个接口、字段和每页条数,都来自线上的 Sorsa API 参考;我们没有为这篇文章实际运行位置查询,所以上面的响应展示的是文档里的字段和示例值。

Sorsa API 团队撰写。 我们开发和运营 Sorsa API,这是只读的 Twitter/X API 与爬虫,2022 年起运行于生产环境(前身为 TweetScout API),累计处理请求超 60 亿次。 关于 Sorsa API

更新内容
  • 首次发布。