Which linking sites are a risk, and why
https://seolyticize.com /api/v1/tools/get_toxic_link_risk Judges each site linking to the client from the evidence a person can check: the vendor's spam score (fetchSpamScores: true buys it for every linking site inside this call — one paid DataForSEO request of up to 1,000 sites, the price of get_backlink_spam_scores, with sites scored in the last 30 days reused free; or pass spamScores you already have), sitewide links (the link on most of the pages we hold of the site: a footer or blogroll), link-seller neighbourhoods (a site linking out to hundreds of domains from few pages), commercial exact-match anchors (pass moneyTerms; brand terms are excluded), the vendor links' own authority and outbound signals, and claude-seo's thirty toxic patterns where the data allows (a page with 10,000+ or 50+ outbound links, a domain registered under 30 days ago with 100+ outbound links or re-registered after it lapsed — from RDAP for the sites linking out most — pharma or casino injections, sitewide links and exact-match anchors from unrelated sites, foreign-language and parked sites, article directories, forum profiles, press release wires, coupon sites, comment links, unrelated niches when moneyTerms say what the client does), each pattern reported flagged, clear or unmeasured with why. disavow says whether a file is worth making (toxic over 10% of the sites: yes; under 2%: no). A verdict (healthy, review, toxic) and every reason with its detail; whether the last saved disavow file already names the site, and the toxic sites that appeared since it. Answers 'which of our links are toxic and why' and 'what should go in the disavow file now'. 'review' means look, not disavow. Free without fetchSpamScores; with it, quote it with estimate_cost or dryRun first.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredmoneyTermsstring[]spamScoresobjectfetchSpamScoresbooleanminVerdictstringlimitintegermaxCostMicrosintegerdryRunboolean{
"clientId": "string",
"moneyTerms": [],
"spamScores": {},
"fetchSpamScores": false,
"minVerdict": "review",
"limit": 200,
"maxCostMicros": 0,
"dryRun": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/get_toxic_link_risk" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","moneyTerms":[],"spamScores":{},"fetchSpamScores":false,"minVerdict":"review","limit":200,"maxCostMicros":0,"dryRun":true}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
data, and its meta.Example
{
"data": {},
"meta": {
"requestId": "string",
"costMicros": 0,
"cached": true,
"cachedFrom": "string",
"dataAsOf": "string",
"sources": [
"string"
],
"partial": true,
"next": [
{
"tool": "string",
"args": {},
"why": "string"
}
],
"nextCursor": "string",
"dryRun": true
}
}Schema
datarequiredmetaobjectrequiredShow child parameters
requestIdstringrequiredcostMicrosintegerrequiredcachedbooleanrequiredcachedFromstringdataAsOfstringsourcesstring[]partialbooleanrequirednextobject[]requiredShow child parameters
toolstringargsobjectwhystringnextCursorstringdryRunbooleanX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerX-Request-IdstringExample
{
"error": "string",
"code": "string",
"next": "string",
"requestId": "string"
}Schema
errorstringrequiredcodestringnextstringrequestIdstringX-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/get_toxic_link_risk
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger