> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/tr/docs/products/javascript-seo

# 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.

[Ürün sayfasını görüntüle](https://domscan.net/tr/javascript-seo-api)

## İşlemler

GET `/v1/onpage/render-diff` [API referansını görüntüle](https://domscan.net/tr/docs/products/javascript-seo#getRenderDiff)

## GET `/v1/onpage/render-diff`

İşlem: `getRenderDiff`
Krediler ve kimlik doğrulama: 7
Kimlik doğrulama gerekli

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

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/onpage/render-diff?url=https%3A%2F%2Fexample.com"
```

```javascript
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);
```

```python
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())
```

```go
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))
}
```

```ruby
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

```json
{
  "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ı

- `200` OK
- `400` Hatalı İstek
- `401` Yetkisiz
- `402` Ödeme Gerekli
- `429` Çok Fazla İstek

## Referans kaynakları

[OpenAPI 3.0](https://domscan.net/v1/openapi.json)
[Postman](https://domscan.net/v1/postman.json)
[MCP](https://domscan.net/tr/mcp-domain-checker)
