Public API · v1

Noetis Benchmark API

Free access to conversion rate benchmarks across 10 verticals. No authentication required for read access. Aggregate and anonymised.

Base URL

https://app.noetis.nl/api/public

GET /benchmark

Returns CVR percentile distribution and top winning experiment mechanisms for a vertical, sourced from the live Noetis experiment network.

Parameters
verticalstring

One of: saas, ecommerce, agency, finance, health, fitness, education, consulting, all

Default: saas

optional

Example request

GET https://app.noetis.nl/api/public/benchmark?vertical=saas

cURL

curl -s "https://app.noetis.nl/api/public/benchmark?vertical=saas" | jq .

Response (200) — shape only; values are placeholders, not network data

{
  "vertical": "saas",
  "vertical_label": "B2B SaaS",
  "benchmark_unavailable": null,
  "benchmark": {
    "p10": 0.004, "p25": 0.009, "p50": 0.018, "p75": 0.031, "p90": 0.052,
    "sample_sites": 0,
    "sample_events": 0,
    "data_quality": "earned",
    "updated_at": "2026-01-01T00:00:00Z",
    "is_fallback": false
  },
  "mechanisms": [
    {
      "section_type": "CTA",
      "label": "Call-to-action copy",
      "win_rate": 0,
      "avg_lift": 0,
      "site_count": 0
    }
  ],
  "network": {
    "total_experiments": 0,
    "total_wins": 0,
    "avg_lift_pct": 0
  },
  "generated_at": "2026-01-01T00:00:00Z"
}

Response fields

Fields
benchmark.p10 … benchmark.p90number | null

CVR percentiles for the vertical, as fractions (0.018 = 1.8%). The whole object is null while too few real sites contribute.

benchmark_unavailableobject | null

Set (with a reason and a message) exactly when benchmark is null. Absent is never reported as zero.

mechanisms[].section_typestring

Experiment type key: CTA, headline, hero, copy, layout, social_proof, pricing, form, trust

mechanisms[].win_ratenumber

Percentage of completed experiments of this type that won (0–100).

mechanisms[].avg_liftnumber

Average relative lift (%) across winning experiments of this type.

mechanisms[].site_countnumber

Distinct sites contributing. A mechanism is listed only when ≥5 sites contribute (k-anonymity).

network.total_experimentsnumber

Total experiments in the Noetis network (all verticals, all outcomes).

network.total_winsnumber

Winning experiments behind network.avg_lift_pct.

network.avg_lift_pctnumber

Average relative lift (%) across all winning experiments; 0 when total_wins is 0.

Errors

400

Unknown vertical. See supported list above.

429

Rate limit exceeded (20 requests / 60 seconds per IP). Retry after 1 minute.

500

Internal error. Retry with exponential backoff.

Rate limits

Anonymous20 req / min
Authenticated *200 req / min

* API key authentication coming Q3 2026. Email chris@noetis.nl for early access.

Authentication

The /benchmark endpoint is public and requires no authentication. Future endpoints for site-level data and custom vertical queries will require an API key.

Use cases

  • CRO agency dashboards — show clients where they sit vs. benchmark
  • Analytics products — embed conversion intelligence into reports
  • Growth tools — surface "you're below median" prompts
  • Sales decks — live proof of industry conversion gaps

Building something?

We want to know what you're making. Write to us and we'll help.

chris@noetis.nl →