@nuxtseo/protocol 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1201,6 +1201,47 @@ export declare const mentionsV1Registry: import("./core.js").PublicV1Registry<{
1201
1201
  export declare const liveBacklinksQuerySchema: z.ZodObject<{
1202
1202
  limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
1203
1203
  }, z.core.$strict>;
1204
+ /**
1205
+ * A Link Spam Network: referring domains that each place one generated anchor
1206
+ * with the Site's host written into it, one link per domain. It is read from
1207
+ * the retained Backlinks rows, never from `spamScore`. Google ignores most
1208
+ * links like these, so the summary counts them apart from the profile.
1209
+ */
1210
+ export declare const linkSpamNetworkSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1211
+ /** Stable for one anchor template on one Site. */
1212
+ readonly id: z.ZodString;
1213
+ /** The anchor as the provider reported it, with the Site's host in it. */
1214
+ readonly anchor: z.ZodString;
1215
+ readonly referringDomains: z.ZodNumber;
1216
+ readonly backlinks: z.ZodNumber;
1217
+ /** When the provider first saw the anchor. */
1218
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1219
+ /** When the newest sampled member domain was first seen. */
1220
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1221
+ /** The linking page path every sampled member shares, or null when they differ. */
1222
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1223
+ /** Paths on the Site that the sampled members link to, most linked first. */
1224
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1225
+ /** Other Sites whose anchors carry the same template. */
1226
+ readonly otherSites: z.ZodNumber;
1227
+ }, z.core.$strip>, z.ZodObject<{
1228
+ /** Stable for one anchor template on one Site. */
1229
+ readonly id: z.ZodString;
1230
+ /** The anchor as the provider reported it, with the Site's host in it. */
1231
+ readonly anchor: z.ZodString;
1232
+ readonly referringDomains: z.ZodNumber;
1233
+ readonly backlinks: z.ZodNumber;
1234
+ /** When the provider first saw the anchor. */
1235
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1236
+ /** When the newest sampled member domain was first seen. */
1237
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1238
+ /** The linking page path every sampled member shares, or null when they differ. */
1239
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1240
+ /** Paths on the Site that the sampled members link to, most linked first. */
1241
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1242
+ /** Other Sites whose anchors carry the same template. */
1243
+ readonly otherSites: z.ZodNumber;
1244
+ }, z.core.$strip>>;
1204
1245
  export declare const backlinksSummaryDataSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1205
1246
  readonly target: z.ZodString;
1206
1247
  readonly rank: z.ZodNullable<z.ZodNumber>;
@@ -1215,6 +1256,41 @@ export declare const backlinksSummaryDataSchema: import("./core.js").CompatibleR
1215
1256
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1216
1257
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1217
1258
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1259
+ /**
1260
+ * The Site's Link Spam Networks, largest first. Empty for most Sites. The
1261
+ * counts above still include them.
1262
+ *
1263
+ * A producer must send it and `withoutLinkSpamNetworks`. A client treats
1264
+ * both as optional, because a client newer than the deployed server reads
1265
+ * answers that predate the fields.
1266
+ */
1267
+ readonly linkSpamNetworks: z.ZodArray<z.ZodObject<{
1268
+ /** Stable for one anchor template on one Site. */
1269
+ readonly id: z.ZodString;
1270
+ /** The anchor as the provider reported it, with the Site's host in it. */
1271
+ readonly anchor: z.ZodString;
1272
+ readonly referringDomains: z.ZodNumber;
1273
+ readonly backlinks: z.ZodNumber;
1274
+ /** When the provider first saw the anchor. */
1275
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1276
+ /** When the newest sampled member domain was first seen. */
1277
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1278
+ /** The linking page path every sampled member shares, or null when they differ. */
1279
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1280
+ /** Paths on the Site that the sampled members link to, most linked first. */
1281
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1282
+ /** Other Sites whose anchors carry the same template. */
1283
+ readonly otherSites: z.ZodNumber;
1284
+ }, z.core.$strip>>;
1285
+ /**
1286
+ * `referringDomains` and `backlinks` without the networks. Null when the
1287
+ * Site has no network, or when the provider returned no total to subtract
1288
+ * from.
1289
+ */
1290
+ readonly withoutLinkSpamNetworks: z.ZodNullable<z.ZodObject<{
1291
+ readonly referringDomains: z.ZodNumber;
1292
+ readonly backlinks: z.ZodNumber;
1293
+ }, z.core.$strip>>;
1218
1294
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1219
1295
  _tag: z.ZodLiteral<"no-provider">;
1220
1296
  provider: z.ZodNull;
