WhatsApp 与 Telegram 号码查询 API:该选哪一个?

发布于 2026年8月23日 · 更新于2026年10月9日

WhatsApp 和 Telegram 是企业触达用户的两大消息平台,但它们是彼此独立的网络,用户群也不同。号码在一个平台上已注册,并不能说明另一个平台上的情况,所以名单需要逐个平台检测。如果你在做号码校验或数据补全,往往想知道某个联系人到底用哪个平台,或者两个都用。

本文把 WhatsApp 与 Telegram 两套查询 API 放在一起比较:你要传什么、会返回什么、各自的两段式流程如何运作,并附一个同时检测一个联系人在两个平台状态的 Python 脚本。

两者的共同点

两套 API 都回答关于联系人的相同核心问题:

  • 是否已注册? 一次轻量检测就能告诉你号码(在 Telegram 上也可以是用户名)是否有账户。
  • 公开资料是什么? 对已注册账户,可以获取头像以及简介或「关于」文本。

两者都采用相同的两段式流程。注册校验会为已存在的账户返回有效期 24 小时的 userHash,而较重的资料接口只接受这个 hash。缺失、未知或已过期的 hash 都会被拒绝,所以你不会为不存在的号码支付资料查询的费用。

对照一览

WhatsAppTelegram
检测接口check-exist-by-phonecheck-exists
输入phoneNumber,或变体接口中的 cc + phonepeer:+手机号、@用户名 / 裸用户名,或 user:<id>
注册标志isExist:true、false 或 null(不确定,稍后重试)exists:true 或 false,并带 reason,例如 PHONE_NOT_OCCUPIED
HashuserHash,有效期 24 小时userHash,有效期 24 小时
附加信息摘要hasExtra 列出可用的补充字段校验结果返回数字用户 ID、用户名和显示名称
头像get-avatar:临时照片链接加头像版本 IDget-picture:base64 图片 data 加 pictureSet
简介get-aboutget-about
企业资料get-biz-profile(isBusiness、名称、地址、网站)不在查询范围内
在线状态get-presence(受隐私限制)不在查询范围内
批量辅助batch-check-10 一次最多 10 个号码每次调用检测一个 peer

请求示例

传入的号码格式很重要。WhatsApp 接收完整国际号码的数字,空格、短横线、+ 和 00 前缀都可以。Telegram 的 peer 有三种形式,手机号必须带前导 +,手工拼接 URL 时要写成 %2B。

# WhatsApp: validate by phone number
curl "https://api.opendata-api.com/api/project/whatsapp/check-exist-by-phone?key=YOUR_API_KEY&phoneNumber=15551234567"

# Telegram: validate by phone number (plus sign encoded)
curl "https://api.opendata-api.com/api/project/telegram/check-exists?key=YOUR_API_KEY&peer=%2B15551234567"

# Telegram: validate by username
curl "https://api.opendata-api.com/api/project/telegram/check-exists?key=YOUR_API_KEY&peer=@some_username"

通过用户名查询是两者在实际使用中的差别:只有用户名时,只有 Telegram 能解析它。WhatsApp 的完整流程请阅读 WhatsApp 号码查询指南,Telegram 一侧请看 Telegram 号码检测。

资料接口各返回什么

WhatsApp 偏重企业场景。get-biz-profile 返回商家名称、认证等级、简介、地址、邮箱和网站,个人号码则返回 isBusiness=false。get-presence 只在对方隐私设置允许时才报告在线和最后在线状态,否则返回 visible=false。详细说明见头像、签名与在线状态指南。

Telegram 的资料查询集中在头像和简介。Telegram 的头像没有公开链接,所以 get-picture 会把图片以 image/jpeg 的 base64 编码放在 data 里返回,解码即可得到图片字节。pictureSet=false 表示没有头像或头像被隐藏。get-about 返回简介、数字用户 ID 和用户名;如果 peer 是群组或频道,则会得到一个 bad-request 业务码。

