Référence API

API API de détection de contenu dupliqué

Comparez des pages pour détecter contenus, titres et meta descriptions en double. Utilisez cette référence pour choisir une opération et intégrer son contrat de réponse documenté.

Opérations

GET /v1/duplicate-content Voir la référence API

GET /v1/duplicate-content

Opération: getDuplicateContent Crédits et authentification: 5 Authentification requise
GET /v1/duplicate-content Crédits: 5

Paramètres de requête

Paramètre Type requis
urls string requis

Champs de réponse

Champ Type
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

Exemple de requête

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))

Exemple de réponse

{
  "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
  }
}

Codes de statut HTTP

  • 200 OK
  • 400 Requête incorrecte
  • 401 Non autorisé
  • 402 Paiement requis
  • 429 Trop de requêtes

Ressources de référence