@@ -1251,6 +1327,28 @@ export declare const backlinksSummaryDataSchema: import("./core.js").CompatibleR
1251
1327
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1252
1328
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1253
1329
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1330
+ readonly linkSpamNetworks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1331
+ /** Stable for one anchor template on one Site. */
1332
+ readonly id: z.ZodString;
1333
+ /** The anchor as the provider reported it, with the Site's host in it. */
1334
+ readonly anchor: z.ZodString;
1335
+ readonly referringDomains: z.ZodNumber;
1336
+ readonly backlinks: z.ZodNumber;
1337
+ /** When the provider first saw the anchor. */
1338
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1339
+ /** When the newest sampled member domain was first seen. */
1340
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1341
+ /** The linking page path every sampled member shares, or null when they differ. */
1342
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1343
+ /** Paths on the Site that the sampled members link to, most linked first. */
1344
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1345
+ /** Other Sites whose anchors carry the same template. */
1346
+ readonly otherSites: z.ZodNumber;
1347
+ }, z.core.$strip>>>;
1348
+ readonly withoutLinkSpamNetworks: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1349
+ readonly referringDomains: z.ZodNumber;
1350
+ readonly backlinks: z.ZodNumber;
1351
+ }, z.core.$strip>>>;
1254
1352
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1255
1353
  _tag: z.ZodLiteral<"no-provider">;
1256
1354
  provider: z.ZodNull;
@@ -1289,6 +1387,41 @@ export declare const backlinksSummaryResponseSchema: import("./core.js").Compati
1289
1387
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1290
1388
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1291
1389
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1390
+ /**
1391
+ * The Site's Link Spam Networks, largest first. Empty for most Sites. The
1392
+ * counts above still include them.
1393
+ *
1394
+ * A producer must send it and `withoutLinkSpamNetworks`. A client treats
1395
+ * both as optional, because a client newer than the deployed server reads
1396
+ * answers that predate the fields.
1397
+ */
1398
+ readonly linkSpamNetworks: z.ZodArray<z.ZodObject<{
1399
+ /** Stable for one anchor template on one Site. */
1400
+ readonly id: z.ZodString;
1401
+ /** The anchor as the provider reported it, with the Site's host in it. */
1402
+ readonly anchor: z.ZodString;
1403
+ readonly referringDomains: z.ZodNumber;
1404
+ readonly backlinks: z.ZodNumber;
1405
+ /** When the provider first saw the anchor. */
1406
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1407
+ /** When the newest sampled member domain was first seen. */
1408
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1409
+ /** The linking page path every sampled member shares, or null when they differ. */
1410
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1411
+ /** Paths on the Site that the sampled members link to, most linked first. */
1412
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1413
+ /** Other Sites whose anchors carry the same template. */
1414
+ readonly otherSites: z.ZodNumber;
1415
+ }, z.core.$strip>>;
1416
+ /**
1417
+ * `referringDomains` and `backlinks` without the networks. Null when the
1418
+ * Site has no network, or when the provider returned no total to subtract
1419
+ * from.
1420
+ */
1421
+ readonly withoutLinkSpamNetworks: z.ZodNullable<z.ZodObject<{
1422
+ readonly referringDomains: z.ZodNumber;
1423
+ readonly backlinks: z.ZodNumber;
1424
+ }, z.core.$strip>>;
1292
1425
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1293
1426
  _tag: z.ZodLiteral<"no-provider">;
1294
1427
  provider: z.ZodNull;
@@ -1331,6 +1464,28 @@ export declare const backlinksSummaryResponseSchema: import("./core.js").Compati
1331
1464
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1332
1465
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1333
1466
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1467
+ readonly linkSpamNetworks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1468
+ /** Stable for one anchor template on one Site. */
1469
+ readonly id: z.ZodString;
1470
+ /** The anchor as the provider reported it, with the Site's host in it. */
1471
+ readonly anchor: z.ZodString;
1472
+ readonly referringDomains: z.ZodNumber;
1473
+ readonly backlinks: z.ZodNumber;
1474
+ /** When the provider first saw the anchor. */
1475
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1476
+ /** When the newest sampled member domain was first seen. */
1477
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1478
+ /** The linking page path every sampled member shares, or null when they differ. */
1479
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1480
+ /** Paths on the Site that the sampled members link to, most linked first. */
1481
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1482
+ /** Other Sites whose anchors carry the same template. */
1483
+ readonly otherSites: z.ZodNumber;
1484
+ }, z.core.$strip>>>;
1485
+ readonly withoutLinkSpamNetworks: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1486
+ readonly referringDomains: z.ZodNumber;
1487
+ readonly backlinks: z.ZodNumber;
1488
+ }, z.core.$strip>>>;
1334
1489
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1335
1490
  _tag: z.ZodLiteral<"no-provider">;
1336
1491
  provider: z.ZodNull;
@@ -1360,6 +1515,8 @@ export declare const backlinksSummaryResponseSchema: import("./core.js").Compati
1360
1515
  }, z.core.$loose>;
1361
1516
  }, z.core.$strip>>;
