API API per la verifica dei contenuti duplicati
Confronta le pagine per individuare contenuti, titoli e meta description duplicati. Usa questo riferimento per scegliere un’operazione e integrare il relativo contratto di risposta documentato.
Operazioni
GET /v1/duplicate-content
GET
/v1/duplicate-content
Crediti: 5
Parametri di query
| Parametro | Tipo | obbligatorio |
|---|---|---|
| urls | string | obbligatorio |
Campi della risposta
| Campo | Tipo |
|---|---|
status |
string |
checked_at |
string |
threshold |
number |
pages[] |
object[] |
pages[] |
object |
pages[].url |
string |
pages[].final_url |
string |
pages[].status |
string |
pages[].reason |
string | null |
pages[].http_status |
integer | null |
pages[].title |
string | null |
pages[].meta_description |
string | null |
pages[].h1 |
string | null |
pages[].canonical |
string | null |
pages[].word_count |
integer |
pages[].comparable |
boolean |
pages[].comparison_reason |
string | null |
pairs[] |
object[] |
pairs[] |
object |
pairs[].a |
string |
pairs[].b |
string |
pairs[].similarity |
number | null |
pairs[].containment |
number | null |
pairs[].near_duplicate |
boolean | null |
pairs[].comparable |
boolean |
pairs[].canonicalized |
boolean |
pairs[].same_final_url |
boolean |
pairs[].reason |
string | null |
clusters[] |
string[][] |
clusters[][] |
string[] |
duplicates |
object |
duplicates.titles[] |
object[] |
duplicates.titles[] |
object |
duplicates.titles[].value |
string |
duplicates.titles[].urls[] |
string[] |
duplicates.meta_descriptions[] |
object[] |
duplicates.meta_descriptions[] |
object |
duplicates.meta_descriptions[].value |
string |
duplicates.meta_descriptions[].urls[] |
string[] |
duplicates.h1[] |
object[] |
duplicates.h1[] |
object |
duplicates.h1[].value |
string |
duplicates.h1[].urls[] |
string[] |
summary |
object |
summary.pages |
integer |
summary.readable |
integer |
summary.unknown |
integer |
summary.comparable_pairs |
integer |
summary.unknown_pairs |
integer |
summary.same_final_url_pairs |
integer |
summary.near_duplicate_pairs |
integer |
summary.uncanonicalized_near_duplicates |
integer |
Richiesta di esempio
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/duplicate-content?urls=https%3A%2F%2Fexample.com"const response = await fetch("https://domscan.net/v1/duplicate-content?urls=https%3A%2F%2Fexample.com", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/duplicate-content?urls=https%3A%2F%2Fexample.com",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/duplicate-content?urls=https%3A%2F%2Fexample.com", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/duplicate-content?urls=https%3A%2F%2Fexample.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))Risposta di esempio
{
"status": "ok",
"checked_at": "2026-10-13T12:00:00.000Z",
"threshold": 0.8,
"pages": [
{
"url": "https://example.com/a",
"final_url": "https://example.com/a",
"status": "ok",
"reason": null,
"http_status": 200,
"title": "Trail shoes",
"meta_description": "Shop trail shoes",
"h1": "Trail shoes",
"canonical": null,
"word_count": 640,
"comparable": true,
"comparison_reason": null
},
{
"url": "https://example.com/b",
"final_url": "https://example.com/b",
"status": "ok",
"reason": null,
"http_status": 200,
"title": "Trail shoes",
"meta_description": "Shop trail shoes",
"h1": "Trail running shoes",
"canonical": null,
"word_count": 655,
"comparable": true,
"comparison_reason": null
}
],
"pairs": [
{
"a": "https://example.com/a",
"b": "https://example.com/b",
"similarity": 0.91,
"containment": 0.96,
"near_duplicate": true,
"comparable": true,
"canonicalized": false,
"same_final_url": false,
"reason": null
}
],
"clusters": [
[
"https://example.com/a",
"https://example.com/b"
]
],
"duplicates": {
"titles": [
{
"value": "trail shoes",
"urls": [
"https://example.com/a",
"https://example.com/b"
]
}
],
"meta_descriptions": [
{
"value": "shop trail shoes",
"urls": [
"https://example.com/a",
"https://example.com/b"
]
}
],
"h1": []
},
"summary": {
"pages": 2,
"readable": 2,
"unknown": 0,
"comparable_pairs": 1,
"unknown_pairs": 0,
"same_final_url_pairs": 0,
"near_duplicate_pairs": 1,
"uncanonicalized_near_duplicates": 1
}
}
Codici di stato HTTP
200OK400Richiesta non valida401Non autorizzato402Pagamento richiesto429Troppe richieste