主题
获取 Gemini LLM 抓取结果 HTML
接口说明
GET https://api.seermartech.cn/v3/ai_optimization/gemini/llm_scraper/task_get/html/$id
根据任务 ID 获取 Gemini LLM Scraper 返回的 HTML 结果。任务提交成功后,可在 7 天重复获取结果,结果查询不额外收费。
任务本身的费用在提交任务时扣除。扣费以响应头 X-SeerMarTech-Charge-CNY 为准。
- 任务 ID须为 UUID 格式。
$id为提交任务时返回的唯一任务标识。- 如果任务尚未完成,接口可能返回相应的任务状态或错误信息。
- 建议根据
status_code和status_message完善异常处理逻辑。
请求参数
路径参数
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 任务唯一标识,UUID 格式。任务提交后 7 天可用于查询结果。 |
响应字段
接口返回 JSON 数据 tasks 数组。
顶层字段
| 字段 | 类型 | 说明 |
|---|---|---|
version | string | 当前 API 版本。 |
status_code | integer | 请求级状态码。完整状态码请参考错误码说明。 |
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 格式:yyyy-mm-dd hh-mm-ss +00:00。 |
html | string | 抓取到的 HTML 页面。 |
请求示例
cURL
bash
id="02261816-2027-0066-0000-c27d02864073"
curl --location --request GET \
"https://api.seermartech.cn/v3/ai_optimization/gemini/llm_scraper/task_get/html/${id}" \
--header "Authorization: Bearer smt_live_YOUR_KEY" \
--header "Content-Type: application/json"PHP
php
<?php
$id = '02261816-2027-0066-0000-c27d02864073';
$url = 'https://api.seermartech.cn/v3/ai_optimization/gemini/llm_scraper/task_get/html/' . $id;
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer smt_live_YOUR_KEY',
'Content-Type: application/json',
],
]);
$response = curl_exec($ch);
if ($response === false) {
echo '请求失败:' . curl_error($ch);
} else {
$result = json_decode($response, true);
print_r($result);
}
curl_close($ch);TypeScript
typescript
import axios from "axios";
const taskId = "02201650-1073-0066-2000-1d132bb28897";
axios
.get(
`https://api.seermartech.cn/v3/ai_optimization/gemini/llm_scraper/task_get/html/${taskId}`,
{
headers: {
Authorization: "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
},
}
)
.then((response) => {
// 处理接口返回结果
console.log(response.data);
})
.catch((error) => {
console.error("请求失败:", error.response?.data || error.message);
});Python
python
import requests
task_id = "02261816-1073-0066-2000-1d132bb28897"
url = (
"https://api.seermartech.cn"
f"/v3/ai_optimization/gemini/llm_scraper/task_get/html/{task_id}"
)
headers = {
"Authorization": "Bearer smt_live_YOUR_KEY",
"Content-Type": "application/json",
}
response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
result = response.json()
print(result)C#
csharp
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Threading.Tasks;
public class Example
{
public static async Task Main()
{
var taskId = "02201650-1073-0066-2000-1d132bb28897";
var url =
$"https://api.seermartech.cn/v3/ai_optimization/gemini/llm_scraper/task_get/html/{taskId}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "smt_live_YOUR_KEY");
var response = await client.GetAsync(url);
var responseBody = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
{
Console.WriteLine($"HTTP 请求失败:{response.StatusCode}");
Console.WriteLine(responseBody);
return;
}
var result = JsonSerializer.Deserialize<JsonElement>(responseBody);
Console.WriteLine(result);
}
}响应示例
json
{
"version": "0.1.20260209",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1240 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "02261816-2027-0066-0000-c27d02864073",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.1000 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v3",
"ai_optimization",
"gemini",
"llm_scraper",
"task_get",
"html"
],
"data": {
"api": "ai_optimization",
"function": "llm_scraper",
"se": "gemini",
"language_code": "en",
"location_code": 2840,
"keyword": "albert einstein",
"device": "desktop",
"os": "windows"
},
"result": [
{
"keyword": "albert einstein",
"location_code": 2840,
"language_code": "en",
"datetime": "2026-02-09 12:57:46 +00:00",
"items_count": 1,
"items": [
{
"page": 1,
"date": "2026-02-09 12:57:46 +00:00",
"html": "<html>...</html>"
}
]
}
]
}
]
}状态码与异常处理
建议至少检查以下字段:
- 顶层
status_code:判断本次 API 请求是否成功。 tasks[].status_code:判断任务是否成功。tasks[].status_message:获取任务状态说明。tasks_error:判断是否存在返回错误的任务。result:任务成功时通常结果数据。
当任务状态码表示错误,或 result 为空时,应记录任务 ID、状态码和状态信息,并根据业务逻辑执行重试、告警或人工检查。
实用场景
- 抓取 Gemini 返回页面的完整 HTML:保存模型结果页面及结构化,用于后续归档、解析和审计。
- 批量分析对应的 LLM 结果:按、地区和语言获取页面,评估品牌或产品在生成式搜索中的呈现。
- 构建 LLM 可见性监测系统:定期获取任务结果并保存 HTML 快,对比不同时间点的变化。
- 解析页面中的文本与链接:从返回的 HTML 中提取回答、引用链接和页面结构,为 SEO 归因与竞品研究提供数据。
- 补取已完成任务的结果:在任务完成后 7 天按任务 ID获取结果,降低任务提交与结果处理之间的耦合。