> 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/it/docs/products/page-links

# API API per i link di una pagina e la verifica dei link interrotti

Elenca i link di una pagina e trova quelli interrotti con controlli di stato limitati. Usa questo riferimento per scegliere un’operazione e integrare il relativo contratto di risposta documentato.

[Vedi la pagina del prodotto](https://domscan.net/it/link-checker-api)

## Operazioni

GET `/v1/links` [Vedi il riferimento API](https://domscan.net/it/docs/products/page-links#getPageLinks)

## GET `/v1/links`

Operazione: `getPageLinks`
Crediti e autenticazione: 2-6
Autenticazione richiesta

GET /v1/links Crediti: 2-6

#### Parametri di query

| Parametro | Tipo | obbligatorio |
| --- | --- | --- |
| url | string | obbligatorio |
| render | boolean | facoltativo |
| check | boolean | facoltativo |
| type | string Valori consentiti `all`, `internal`, `external` Predefinito `all` | facoltativo |
| limit | integer Predefinito `200` | facoltativo |

#### Campi della risposta

| Campo | Tipo |
| --- | --- |
| `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 |
| `summary` | object |
| `summary.total` | integer |
| `summary.internal` | integer |
| `summary.external` | integer |
| `summary.nofollow` | integer |
| `summary.empty_anchor` | integer |
| `summary.unique_urls` | integer |
| `summary.external_domains` | integer |
| `links[]` | object[] |
| `links[]` | object |
| `links[].url` | string |
| `links[].text` | string |
| `links[].type` | string |
| `links[].rel[]` | string[] |
| `links[].nofollow` | boolean |
| `links[].image_alt` | string \| null |
| `has_more` | boolean |
| `check` | object |
| `check.unique_targets` | integer |
| `check.checked` | integer |
| `check.not_checked` | integer |
| `check.ok` | integer |
| `check.redirect` | integer |
| `check.broken` | integer |
| `check.unknown` | integer |
| `check.unchecked` | integer |
| `check.skipped` | integer |
| `check.results[]` | object[] |
| `check.results[]` | object |
| `check.results[].url` | string |
| `check.results[].state` | string |
| `check.results[].http_status` | integer \| null |
| `check.results[].final_url` | string \| null |
| `check.results[].redirect_count` | integer |
| `check.results[].reason` | string \| null |

#### Richiesta di esempio

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/links?url=https%3A%2F%2Fexample.com&render=false&check=false&type=all&limit=25"
```

```javascript
const response = await fetch("https://domscan.net/v1/links?url=https%3A%2F%2Fexample.com&render=false&check=false&type=all&limit=25", {
  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/links?url=https%3A%2F%2Fexample.com&render=false&check=false&type=all&limit=25",
    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/links?url=https%3A%2F%2Fexample.com&render=false&check=false&type=all&limit=25", 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/links?url=https%3A%2F%2Fexample.com&render=false&check=false&type=all&limit=25")
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

```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",
  "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
  },
  "summary": {
    "total": 7,
    "internal": 5,
    "external": 2,
    "nofollow": 1,
    "empty_anchor": 1,
    "unique_urls": 7,
    "external_domains": 2
  },
  "links": [
    {
      "url": "https://example.com/",
      "text": "Home",
      "type": "internal",
      "rel": [],
      "nofollow": false,
      "image_alt": null
    },
    {
      "url": "https://example.com/shoes",
      "text": "Shoes",
      "type": "internal",
      "rel": [],
      "nofollow": false,
      "image_alt": null
    },
    {
      "url": "https://example.com/missing-page",
      "text": "Old sale",
      "type": "internal",
      "rel": [],
      "nofollow": false,
      "image_alt": null
    }
  ],
  "has_more": true,
  "check": {
    "unique_targets": 7,
    "checked": 7,
    "not_checked": 0,
    "ok": 4,
    "redirect": 1,
    "broken": 1,
    "unknown": 1,
    "unchecked": 0,
    "skipped": 0,
    "results": [
      {
        "url": "https://example.com/",
        "http_status": 200,
        "final_url": "https://example.com/",
        "redirect_count": 0,
        "state": "ok",
        "reason": null
      },
      {
        "url": "https://example.com/shoes",
        "http_status": 200,
        "final_url": "https://example.com/shoes",
        "redirect_count": 1,
        "state": "redirect",
        "reason": null
      },
      {
        "url": "https://example.com/missing-page",
        "http_status": 404,
        "final_url": "https://example.com/missing-page",
        "redirect_count": 0,
        "state": "broken",
        "reason": "http_404"
      },
      {
        "url": "https://partner.example.org/fit-guide",
        "http_status": 403,
        "final_url": "https://partner.example.org/fit-guide",
        "redirect_count": 0,
        "state": "unknown",
        "reason": "blocked"
      }
    ]
  }
}
```

#### Codici di stato HTTP

- `200` OK
- `400` Richiesta non valida
- `401` Non autorizzato
- `402` Pagamento richiesto
- `429` Troppe richieste

## Risorse di riferimento

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