API 文档

ChatGPT Scraper API

创建 ChatGPT 后台任务,轮询获取回答、补充回答与引用来源。

测试 API

提交一个或多个独立问题,受理后立即获取任务 ID,轮询获取进度与结果。

打开产品页与 API Tester

提交任务

POST https://api.goanyapi.com/api/v1/chatgpt-scraper/tasks

使用 Authorization: Bearer YOUR_GOANYAPI_API_KEY 鉴权。JSON 请求包含 inputs(1–20 个问题)和 idempotency_key(8–128 位字母、数字、下划线或连字符)。各问题独立执行,互不共享上下文;additional_prompt 会在对应问题的首次回答后继续同一对话。目标 URL 固定,无需传入。

参数类型说明
promptstring独立问题(必填) (4000)
countrystring仅支持下方列表的国家/地区代码;留空为自动选择;不支持 CN。
indexinteger批次内唯一编号,默认自动分配
require_sourcesboolean请求来源
additional_promptstring同一对话的补充问题 (4000)
web_searchboolean联网搜索
geolocationstring纬度,经度 (80)

国家与地区

country 仅接受下列支持的两位大写代码。省略或传空字符串表示自动选择;国家/地区不会限制问题语言。不支持 CN、HK、MO,不要据此填写中国大陆、香港或澳门代码。 不支持的代码会在预扣积分之前返回 HTTP 400。

