list_backlink_opportunities
list_backlink_opportunities MCP tool: domains that drive GEO impact with marketplace offers and prices. Filter by impact score, price range, provider for ROI link building.
Updated 2026-04-26
list_backlink_opportunities
list_backlink_opportunities returns domains where buying a backlink could improve a project's GEO visibility, paired with live marketplace offers and prices. Each row carries an impact score, raw GEO metrics (citations, fan-out searches, LLMs and prompts involved) and a list of available offers from connected marketplaces.
When to use
This is the link-building tool. Use it when the user says "give me link targets I can buy this month", "what is the best ROI link I can get under €500?", or "rank my backlink ideas by impact-to-price ratio". It builds on list_llm_sources by enriching domains with commercial data: bestPrice, available providers, full offer list.
Input
| Field | Type | Default | Description |
|---|---|---|---|
projectId |
string (CUID) | required | Project to query. |
cursor |
string | — | Pagination cursor. |
limit |
integer | 20 | 1 to 100. |
filters.minImpactScore |
integer | — | Minimum impact score. |
filters.hasOffer |
boolean | — | Restrict to domains with or without active offers. |
filters.priceMin |
number | — | Minimum best price. |
filters.priceMax |
number | — | Maximum best price. |
filters.providers |
string[] | — | Filter by marketplace provider. |
filters.domainContains |
string | — | Case-insensitive domain substring. |
sortBy |
enum | impact_score_desc |
impact_score_desc, cheapest_offer, best_impact_price_ratio, recent. |
Response
data rows include the impact score, GEO metrics, the cheapest offer and the full offers.items array. The summary block aggregates portfolio stats: total domains, with/without offers, price range.
{
"data": [
{
"id": "clxbl001",
"domain": "searchenginejournal.com",
"impactScore": 87,
"metrics": {
"citationCount": 23,
"webSearchCount": 45,
"llmCount": 5,
"promptCount": 18
},
"bestPrice": 320,
"offers": {
"count": 2,
"cheapest": { "provider": "collaborator", "price": 320 },
"items": [
{ "id": "clxoff1", "provider": "collaborator", "price": 320 },
{ "id": "clxoff2", "provider": "whitepress", "price": 410 }
]
},
"createdAt": "2026-04-01T00:00:00.000Z",
"updatedAt": "2026-04-25T00:00:00.000Z"
}
],
"pageInfo": { "hasMore": true, "nextCursor": "clxbl020", "totalCount": 174 },
"summary": {
"totalBacklinks": 174,
"withOffers": 98,
"withoutOffers": 76,
"priceStats": { "min": 80, "max": 1500, "avg": 412 }
}
}
Tips and patterns
sortBy: best_impact_price_ratiois the right default for budget-constrained agents: it surfaces the highest impact per euro.- Use
filters.hasOffer: trueto limit results to domains where you can actually buy a placement today. - Combine
priceMin/priceMaxwithminImpactScoreto bracket the search to your monthly budget and quality bar. - A row with
impactScorehigh butoffers.countzero is still useful: those are direct outreach targets without a marketplace path.
Related tools
- list_llm_sources — the underlying citation/fan-out signal that powers
impactScore. - list_competitor_sources — find domains where competitors win, then check if they exist as opportunities here.