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_ratio is the right default for budget-constrained agents: it surfaces the highest impact per euro.
  • Use filters.hasOffer: true to limit results to domains where you can actually buy a placement today.
  • Combine priceMin/priceMax with minImpactScore to bracket the search to your monthly budget and quality bar.
  • A row with impactScore high but offers.count zero 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.