完整支持的国家/地区 (214)
代码国家/地区
AF阿富汗
AL阿尔巴尼亚
DZ阿尔及利亚
AX奥兰群岛
AS美属萨摩亚
AD安道尔
AO安哥拉
AI安圭拉
AG安提瓜和巴布达
AR阿根廷
AM亚美尼亚
AW阿鲁巴
AU澳大利亚
AT奥地利
AZ阿塞拜疆
BS巴哈马
BH巴林
JE泽西岛
BD孟加拉国
BB巴巴多斯
BE比利时
BZ伯利兹
BJ贝宁
BM百慕大
BT不丹
BO玻利维亚
BQ荷属加勒比区
BA波斯尼亚和黑塞哥维那
BW博茨瓦纳
BR巴西
BN文莱
BG保加利亚
BF布基纳法索
BI布隆迪
KH柬埔寨
CM喀麦隆
CA加拿大
CV佛得角
KY开曼群岛
CF中非共和国
TD乍得
CL智利
CO哥伦比亚
KM科摩罗
CG刚果(布)
CK库克群岛
CR哥斯达黎加
CI科特迪瓦
HR克罗地亚
CW库拉索
CY塞浦路斯
CZ捷克
CD刚果(金)
DK丹麦
DJ吉布提
DM多米尼克
DO多米尼加共和国
EC厄瓜多尔
EG埃及
SV萨尔瓦多
GQ赤道几内亚
EE爱沙尼亚
ET埃塞俄比亚
FK福克兰群岛(马尔维纳斯群岛)
FO法罗群岛
FJ斐济
FI芬兰
FR法国
GF法属圭亚那
PF法属波利尼西亚
GA加蓬
GM冈比亚
GE格鲁吉亚
DE德国
GH加纳
GI直布罗陀
GB英国
GR希腊
GL格陵兰
GD格林纳达
GU关岛
GP瓜德罗普
GT危地马拉
GG根西岛
GN几内亚
GW几内亚比绍
GY圭亚那
HT海地
HN洪都拉斯
HU匈牙利
IS冰岛
IN印度
ID印度尼西亚
IE爱尔兰
IM马恩岛
IL以色列
IT意大利
JM牙买加
JP日本
JO约旦
KZ哈萨克斯坦
KE肯尼亚
XK科索沃
KW科威特
KG吉尔吉斯斯坦
LA老挝
LV拉脱维亚
LS莱索托
LR利比里亚
LY利比亚
LI列支敦士登
LT立陶宛
LU卢森堡
MK北马其顿
MG马达加斯加
MW马拉维
MY马来西亚
MV马尔代夫
ML马里
MT马耳他
MH马绍尔群岛
MQ马提尼克
MR毛里塔尼亚
MU毛里求斯
YT马约特
MX墨西哥
FM密克罗尼西亚
MD摩尔多瓦
MC摩纳哥
MN蒙古
ME黑山
MA摩洛哥
MZ莫桑比克
MM缅甸
NA纳米比亚
NR瑙鲁
NP尼泊尔
NL荷兰
NC新喀里多尼亚
NZ新西兰
NI尼加拉瓜
NE尼日尔
NG尼日利亚
MP北马里亚纳群岛
NO挪威
OM阿曼
PK巴基斯坦
PW帕劳
PA巴拿马
PG巴布亚新几内亚
PE秘鲁
PH菲律宾
PL波兰
PT葡萄牙
PR波多黎各
QA卡塔尔
RE留尼汪
RO罗马尼亚
RW卢旺达
KN圣基茨和尼维斯
LC圣卢西亚
MF法属圣马丁
VC圣文森特和格林纳丁斯
SM圣马力诺
ST圣多美和普林西比
SA沙特阿拉伯
SN塞内加尔
RS塞尔维亚
SC塞舌尔
SL塞拉利昂
SG新加坡
SX荷属圣马丁
SK斯洛伐克
SI斯洛文尼亚
SB所罗门群岛
SO索马里
ZA南非
KR韩国
SS南苏丹
ES西班牙
LK斯里兰卡
SR苏里南
SZ斯威士兰
SE瑞典
CH瑞士
TW台湾
TJ塔吉克斯坦
TZ坦桑尼亚
TH泰国
TL东帝汶
TG多哥
TO汤加
TT特立尼达和多巴哥
TN突尼斯
TR土耳其
TM土库曼斯坦
TC特克斯和凯科斯群岛
TV图瓦卢
UG乌干达
UA乌克兰
AE阿拉伯联合酋长国
US美国
UY乌拉圭
UZ乌兹别克斯坦
VU瓦努阿图
VA梵蒂冈
VN越南
VG英属维尔京群岛
VI美属维尔京群岛
WF瓦利斯和富图纳
WS萨摩亚
YE也门
ZM赞比亚
ZW津巴布韦
{
  "idempotency_key": "research_batch_001",
  "inputs": [
    {
      "prompt": "比较常见项目管理工具",
      "country": "US",
      "index": 1,
      "web_search": true,
      "require_sources": true,
      "additional_prompt": "哪些提供免费套餐?",
      "geolocation": "37.7749,-122.4194"
    },
    { "prompt": "近期可再生能源有哪些发展趋势?", "index": 2 }
  ]
}

新任务在校验、预扣积分并持久化后立即返回 HTTP 202,包含 data.task_id 和 status: "queued",不等待回答。该 ID 表示 GoAnyAPI 已受理任务,不表示处理完成;请保存 ID 并通过查询接口获取进度和结果。提交响应丢失时,使用相同幂等键及相同输入重试,返回原任务,不重复扣费;相同键用于不同输入返回 HTTP 409。新键代表独立计费的新任务。复用已完成任务可返回 HTTP 200 和保存的结果。幂等键随任务保留,过期后不要复用旧键。

查询状态与结果

GET https://api.goanyapi.com/api/v1/chatgpt-scraper/tasks/{task_id}

将 {task_id} 替换为提交时返回的任务 ID,使用同一账户鉴权。其他账户不能读取你的任务。轮询间隔至少 5 秒。queued、running 表示未完成,succeeded、failed 表示终态。succeeded 批次也可能包含个别失败,请检查每项 results[].status;每项通过 index 关联问题,包含 result 或公开 error。

查询响应字段

