Keywords for Site
curl --request POST \
--url https://api.socq.ai/v1/seo/keywords-for-site \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target": "example.com",
"location_code": 2840,
"language_code": "en",
"results_limit": 100
}
'import requests
url = "https://api.socq.ai/v1/seo/keywords-for-site"
payload = {
"target": "example.com",
"location_code": 2840,
"language_code": "en",
"results_limit": 100
}
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({
target: 'example.com',
location_code: 2840,
language_code: 'en',
results_limit: 100
})
};
fetch('https://api.socq.ai/v1/seo/keywords-for-site', 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/keywords-for-site",
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([
'target' => 'example.com',
'location_code' => 2840,
'language_code' => 'en',
'results_limit' => 100
]),
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/keywords-for-site"
payload := strings.NewReader("{\n \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\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/keywords-for-site")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/seo/keywords-for-site")
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 \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\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": {}
}
}Keywords for Site
Generate keyword ideas from a website topic.
POST
/
v1
/
seo
/
keywords-for-site
Keywords for Site
curl --request POST \
--url https://api.socq.ai/v1/seo/keywords-for-site \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target": "example.com",
"location_code": 2840,
"language_code": "en",
"results_limit": 100
}
'import requests
url = "https://api.socq.ai/v1/seo/keywords-for-site"
payload = {
"target": "example.com",
"location_code": 2840,
"language_code": "en",
"results_limit": 100
}
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({
target: 'example.com',
location_code: 2840,
language_code: 'en',
results_limit: 100
})
};
fetch('https://api.socq.ai/v1/seo/keywords-for-site', 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/keywords-for-site",
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([
'target' => 'example.com',
'location_code' => 2840,
'language_code' => 'en',
'results_limit' => 100
]),
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/keywords-for-site"
payload := strings.NewReader("{\n \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\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/keywords-for-site")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/seo/keywords-for-site")
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 \"target\": \"example.com\",\n \"location_code\": 2840,\n \"language_code\": \"en\",\n \"results_limit\": 100\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": {}
}
}Keywords for Site
{
"target": "microsoft.com",
"location_code": 2840,
"language_code": "en",
"results_limit": 5
}
结果字段
任务结果使用下列稳定的 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": "PBBP1MF42C6LTVVN",
"status": "succeeded",
"public_id": "seo/keywords-for-site",
"result_count": 5,
"credits_amount": 0.5,
"results": {
"limit": 1,
"next_cursor": "OTc4Mw",
"has_more": true,
"schema_id": "seo-keyword",
"schema_version": "1.0",
"items": [
{
"id": "azure and microsoft teams",
"platform": "seo",
"resource": "keywords-for-site",
"type": "keywords-for-site",
"url": null,
"published_at": null,
"collected_at": "2026-07-31T02:44:35.783531Z",
"keyword": "azure and microsoft teams",
"search_volume": null,
"difficulty": null,
"intent": "{'se_type': 'google', 'main_intent': 'navigational', 'foreign_intent': None, 'last_updated_time': '2026-04-29 00:59:12 +00:00'}",
"cpc": null,
"competition": null,
"rank": null,
"target_url": null
}
]
}
}
}
授权
bearerAuthapiKeyAuth
使用 Authorization: Bearer <token> 请求头进行身份验证。
请求体
application/json
请选用本接口支持的国家及该国家可用的语言。默认值为美国(2840)和英语(en);若该国家不支持英语,必须明确指定支持的语言。此接口不支持 location_code=2156。地区和语言支持范围与搜索量、实时 SERP 不同。
Domain, subdomain, or page URL.
Minimum string length:
1可选的任务完成回调 URL。
语言代码或语言筛选条件。
可用选项:
Albanian, Arabic, Armenian, Azeri, Bengali, Bosnian, Bulgarian, Chinese (Simplified), Chinese (Traditional), Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Latvian, Lithuanian, Macedonian, Malay, Norwegian (Bokmål), Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swedish, Tagalog, Thai, Turkish, Ukrainian, Urdu, Vietnamese Minimum string length:
1Language code must be supported for the selected country. A globally supported language can still be unavailable in a particular country.
可用选项:
ar, az, bg, bn, bs, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, hy, id, it, ja, ko, lt, lv, mk, ms, nb, nl, pl, pt, ro, ru, sk, sl, sq, sr, sv, th, tl, tr, uk, ur, vi, zh-CN, zh-TW Required string length:
2 - 10Supported country code for this SEO research endpoint. Support differs from live SERP and Keyword Search Volume; 2156 is unavailable here.
可用选项:
2008, 2012, 2024, 2031, 2032, 2036, 2040, 2048, 2050, 2051, 2056, 2068, 2070, 2076, 2100, 2104, 2116, 2120, 2124, 2144, 2152, 2158, 2170, 2188, 2191, 2196, 2203, 2208, 2218, 2222, 2233, 2246, 2250, 2276, 2288, 2300, 2320, 2344, 2348, 2356, 2360, 2372, 2376, 2380, 2384, 2392, 2398, 2400, 2404, 2410, 2428, 2440, 2458, 2470, 2484, 2492, 2498, 2504, 2528, 2554, 2558, 2566, 2578, 2586, 2591, 2600, 2604, 2608, 2616, 2620, 2642, 2682, 2686, 2688, 2702, 2703, 2704, 2705, 2710, 2724, 2752, 2756, 2764, 2784, 2788, 2792, 2804, 2807, 2818, 2826, 2840, 2854, 2858, 2862 必填范围:
x >= 1Supported country name; use either location_code or location_name.
可用选项:
Albania, Algeria, Angola, Argentina, Armenia, Australia, Austria, Azerbaijan, Bahrain, Bangladesh, Belgium, Bolivia, Bosnia and Herzegovina, Brazil, Bulgaria, Burkina Faso, Cambodia, Cameroon, Canada, Chile, Colombia, Costa Rica, Cote d'Ivoire, Croatia, Cyprus, Czechia, Denmark, Ecuador, Egypt, El Salvador, Estonia, Finland, France, Germany, Ghana, Greece, Guatemala, Hong Kong, Hungary, India, Indonesia, Ireland, Israel, Italy, Japan, Jordan, Kazakhstan, Kenya, Latvia, Lithuania, Malaysia, Malta, Mexico, Moldova, Monaco, Morocco, Myanmar (Burma), Netherlands, New Zealand, Nicaragua, Nigeria, North Macedonia, Norway, Pakistan, Panama, Paraguay, Peru, Philippines, Poland, Portugal, Romania, Saudi Arabia, Senegal, Serbia, Singapore, Slovakia, Slovenia, South Africa, South Korea, Spain, Sri Lanka, Sweden, Switzerland, Taiwan, Thailand, Tunisia, Turkiye, Ukraine, United Arab Emirates, United Kingdom, United States, Uruguay, Venezuela, Vietnam Minimum string length:
1最多保存的结果数,实际结果可能少于该值。
必填范围:
1 <= x <= 1000
