ChatGPT Scraper API
创建 ChatGPT 后台任务,轮询获取回答、补充回答与引用来源。
提交一个或多个独立问题,受理后立即获取任务 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 固定,无需传入。
| 参数 | 类型 | 说明 |
|---|---|---|
prompt | string | 独立问题(必填) (4000) |
country | string | 仅支持下方列表的国家/地区代码;留空为自动选择;不支持 CN。 |
index | integer | 批次内唯一编号,默认自动分配 |
require_sources | boolean | 请求来源 |
additional_prompt | string | 同一对话的补充问题 (4000) |
web_search | boolean | 联网搜索 |
geolocation | string | 纬度,经度 (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。
查询响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
code | string | 查询请求处理成功时为 ok;任务执行失败不改变此值。 |
message | string | 查询请求的说明,成功为 ok。任务失败原因在 results[].error 中。 |
data.task_id | string | 提交返回的任务 ID;ChatGPT 为 cgs_ 前缀,Gemini 为 gms_ 前缀。 |
data.status | string | queued / running / succeeded / failed,详见状态表。 |
data.created_at | string (ISO 8601) | 任务创建时间,UTC。 |
data.expires_at | string (ISO 8601) | 结果保留截止时间,UTC;完成后保留 30 天。 |
data.input_count | integer | 提交的问题数量。 |
data.credits_reserved | integer | 提交时已扣除的预扣积分总额,按创建时的配置计算。 |
data.credits_refunded | integer | 已退还的积分总额;失败问题退还对应积分。 |
data.credits_used | integer | 终态实际结算积分,即预扣减已退回;queued/running 时为 0,不表示未预扣。 |
data.poll_after_seconds | integer (optional) | 未完成时返回,当前为 5;终态省略,停止轮询。 |
data.results | array (optional) | 完成后的逐问题结果;未完成时通常省略。顺序不应替代 index 进行关联。 |
data.results[].index | integer | 对应输入的追踪编号;未传时按顺序从 1 自动分配。 |
data.results[].status | string | succeeded 或 failed;批次 succeeded 仍可能存在失败项。 |
data.results[].result | object (optional) | 仅成功项返回,字段因接口而异,见结果字段表。 |
data.results[].error | object (optional) | 仅失败项返回。 |
data.results[].error.code | string | 当前问题处理失败时为 collection_failed。 |
data.results[].error.message | string | 可公开展示的失败原因,不包含内部连接信息。 |
data.expired | boolean (optional) | 兼容字段,存在且为 true 时表示已过保留期。正常查询过期任务返回 HTTP 410,清理后为 404。 |
任务状态
| 字段 | 类型 | 说明 |
|---|---|---|
queued | string | 已受理,等待处理;继续轮询。 |
running | string | 处理中;继续轮询。 |
succeeded | string | 至少一个问题成功;停止轮询并逐条检查结果。 |
failed | string | 所有问题失败;停止轮询,查看 error 与退款。 |
result 回答字段
以下字段都可能缺失、为 null 或为空;空字段本身不构成失败。
| 字段 | 类型 | 说明 |
|---|---|---|
url | string / null | 回答页面地址。 |
prompt | string / null | 本条输入的问题。 |
answer_html | string / null | 回答页面 HTML,嵌入前应清理。 |
answer_text | string / null | 回答纯文本。 |
country | string / null | 结果对应的国家/地区。 |
is_map | boolean / null | 是否包含地图相关内容。 |
shopping_visible | boolean / null | 是否显示购物相关内容。 |
index | integer / null | 本问题的追踪编号;关联时优先使用外层 index。 |
answer_text_markdown | string / null | Markdown 格式回答。 |
web_search_triggered | boolean / null | 是否实际触发联网搜索。 |
additional_prompt | string / null | 提交的补充问题。 |
additional_answer_text | string / null | 补充问题的回答文本。 |
model | string / null | 实际返回的模型名称,不代表可指定模型。 |
prompt_sent_at | string / null | 实际发送问题的时间。 |
answer_text_raw | string / null | 保留原始空白与换行的回答文本。 |
additional_answer_text_markdown | string / null | 补充回答的 Markdown。 |
links_attached | array / null | 回答附带的链接。 |
citations | array / null | 回答引用。 |
references | array / null | 相关参考资料。 |
shopping | array / null | 购物条目。 |
map | array / null | 地图条目。 |
search_sources | array / null | 搜索来源。 |
search_sources_more | array / null | 其他搜索来源。 |
business_locations | array / null | 商家位置信息。 |
ads | array / null | 广告条目。 |
questionnaire | array / null | 回答中的问题选项。 |
shopping_additional_prompt | array / null | 补充回答中的购物条目。 |
citations_additional_prompt | array / null | 补充回答的引用。 |
web_search_query | array / 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。