字段类型说明
codestring查询请求处理成功时为 ok;任务执行失败不改变此值。
messagestring查询请求的说明,成功为 ok。任务失败原因在 results[].error 中。
data.task_idstring提交返回的任务 ID;ChatGPT 为 cgs_ 前缀,Gemini 为 gms_ 前缀。
data.statusstringqueued / running / succeeded / failed,详见状态表。
data.created_atstring (ISO 8601)任务创建时间,UTC。
data.expires_atstring (ISO 8601)结果保留截止时间,UTC;完成后保留 30 天。
data.input_countinteger提交的问题数量。
data.credits_reservedinteger提交时已扣除的预扣积分总额,按创建时的配置计算。
data.credits_refundedinteger已退还的积分总额;失败问题退还对应积分。
data.credits_usedinteger终态实际结算积分,即预扣减已退回;queued/running 时为 0,不表示未预扣。
data.poll_after_secondsinteger (optional)未完成时返回,当前为 5;终态省略,停止轮询。
data.resultsarray (optional)完成后的逐问题结果;未完成时通常省略。顺序不应替代 index 进行关联。
data.results[].indexinteger对应输入的追踪编号;未传时按顺序从 1 自动分配。
data.results[].statusstringsucceeded 或 failed;批次 succeeded 仍可能存在失败项。
data.results[].resultobject (optional)仅成功项返回,字段因接口而异,见结果字段表。
data.results[].errorobject (optional)仅失败项返回。
data.results[].error.codestring当前问题处理失败时为 collection_failed。
data.results[].error.messagestring可公开展示的失败原因,不包含内部连接信息。
data.expiredboolean (optional)兼容字段,存在且为 true 时表示已过保留期。正常查询过期任务返回 HTTP 410,清理后为 404。

任务状态

字段类型说明
queuedstring已受理,等待处理;继续轮询。
runningstring处理中;继续轮询。
succeededstring至少一个问题成功;停止轮询并逐条检查结果。
failedstring所有问题失败;停止轮询,查看 error 与退款。

result 回答字段

以下字段都可能缺失、为 null 或为空;空字段本身不构成失败。

字段类型说明
urlstring / null回答页面地址。
promptstring / null本条输入的问题。
answer_htmlstring / null回答页面 HTML,嵌入前应清理。
answer_textstring / null回答纯文本。
countrystring / null结果对应的国家/地区。
is_mapboolean / null是否包含地图相关内容。
shopping_visibleboolean / null是否显示购物相关内容。
indexinteger / null本问题的追踪编号;关联时优先使用外层 index。
answer_text_markdownstring / nullMarkdown 格式回答。
web_search_triggeredboolean / null是否实际触发联网搜索。
additional_promptstring / null提交的补充问题。
additional_answer_textstring / null补充问题的回答文本。
modelstring / null实际返回的模型名称,不代表可指定模型。
prompt_sent_atstring / null实际发送问题的时间。
answer_text_rawstring / null保留原始空白与换行的回答文本。
additional_answer_text_markdownstring / null补充回答的 Markdown。
links_attachedarray / null回答附带的链接。
citationsarray / null回答引用。
referencesarray / null相关参考资料。
shoppingarray / null购物条目。
maparray / null地图条目。
search_sourcesarray / null搜索来源。
search_sources_morearray / null其他搜索来源。
business_locationsarray / null商家位置信息。
adsarray / null广告条目。
questionnairearray / null回答中的问题选项。
shopping_additional_promptarray / null补充回答中的购物条目。
citations_additional_promptarray / null补充回答的引用。
web_search_queryarray / null实际返回的搜索查询。

数组可包含字符串、数字、布尔值、null 或对象。对象仅保留 position、text、title、url、description、domain、icon、cited、name、price、currency、rating、address、latitude、longitude;这些字段也允许缺失或为空。

查询响应 JSON 示例

以下均为 HTTP 200 的结构示例,不代表真实任务。计费数字使用当前配置;任务实际费率锁定于创建时。

排队中