一次检测同一个联系人在两个平台的状态

下面的脚本在两个网络上各跑一次低成本检测,并合并成一条记录。全程使用 .get(),字段缺失时不会抛出异常。

import requests

API_KEY = "YOUR_API_KEY"
ROOT = "https://api.opendata-api.com/api/project"


def get(project, operation, **params):
    params["key"] = API_KEY
    resp = requests.get(f"{ROOT}/{project}/{operation}", params=params, timeout=30)
    resp.raise_for_status()
    body = resp.json()
    # A reply can be wrapped more than once as {"code": ..., "data": {...}}
    while isinstance(body, dict) and "code" in body and isinstance(body.get("data"), (dict, list)):
        body = body["data"]
    return body


def channels(number):
    """Return which platforms the number is registered on."""
    wa = get("whatsapp", "check-exist-by-phone", phoneNumber=number.lstrip("+"))
    tg = get("telegram", "check-exists", peer="+" + number.lstrip("+"))
    return {
        "number": number,
        "whatsapp": wa.get("isExist"),            # True, False or None (unknown)
        "telegram": tg.get("exists"),
        "telegram_reason": tg.get("reason"),
        "wa_hash": wa.get("userHash"),
        "tg_hash": tg.get("userHash"),
    }


print(channels("+15551234567"))

WhatsApp 字段为 None 并不等于「否」,它表示答案不确定,稍等片刻再重试。请保存这两个 hash,24 小时内用它们调用资料接口,过期后再重新做一次注册校验。

什么时候用哪一个

  • 消费者线索名单与广泛的国际覆盖:从 WhatsApp 开始。
  • 以 Telegram 为中心的社群、只有用户名而没有号码、群组和频道受众:使用 Telegram。
  • 追求最大覆盖:两个都跑。联系人可能在一个平台上能触达,而在另一个平台上不存在,渠道选择会影响送达率和互动效果。

各平台的普及程度因国家而差异很大,所以别凭印象判断,要用自己的名单来衡量:抽一份样本在两个平台上各检测一遍,按国家比较命中率,再据此排定优先级。想把各渠道的结果合成一个联系人质量评分,请看线索核验工作流。

最佳实践

  • 把两次检测视为相互独立。 不要根据 Telegram 的命中推断 WhatsApp 是否注册,反过来也一样。
  • 发送前先校验。 如果打算发消息,WhatsApp 消息发送指南和 Telegram 消息发送指南都从收件人校验开始。
  • 分平台缓存。 保存注册结果和 hash,并附上时间戳,按计划重新检测,而不是每次触达都检测。
  • 尊重隐私。 简介为空、没有头像都是正常结果,不是错误。资料数据只能用于合法目的,并遵守各平台的条款。

常见问题

号码在 WhatsApp 上,是不是也在 Telegram 上? 不一定。两个网络彼此独立,需要分别检测。把两个查询都跑一遍,并把每个结果分开对待。

哪个平台支持按用户名查询? Telegram。它的 check-exists 接口除了 +手机号 和 user:<id>,还接受 @用户名 或裸用户名。WhatsApp 的检测则从手机号开始。

两套 API 的两段式流程一样吗? 一样。每个注册校验接口都会为已存在的账户返回有效期 24 小时的 userHash,资料接口只接受这个 hash。

哪一个能返回企业信息? WhatsApp。它的 get-biz-profile 接口返回商家名称、地址和网站,并用 isBusiness=false 标记个人号码。Telegram 的查询返回头像和简介。

如何一次检测大量号码? WhatsApp 提供 batch-check-10,一次请求最多检测 10 个号码,可以减少大名单的 HTTP 往返次数。Telegram 的检测每次调用处理一个 peer。

立即开始

两套 API 使用相同的免费点数模式,可以先测试再决定。在登录页创建账户,从控制台复制密钥,然后并排试用 WhatsApp 和 Telegram 页面,并查看定价了解每次请求的成本。