Keyword Search Volume
curl --request POST \
--url https://api.socq.ai/v1/seo/keyword-search-volume \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"keywords": [
"keyword research"
],
"location_code": 2840,
"language_code": "en"
}
'import requests
url = "https://api.socq.ai/v1/seo/keyword-search-volume"
payload = {
"keywords": ["keyword research"],
"location_code": 2840,
"language_code": "en"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({keywords: ['keyword research'], location_code: 2840, language_code: 'en'})
};
fetch('https://api.socq.ai/v1/seo/keyword-search-volume', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/seo/keyword-search-volume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'keywords' => [
'keyword research'
],
'location_code' => 2840,
'language_code' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/seo/keyword-search-volume"
payload := strings.NewReader("{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/seo/keyword-search-volume")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/seo/keyword-search-volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}Keyword Search Volume
Batch search volume, CPC, competition, and monthly trends.
POST
/
v1
/
seo
/
keyword-search-volume
Keyword Search Volume
curl --request POST \
--url https://api.socq.ai/v1/seo/keyword-search-volume \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"keywords": [
"keyword research"
],
"location_code": 2840,
"language_code": "en"
}
'import requests
url = "https://api.socq.ai/v1/seo/keyword-search-volume"
payload = {
"keywords": ["keyword research"],
"location_code": 2840,
"language_code": "en"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({keywords: ['keyword research'], location_code: 2840, language_code: 'en'})
};
fetch('https://api.socq.ai/v1/seo/keyword-search-volume', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/seo/keyword-search-volume",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'keywords' => [
'keyword research'
],
'location_code' => 2840,
'language_code' => 'en'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/seo/keyword-search-volume"
payload := strings.NewReader("{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/seo/keyword-search-volume")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/seo/keyword-search-volume")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"keywords\": [\n \"keyword research\"\n ],\n \"location_code\": 2840,\n \"language_code\": \"en\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}Keyword Search Volume
{"keywords":["keyword research","seo tools"],"location_code":2840,"language_code":"en"}
结果字段
任务结果使用下列稳定的 SocQ 字段。来源特有的字段名称和格式会被规范化,但不会推断或补充来源未提供的值。如需请求更小的字段集,MCP 查询请使用fields,Typed 工具请使用 _result_fields,CLI 请使用 --result-fields。即使值为 null,已声明的字段仍会保留。
| 字段 | 类型 | 可空 | 说明 |
|---|---|---|---|
id | string | 是 | 当前结果项的唯一标识。 |
platform | string | 否 | 结果所属的平台,例如 instagram 或 linkedin。 |
resource | string | 否 | 该结果对应的 SocQ 资源,例如 videos 或 comments。 |
type | string | 否 | 结果项的类别,例如 video、post 或 comment。 |
url | string | 是 | 结果项的公开访问地址(如可获得)。 |
published_at | string | 是 | 源内容的发布时间(如可获得),使用 ISO 8601 格式。 |
collected_at | string | 否 | SocQ 采集或处理该结果的时间,使用 ISO 8601 格式。 |
keyword | string | 是 | 该结果对应的关键词。 |
search_volume | integer | 是 | 在指定周期和市场内对该关键词搜索次数的估算值。 |
difficulty | number | 是 | 关键词排名难度的估算分值。 |
intent | string | 是 | 识别出的关键词主要搜索意图。 |
cpc | number | 是 | 关键词的预估单次点击费用。 |
competition | number | 是 | 关键词的广告竞争程度。 |
rank | integer | 是 | 目标页面针对该关键词的排名位置。 |
target_url | string | 是 | 与关键词排名关联的页面地址。 |
任务完成响应
{
"code": 200,
"data": {
"task_id": "C7P8NOJPFV7838GU",
"status": "succeeded",
"public_id": "seo/keyword-search-volume",
"result_count": 1,
"credits_amount": 24,
"results": {
"limit": 1,
"next_cursor": null,
"has_more": false,
"schema_id": "seo-keyword",
"schema_version": "1.0",
"items": [
{
"id": "keyword research",
"platform": "seo",
"resource": "keyword-search-volume",
"type": "keyword-search-volume",
"url": null,
"published_at": null,
"collected_at": "2026-07-31T02:25:10.519540Z",
"keyword": "keyword research",
"search_volume": null,
"difficulty": null,
"intent": null,
"cpc": null,
"competition": null,
"rank": null,
"target_url": null
}
]
}
}
}
授权
bearerAuthapiKeyAuth
使用 Authorization: Bearer <token> 请求头进行身份验证。
请求体
application/json
请使用本接口支持的语言代码:简体中文为 zh_CN,繁体中文为 zh_TW,不支持 zh。不同 SEO 接口的地区和语言支持范围不同,请以各接口的参数定义为准。
Keywords to analyze in one batch,至少提供 1 项,最多提供 1000 项。
Required array length:
1 - 1000 elementsRequired string length:
1 - 80可选的任务完成回调 URL。
语言代码或语言筛选条件。
可用选项:
Arabic, Bengali, Bulgarian, Catalan, Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Farsi, Finnish, French, German, Greek, Hebrew (old), Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swedish, Tagalog, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese Minimum string length:
1Language code supported by Keyword Search Volume. Chinese uses zh_CN or zh_TW; zh is not supported. Language sets differ between SEO endpoints.
可用选项:
ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, hi, hr, hu, id, is, it, iw, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sr, sv, ta, te, th, tl, tr, uk, ur, vi, zh_CN, zh_TW Required string length:
2 - 10Search market location code.
必填范围:
x >= 1Search market location name.
Minimum string length:
1最多保存的结果数,实际结果可能少于该值。
必填范围:
1 <= x <= 2000