{  "code": "ok",  "message": "ok",  "data": {    "task_id": "cgs_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",    "status": "queued",    "created_at": "2026-11-10T00:00:00.000Z",    "expires_at": "2026-12-10T00:00:00.000Z",    "input_count": 1,    "credits_reserved": 3,    "credits_refunded": 0,    "credits_used": 0,    "poll_after_seconds": 5  }}

处理中

{  "code": "ok",  "message": "ok",  "data": {    "task_id": "cgs_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",    "status": "running",    "created_at": "2026-11-10T00:00:00.000Z",    "expires_at": "2026-12-10T00:00:00.000Z",    "input_count": 1,    "credits_reserved": 3,    "credits_refunded": 0,    "credits_used": 0,    "poll_after_seconds": 5  }}

全部成功

{  "code": "ok",  "message": "ok",  "data": {    "task_id": "cgs_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",    "status": "succeeded",    "created_at": "2026-11-10T00:00:00.000Z",    "expires_at": "2026-12-10T00:00:00.000Z",    "input_count": 1,    "credits_reserved": 3,    "credits_refunded": 0,    "credits_used": 3,    "results": [      {        "index": 1,        "status": "succeeded",        "result": {          "index": 1,          "prompt": "Example question",          "answer_text": "Example answer.",          "citations": [],          "answer_html": "<p>Example answer.</p>"        }      }    ]  }}

全部失败

{  "code": "ok",  "message": "ok",  "data": {    "task_id": "cgs_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",    "status": "failed",    "created_at": "2026-11-10T00:00:00.000Z",    "expires_at": "2026-12-10T00:00:00.000Z",    "input_count": 1,    "credits_reserved": 3,    "credits_refunded": 3,    "credits_used": 0,    "results": [      {        "index": 1,        "status": "failed",        "error": {          "code": "collection_failed",          "message": "Unable to deliver a result for this question"        }      }    ]  }}

部分失败

{  "code": "ok",  "message": "ok",  "data": {    "task_id": "cgs_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",    "status": "succeeded",    "created_at": "2026-11-10T00:00:00.000Z",    "expires_at": "2026-12-10T00:00:00.000Z",    "input_count": 2,    "credits_reserved": 6,    "credits_refunded": 3,    "credits_used": 3,    "results": [      {        "index": 1,        "status": "succeeded",        "result": {          "index": 1,          "prompt": "Example question",          "answer_text": "Example answer.",          "citations": [],          "answer_html": "<p>Example answer.</p>"        }      },      {        "index": 2,        "status": "failed",        "error": {          "code": "collection_failed",          "message": "Unable to deliver a result for this question"        }      }    ]  }}

积分与保留期限

每个问题 3 积分,提交时扣除,失败部分自动退回;查询免费。

提交时按输入问题数量预扣,余额不足不创建任务。后台处理失败全部退回,部分失败仅退回对应部分;成功任务无论是否查看均计费。来源、引用为空或展示字段缺失本身不代表失败。查询状态和重复获取结果免费,补充问题包含在对应输入的单价中。

关闭页面或停止查询不影响后台处理。暂时的网络异常不会立即判失败退款。24 小时内仍无法交付的任务,在后续处理或查询时关闭并退款;没有后续处理时,退款可能延后。之后恢复不会再次追扣。完成后的结果保留 30 天。当前单任务下载 JSON 上限为 20 MB,保存的任务记录(含任务信息)上限为 1.8 MB;过大无法交付时自动退款,建议拆分批次。记录尚存但结果过期返回 HTTP 410,清理后返回 HTTP 404。退款保留原积分有效期。

错误

HTTP 400:JSON、参数、追踪编号重复或取值非法。HTTP 401:鉴权无效。HTTP 402:积分不足。HTTP 404:任务不存在或无权读取。HTTP 409:幂等键冲突。HTTP 410:任务已过期。HTTP 429:触发限流。HTTP 503:受理前服务或计费配置不可用。后台处理失败通过查询结果中的 status: "failed"、results[].error 展示,退款金额见 credits_refunded。公开响应使用 code、message、data。