Skip to content

获取 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_codestatus_message 完善异常处理逻辑。

请求参数

路径参数

参数类型说明
idstring任务唯一标识,UUID 格式。任务提交后 7 天可用于查询结果。

响应字段

接口返回 JSON 数据 tasks 数组。

顶层字段

字段类型说明
versionstring当前 API 版本。
status_codeinteger请求级状态码。完整状态码请参考错误码说明。
status_messagestring请求级状态信息。
timestring请求执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
tasks_countintegertasks 数组中的任务数量。
tasks_errorintegertasks 数组中返回错误的任务数量。
tasksarray任务结果数组。

tasks 数组字段

字段类型说明
idstring任务唯一标识,UUID 格式。
status_codeinteger任务状态码,通常在 1000060000 范围。
status_messagestring任务状态信息。
timestring任务执行耗时,单位为秒。
costfloat平台原始 USD 成本兼容字段;人民币实扣以 X-SeerMarTech-Charge-CNY 为准。
result_countintegerresult 数组中的数量。
patharray请求 URL 路径信息。
dataobject提交任务时指定的参数。
resultarray任务结果数组。

result 数组字段

字段类型说明
keywordstring提交任务时使用的。返回时会对编码进行解码,+ 会被解码为空格。
location_codeinteger提交任务时使用的地区代码。
language_codestring提交任务时使用的语言代码。
datetimestring接收到结果的日期和时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
items_countintegeritems 数组中的数量。
itemsarray抓取到的结果项数组。

items 数组字段

字段类型说明
pageinteger返回的 HTML 页面序号。
datestringHTML 页面扫描时间,UTC 格式:yyyy-mm-dd hh-mm-ss +00:00
htmlstring抓取到的 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获取结果,降低任务提交与结果处理之间的耦合。

统一入口:官网 · LLM API · 控制台