---
title: "Fact-by-fact product comparison"
method: GET
path: "/api/compare/{pair}"
tags: ["Facts"]
---

# Fact-by-fact product comparison

`GET /api/compare/{pair}`

## Request

- Base URL: `https://api.orbator.io`
- URL: `https://api.orbator.io/api/compare/{pair}`
- Auth: one of:
  - none
  - API key in header `X-Api-Key`
  - HTTP bearer

Side-by-side data for a published comparison pair: both entities, their sourced/dated facts grouped by type, each side's per-engine recommendation share, and shared category context. Pair slugs are the two canonical domains joined by "-vs-", alphabetically ordered, e.g. asana.com-vs-trello.com. A pair returns 404 until it is published and both sides carry at least five sourced facts.

## Path parameters

- `pair` string, required

## Response `200`

Comparison payload (facts per side, sources, verified dates, per-engine share)

- Comparison
  - `source` string
  - `license` string
  - `methodology_url` string
  - `pair` string: Canonical pair slug (alphabetical by domain)
  - `window` IndexWindow: 4-week rolling measurement window
    - `weeks` integer
    - `from` string, date-time
    - `to` string, date-time
    - `prior_from` string, date-time: Start of the prior window trends compare against
  - `entities` object: Both sides, keyed a/b — a is the alphabetically-first domain
    - `a` ComparisonEntity
      - `index_product_id` string, uuid
      - `name` string
      - `canonical_domain` string, nullable
      - `claimed` boolean: A verified owner claim exists for this entity
      - `facts` object: Sourced facts grouped by fact type (pricing, feature, integration, founded, hq, platform, limit)
      - `per_engine` object[]: Per-engine recommendation share over the 4-week window
        - `engine` string
        - `runs` integer
        - `mentions` integer
        - `share` number: % of this engine's runs recommending the entity
      - `categories` object[]: Published categories where the entity is recommended, with its share + trend
        - `slug` string
        - `label` string
        - `sample_size` integer
        - `share` number
        - `trend` object, nullable
          - `direction` 'up' | 'down' | 'flat' | 'new'
          - `delta` number
          - `prior_share` number, nullable
    - `b` ComparisonEntity
      - `index_product_id` string, uuid
      - `name` string
      - `canonical_domain` string, nullable
      - `claimed` boolean: A verified owner claim exists for this entity
      - `facts` object: Sourced facts grouped by fact type (pricing, feature, integration, founded, hq, platform, limit)
      - `per_engine` object[]: Per-engine recommendation share over the 4-week window
        - `engine` string
        - `runs` integer
        - `mentions` integer
        - `share` number: % of this engine's runs recommending the entity
      - `categories` object[]: Published categories where the entity is recommended, with its share + trend
        - `slug` string
        - `label` string
        - `sample_size` integer
        - `share` number
        - `trend` object, nullable
          - `direction` 'up' | 'down' | 'flat' | 'new'
          - `delta` number
          - `prior_share` number, nullable

## Other responses

- `404`: Unknown pair, unpublished pair, or either side under the facts gate
- `429`: Hourly quota exceeded for the current tier. Retry after the Retry-After header.

---

[API](https://skmtc.dev/orbator/apis/orbator-public-api.md) · [All operations](https://skmtc.dev/orbator/apis/orbator-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/orbator/apis/orbator-public-api/revisions/7d1cf20c2163?raw)
