Find competitor articles for a topic
curl --request POST \
--url https://api.snowseo.com/v3/generate-article/get-competitor-sources \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"country": "<string>",
"search_lang": "<string>",
"excludeSite": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/generate-article/get-competitor-sources"
payload = {
"query": "<string>",
"country": "<string>",
"search_lang": "<string>",
"excludeSite": "<string>"
}
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({
query: '<string>',
country: '<string>',
search_lang: '<string>',
excludeSite: '<string>'
})
};
fetch('https://api.snowseo.com/v3/generate-article/get-competitor-sources', 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.snowseo.com/v3/generate-article/get-competitor-sources",
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([
'query' => '<string>',
'country' => '<string>',
'search_lang' => '<string>',
'excludeSite' => '<string>'
]),
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.snowseo.com/v3/generate-article/get-competitor-sources"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\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.snowseo.com/v3/generate-article/get-competitor-sources")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/generate-article/get-competitor-sources")
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 \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"query": "<string>",
"country": "<string>",
"results": [
{
"title": "<string>",
"url": "<string>",
"description": "<string>"
}
]
}
]Article Generation
Find Competitor Sources
Find competitor articles on a topic to inform generation.
POST
/
v3
/
generate-article
/
get-competitor-sources
Find competitor articles for a topic
curl --request POST \
--url https://api.snowseo.com/v3/generate-article/get-competitor-sources \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"country": "<string>",
"search_lang": "<string>",
"excludeSite": "<string>"
}
'import requests
url = "https://api.snowseo.com/v3/generate-article/get-competitor-sources"
payload = {
"query": "<string>",
"country": "<string>",
"search_lang": "<string>",
"excludeSite": "<string>"
}
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({
query: '<string>',
country: '<string>',
search_lang: '<string>',
excludeSite: '<string>'
})
};
fetch('https://api.snowseo.com/v3/generate-article/get-competitor-sources', 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.snowseo.com/v3/generate-article/get-competitor-sources",
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([
'query' => '<string>',
'country' => '<string>',
'search_lang' => '<string>',
'excludeSite' => '<string>'
]),
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.snowseo.com/v3/generate-article/get-competitor-sources"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\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.snowseo.com/v3/generate-article/get-competitor-sources")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/generate-article/get-competitor-sources")
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 \"query\": \"<string>\",\n \"country\": \"<string>\",\n \"search_lang\": \"<string>\",\n \"excludeSite\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"query": "<string>",
"country": "<string>",
"results": [
{
"title": "<string>",
"url": "<string>",
"description": "<string>"
}
]
}
]Web-search for competitor articles and blog posts on a topic (homepages and your own site are excluded). JSON body fields:
query (required), country (two-letter code, default US), search_lang (default en), and excludeSite (defaults to your brand’s website). The response is an array with one object { query, country, results }, where each result has title, url, description, language, and thumbnail. Limited to 20 requests per day. Use the returned URLs as competitor inputs to Generate Keywords, Generate Prompts, and Generate Outline.Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Body
application/json
Was this page helpful?

