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

# Analyze promotional activity in a category

> Analyze promotional activity within a category - promo frequency, average and max discount depth - over a date range. Pivot the breakdown with `aggregate_by`: default `brand` ranks brands within the category; `retailer` ranks retailers (use together with `brand=<name>` to answer 'which retailers run the deepest promos on Brand X in Category Y'). The response key mirrors the dimension: `brands: [...]` or `retailers: [...]`.



## OpenAPI

````yaml https://api.syntalic.com/openapi.json get /v1/marketing/promo-intelligence
openapi: 3.1.0
info:
  title: Syntalic — Pricing Intelligence API
  version: 1.0.0
  description: >-
    Real-time competitive pricing data across US and Canadian e-commerce
    retailers (Amazon, Walmart, Best Buy, Target, etc.). Serves price
    comparisons, deal alerts, brand tracking, promotional intelligence, and
    market analytics to AI agents via x402 and MPP micropayments.
  x-guidance: >-
    This API has three endpoint groups organized by use case:


    **Shopper endpoints** ($0.01/query): Use these for price comparisons and
    deal hunting. Start with /v1/shopper/best-price?q=<product> to find the
    cheapest option across retailers. Use
    /v1/shopper/deal-finder?category=<category> to find discounted products. Use
    /v1/shopper/price-drop-alert?q=<product> to check for recent price drops.


    **Marketing endpoints** ($0.01/query): Use these for competitive analysis.
    /v1/marketing/competitive-landscape?category=<category> shows all products
    in a category with pricing. /v1/marketing/brand-tracker?brand=<brand> tracks
    a brand's pricing over time.
    /v1/marketing/share-of-shelf?category=<category> shows brand market share.


    **Analyst endpoints** ($0.02/query): Use these for market-level insights.
    /v1/analyst/inflation?category=<category> shows price trends over time.
    /v1/analyst/price-dispersion?category=<category> shows price spread across
    retailers.


    All endpoints accept an optional 'country' parameter (us or ca, defaults to
    us). Query parameters use 'q' for free-text search and 'category' for
    category-level queries.
servers:
  - url: https://api.syntalic.com
security: []
paths:
  /v1/marketing/promo-intelligence:
    get:
      tags:
        - Marketing
      summary: Analyze promotional activity in a category
      description: >-
        Analyze promotional activity within a category - promo frequency,
        average and max discount depth - over a date range. Pivot the breakdown
        with `aggregate_by`: default `brand` ranks brands within the category;
        `retailer` ranks retailers (use together with `brand=<name>` to answer
        'which retailers run the deepest promos on Brand X in Category Y'). The
        response key mirrors the dimension: `brands: [...]` or `retailers:
        [...]`.
      operationId: getPromoIntelligence
      parameters:
        - name: category
          in: query
          required: true
          schema:
            type: string
            minLength: 1
          description: >-
            Product category (e.g., electronics, grocery, beauty). Fuzzy
            human-readable input — the resolver maps it through tier 1-4 (id →
            exact name → trigram → embedding kNN) to a canonical category_id.
            Pair with `category_id` if you have a deterministic id from a prior
            call.
          example: electronics
        - name: country
          in: query
          required: false
          schema:
            type: string
            enum:
              - us
              - ca
            default: us
          description: Country (us or ca)
          example: us
        - name: brand
          in: query
          required: false
          schema:
            type: string
            minLength: 1
          description: >-
            Optional brand filter — limit aggregation to products of this brand
            (case-insensitive)
          example: Apple
        - name: aggregate_by
          in: query
          required: false
          schema:
            type: string
            enum:
              - brand
              - retailer
            default: brand
          description: >-
            Group-by dimension. `brand` (default) ranks brands within the
            category. `retailer` ranks retailers — pair with `brand` to answer
            'which retailers run the deepest promos on Brand X'.
          example: retailer
        - name: from
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Start date (ISO 8601, defaults to 30 days ago)
          example: '2026-04-01'
        - name: to
          in: query
          required: false
          schema:
            type: string
            format: date
          description: End date (ISO 8601, defaults to now)
          example: '2026-05-01'
      requestBody:
        required: false
        description: >-
          Query parameters as JSON (alternative to URL query string for agents
          that prefer body-based invocation).
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - category
              properties:
                category:
                  type: string
                  minLength: 1
                  description: >-
                    Product category (e.g., electronics, grocery, beauty). Fuzzy
                    human-readable input — the resolver maps it through tier 1-4
                    (id → exact name → trigram → embedding kNN) to a canonical
                    category_id. Pair with `category_id` if you have a
                    deterministic id from a prior call.
                  example: electronics
                country:
                  type: string
                  enum:
                    - us
                    - ca
                  default: us
                  description: Country (us or ca)
                  example: us
                brand:
                  type: string
                  minLength: 1
                  description: >-
                    Optional brand filter — limit aggregation to products of
                    this brand (case-insensitive)
                  example: Apple
                aggregate_by:
                  type: string
                  enum:
                    - brand
                    - retailer
                  default: brand
                  description: >-
                    Group-by dimension. `brand` (default) ranks brands within
                    the category. `retailer` ranks retailers — pair with `brand`
                    to answer 'which retailers run the deepest promos on Brand
                    X'.
                  example: retailer
                from:
                  type: string
                  format: date
                  description: Start date (ISO 8601, defaults to 30 days ago)
                  example: '2026-04-01'
                to:
                  type: string
                  format: date
                  description: End date (ISO 8601, defaults to now)
                  example: '2026-05-01'
      responses:
        '200':
          description: Promo intelligence
          content:
            application/json:
              schema:
                type: object
        '402':
          description: Payment Required

````