> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shareofmodel.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Query Fan-Out

> List all Query Fan-out metrics for a project, aggregated by query fan-out text, keyword, and source. Provides informations about ranked domains and presence of the main project domain



## OpenAPI

````yaml https://openapi.shareofmodel.ai/swagger-sos.json get /v1/organizations/{organization_id}/workspaces/{workspace_id}/analyses/{project_id}/search/query-fan-out
openapi: 3.0.3
info:
  title: Share Of Model API
  version: v1
  description: >-
    ## Search



    The Share of Search API provides visibility, presence, and ranking metrics
    for tracked

    search and AI engine sources. Use it to analyse how a project performs
    across keywords,

    thematics, competitors, and ranked URLs over time.


    For the previous version of the API, see the [v1
    documentation](https://api.shareofsearch.jplus.io/docs/v1).
servers:
  - description: Search - Production API
    url: https://api.shareofsearch.jplus.io/
security: []
tags:
  - name: Projects
    description: >-
      Manage analyses (projects) within a workspace. Create new analyses and
      list existing ones.
  - name: Collects
    description: >-
      Access data collection runs and their raw results. List collect runs for
      an analysis, or retrieve the raw data captured during each run: domain
      rankings, brand mentions, keyword insights, and LLM/SERP responses.
  - name: Overview Metrics
    description: >-
      High-level, aggregated metrics that summarise the overall performance of
      an analysis. Use these endpoints to get a quick picture of visibility,
      presence, andranking across all keywords and sources.
  - name: Metrics
    description: >-
      Detailed, per-entity metrics for deep-diving into specific aspects of an
      analysis. Break down performance by domain, brand, keyword, URL, or
      competitor.
  - name: Insights
    description: >-
      Cross-project KPIs aggregated at the workspace level. These endpoints
      consolidate metrics from all active projects within a workspace to provide
      a unified view of visibility, mentions, citations, sentiment, and ranking.
  - name: Shopping
    description: >-
      Shopping-specific metrics for analyses that track product listings in
      shopping engines. Measure product visibility, pricing, merchant coverage,
      and share of shelf across all tracked keywords and sources.
paths:
  /v1/organizations/{organization_id}/workspaces/{workspace_id}/analyses/{project_id}/search/query-fan-out:
    get:
      tags:
        - Metrics
      summary: Query Fan-Out
      description: >-
        List all Query Fan-out metrics for a project, aggregated by query
        fan-out text, keyword, and source. Provides informations about ranked
        domains and presence of the main project domain
      operationId: list_query_fan_outs
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            title: Organization Id
        - name: workspace_id
          in: path
          required: true
          schema:
            type: string
            title: Workspace Id
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            title: Project Id
        - name: intent_groups
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/IntentGroup'
            nullable: true
            title: Intent Groups
        - name: intent_sub_groups
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/IntentSubGroup'
            nullable: true
            title: Intent Sub Groups
        - name: keyword_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by keyword IDs
            title: Keyword Ids
          description: Filter by keyword IDs
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            default: 1
            title: Page
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            default: 20
            title: Page Size
        - name: search_query
          in: query
          required: false
          schema:
            type: string
            nullable: true
            title: Search Query
        - name: sort_column
          in: query
          required: false
          schema:
            allOf:
              - $ref: '#/components/schemas/QueryFanOutSortColumnEnum'
            nullable: true
            title: Sort Column
        - name: sort_direction
          in: query
          required: false
          schema:
            allOf:
              - $ref: '#/components/schemas/QueryFanOutSortDirectionEnum'
            nullable: true
            title: Sort Direction
        - name: group_by
          in: query
          required: false
          schema:
            allOf:
              - $ref: '#/components/schemas/QueryFanOutGroupByEnum'
            nullable: true
            default: default
            title: Group By
        - name: date_start
          in: query
          required: true
          schema:
            type: string
            format: date
            description: Start of the date range (YYYY-MM-DD)
            title: Date Start
          description: Start of the date range (YYYY-MM-DD)
        - name: date_end
          in: query
          required: false
          schema:
            type: string
            format: date
            nullable: true
            description: >-
              End of the date range (YYYY-MM-DD). Defaults to end of period
              containing date_start.
            title: Date End
          description: >-
            End of the date range (YYYY-MM-DD). Defaults to end of period
            containing date_start.
        - name: period
          in: query
          required: false
          schema:
            enum:
              - day
              - week
              - month
              - year
            type: string
            description: 'Aggregation period: day, week, month, or year'
            default: week
            title: Period
          description: 'Aggregation period: day, week, month, or year'
        - name: sources
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/SourcesEnum'
            nullable: true
            title: Sources
        - name: thematics
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            nullable: true
            description: Filter by a list of thematic IDs
            title: Thematics
          description: Filter by a list of thematic IDs
        - name: keyword_type
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/KeywordOverviewMetricTypeEnum'
            nullable: true
            description: Filter by a list of keyword types
            title: Keyword Type
          description: Filter by a list of keyword types
        - name: funnel_stages
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/FunnelStage'
            nullable: true
            description: Filter by a list of Funnel Stages
            title: Funnel Stages
          description: Filter by a list of Funnel Stages
        - name: persona_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of persona IDs
            title: Persona Ids
          description: Filter by a list of persona IDs
        - name: topic_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of topic IDs
            title: Topic Ids
          description: Filter by a list of topic IDs
        - name: get_neutrals
          in: query
          required: false
          schema:
            type: boolean
            nullable: true
            description: >-
              Filter by to get results related to neutral prompts, without
              weakness or strength
            title: Get Neutrals
          description: >-
            Filter by to get results related to neutral prompts, without
            weakness or strength
        - name: strength_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of strength IDs
            title: Strength Ids
          description: Filter by a list of strength IDs
        - name: weakness_ids
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
            nullable: true
            description: Filter by a list of weakness IDs
            title: Weakness Ids
          description: Filter by a list of weakness IDs
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PaginatedResponse_AggregatedQueryFanOutItemResponse_
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    IntentGroup:
      type: string
      enum:
        - DECISION_MAKING
        - COMPARATIVE
        - EXPLORATORY
        - PRODUCT_SPECS
        - SOCIAL_PROOF
        - UNKNOWN
      title: IntentGroup
    IntentSubGroup:
      type: string
      enum:
        - BUYER_GUIDE
        - PRICING
        - VALUE_FOR_MONEY
        - BEST_FOR_PERSONA
        - COMPARISON
        - X_VS_Y
        - ALTERNATIVES
        - PROS_CONS
        - TOP_LISTS
        - DEFINITION
        - HOW_IT_WORKS
        - PITFALLS
        - GLOSSARY
        - TECHNICAL_SPECS
        - FEATURE_LISTS
        - COMPATIBILITY
        - PERFORMANCE_METRICS
        - REVIEWS
        - EXPERT_OPINION
        - TRENDS
        - CASE_STUDIES
        - UNKNOWN
      title: IntentSubGroup
    QueryFanOutSortColumnEnum:
      type: string
      enum:
        - text
        - keyword_text
        - source
        - domain_presence
        - intent_sub_group
        - nb_urls
        - stability_index
      title: QueryFanOutSortColumnEnum
    QueryFanOutSortDirectionEnum:
      type: string
      enum:
        - asc
        - desc
      title: QueryFanOutSortDirectionEnum
    QueryFanOutGroupByEnum:
      type: string
      enum:
        - default
        - keyword
        - query_fan_out
      title: QueryFanOutGroupByEnum
    SourcesEnum:
      type: string
      enum:
        - Bing
        - BingAIO
        - ChatGPT
        - Perplexity
        - Google
        - GoogleAIO
        - GoogleAIMode
        - Claude
        - Gemini
        - AmazonRufus
      title: SourcesEnum
    KeywordOverviewMetricTypeEnum:
      type: string
      enum:
        - Generic
        - Brand
      title: KeywordOverviewMetricTypeEnum
    FunnelStage:
      type: string
      enum:
        - ToFu
        - MoFu
        - BoFu
      title: FunnelStage
    PaginatedResponse_AggregatedQueryFanOutItemResponse_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/AggregatedQueryFanOutItemResponse'
          type: array
          title: Data
          description: Items for the current page.
        pagination:
          allOf:
            - $ref: '#/components/schemas/Pagination'
          description: Pagination metadata.
      type: object
      required:
        - data
        - pagination
      title: PaginatedResponse[AggregatedQueryFanOutItemResponse]
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AggregatedQueryFanOutItemResponse:
      properties:
        text:
          type: string
          title: Text
          description: Query fan-out text.
        keyword_text:
          type: string
          title: Keyword Text
          description: Parent keyword text.
        keyword_id:
          type: string
          title: Keyword Id
          description: Parent keyword identifier.
        query_fan_out_id:
          type: string
          title: Query Fan Out Id
          description: Unique identifier for this query fan-out.
        urls:
          items:
            type: string
          type: array
          title: Urls
          description: URLs that appeared for this query fan-out.
        source:
          allOf:
            - $ref: '#/components/schemas/SourcesEnum'
          description: Search or AI engine source.
        stability_index:
          items:
            $ref: '#/components/schemas/StabilityIndexEntry'
          type: array
          title: Stability Index
          description: Presence history across collects.
        domain_presence:
          allOf:
            - $ref: '#/components/schemas/DomainPresenceStatus'
          description: Presence status of the tracked domain.
        intents:
          items:
            $ref: '#/components/schemas/Intent'
          type: array
          title: Intents
          description: Intent classifications for this query fan-out.
        keyword_score:
          allOf:
            - $ref: '#/components/schemas/Metric'
          nullable: true
          description: Keyword score metric.
        keyword_type:
          type: string
          nullable: true
          title: Keyword Type
          description: Type of the parent keyword.
        keyword_persona_id:
          type: string
          nullable: true
          title: Keyword Persona Id
          description: Persona associated with the parent keyword.
        keyword_funnel_stage:
          type: string
          nullable: true
          title: Keyword Funnel Stage
          description: Funnel stage of the parent keyword.
      type: object
      required:
        - text
        - keyword_text
        - keyword_id
        - query_fan_out_id
        - urls
        - source
        - stability_index
        - domain_presence
        - intents
      title: AggregatedQueryFanOutItemResponse
    Pagination:
      properties:
        page:
          type: integer
          title: Page
          description: Current page number (1-based).
        page_size:
          type: integer
          title: Page Size
          description: Maximum number of items returned per page.
        total:
          type: integer
          title: Total
          description: Total number of items matching the query, across all pages.
      type: object
      required:
        - page
        - page_size
        - total
      title: Pagination
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    StabilityIndexEntry:
      properties:
        collect_id:
          type: string
          title: Collect Id
          description: Collect ID for this stability index entry.
        present:
          type: boolean
          title: Present
          description: Whether the query fan-out was present in this collect.
        order:
          type: integer
          title: Order
          description: Position order within this collect.
      type: object
      required:
        - collect_id
        - present
        - order
      title: StabilityIndexEntry
    DomainPresenceStatus:
      type: string
      enum:
        - NEW
        - PRESENT
        - NOT_PRESENT
        - NOT_APPLICABLE
      title: DomainPresenceStatus
    Intent:
      properties:
        group:
          allOf:
            - $ref: '#/components/schemas/IntentGroup'
          description: Top-level intent group.
        sub_group:
          allOf:
            - $ref: '#/components/schemas/IntentSubGroup'
          description: Granular intent sub-group.
      type: object
      required:
        - group
        - sub_group
      title: Intent
    Metric:
      properties:
        value:
          type: number
          title: Value
          description: Current value for the selected period.
        prev_value:
          type: number
          nullable: true
          title: Prev Value
          description: >-
            Value for the previous comparable period. Null when no comparison
            period is available.
        unit:
          type: string
          nullable: true
          title: Unit
          description: >-
            Unit of the metric (e.g. '%', 'ms'). Null when the value is
            dimensionless.
      type: object
      required:
        - value
      title: Metric
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````