get_fan_out_extraction

get_fan_out_extraction MCP tool: read one fan-out extraction. Status, progress, summary (top domains, site and competitor presence, queries where the site is absent) and per prompt the ranked results of each search. JSON example.

Updated 2026-09-26

get_fan_out_extraction returns one fan-out extraction launched with create_fan_out_extraction or from the app. It gives the status, the progress prompt by prompt, a summary built for decisions, and, for each prompt, the searches ChatGPT's search engine ran in order, with their queries and ranked results.

Each result carries flags: cited (the page backs the answer), opened (the engine opened the page), isOwn (your site) and isCompetitor (a confirmed competitor). Site and competitor flags are computed when you read, so a competitor confirmed after the extraction shows up.

When to use

  • Polling after create_fan_out_extraction, until status is COMPLETED, PARTIAL or FAILED.
  • Content planning: summary.queriesWithoutOwn lists the queries of the prompts where your site never appears in the results.
  • Competitive reading: summary.topDomains ranks the domains the engine keeps finding, with how often they are cited.

Input

Field Type Default Description
projectId string (CUID) required Project that owns the extraction.
extractionId string (CUID) required The extraction to read.
include.items boolean true Per-prompt searches and results. Set false for the summary only.
include.citedText boolean false The passage of the answer each cited page backs. Heavier, opt-in.

Response

{
  "success": true,
  "extraction": {
    "id": "clx_ext_42",
    "status": "COMPLETED",
    "llm": "CHATGPT",
    "model": "gpt-5.4-mini",
    "origin": "mcp",
    "promptCount": 2,
    "creditsCharged": 5,
    "progress": { "pending": 0, "done": 1, "empty": 1, "failed": 0 },
    "createdAt": "2026-09-26T10:00:00.000Z",
    "completedAt": "2026-09-26T10:00:41.000Z"
  },
  "summary": {
    "searchedPrompts": 1,
    "ownPresence": 0,
    "competitorPresence": 1,
    "topDomains": [
      { "domain": "g2.com", "results": 2, "cited": 1, "prompts": 1, "isOwn": false, "isCompetitor": false }
    ],
    "queriesWithoutOwn": [
      { "query": "best crm for startups 2026", "promptId": "clx_p_1", "promptText": "best CRM for startups" }
    ]
  },
  "items": [
    {
      "id": "clx_i_1",
      "promptId": "clx_p_1",
      "promptText": "best CRM for startups",
      "status": "DONE",
      "country": "US",
      "searches": [
        {
          "position": 1,
          "queries": ["best crm for startups 2026"],
          "results": [
            { "url": "https://g2.com/categories/crm", "domain": "g2.com", "rank": 1, "cited": true },
            { "url": "https://hubspot.com/crm", "domain": "hubspot.com", "rank": 2, "isCompetitor": true }
          ]
        }
      ]
    }
  ]
}

Item status is PENDING, DONE (the engine searched, 5 credits charged), EMPTY (answered without searching, nothing charged) or FAILED (nothing charged). ownPresence and competitorPresence are shares between 0 and 1 of the prompts where the engine searched. Flags and optional fields only appear when set, to keep the payload small. Pages opened or cited without appearing in any search are listed under otherSources.

An unknown id, or an extraction of another project, returns { "success": false, "error": "extraction_not_found" }.

Tips and patterns

  • Summary first. Start with include.items: false; fetch items only for the prompts you dig into.
  • Poll gently. While PENDING or RUNNING, items fill in as prompts finish; the shape stays the same.
  • Read rank per search. Ranks restart at 1 for each search; a page found by two searches keeps its first position.
  • The queries come from OpenAI's search engine, queried through its API, not from the tracked answer.

Related tools

You can see where you stand today.

Free trial. Start tracking your AI visibility, no credit card.