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

# Extract Microsoft Copilot

> Extract structured data from Microsoft Copilot about your brand, products, or any topic across various regions

## Overview

The Microsoft Copilot endpoint extracts structured data from Microsoft Copilot with [shopping cards](/api-reference/endpoint/copilot/shopping-cards) for product tracking. Useful for development tools, Microsoft ecosystem research, and enterprise-focused queries.

<Info>
  **Web search enabled**

  This endpoint uses Copilot's default interface, which always performs web searches for all requests to provide real-time information with source citations.
</Info>

## Request parameters

Uses [common parameters](/guides/making-requests/sync#common-parameters).

**Endpoint-specific options:**

* `include.markdown` (boolean): Include markdown-formatted response. Defaults to `false`
* `include.rawResponse` (boolean): Include raw streaming response events. Defaults to `false`

## Response objects

The response includes the following sections. See each subpage for the full schema and examples.

| Section                                                          | Description                                            |
| ---------------------------------------------------------------- | ------------------------------------------------------ |
| [Sources](/api-reference/endpoint/copilot/sources)               | Source citations referenced in the response            |
| [Shopping cards](/api-reference/endpoint/copilot/shopping-cards) | Product cards with pricing, ratings, and seller info   |
| [Map entries](/api-reference/endpoint/copilot/map-entries)       | Business and place information with reviews and photos |

## Response schema

Includes [common response fields](/guides/making-requests/sync#common-response-fields) plus:

| Field                  | Type   | Description                                                                                                                                                     |
| ---------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `result.sources`       | array  | Array of [sources](/api-reference/endpoint/copilot/sources) referenced in the response                                                                          |
| `result.shoppingCards` | array  | Array of [shopping card](/api-reference/endpoint/copilot/shopping-cards) objects with product information (automatically included when available)               |
| `result.map`           | array  | Array of [map entry](/api-reference/endpoint/copilot/map-entries) objects with business/place information (automatically included when available)               |
| `result.searchQueries` | array  | Array of query fan-out — the web search queries Copilot ran while generating the response (automatically included when at least one is available, no surcharge) |
| `result.markdown`      | string | Response formatted in Markdown (included when `include.markdown` is true)                                                                                       |
| `result.rawResponse`   | array  | Array of Copilot's streamed response events (included when `include.rawResponse` is true)                                                                       |


## OpenAPI

````yaml api-reference/openapi.json POST /v1/monitor/copilot
openapi: 3.1.0
info:
  title: cloro
  description: API for monitoring AI responses across different providers and regions
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.cloro.dev
    description: Production server
security:
  - bearerAuth: []
paths:
  /v1/monitor/copilot:
    post:
      summary: Monitor Copilot Responses
      description: >-
        Extract structured data from Microsoft Copilot about your brand,
        products, or any topic across various regions
      operationId: monitorCopilot
      requestBody:
        description: Request parameters for monitoring Copilot responses
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopilotMonitorRequest'
        required: true
      responses:
        '200':
          description: successful Copilot monitoring response
          headers:
            X-Concurrent-Limit:
              description: Maximum number of concurrent requests allowed
              schema:
                type: integer
                example: 10
            X-Concurrent-Current:
              description: Current number of concurrent requests
              schema:
                type: integer
                example: 3
            X-Concurrent-Remaining:
              description: Number of remaining concurrent slots available
              schema:
                type: integer
                example: 7
            X-Credits-Remaining:
              description: Number of credits remaining in user account
              schema:
                type: integer
                example: 4
            X-Credits-Charged:
              description: Number of credits charged for this request
              schema:
                type: integer
                example: 5
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopilotMonitorResponse'
        '400':
          description: Bad Request - Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '401':
          description: Unauthorized - Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
        '403':
          description: Forbidden - Insufficient permissions or credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: Not Found - Route not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
        '409':
          description: Conflict - Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictError'
        '429':
          description: Too Many Requests
          headers:
            X-Concurrent-Limit:
              description: Maximum number of concurrent requests allowed
              schema:
                type: integer
                example: 10
            X-Concurrent-Current:
              description: Current number of concurrent requests
              schema:
                type: integer
                example: 11
            X-Concurrent-Remaining:
              description: Number of remaining concurrent slots available
              schema:
                type: integer
                example: 0
            X-Credits-Remaining:
              description: Number of credits remaining in user account
              schema:
                type: integer
                example: 4
            X-Credits-Charged:
              description: Number of credits charged for this request
              schema:
                type: integer
                example: 0
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConcurrentLimitError'
        '499':
          description: Client Closed Request - Request was canceled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CanceledError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalError'
        '502':
          description: Bad Gateway - External service error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalServiceError'
components:
  schemas:
    CopilotMonitorRequest:
      required:
        - prompt
        - country
      type: object
      properties:
        prompt:
          description: The prompt to send to Copilot
          type: string
          minLength: 1
          maxLength: 10000
          example: What are the best laptops for programming?
        country:
          description: Country/region code for localized response
          type: string
          example: US
        include:
          description: Optional flags for including additional response formats
          type: object
          properties:
            html:
              description: Include a URL to the full HTML of the response
              type: boolean
              default: false
              example: true
            markdown:
              description: Include markdown-formatted response in the result
              type: boolean
              default: false
              example: true
            rawResponse:
              description: Include raw streaming response events
              type: boolean
              default: false
              example: true
          default:
            html: false
            markdown: false
            rawResponse: false
          additionalProperties: false
        state:
          $ref: '#/components/schemas/StateParameter'
      additionalProperties: false
    CopilotMonitorResponse:
      required:
        - success
        - result
      type: object
      properties:
        success:
          type: boolean
          example: true
        result:
          description: Copilot response data
          type: object
          properties:
            text:
              type: string
              description: Copilot's response text
              example: >-
                As an AI assistant, I can help you find great laptops for
                programming...
            html:
              type: string
              format: uri
              description: A URL to the full HTML of the response.
              example: >-
                https://storage.cloro.dev/results/c45a5081-808d-4ed3-9c86-e4baf16c8ab8/page-1.html
            sources:
              type: array
              description: Array of sources referenced in the response
              items:
                type: object
                properties:
                  position:
                    type: number
                    description: The position index of the source in the response
                    example: 1
                  url:
                    type: string
                    description: The URL of the source
                    example: https://example.com/article
                  label:
                    type: string
                    description: The display label for the source
                    example: Microsoft Docs
                  description:
                    type: string
                    description: A description of the source content
                    example: Development hardware recommendations
              example:
                - position: 1
                  url: https://docs.microsoft.com/
                  label: Microsoft Docs
                  description: Official development documentation
            citationPills:
              type: array
              description: >-
                Inline citation pills extracted from the Copilot answer. Each
                entry is one (pill, source) pair: when a pill cites N sources
                (consecutive citation events grouped into a single chip), the
                array contains N entries sharing the same `citationPillId` but
                carrying per-source `label`, `url`, and `domain`. Group by
                `citationPillId` to recover the pill-level structure. Omitted
                from `result` when the answer carries no pills.
              items:
                type: object
                required:
                  - label
                  - citationPillId
                  - url
                  - domain
                  - position
                properties:
                  label:
                    type: string
                    description: >-
                      Per-source title from the citation event (e.g. `"Microsoft
                      365 Documentation"`, `"Productivity Best Practices"`).
                      Always present; may be an empty string when the event
                      ships no title — read `domain` / `url` for source identity
                      in that case. Entries grouped under the same
                      `citationPillId` carry different per-source labels.
                    example: Microsoft 365 Documentation
                  citationPillId:
                    type: integer
                    description: >-
                      1-based ordinal shared by all entries from the same chip.
                      Group by `citationPillId` to reconstruct the visible chip;
                      the per-source `label` differs across entries within a
                      chip.
                    example: 1
                  url:
                    type: string
                    description: Direct URL of the cited source.
                    example: https://docs.microsoft.com/
                  domain:
                    type: string
                    description: Host extracted from `url`, for grouping and display.
                    example: docs.microsoft.com
                  description:
                    type: string
                    description: >-
                      Source description from the sources rail when Copilot
                      ships one. Omitted when absent.
                    example: Official development documentation
                  position:
                    type: integer
                    description: >-
                      1-based position of this source in the sibling
                      `result.sources` array.
                    example: 1
              example:
                - label: Microsoft 365 Documentation
                  citationPillId: 1
                  url: https://docs.microsoft.com/
                  domain: docs.microsoft.com
                  description: Official development documentation
                  position: 1
                - label: VS Code on GitHub
                  citationPillId: 1
                  url: https://github.com/microsoft/vscode
                  domain: github.com
                  description: Visual Studio Code repository
                  position: 2
            shoppingCards:
              type: array
              description: >-
                Array of shopping/product cards extracted from the response
                (when available)
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: Shopping card type
                    example: shoppingProducts
                  layout:
                    type: string
                    description: Layout style for the shopping card
                    example: Carousel
                  products:
                    type: array
                    description: Array of product information
                    items:
                      type: object
                      properties:
                        product:
                          type: object
                          description: Product identifier information
                          properties:
                            id:
                              type: string
                              description: Unique product ID
                            groupId:
                              type: string
                              description: Product group ID
                            brandGroupId:
                              type: string
                              description: Brand group ID (optional)
                        position:
                          type: integer
                          description: >-
                            1-indexed rank across all products in all shopping
                            cards in the response (flat, not reset per card).
                          example: 1
                        offerId:
                          type: string
                          description: Unique offer identifier
                        url:
                          type: string
                          description: Product page URL
                        name:
                          type: string
                          description: Product name
                        description:
                          type: string
                          description: Product description
                        images:
                          type: array
                          description: Product images with titles and URLs
                          items:
                            type: object
                            properties:
                              title:
                                type: string
                                description: Image title
                              url:
                                type: string
                                description: Image URL
                        specifications:
                          type: array
                          description: Product specifications (e.g., Color, Size)
                          items:
                            type: object
                            properties:
                              displayName:
                                type: string
                                description: Specification name
                              values:
                                type: array
                                description: Available values
                                items:
                                  type: string
                        tags:
                          type: array
                          description: Product tags
                          items:
                            type: string
                        price:
                          type: object
                          description: Product pricing information
                          properties:
                            amount:
                              type: number
                              description: Price amount
                            currency:
                              type: string
                              description: Currency code (optional)
                            currencySymbol:
                              type: string
                              description: Currency symbol
                        seller:
                          type: string
                          description: Seller name
                        sellerLogoUrl:
                          type: string
                          description: Seller logo URL
                        brandName:
                          type: string
                          description: Product brand name
                        rating:
                          type: object
                          description: Product rating information
                          properties:
                            value:
                              type: number
                              description: Rating value
                            count:
                              type: integer
                              description: Number of ratings
                        canTrackPrice:
                          type: boolean
                          description: Whether price tracking is available
            map:
              type: array
              description: >-
                Array of business/place map entries extracted from the response
                (when available)
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Business name
                    example: WonderWorks Pigeon Forge
                  position:
                    type: integer
                    description: Position in results (1-indexed)
                    example: 1
                  placeId:
                    type: string
                    description: Google Place ID
                    example: ChIJEYpTsk__W4gR2sQLGzOjE3o
                  location:
                    type: object
                    description: Business location
                    properties:
                      address:
                        type: string
                        description: Full street address
                        example: 100 Music Rd, Pigeon Forge, TN 37863
                      latitude:
                        type: number
                        description: GPS latitude
                        example: 35.823257
                      longitude:
                        type: number
                        description: GPS longitude
                        example: -83.5787498
                  phoneNumber:
                    type: string
                    description: Contact phone number
                    example: (865) 868-1800
                  url:
                    type: string
                    format: uri
                    description: Business website URL
                    example: http://www.wonderworksonline.com/pigeon-forge/
                  reviews:
                    type: array
                    description: Review aggregations from providers
                    items:
                      type: object
                      properties:
                        count:
                          type: integer
                          description: Number of reviews
                          example: 10625
                        rating:
                          type: number
                          description: Average rating
                          example: 4.3
                        providerName:
                          type: string
                          description: Review provider name
                          example: Google
                        providerIconUrl:
                          type: string
                          description: Provider icon URL
                        url:
                          type: string
                          format: uri
                          description: Reviews page URL
                          example: https://maps.google.com/?cid=8796553937077126362
                  photos:
                    type: array
                    description: Business photos
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                          description: Photo URL
                        altText:
                          type: string
                          description: Alt text for the photo
                        providerName:
                          type: string
                          description: Photo provider name
                        providerUrl:
                          type: string
                          format: uri
                          description: Photo provider URL
                  openState:
                    type: string
                    description: Current open/closed status
                    example: Open · Closes 9 PM
                  category:
                    type: string
                    description: Business category
                    example: Amusement park
                  price:
                    description: Price level (if available)
                  layerLabel:
                    type: string
                    description: Map layer grouping label
                    example: Theme Parks
                example:
                  name: WonderWorks Pigeon Forge
                  position: 1
                  placeId: ChIJEYpTsk__W4gR2sQLGzOjE3o
                  location:
                    address: 100 Music Rd, Pigeon Forge, TN 37863
                    latitude: 35.823257
                    longitude: -83.5787498
                  phoneNumber: (865) 868-1800
                  url: http://www.wonderworksonline.com/pigeon-forge/
                  reviews:
                    - count: 10625
                      rating: 4.3
                      providerName: Google
                      providerIconUrl: null
                      url: https://maps.google.com/?cid=8796553937077126362
                  photos:
                    - url: https://lh3.googleusercontent.com/gps-cs-s/example
                      altText: null
                      providerName: null
                      providerUrl: https://maps.google.com
                  openState: Open · Closes 9 PM
                  category: Amusement park
                  price: null
                  layerLabel: Theme Parks
            searchQueries:
              type: array
              description: >-
                Array of query fan-out — the web search queries Copilot ran
                while generating the response. Automatically included when at
                least one is available, no surcharge.
              items:
                type: string
              example:
                - best laptops for programming 2025
                - developer laptop reviews
            markdown:
              type: string
              description: >-
                Copilot's response formatted in Markdown (included when
                include.markdown is true)
              example: >-
                As an AI assistant, I can help you find great laptops for
                programming...
            rawResponse:
              type: array
              description: >-
                Raw upstream provider stream captured during the request. Each
                item is one chunk from the provider's wire protocol (SSE event,
                batchexecute frame, etc.). Format is provider-specific,
                undocumented, and may change without notice — use it for
                debugging or to access data not yet surfaced in the structured
                fields above.
              items: {}
    ValidationError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Request validation failed
        details:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                example: prompt
              message:
                type: string
                example: Prompt cannot be empty
    AuthenticationError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - MISSING_API_KEY
                - INVALID_API_KEY_FORMAT
                - INVALID_OR_EXPIRED_API_KEY
              example: MISSING_API_KEY
            message:
              type: string
              example: Missing or invalid API key
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    ForbiddenError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - INSUFFICIENT_PERMISSIONS
                - INSUFFICIENT_CREDITS
              example: INSUFFICIENT_PERMISSIONS
            message:
              type: string
              example: Insufficient permissions
            details:
              type: object
              properties:
                requiredScopes:
                  type: array
                  items:
                    type: string
                  example:
                    - read:monitor
                    - write:monitor
              required: []
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    NotFoundError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: RESOURCE_NOT_FOUND
            message:
              type: string
              example: Route not found
            details:
              type: object
              properties:
                id:
                  type: string
                  example: /v1/invalid-endpoint
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    ConflictError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: RESOURCE_CONFLICT
            message:
              type: string
              example: Resource conflict
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    ConcurrentLimitError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: CONCURRENT_LIMIT_EXCEEDED
            message:
              type: string
              example: Concurrent limit exceeded
            details:
              type: object
              properties:
                limit:
                  type: number
                  example: 10
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    CanceledError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: string
          example: Request was canceled
    InternalError:
      type: object
      oneOf:
        - properties:
            success:
              type: boolean
              example: false
            error:
              type: string
              example: Maximum retries exceeded
        - properties:
            error:
              type: object
              properties:
                code:
                  type: string
                  example: INTERNAL_SERVER_ERROR
                message:
                  type: string
                  example: Internal server error
                timestamp:
                  type: string
                  format: date-time
                  example: '2025-01-15T12:00:00.000Z'
    ExternalServiceError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: EXTERNAL_SERVICE_ERROR
            message:
              type: string
              example: 'External service error: OpenAI'
            details:
              type: object
              properties:
                service:
                  type: string
                  example: OpenAI
            timestamp:
              type: string
              format: date-time
              example: '2025-01-15T12:00:00.000Z'
    StateParameter:
      description: >-
        State code for sub-country geo-targeting (e.g., "CA"). Only valid with
        country "US".
      type: string
      example: CA
      minLength: 2
      maxLength: 2
      pattern: ^[A-Z]{2}$
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````