1362
1517
  export type BacklinksSummary = z.output<typeof backlinksSummaryDataSchema.producer>;
1518
+ /** What a consumer receives. See `PageInspectData` for why it is looser. */
1519
+ export type BacklinksSummaryData = z.output<typeof backlinksSummaryDataSchema.client>;
1363
1520
  export declare const backlinksSummaryOperation: {
1364
1521
  readonly id: 'backlinks.summary';
1365
1522
  readonly method: 'GET';
@@ -1401,6 +1558,41 @@ export declare const backlinksSummaryOperation: {
1401
1558
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1402
1559
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1403
1560
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1561
+ /**
1562
+ * The Site's Link Spam Networks, largest first. Empty for most Sites. The
1563
+ * counts above still include them.
1564
+ *
1565
+ * A producer must send it and `withoutLinkSpamNetworks`. A client treats
1566
+ * both as optional, because a client newer than the deployed server reads
1567
+ * answers that predate the fields.
1568
+ */
1569
+ readonly linkSpamNetworks: z.ZodArray<z.ZodObject<{
1570
+ /** Stable for one anchor template on one Site. */
1571
+ readonly id: z.ZodString;
1572
+ /** The anchor as the provider reported it, with the Site's host in it. */
1573
+ readonly anchor: z.ZodString;
1574
+ readonly referringDomains: z.ZodNumber;
1575
+ readonly backlinks: z.ZodNumber;
1576
+ /** When the provider first saw the anchor. */
1577
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1578
+ /** When the newest sampled member domain was first seen. */
1579
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1580
+ /** The linking page path every sampled member shares, or null when they differ. */
1581
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1582
+ /** Paths on the Site that the sampled members link to, most linked first. */
1583
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1584
+ /** Other Sites whose anchors carry the same template. */
1585
+ readonly otherSites: z.ZodNumber;
1586
+ }, z.core.$strip>>;
1587
+ /**
1588
+ * `referringDomains` and `backlinks` without the networks. Null when the
1589
+ * Site has no network, or when the provider returned no total to subtract
1590
+ * from.
1591
+ */
1592
+ readonly withoutLinkSpamNetworks: z.ZodNullable<z.ZodObject<{
1593
+ readonly referringDomains: z.ZodNumber;
1594
+ readonly backlinks: z.ZodNumber;
1595
+ }, z.core.$strip>>;
1404
1596
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1405
1597
  _tag: z.ZodLiteral<"no-provider">;
1406
1598
  provider: z.ZodNull;
@@ -1443,6 +1635,28 @@ export declare const backlinksSummaryOperation: {
1443
1635
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
1444
1636
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
1445
1637
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
1638
+ readonly linkSpamNetworks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1639
+ /** Stable for one anchor template on one Site. */
1640
+ readonly id: z.ZodString;
1641
+ /** The anchor as the provider reported it, with the Site's host in it. */
1642
+ readonly anchor: z.ZodString;
1643
+ readonly referringDomains: z.ZodNumber;
1644
+ readonly backlinks: z.ZodNumber;
1645
+ /** When the provider first saw the anchor. */
1646
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
1647
+ /** When the newest sampled member domain was first seen. */
1648
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
1649
+ /** The linking page path every sampled member shares, or null when they differ. */
1650
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
1651
+ /** Paths on the Site that the sampled members link to, most linked first. */
1652
+ readonly targetPaths: z.ZodArray<z.ZodString>;
1653
+ /** Other Sites whose anchors carry the same template. */
1654
+ readonly otherSites: z.ZodNumber;
1655
+ }, z.core.$strip>>>;
1656
+ readonly withoutLinkSpamNetworks: z.ZodOptional<z.ZodNullable<z.ZodObject<{
1657
+ readonly referringDomains: z.ZodNumber;
1658
+ readonly backlinks: z.ZodNumber;
1659
+ }, z.core.$strip>>>;
1446
1660
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
1447
1661
  _tag: z.ZodLiteral<"no-provider">;
1448
1662
  provider: z.ZodNull;
@@ -1548,7 +1762,7 @@ export declare const backlinksSummaryOperation: {
1548
1762
  };
1549
1763
  readonly docs: {
1550
1764
  readonly summary: 'Get Backlinks summary';
1551
- readonly description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. Cached reads consume no units.';
1765
+ readonly description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. It also lists the link spam networks in the retained rows, and the totals without them. Cached reads consume no units.';
1552
1766
  readonly tags: readonly ["Research"];
1553
1767
  readonly examples: readonly [{
1554
1768
  readonly request: {
@@ -1573,6 +1787,21 @@ export declare const backlinksSummaryOperation: {
1573
1787
  readonly referringIps: 350;
1574
1788
  readonly referringSubnets: 322;
1575
1789
  readonly referringPages: 4800;
1790
+ readonly linkSpamNetworks: readonly [{
1791
+ readonly id: 'lsn_5d1c07a2';
1792
+ readonly anchor: 'Premium SEO Link Building Experts Helping example.com Websites Rank Higher';
1793
+ readonly referringDomains: 42;
1794
+ readonly backlinks: 42;
1795
+ readonly firstSeen: '2026-08-02T00:00:00.000Z';
1796
+ readonly latestSeen: '2026-09-20T00:00:00.000Z';
1797
+ readonly linkingPath: '/dir/organic-visibility-backlinks-86677';
1798
+ readonly targetPaths: readonly ["/"];
1799
+ readonly otherSites: 201;
1800
+ }];
1801
+ readonly withoutLinkSpamNetworks: {
1802
+ readonly referringDomains: 370;
1803
+ readonly backlinks: 5078;
1804
+ };
1576
1805
  readonly evidence: {
1577
1806
  readonly _tag: 'live';
1578
1807
  readonly provider: 'dataforseo';
@@ -1603,6 +1832,14 @@ export declare const referringDomainSchema: import("./core.js").CompatibleRespon
1603
1832
  readonly lostDate: z.ZodNullable<z.ZodString>;
1604
1833
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
1605
1834
  readonly sessions: z.ZodNullable<z.ZodNumber>;
1835
+ /**
1836
+ * The id of the Link Spam Network this domain is a known member of, as in
1837
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
1838
+ * never verified clean: membership is known only for the domains the
1839
+ * retained rows sampled or the Timeline recorded. A producer must send it;
1840
+ * a client treats it as optional, because older servers do not.
1841
+ */
1842
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
1606
1843
  }, z.core.$strip>, z.ZodObject<{
1607
1844
  readonly domain: z.ZodString;
1608
1845
  readonly rank: z.ZodNullable<z.ZodNumber>;
@@ -1614,6 +1851,7 @@ export declare const referringDomainSchema: import("./core.js").CompatibleRespon
1614
1851
  readonly firstSeen: z.ZodNullable<z.ZodString>;
1615
1852
  readonly lostDate: z.ZodNullable<z.ZodString>;
1616
1853
  readonly sessions: z.ZodNullable<z.ZodNumber>;
1854
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1617
1855
  }, z.core.$strip>>;
1618
1856
  export declare const referringDomainsDataSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1619
1857
  readonly target: z.ZodString;
@@ -1629,6 +1867,14 @@ export declare const referringDomainsDataSchema: import("./core.js").CompatibleR
1629
1867
  readonly lostDate: z.ZodNullable<z.ZodString>;
1630
1868
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
1631
1869
  readonly sessions: z.ZodNullable<z.ZodNumber>;
1870
+ /**
1871
+ * The id of the Link Spam Network this domain is a known member of, as in
1872
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
1873
+ * never verified clean: membership is known only for the domains the
1874
+ * retained rows sampled or the Timeline recorded. A producer must send it;
1875
+ * a client treats it as optional, because older servers do not.
1876
+ */
1877
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
1632
1878
  }, z.core.$strip>>;
1633
1879
  readonly total: z.ZodNumber;
1634
1880
  readonly limit: z.ZodNumber;
@@ -1667,6 +1913,7 @@ export declare const referringDomainsDataSchema: import("./core.js").CompatibleR
1667
1913
  readonly firstSeen: z.ZodNullable<z.ZodString>;
1668
1914
  readonly lostDate: z.ZodNullable<z.ZodString>;
1669
1915
  readonly sessions: z.ZodNullable<z.ZodNumber>;
1916
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1670
1917
  }, z.core.$strip>>;
1671
1918
  readonly total: z.ZodNumber;
1672
1919
  readonly limit: z.ZodNumber;
@@ -1708,6 +1955,14 @@ export declare const referringDomainsResponseSchema: import("./core.js").Compati
1708
1955
  readonly lostDate: z.ZodNullable<z.ZodString>;
1709
1956
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
1710
1957
  readonly sessions: z.ZodNullable<z.ZodNumber>;
1958
+ /**
1959
+ * The id of the Link Spam Network this domain is a known member of, as in
1960
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
1961
+ * never verified clean: membership is known only for the domains the
1962
+ * retained rows sampled or the Timeline recorded. A producer must send it;
1963
+ * a client treats it as optional, because older servers do not.
1964
+ */
1965
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
1711
1966
  }, z.core.$strip>>;
1712
1967
  readonly total: z.ZodNumber;
1713
1968
  readonly limit: z.ZodNumber;
@@ -1752,6 +2007,7 @@ export declare const referringDomainsResponseSchema: import("./core.js").Compati
1752
2007
  readonly firstSeen: z.ZodNullable<z.ZodString>;
1753
2008
  readonly lostDate: z.ZodNullable<z.ZodString>;
1754
2009
  readonly sessions: z.ZodNullable<z.ZodNumber>;
2010
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1755
2011
  }, z.core.$strip>>;
1756
2012
  readonly total: z.ZodNumber;
1757
2013
  readonly limit: z.ZodNumber;
@@ -1784,6 +2040,8 @@ export declare const referringDomainsResponseSchema: import("./core.js").Compati
1784
2040
  }, z.core.$loose>;
1785
2041
  }, z.core.$strip>>;
1786
2042
  export type ReferringDomains = z.output<typeof referringDomainsDataSchema.producer>;
2043
+ /** What a consumer receives. See `PageInspectData` for why it is looser. */
2044
+ export type ReferringDomainsData = z.output<typeof referringDomainsDataSchema.client>;
1787
2045
  export declare const referringDomainsOperation: {
1788
2046
  readonly id: 'backlinks.referring.domains';
1789
2047
  readonly method: 'GET';
@@ -1827,6 +2085,14 @@ export declare const referringDomainsOperation: {
1827
2085
  readonly lostDate: z.ZodNullable<z.ZodString>;
1828
2086
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
1829
2087
  readonly sessions: z.ZodNullable<z.ZodNumber>;
2088
+ /**
2089
+ * The id of the Link Spam Network this domain is a known member of, as in
2090
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
2091
+ * never verified clean: membership is known only for the domains the
2092
+ * retained rows sampled or the Timeline recorded. A producer must send it;
2093
+ * a client treats it as optional, because older servers do not.
2094
+ */
2095
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
1830
2096
  }, z.core.$strip>>;
1831
2097
  readonly total: z.ZodNumber;
1832
2098
  readonly limit: z.ZodNumber;
@@ -1871,6 +2137,7 @@ export declare const referringDomainsOperation: {
1871
2137
  readonly firstSeen: z.ZodNullable<z.ZodString>;
1872
2138
  readonly lostDate: z.ZodNullable<z.ZodString>;
1873
2139
  readonly sessions: z.ZodNullable<z.ZodNumber>;
2140
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1874
2141
  }, z.core.$strip>>;
1875
2142
  readonly total: z.ZodNumber;
1876
2143
  readonly limit: z.ZodNumber;
@@ -1979,7 +2246,7 @@ export declare const referringDomainsOperation: {
1979
2246
  };
1980
2247
  readonly docs: {
1981
2248
  readonly summary: 'List referring domains';
1982
- readonly description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. Cached reads consume no units.';
2249
+ readonly description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. A row that is a known member of a link spam network carries its id. Cached reads consume no units.';
1983
2250
  readonly tags: readonly ["Research"];
1984
2251
  readonly examples: readonly [{
1985
2252
  readonly request: {
@@ -2006,6 +2273,7 @@ export declare const referringDomainsOperation: {
2006
2273
  readonly firstSeen: '2026-02-09 20:43:50 +00:00';
2007
2274
  readonly lostDate: null;
2008
2275
  readonly sessions: 143;
2276
+ readonly linkSpamNetworkId: null;
2009
2277
  }];
2010
2278
  readonly total: 1;
2011
2279
  readonly limit: 100;
@@ -2037,6 +2305,14 @@ export declare const backlinkAnchorSchema: import("./core.js").CompatibleRespons
2037
2305
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2038
2306
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2039
2307
  readonly lostDate: z.ZodNullable<z.ZodString>;
2308
+ /**
2309
+ * The id of the Link Spam Network whose generated sentence this anchor is,
2310
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
2311
+ * evidence. `null` means not known to be in one, never verified clean. A
2312
+ * producer must send it; a client treats it as optional, because older
2313
+ * servers do not.
2314
+ */
2315
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
2040
2316
  }, z.core.$strip>, z.ZodObject<{
2041
2317
  readonly anchor: z.ZodString;
2042
2318
  readonly rank: z.ZodNullable<z.ZodNumber>;
@@ -2047,6 +2323,7 @@ export declare const backlinkAnchorSchema: import("./core.js").CompatibleRespons
2047
2323
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2048
2324
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2049
2325
  readonly lostDate: z.ZodNullable<z.ZodString>;
2326
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2050
2327
  }, z.core.$strip>>;
2051
2328
  export declare const backlinkAnchorsDataSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
2052
2329
  readonly target: z.ZodString;
@@ -2060,6 +2337,14 @@ export declare const backlinkAnchorsDataSchema: import("./core.js").CompatibleRe
2060
2337
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2061
2338
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2062
2339
  readonly lostDate: z.ZodNullable<z.ZodString>;
2340
+ /**
2341
+ * The id of the Link Spam Network whose generated sentence this anchor is,
2342
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
2343
+ * evidence. `null` means not known to be in one, never verified clean. A
2344
+ * producer must send it; a client treats it as optional, because older
2345
+ * servers do not.
2346
+ */
2347
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
2063
2348
  }, z.core.$strip>>;
2064
2349
  readonly total: z.ZodNumber;
2065
2350
  readonly limit: z.ZodNumber;
@@ -2097,6 +2382,7 @@ export declare const backlinkAnchorsDataSchema: import("./core.js").CompatibleRe
2097
2382
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2098
2383
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2099
2384
  readonly lostDate: z.ZodNullable<z.ZodString>;
2385
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2100
2386
  }, z.core.$strip>>;
2101
2387
  readonly total: z.ZodNumber;
2102
2388
  readonly limit: z.ZodNumber;
@@ -2136,6 +2422,14 @@ export declare const backlinkAnchorsResponseSchema: import("./core.js").Compatib
2136
2422
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2137
2423
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2138
2424
  readonly lostDate: z.ZodNullable<z.ZodString>;
2425
+ /**
2426
+ * The id of the Link Spam Network whose generated sentence this anchor is,
2427
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
2428
+ * evidence. `null` means not known to be in one, never verified clean. A
2429
+ * producer must send it; a client treats it as optional, because older
2430
+ * servers do not.
2431
+ */
2432
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
2139
2433
  }, z.core.$strip>>;
2140
2434
  readonly total: z.ZodNumber;
2141
2435
  readonly limit: z.ZodNumber;
@@ -2179,6 +2473,7 @@ export declare const backlinkAnchorsResponseSchema: import("./core.js").Compatib
2179
2473
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2180
2474
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2181
2475
  readonly lostDate: z.ZodNullable<z.ZodString>;
2476
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2182
2477
  }, z.core.$strip>>;
