Sayfa içi SEO denetim API'si API ürünü
Başlıkları, meta etiketlerini, başlık yapısını, bağlantıları, görselleri ve yapılandırılmış veriyi SEO puanıyla denetleyin. Bir işlem seçmek ve belgelenen yanıt sözleşmesini entegre etmek için bu referansı kullanın.
İşlemler
GET /v1/onpage
GET
/v1/onpage
Kredi: 2-6
Sorgu parametreleri
| Parametre | Tür | gerekli |
|---|---|---|
| url | string | gerekli |
| render | boolean | isteğe bağlı |
Yanıt alanları
| Alan | Tür |
|---|---|
url |
string |
final_url |
string |
status |
string |
reason |
string | null |
checked_at |
string |
fetch |
object |
fetch.http_status |
integer | null |
fetch.final_url |
string |
fetch.content_type |
string | null |
fetch.bytes |
integer |
fetch.truncated |
boolean |
fetch.redirect_count |
integer |
fetch.duration_ms |
integer |
fetch.rendered |
boolean |
score |
integer | null |
meta |
object |
meta.title |
string | null |
meta.title_length |
integer |
meta.description |
string | null |
meta.description_length |
integer |
meta.canonical |
string | null |
meta.canonical_self_referencing |
boolean | null |
meta.canonical_header |
string | null |
meta.robots |
string | null |
meta.googlebot |
string | null |
meta.x_robots_tag |
string | null |
meta.indexable |
boolean |
meta.googlebot_noindex |
boolean |
meta.nofollow |
boolean |
meta.meta_refresh |
string | null |
meta.duplicate_meta_tags[] |
string[] |
meta.lang |
string | null |
meta.viewport |
string | null |
meta.favicon |
string | null |
meta.open_graph |
object |
meta.open_graph.title |
string | null |
meta.open_graph.description |
string | null |
meta.open_graph.image |
string | null |
meta.open_graph.url |
string | null |
meta.open_graph.type |
string | null |
meta.twitter |
object |
meta.twitter.card |
string | null |
meta.twitter.title |
string | null |
meta.twitter.description |
string | null |
meta.twitter.image |
string | null |
headings |
object |
headings.h1[] |
string[] |
headings.counts |
object |
headings.counts.h1 |
integer |
headings.counts.h2 |
integer |
headings.counts.h3 |
integer |
headings.counts.h4 |
integer |
headings.counts.h5 |
integer |
headings.counts.h6 |
integer |
headings.outline[] |
object[] |
headings.outline[] |
object |
headings.outline[].level |
integer |
headings.outline[].text |
string |
content |
object |
content.word_count |
integer |
content.text_bytes |
integer |
content.html_bytes |
integer |
content.text_to_html_ratio |
number |
links |
object |
links.total |
integer |
links.internal |
integer |
links.external |
integer |
links.nofollow |
integer |
links.empty_anchor |
integer |
links.unresolvable |
integer |
images |
object |
images.total |
integer |
images.missing_alt |
integer |
images.empty_alt |
integer |
images.missing_dimensions |
integer |
images.lazy_loaded |
integer |
resources |
object |
resources.scripts |
integer |
resources.inline_scripts |
integer |
resources.stylesheets |
integer |
resources.iframes |
integer |
resources.mixed_content |
integer |
resources.render_blocking_scripts |
integer | null |
resources.render_blocking_stylesheets |
integer | null |
structured_data |
object |
structured_data.json_ld |
integer |
structured_data.microdata |
integer |
structured_data.rdfa |
integer |
structured_data.types[] |
string[] |
hreflang |
object |
hreflang.count |
integer |
checks[] |
object[] |
checks[] |
object |
checks[].id |
string |
checks[].status |
string |
checks[].severity |
string |
checks[].value |
unknown |
issues[] |
string[] |
caveats[] |
string[] |
Örnek istek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/onpage?url=https%3A%2F%2Fexample.com&render=false"const response = await fetch("https://domscan.net/v1/onpage?url=https%3A%2F%2Fexample.com&render=false", {
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?url=https%3A%2F%2Fexample.com&render=false",
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?url=https%3A%2F%2Fexample.com&render=false", 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?url=https%3A%2F%2Fexample.com&render=false")
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",
"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": 412,
"rendered": false
},
"score": 87,
"meta": {
"title": "Trail Running Shoes for Rocky Terrain | Example Outdoor",
"title_length": 55,
"description": "Lightweight trail running shoes with a grippy outsole, rock plate and breathable mesh. Free returns within 30 days on every pair.",
"description_length": 129,
"canonical": "https://example.com/shoes/trail-runner",
"canonical_self_referencing": true,
"canonical_header": null,
"robots": "index, follow",
"googlebot": null,
"x_robots_tag": null,
"indexable": true,
"googlebot_noindex": false,
"nofollow": false,
"meta_refresh": null,
"duplicate_meta_tags": [],
"lang": "en",
"viewport": "width=device-width, initial-scale=1",
"favicon": "/favicon.ico",
"open_graph": {
"title": "Trail Running Shoes for Rocky Terrain",
"description": null,
"image": "https://example.com/images/trail-runner.jpg",
"url": null,
"type": null
},
"twitter": {
"card": "summary_large_image",
"title": null,
"description": null,
"image": null
}
},
"headings": {
"h1": [
"Trail Running Shoes for Rocky Terrain"
],
"counts": {
"h1": 1,
"h2": 1,
"h3": 0,
"h4": 1,
"h5": 0,
"h6": 0
},
"outline": [
{
"level": 1,
"text": "Trail Running Shoes for Rocky Terrain"
},
{
"level": 2,
"text": "Why runners choose these trail running shoes"
},
{
"level": 4,
"text": "Sizing"
}
]
},
"content": {
"word_count": 122,
"text_bytes": 780,
"html_bytes": 3535,
"text_to_html_ratio": 0.221
},
"links": {
"total": 7,
"internal": 5,
"external": 2,
"nofollow": 1,
"empty_anchor": 1,
"unresolvable": 0
},
"images": {
"total": 3,
"missing_alt": 1,
"empty_alt": 0,
"missing_dimensions": 2,
"lazy_loaded": 0
},
"resources": {
"scripts": 1,
"inline_scripts": 0,
"stylesheets": 1,
"iframes": 0,
"mixed_content": 1,
"render_blocking_scripts": 0,
"render_blocking_stylesheets": 1
},
"structured_data": {
"json_ld": 2,
"microdata": 1,
"rdfa": 0,
"types": [
"AggregateRating",
"Brand",
"BreadcrumbList",
"ListItem",
"Offer",
"Product",
"Rating",
"Review"
]
},
"hreflang": {
"count": 3
},
"checks": [
{
"id": "mixed_content",
"status": "fail",
"severity": "high",
"value": 1
},
{
"id": "heading_hierarchy",
"status": "warn",
"severity": "low",
"value": 1
},
{
"id": "word_count",
"status": "warn",
"severity": "medium",
"value": 122
},
{
"id": "images_alt",
"status": "warn",
"severity": "medium",
"value": 1
},
{
"id": "title_present",
"status": "pass",
"severity": "high"
},
{
"id": "h1_present",
"status": "pass",
"severity": "high",
"value": 1
},
{
"id": "render_blocking_resources",
"status": "warn",
"severity": "low",
"value": 1
}
],
"issues": [
"mixed_content",
"heading_hierarchy",
"word_count",
"images_alt",
"images_dimensions",
"empty_anchor_text",
"render_blocking_resources"
],
"caveats": []
}
HTTP durum kodları
200OK400Hatalı İstek401Yetkisiz402Ödeme Gerekli429Çok Fazla İstek