Get SEO keywords
Returns organic search keywords for a domain with optional filters and search-type segmentation.
POST
/
api
/
v1
/
platform
/
scrapers
/
seo
/
keywords
Get SEO keywords
curl --request POST \
--url https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Secret-Key: <api-key>' \
--data '
{
"domain": "acme.com",
"searchType": "MostValuable",
"pageSize": 25,
"searchVolumeMin": 1,
"searchVolumeMax": 1,
"rankMin": 2,
"rankMax": 2,
"includeTerms": "<string>",
"excludeTerms": "<string>"
}
'const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain: 'acme.com',
searchType: 'MostValuable',
pageSize: 25,
searchVolumeMin: 1,
searchVolumeMax: 1,
rankMin: 2,
rankMax: 2,
includeTerms: '<string>',
excludeTerms: '<string>'
})
};
fetch('https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords"
payload = {
"domain": "acme.com",
"searchType": "MostValuable",
"pageSize": 25,
"searchVolumeMin": 1,
"searchVolumeMax": 1,
"rankMin": 2,
"rankMax": 2,
"includeTerms": "<string>",
"excludeTerms": "<string>"
}
headers = {
"X-Access-Key": "<api-key>",
"X-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"intent": "seo",
"resultCount": 123,
"totalMatchingResults": 123,
"keywords": [
{
"keyword": "<string>",
"searchVolume": 123,
"rank": 123,
"rankingDifficulty": 123,
"totalMonthlyClicks": 123,
"percentOrganicClicks": 123,
"broadCostPerClick": 123,
"isQuestion": true
}
],
"domain": "<string>",
"seedKeyword": "<string>",
"includedDomains": [
"<string>"
],
"excludedDomains": [
"<string>"
],
"searchType": "<string>"
},
"meta": {
"requestId": "<string>"
}
}{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
"errors": [
{
"property": "body.query",
"message": "query must be a string",
"constraints": {
"isString": "query must be a string"
}
}
]
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication is required.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Insufficient credits.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 502,
"error": "Bad Gateway",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}POST /api/v1/platform/scrapers/seo/keywords
List organic search keywords for a domain.Returns ranked keywords with volume, position, difficulty, and click estimates. Use
searchType to focus on gains, losses, newly ranked terms, or the most valuable keywords.
Example
curl -X POST https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords \
-H "X-Access-Key: ak_xxxxxxxxxxxxxxxx" \
-H "X-Secret-Key: sk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"domain": "acme.com", "searchType": "MostValuable", "pageSize": 25}'
Authorizations
The public API key from the Credentials page.
The API secret shown when the credential is created.
Body
application/json
Domain to analyze organic search keywords for.
Example:
"acme.com"
Available options:
GainedClicks, LostClicks, GainedRanks, LostRanks, MostValuable, NewlyRanked, JustMadeIt, JustFellOff Example:
"MostValuable"
Required range:
1 <= x <= 100Required range:
x >= 0Required range:
x >= 0Required range:
x >= 1Required range:
x >= 1Comma-separated terms that must appear in keywords.
Comma-separated terms to exclude from keywords.
⌘I
Get SEO keywords
curl --request POST \
--url https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords \
--header 'Content-Type: application/json' \
--header 'X-Access-Key: <api-key>' \
--header 'X-Secret-Key: <api-key>' \
--data '
{
"domain": "acme.com",
"searchType": "MostValuable",
"pageSize": 25,
"searchVolumeMin": 1,
"searchVolumeMax": 1,
"rankMin": 2,
"rankMax": 2,
"includeTerms": "<string>",
"excludeTerms": "<string>"
}
'const options = {
method: 'POST',
headers: {
'X-Access-Key': '<api-key>',
'X-Secret-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
domain: 'acme.com',
searchType: 'MostValuable',
pageSize: 25,
searchVolumeMin: 1,
searchVolumeMax: 1,
rankMin: 2,
rankMax: 2,
includeTerms: '<string>',
excludeTerms: '<string>'
})
};
fetch('https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://developer.thehog.ai/api/v1/platform/scrapers/seo/keywords"
payload = {
"domain": "acme.com",
"searchType": "MostValuable",
"pageSize": 25,
"searchVolumeMin": 1,
"searchVolumeMax": 1,
"rankMin": 2,
"rankMax": 2,
"includeTerms": "<string>",
"excludeTerms": "<string>"
}
headers = {
"X-Access-Key": "<api-key>",
"X-Secret-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"intent": "seo",
"resultCount": 123,
"totalMatchingResults": 123,
"keywords": [
{
"keyword": "<string>",
"searchVolume": 123,
"rank": 123,
"rankingDifficulty": 123,
"totalMonthlyClicks": 123,
"percentOrganicClicks": 123,
"broadCostPerClick": 123,
"isQuestion": true
}
],
"domain": "<string>",
"seedKeyword": "<string>",
"includedDomains": [
"<string>"
],
"excludedDomains": [
"<string>"
],
"searchType": "<string>"
},
"meta": {
"requestId": "<string>"
}
}{
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b",
"errors": [
{
"property": "body.query",
"message": "query must be a string",
"constraints": {
"isString": "query must be a string"
}
}
]
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication is required.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 402,
"error": "Payment Required",
"message": "Insufficient credits.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}{
"statusCode": 502,
"error": "Bad Gateway",
"message": "An unexpected error occurred.",
"path": "/api/v1/search",
"timestamp": "2026-05-21T09:08:10.000Z",
"requestId": "506af9b3-01a9-43be-9eb4-8458fe3e4f5b"
}