2183
2478
  readonly total: z.ZodNumber;
2184
2479
  readonly limit: z.ZodNumber;
@@ -2211,6 +2506,8 @@ export declare const backlinkAnchorsResponseSchema: import("./core.js").Compatib
2211
2506
  }, z.core.$loose>;
2212
2507
  }, z.core.$strip>>;
2213
2508
  export type BacklinkAnchors = z.output<typeof backlinkAnchorsDataSchema.producer>;
2509
+ /** What a consumer receives. See `PageInspectData` for why it is looser. */
2510
+ export type BacklinkAnchorsData = z.output<typeof backlinkAnchorsDataSchema.client>;
2214
2511
  export declare const backlinkAnchorsOperation: {
2215
2512
  readonly id: 'backlinks.anchors';
2216
2513
  readonly method: 'GET';
@@ -2252,6 +2549,14 @@ export declare const backlinkAnchorsOperation: {
2252
2549
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2253
2550
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2254
2551
  readonly lostDate: z.ZodNullable<z.ZodString>;
2552
+ /**
2553
+ * The id of the Link Spam Network whose generated sentence this anchor is,
2554
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
2555
+ * evidence. `null` means not known to be in one, never verified clean. A
2556
+ * producer must send it; a client treats it as optional, because older
2557
+ * servers do not.
2558
+ */
2559
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
2255
2560
  }, z.core.$strip>>;
2256
2561
  readonly total: z.ZodNumber;
2257
2562
  readonly limit: z.ZodNumber;
@@ -2295,6 +2600,7 @@ export declare const backlinkAnchorsOperation: {
2295
2600
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
2296
2601
  readonly firstSeen: z.ZodNullable<z.ZodString>;
2297
2602
  readonly lostDate: z.ZodNullable<z.ZodString>;
2603
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2298
2604
  }, z.core.$strip>>;
2299
2605
  readonly total: z.ZodNumber;
2300
2606
  readonly limit: z.ZodNumber;
@@ -2403,7 +2709,7 @@ export declare const backlinkAnchorsOperation: {
2403
2709
  };
2404
2710
  readonly docs: {
2405
2711
  readonly summary: 'List Backlink anchors';
2406
- readonly description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. Cached reads consume no units.';
2712
+ readonly description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. An anchor that is the generated sentence of a link spam network carries its id. Cached reads consume no units.';
2407
2713
  readonly tags: readonly ["Research"];
2408
2714
  readonly examples: readonly [{
2409
2715
  readonly request: {
@@ -2429,6 +2735,7 @@ export declare const backlinkAnchorsOperation: {
2429
2735
  readonly spamScore: 3;
2430
2736
  readonly firstSeen: '2026-01-04 11:02:11 +00:00';
2431
2737
  readonly lostDate: null;
2738
+ readonly linkSpamNetworkId: null;
2432
2739
  }];
2433
2740
  readonly total: 1;
2434
2741
  readonly limit: 100;
@@ -3171,6 +3478,41 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3171
3478
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
3172
3479
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
3173
3480
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
3481
+ /**
3482
+ * The Site's Link Spam Networks, largest first. Empty for most Sites. The
3483
+ * counts above still include them.
3484
+ *
3485
+ * A producer must send it and `withoutLinkSpamNetworks`. A client treats
3486
+ * both as optional, because a client newer than the deployed server reads
3487
+ * answers that predate the fields.
3488
+ */
3489
+ readonly linkSpamNetworks: z.ZodArray<z.ZodObject<{
3490
+ /** Stable for one anchor template on one Site. */
3491
+ readonly id: z.ZodString;
3492
+ /** The anchor as the provider reported it, with the Site's host in it. */
3493
+ readonly anchor: z.ZodString;
3494
+ readonly referringDomains: z.ZodNumber;
3495
+ readonly backlinks: z.ZodNumber;
3496
+ /** When the provider first saw the anchor. */
3497
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
3498
+ /** When the newest sampled member domain was first seen. */
3499
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
3500
+ /** The linking page path every sampled member shares, or null when they differ. */
3501
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
3502
+ /** Paths on the Site that the sampled members link to, most linked first. */
3503
+ readonly targetPaths: z.ZodArray<z.ZodString>;
3504
+ /** Other Sites whose anchors carry the same template. */
3505
+ readonly otherSites: z.ZodNumber;
3506
+ }, z.core.$strip>>;
3507
+ /**
3508
+ * `referringDomains` and `backlinks` without the networks. Null when the
3509
+ * Site has no network, or when the provider returned no total to subtract
3510
+ * from.
3511
+ */
3512
+ readonly withoutLinkSpamNetworks: z.ZodNullable<z.ZodObject<{
3513
+ readonly referringDomains: z.ZodNumber;
3514
+ readonly backlinks: z.ZodNumber;
3515
+ }, z.core.$strip>>;
3174
3516
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
3175
3517
  _tag: z.ZodLiteral<"no-provider">;
3176
3518
  provider: z.ZodNull;
@@ -3213,6 +3555,28 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3213
3555
  readonly referringIps: z.ZodNullable<z.ZodNumber>;
3214
3556
  readonly referringSubnets: z.ZodNullable<z.ZodNumber>;
3215
3557
  readonly referringPages: z.ZodNullable<z.ZodNumber>;
3558
+ readonly linkSpamNetworks: z.ZodOptional<z.ZodArray<z.ZodObject<{
3559
+ /** Stable for one anchor template on one Site. */
3560
+ readonly id: z.ZodString;
3561
+ /** The anchor as the provider reported it, with the Site's host in it. */
3562
+ readonly anchor: z.ZodString;
3563
+ readonly referringDomains: z.ZodNumber;
3564
+ readonly backlinks: z.ZodNumber;
3565
+ /** When the provider first saw the anchor. */
3566
+ readonly firstSeen: z.ZodNullable<z.ZodString>;
3567
+ /** When the newest sampled member domain was first seen. */
3568
+ readonly latestSeen: z.ZodNullable<z.ZodString>;
3569
+ /** The linking page path every sampled member shares, or null when they differ. */
3570
+ readonly linkingPath: z.ZodNullable<z.ZodString>;
3571
+ /** Paths on the Site that the sampled members link to, most linked first. */
3572
+ readonly targetPaths: z.ZodArray<z.ZodString>;
3573
+ /** Other Sites whose anchors carry the same template. */
3574
+ readonly otherSites: z.ZodNumber;
3575
+ }, z.core.$strip>>>;
3576
+ readonly withoutLinkSpamNetworks: z.ZodOptional<z.ZodNullable<z.ZodObject<{
3577
+ readonly referringDomains: z.ZodNumber;
3578
+ readonly backlinks: z.ZodNumber;
3579
+ }, z.core.$strip>>>;
3216
3580
  readonly evidence: z.ZodDiscriminatedUnion<[z.ZodObject<{
3217
3581
  _tag: z.ZodLiteral<"no-provider">;
3218
3582
  provider: z.ZodNull;
@@ -3318,7 +3682,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3318
3682
  };
3319
3683
  readonly docs: {
3320
3684
  readonly summary: 'Get Backlinks summary';
3321
- readonly description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. Cached reads consume no units.';
3685
+ readonly description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. It also lists the link spam networks in the retained rows, and the totals without them. Cached reads consume no units.';
3322
3686
  readonly tags: readonly ["Research"];
3323
3687
  readonly examples: readonly [{
3324
3688
  readonly request: {
@@ -3343,6 +3707,21 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3343
3707
  readonly referringIps: 350;
3344
3708
  readonly referringSubnets: 322;
3345
3709
  readonly referringPages: 4800;
3710
+ readonly linkSpamNetworks: readonly [{
3711
+ readonly id: 'lsn_5d1c07a2';
3712
+ readonly anchor: 'Premium SEO Link Building Experts Helping example.com Websites Rank Higher';
3713
+ readonly referringDomains: 42;
3714
+ readonly backlinks: 42;
3715
+ readonly firstSeen: '2026-08-02T00:00:00.000Z';
3716
+ readonly latestSeen: '2026-09-20T00:00:00.000Z';
3717
+ readonly linkingPath: '/dir/organic-visibility-backlinks-86677';
3718
+ readonly targetPaths: readonly ["/"];
3719
+ readonly otherSites: 201;
3720
+ }];
3721
+ readonly withoutLinkSpamNetworks: {
3722
+ readonly referringDomains: 370;
3723
+ readonly backlinks: 5078;
3724
+ };
3346
3725
  readonly evidence: {
3347
3726
  readonly _tag: 'live';
3348
3727
  readonly provider: 'dataforseo';
@@ -3404,6 +3783,14 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3404
3783
  readonly lostDate: z.ZodNullable<z.ZodString>;
3405
3784
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
3406
3785
  readonly sessions: z.ZodNullable<z.ZodNumber>;
3786
+ /**
3787
+ * The id of the Link Spam Network this domain is a known member of, as in
3788
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
3789
+ * never verified clean: membership is known only for the domains the
3790
+ * retained rows sampled or the Timeline recorded. A producer must send it;
3791
+ * a client treats it as optional, because older servers do not.
3792
+ */
3793
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
3407
3794
  }, z.core.$strip>>;
3408
3795
  readonly total: z.ZodNumber;
3409
3796
  readonly limit: z.ZodNumber;
@@ -3448,6 +3835,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3448
3835
  readonly firstSeen: z.ZodNullable<z.ZodString>;
3449
3836
  readonly lostDate: z.ZodNullable<z.ZodString>;
3450
3837
  readonly sessions: z.ZodNullable<z.ZodNumber>;
3838
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3451
3839
  }, z.core.$strip>>;
3452
3840
  readonly total: z.ZodNumber;
3453
3841
  readonly limit: z.ZodNumber;
@@ -3556,7 +3944,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3556
3944
  };
3557
3945
  readonly docs: {
3558
3946
  readonly summary: 'List referring domains';
3559
- readonly description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. Cached reads consume no units.';
3947
+ readonly description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. A row that is a known member of a link spam network carries its id. Cached reads consume no units.';
3560
3948
  readonly tags: readonly ["Research"];
3561
3949
  readonly examples: readonly [{
3562
3950
  readonly request: {
@@ -3583,6 +3971,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3583
3971
  readonly firstSeen: '2026-02-09 20:43:50 +00:00';
3584
3972
  readonly lostDate: null;
3585
3973
  readonly sessions: 143;
3974
+ readonly linkSpamNetworkId: null;
3586
3975
  }];
3587
3976
  readonly total: 1;
3588
3977
  readonly limit: 100;
@@ -3645,6 +4034,14 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3645
4034
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
3646
4035
  readonly firstSeen: z.ZodNullable<z.ZodString>;
3647
4036
  readonly lostDate: z.ZodNullable<z.ZodString>;
4037
+ /**
4038
+ * The id of the Link Spam Network whose generated sentence this anchor is,
4039
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
4040
+ * evidence. `null` means not known to be in one, never verified clean. A
4041
+ * producer must send it; a client treats it as optional, because older
4042
+ * servers do not.
4043
+ */
4044
+ readonly linkSpamNetworkId: z.ZodNullable<z.ZodString>;
3648
4045
  }, z.core.$strip>>;
3649
4046
  readonly total: z.ZodNumber;
3650
4047
  readonly limit: z.ZodNumber;
@@ -3688,6 +4085,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3688
4085
  readonly spamScore: z.ZodNullable<z.ZodNumber>;
3689
4086
  readonly firstSeen: z.ZodNullable<z.ZodString>;
3690
4087
  readonly lostDate: z.ZodNullable<z.ZodString>;
4088
+ readonly linkSpamNetworkId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
3691
4089
  }, z.core.$strip>>;
3692
4090
  readonly total: z.ZodNumber;
3693
4091
  readonly limit: z.ZodNumber;
@@ -3796,7 +4194,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3796
4194
  };
3797
4195
  readonly docs: {
3798
4196
  readonly summary: 'List Backlink anchors';
3799
- readonly description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. Cached reads consume no units.';
4197
+ readonly description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. An anchor that is the generated sentence of a link spam network carries its id. Cached reads consume no units.';
3800
4198
  readonly tags: readonly ["Research"];
3801
4199
  readonly examples: readonly [{
3802
4200
  readonly request: {
@@ -3822,6 +4220,7 @@ export declare const backlinksV1Registry: import("./core.js").PublicV1Registry<{
3822
4220
  readonly spamScore: 3;
3823
4221
  readonly firstSeen: '2026-01-04 11:02:11 +00:00';
3824
4222
  readonly lostDate: null;
4223
+ readonly linkSpamNetworkId: null;
3825
4224
  }];
3826
4225
  readonly total: 1;
3827
4226
  readonly limit: 100;