产品指南
归属运营商查询与携号转网
运营商查询返回的是号码最初归属的运营商。当携号转网、线路类型和归属地一起进来之后,这意味着什么。

关于运营商查询,最重要的一句话,也是最常被跳过的一句:结果是最初归属的运营商。它是号码发放时被分配到的那家运营商,不一定是今天承载它的那张网。
这篇文章其余所有内容,都是从这一个区分推出来的。
携号转网让"归属"和"当前"变成两个答案
在大多数市场里,用户可以保留号码、把它转到另一家运营商。发生之后,号码分配记录仍然显示它来自原来那个号段,而实际流量由别处承载。
运营商查询报告的是分配。它观测不到这次转网。所以对一个已转网的号码,你拿到的答案在历史上正确、在当下过时——而且重跑多少次都不会变,这不是数据新鲜度的问题,这就是这份数据源所描述的东西。
这让它非常适合一些用途,也彻底不适合另一些。按原始归属运营商给名单分段、理解一个国家号码空间的结构、按号段分配路由记录,这些都成立。决定把一条消息交给哪张网去发、或者断言某人可以在某家运营商上被联系到,这些不成立。
而且运营商查询完全不能确立可达性:电话不能、短信不能、任何消息应用都不能,更不能说明应用注册状态、账号活跃度或营销同意。那是另外的问题,有另外的答案。
读字段,但别读过头
同步结果可能带 carrier、number_type、country_code、region 和 city。取不到的字段返回的是空字符串,而不是把键省略掉,所以你的解析要把空字符串当作"未提供",而不是当作一个有意义的值。
region 和 city 值得单独提醒。它们描述的是号码分配地理——号段被分配在哪里——不是某个人或某台设备现在在哪。一个在某城市分配的号码,被一个住在国家另一头的人使用,查询仍然会报那个分配城市。把这两个字段当作关于某个人的位置信号,是一个会带来真实后果的误读。
还有两个看起来像布尔的结果经常被误读。registered: true 表示找到了分配数据;registered: false 表示没找到分配数据——这是一个正常结果,不能当作号码已停机、不存在或非法的证明。在同步多号响应里,每一行的 exists 标志表示这一行是否产出了正常结果,exists: false 同样不是一个否定性的运营商结论。
选择请求形态
POST /api/v1/check 用 API key 做单号查询。POST /api/v1/batch-check 同步接受 1 到 100 个标识,并按输入顺序返回——如果你是按位置而不是按标识把结果拼回原行,这一点很关键。
更大的名单走 carrier_batch 服务类型的批量任务,单次接受同一个国家的 1,000 到 100,000 个有效号码,完成后异步下载。"同一个国家"这个约束值得在设计早期就考虑进去:一个混了多国号码的文件,是一个你迟早要拆开的文件。