主题
ChatGPT LLM 抓取器实时 HTML
POST /v3/ai_optimization/chat_gpt/llm_scraper/live/html
本接口使用 POST 方法,请求路径为:
/v3/ai_optimization/wp/v2/live/html
根据指定的、语言和地区,实时获取 ChatGPT LLM 抓取结果对应的原始 HTML 页面。每次请求只能提交一个任务。
计费与限制
- 每次请求均会产生费用。
- 原始文档未提供固定单价,扣费以响应头
X-SeerMarTech-Charge-CNY为准。 平台限流以认证说明中的 30/60/120 次/分钟规则为准。 - 每个请求最多 1 个任务。
- 请求体使用 UTF-8 编码的 JSON 数组格式。
请求地址
text
POST https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html请求头
http
Authorization: Bearer smt_live_YOUR_KEY
Content-Type: application/json请求参数
请求体是 JSON 数组:
json
[
{
"keyword": "albert einstein",
"language_code": "en",
"location_code": 2840
}
]任务参数
| 参数 | 类型 | 填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 要查询的,最长 2000 个字符。请求中的 %## 编码会被解码,字符 + 会被解码为空格。若中需要使用 %,请编码为 %25;若需要使用 +,请编码为 %2B。 |
location_name | string | 条件填 | 搜索引擎地区的完整名称。未指定 location_code 时填。使用此参数时无需同时传 location_code。示例:United States |
location_code | integer | 条件填 | 搜索引擎地区编码。未指定 location_name 时填。使用此参数时无需同时传 location_name。示例:2840 |
language_name | string | 条件填 | 搜索引擎语言的完整名称。未指定 language_code 时填。使用此参数时无需同时传 language_code。示例:English |
language_code | string | 条件填 | 搜索引擎语言代码。未指定 language_name 时填。使用此参数时无需同时传 language_name。示例:en |
force_web_search | boolean | 否 | 是否强制 AI 代理执行网页搜索。启用后,模型会尝试访问并引用最新网页信息。默认值为 false。即使设置为 true,也不保证响应一定网页引用。 |
expand_citations | boolean | 否 | 是否在 HTML 结果中返回展开后的引用栏。只有同时启用 force_web_search 时,此参数才会生效。默认值为 false。 |
tag | string | 否 | 用户自定义任务标识,最长 255 个字符。可用于请求与响应,提交的值会原样返回在响应的 data 对象中。 |
地区与语言查询
可以通过以下接口获取可用地区:
text
GET https://api.seermartech.cn/v3/ai_optimization/wp/locations
GET https://api.seermartech.cn/v3/ai_optimization/wp/v2/locations可以通过以下接口获取可用语言:
text
GET https://api.seermartech.cn/v3/ai_optimization/wp/v2/languages根据接口版本和搜索引擎类型,使用对应的地区或语言列表接口。
响应结构
接口返回 JSON 数据,主要结构如下:
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 请求级状态码。完整状态码请参考 /v3/appendix/errors。 |
status_message | string | 请求级状态说明。 |
time | string | 请求执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
tasks_count | integer | tasks 数组中的任务总数。 |
tasks_error | integer | tasks 数组中执行失败的任务数。 |
tasks | array | 任务结果数组。 |
tasks 任务字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式。 |
status_code | integer | 任务状态码,通常位于 10000 至 60000 范围。 |
status_message | string | 任务状态说明。 |
time | string | 任务执行耗时,单位为秒。 |
cost | float | 平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。 |
result_count | integer | result 数组中的数量。 |
path | array | 请求 URL 路径信息。 |
data | object | 请求时提交的任务参数。 |
result | array | 抓取结果数组。 |
result 结果字段
| 字段 | 类型 | 说明 |
|---|---|---|
keyword | string | 请求中的。返回值中的 %## 会被解码,字符 + 会被解码为空格。 |
location_code | integer | 请求中的地区编码。 |
language_code | string | 请求中的语言代码。 |
datetime | string | 获取结果的日期和时间,使用 UTC 格式:yyyy-mm-dd hh-mm-ss +00:00。 |
items_count | integer | items 数组中的结果数量。 |
items | array | 搜索结果数组。 |
items素字段
| 字段 | 类型 | 说明 |
|---|---|---|
page | integer | 返回 HTML 页面的序号。 |
date | string | HTML 页面抓取时间,格式为 年-月-日 时:分:秒 +UTC时差:UTC分钟差。 |
html | string | 返回的原始 HTML 页面。 |
请求示例
curl
bash
curl --location --request POST \
"https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json" \
--data-raw '[
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein",
"force_web_search": true,
"expand_citations": true,
"tag": "tag1"
}
]'Python
python
import requests
url = "https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html"
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
# 每次请求只能提交一个任务
payload = [
{
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein",
"tag": "tag1",
}
]
response = requests.post(url, headers=headers, json=payload, timeout=120)
result = response.json()
if result.get("status_code") == 20000:
print(result)
else:
print(
"请求失败,状态码:%s,消息:%s"
% (result.get("status_code"), result.get("status_message"))
)TypeScript
typescript
import axios from "axios";
const response = await axios.post(
"https://api.seermartech.cn/v3/ai_optimization/wp/v2/live/html",
[
{
language_code: "en",
location_code: 2840,
keyword: "albert einstein",
tag: "tag1",
},
],
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
);
const result = response.data;
if (result.status_code === 20000) {
console.log(result);
} else {
console.error(
`请求失败,状态码:${result.status_code},消息:${result.status_message}`
);
}响应示例
json
{
"version": "0.1.20200130",
"status_code": 20000,
"status_message": "Ok.",
"time": "7.7543 sec.",
"cost": 0.003,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "01234567-89ab-cdef-0123-456789abcdef",
"status_code": 20000,
"status_message": "Ok.",
"time": "7.7543 sec.",
"cost": 0.003,
"result_count": 1,
"path": [
"v3",
"ai_optimization",
"wp",
"v2",
"live",
"html"
],
"data": {
"api": "ai_optimization",
"function": "live",
"se": "wp",
"se_type": "v2",
"language_name": "English",
"location_name": "United States",
"keyword": "albert einstein",
"tag": "tag1",
"device": "desktop",
"os": "windows"
},
"result": [
{
"keyword": "albert einstein",
"location_code": 2840,
"language_code": "en",
"datetime": "2019-11-15 12:57:46 +00:00",
"items_count": 1,
"items": [
{
"page": 1,
"date": "2019-11-15 12:57:46 +00:00",
"html": "<html>...</html>"
}
]
}
]
}
]
}状态码与异常处理
建议对以下层级的状态进行处理:
- HTTP 状态码:判断网络请求是否成功。
- 顶层
status_code:判断本次请求是否成功。 - 任务级
tasks[].status_code:判断单个任务是否成功。 status_message:记录错误原因,便于重试或排查。
完整错误码列表请参考:
text
/v3/appendix/errors实用场景
- 抓取指定的 ChatGPT 原始回答页面,还原 AI 搜索结果的完整 HTML,用于建立答案监测和归档系统。
- 启用网页搜索并解析引用栏,分析品牌或竞品在 AI 回答中的引用来源,支持 AI 搜索可见性评估。
- 按不同国家和语言重复查询同一,对比区域化 AI 回答差异,指导 SEO 和多语言优化。
- 保存带时间戳的 HTML 快,追踪 AI 搜索结果、引用链接和页面结构的变化,支持历史趋势分析。
- 使用
tag标记业务批次或项目,将抓取结果与分组、客户项目或监测任务,提升数据处理效率。