Resource pages, best-of lists, roundups, podcasts and newsletters for a topic
https://seolyticize.com /api/v1/tools/find_link_opportunities Finds places that link out by design, from Google results for the search footprints link builders use: resource pages ("useful links", intitle:resources), "best X" lists, link roundups, podcasts inviting guests, and newsletters taking sponsors or guest pieces — each with the query that found it, its title, snippet and position. The client's own domain and the giant platforms are left out. addToList puts every page on the client's outreach list (as add_link_prospects would; needs client:manage). Answers 'which resource pages could list us', 'which podcasts take guests in our niche' and 'where can we sponsor a newsletter'. One results page per query: queriesPerKind × kinds reads. A paid lookup on the client's account unless anyone read the same thing recently (spend says which); quote it with estimate_cost.
Parameters
Idempotency-KeystringheaderRequest body
application/json
clientIdstringrequiredtopicstringrequiredkindsstring[]queriesPerKindintegerdepthintegerexcludeDomainsstring[]addToListbooleanlocationCodeintegerlanguageCodestringmaxCostMicrosintegerdryRunboolean{
"clientId": "string",
"topic": "string",
"kinds": [
"resource_pages",
"best_lists",
"roundups"
],
"queriesPerKind": 1,
"depth": 20,
"excludeDomains": [],
"addToList": false,
"locationCode": null,
"languageCode": null,
"maxCostMicros": 0,
"dryRun": true
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/find_link_opportunities" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","topic":"string","kinds":["resource_pages","best_lists","roundups"],"queriesPerKind":1,"depth":20,"excludeDomains":[],"addToList":false,"locationCode":null,"languageCode":null,"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/find_link_opportunities
WWW-AuthenticatestringSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-ResetintegerRetry-AfterintegerSame as 400 · POST /api/v1/tools/find_link_opportunities
X-RateLimit-LimitintegerX-RateLimit-RemainingintegerX-RateLimit-Resetinteger