Pull Benchmarketing's benchmark dataset into your warehouse, BI tool, or product. Stable metric definitions, additive-only changes, JSON or CSV.
Create a key in Settings → API Access (any workspace, free tier included) and pass it as a bearer token. Keys can be revoked at any time; the endpoint is rate-limited to 120 requests/minute.
curl -H "Authorization: Bearer bmk_live_..." \ "https://www.benchmarketing.org/api/v1-benchmarks?metric=cpc&platform=google_ads&industry=ecommerce" # CSV export curl -H "Authorization: Bearer bmk_live_..." \ "https://www.benchmarketing.org/api/v1-benchmarks?metric=cpa&format=csv" -o benchmarks.csvQuery parameters: metric, platform, industry, geographyId, period, limit (max 2000), format=csv. All optional; omit to page through everything.
The endpoint is plain REST, so any HTTP client works. No SDK to install — these call the exact same URL documented above.
Python
import requests r = requests.get( "https://www.benchmarketing.org/api/v1-benchmarks", params={"metric": "cpa", "platform": "google_ads", "industry": "ecommerce"}, headers={"Authorization": "Bearer bmk_live_..."}, ) data = r.json()Node.js
const res = await fetch( "https://www.benchmarketing.org/api/v1-benchmarks" + "?metric=cpa&platform=google_ads&industry=ecommerce", { headers: { Authorization: "Bearer bmk_live_..." } } ); const data = await res.json();For spreadsheets or BI tools without a code step, use the format=csv query parameter and import the URL directly into Google Sheets (IMPORTDATA) or a Looker Studio file-based connector.
metric_id | Stable metric identifier (see the definitions table below). Never renamed. |
platform_id | Channel platform, e.g. google_ads, meta_ads, linkedin_ads, tiktok_ads. Null = cross-platform. |
channel_family_id | Channel family grouping, e.g. paid-search, paid-social, email-marketing. |
industry_id | Industry slug, e.g. ecommerce, saas, healthcare. Null = cross-industry. |
business_model_id | Business model slug (b2b, b2c-ecommerce, …). Null = all models. |
device_type | desktop | mobile | tablet. Null = all devices. |
geography_level / geography_id | Geographic scope (country, us-dma) and identifier. Null = global. |
period_granularity | Aggregation window of the row. Default all-time. |
median_value / average_value | Central values for the cell. |
p25_value / p75_value | Percentile band bounds — read them with the Benchmarketing 4-Band Method. |
unit | Display unit: %, $, x, or empty for counts. |
sample_size | Reserved. Currently null on every row — not yet recorded upstream. |
confidence_level | Provenance of the value. "medium": a published or curated figure, named in data_source. "low": a Benchmarketing estimate, for direction rather than precision. On geographic rows: the market’s coverage level (high, medium or low). |
data_source | Named source the row traces to. |
Versioning promise: fields are never renamed or removed within v1; new fields and new metric/platform identifiers may be added. Breaking changes would ship as /api/v2 with a deprecation window.
Every metric_id the API can return, with its formula and unit. These identifiers are permanent.
| metric_id | Name | Formula | Unit |
|---|---|---|---|
roas | Return on Ad Spend (ROAS) | Revenue ÷ Ad Spend | multiplier |
poas | Profit on Ad Spend (POAS) | Gross Profit ÷ Ad Spend | multiplier |
mer | Marketing Efficiency Ratio (MER) | Total Revenue ÷ Total Marketing Spend | multiplier |
cpc | Cost Per Click (CPC) | Total Ad Spend ÷ Total Clicks | usd |
cpm | Cost Per Thousand Impressions (CPM) | (Total Ad Spend ÷ Total Impressions) × 1,000 | usd-per-thousand |
cpa | Cost Per Acquisition (CPA) | Total Ad Spend ÷ Total Conversions | usd |
cpl | Cost Per Lead (CPL) | Total Ad Spend ÷ Total Leads | usd |
cpv | Cost Per View (CPV) | Total Ad Spend ÷ Total Video Views | usd |
cac | Customer Acquisition Cost (CAC) | (Total Sales + Marketing Spend) ÷ New Customers Acquired | usd |
ctr | Click-Through Rate (CTR) | Clicks ÷ Impressions × 100 | percentage |
organic-ctr | Organic Search CTR (Organic CTR) | Organic Clicks ÷ Organic Impressions × 100 | percentage |
impression-share | Impression Share (IS) | Impressions Received ÷ Total Eligible Impressions × 100 | percentage |
cvr | Conversion Rate (CVR) | Conversions ÷ Clicks (or Sessions) × 100 | percentage |
lp-cvr | Landing Page Conversion Rate (LP CVR) | Landing Page Conversions ÷ Landing Page Sessions × 100 | percentage |
email-cvr | Email Conversion Rate (Email CVR) | Email Conversions ÷ Emails Delivered × 100 | percentage |
email-open-rate | Email Open Rate (Open Rate) | Unique Opens ÷ Emails Delivered × 100 | percentage |
email-ctr | Email Click-Through Rate (Email CTR) | Unique Clicks ÷ Emails Delivered × 100 | percentage |
bounce-rate | Bounce Rate (Bounce) | Single-page Sessions ÷ Total Sessions × 100 | percentage |
engagement-rate | Social Engagement Rate (Eng. Rate) | Total Interactions ÷ Reach (or Followers) × 100 | percentage |
vtr | Video Through Rate (VTR) | Complete Views ÷ Total Video Impressions × 100 | percentage |
ltv | Customer Lifetime Value (LTV) | Avg. Order Value × Purchase Frequency × Customer Lifespan | usd |
churn-rate | Customer Churn Rate (Churn) | Customers Lost in Period ÷ Customers at Start of Period × 100 | percentage |
email-list-growth | Email List Growth Rate (List Growth) | (New Subscribers − Unsubscribes − Spam/Bounce) ÷ Total List Size × 100 | percentage |
reach-rate | Organic Reach Rate (Reach Rate) | Post Reach ÷ Total Followers × 100 | percentage |
quality-score | Quality Score (QS) | Composite of: Expected CTR + Ad Relevance + Landing Page Experience | integer |
mql-to-sql | MQL to SQL Rate (MQL→SQL) | SQLs Created ÷ MQLs Submitted × 100 | percentage |
sql-to-close | SQL to Close Rate (Win Rate) | Closed Won Deals ÷ SQLs Created × 100 | percentage |
Every value change to the underlying dataset is recorded on the public benchmark change log — what moved, when, and why. Every row carries a named data_source you can trace it back to. confidence_level says whether a value is a published figure or our estimate; sample_size is reserved and not yet recorded, so do not weight by it. Methodology: how we source and read benchmark data.