JavaScript SEO işleme kontrolü API'si API ürünü
Hangi SEO sinyallerinin JavaScript'e bağlı olduğunu görmek için ham ve işlenmiş HTML'i karşılaştırın. Bir işlem seçmek ve belgelenen yanıt sözleşmesini entegre etmek için bu referansı kullanın.
İşlemler
GET /v1/onpage/render-diff
GET
/v1/onpage/render-diff
Kredi: 7
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| url | string | gerekli |
Yanıt alanları
| Alan | Tür |
|---|---|
url |
string |
final_url |
string |
status |
string |
reason |
string | null |
checked_at |
string |
raw |
object |
raw.fetch |
object |
raw.fetch.http_status |
integer | null |
raw.fetch.final_url |
string |
raw.fetch.content_type |
string | null |
raw.fetch.bytes |
integer |
raw.fetch.truncated |
boolean |
raw.fetch.redirect_count |
integer |
raw.fetch.duration_ms |
integer |
raw.fetch.rendered |
boolean |
raw.signals |
object |
raw.signals.title |
string | null |
raw.signals.meta_description |
string | null |
raw.signals.canonical |
string | null |
raw.signals.robots |
string | null |
raw.signals.noindex |
boolean |
raw.signals.h1[] |
string[] |
raw.signals.word_count |
integer |
raw.signals.internal_links |
integer |
raw.signals.external_links |
integer |
raw.signals.structured_data_types[] |
string[] |
raw.signals.hreflang_count |
integer |
raw.signals.lang |
string | null |
rendered |
object |
rendered.fetch |
object |
rendered.fetch.http_status |
integer | null |
rendered.fetch.final_url |
string |
rendered.fetch.content_type |
string | null |
rendered.fetch.bytes |
integer |
rendered.fetch.truncated |
boolean |
rendered.fetch.redirect_count |
integer |
rendered.fetch.duration_ms |
integer |
rendered.fetch.rendered |
boolean |
rendered.signals |
object |
rendered.signals.title |
string | null |
rendered.signals.meta_description |
string | null |
rendered.signals.canonical |
string | null |
rendered.signals.robots |
string | null |
rendered.signals.noindex |
boolean |
rendered.signals.h1[] |
string[] |
rendered.signals.word_count |
integer |
rendered.signals.internal_links |
integer |
rendered.signals.external_links |
integer |
rendered.signals.structured_data_types[] |
string[] |
rendered.signals.hreflang_count |
integer |
rendered.signals.lang |
string | null |
js_dependence |
string | null |
rendered_word_share |
number | null |
differences[] |
object[] |
differences[] |
object |
differences[].field |
string |
differences[].change |
string |
differences[].impact |
string |
differences[].raw |
unknown |
differences[].rendered |
unknown |
issues[] |
string[] |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/onpage/render-diff?url=https%3A%2F%2Fexample.com"const response = await fetch("https://domscan.net/v1/onpage/render-diff?url=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/onpage/render-diff?url=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/onpage/render-diff?url=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/onpage/render-diff?url=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))Örnek yanıt
{
"url": "https://example.com/shoes/trail-runner",
"final_url": "https://example.com/shoes/trail-runner",
"status": "ok",
"reason": null,
"checked_at": "2026-10-13T12:00:00.000Z",
"raw": {
"fetch": {
"http_status": 200,
"final_url": "https://example.com/shoes/trail-runner",
"content_type": "text/html",
"bytes": 183,
"truncated": false,
"redirect_count": 0,
"duration_ms": 380,
"rendered": false
},
"signals": {
"title": "Example Outdoor",
"meta_description": null,
"canonical": null,
"robots": "noindex",
"noindex": true,
"h1": [],
"word_count": 0,
"internal_links": 0,
"external_links": 0,
"structured_data_types": [],
"hreflang_count": 0,
"lang": "en"
}
},
"rendered": {
"fetch": {
"http_status": 200,
"final_url": "https://example.com/shoes/trail-runner",
"content_type": "text/html",
"bytes": 3535,
"truncated": false,
"redirect_count": 0,
"duration_ms": 4210,
"rendered": true
},
"signals": {
"title": "Trail Running Shoes for Rocky Terrain | Example Outdoor",
"meta_description": "Lightweight trail running shoes with a grippy outsole, rock plate and breathable mesh. Free returns within 30 days on every pair.",
"canonical": "https://example.com/shoes/trail-runner",
"robots": "index, follow",
"noindex": false,
"h1": [
"Trail Running Shoes for Rocky Terrain"
],
"word_count": 122,
"internal_links": 5,
"external_links": 2,
"structured_data_types": [
"AggregateRating",
"Brand",
"BreadcrumbList",
"ListItem",
"Offer",
"Product",
"Rating",
"Review"
],
"hreflang_count": 3,
"lang": "en"
}
},
"js_dependence": "high",
"rendered_word_share": 1,
"differences": [
{
"field": "title",
"change": "changed_by_js",
"impact": "high",
"raw": "Example Outdoor",
"rendered": "Trail Running Shoes for Rocky Terrain | Example Outdoor"
},
{
"field": "meta_description",
"change": "added_by_js",
"impact": "medium",
"raw": null,
"rendered": "Lightweight trail running shoes with a grippy outsole, rock plate and breathable mesh. Free returns within 30 days on every pair."
},
{
"field": "canonical",
"change": "added_by_js",
"impact": "high",
"raw": null,
"rendered": "https://example.com/shoes/trail-runner"
},
{
"field": "robots",
"change": "changed_by_js",
"impact": "high",
"raw": "noindex",
"rendered": "index, follow"
},
{
"field": "noindex",
"change": "removed_by_js",
"impact": "high",
"raw": true,
"rendered": false
}
],
"issues": [
"robots_changed_by_js",
"canonical_changed_by_js",
"h1_requires_js",
"content_requires_js",
"links_require_js",
"structured_data_changed_by_js"
]
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek