MetaBuff API v1

Market visibility intelligence for game developers. Discover underserved niches, diagnose store page performance, and make data-driven decisions — all via REST.

Stable v1.0 · Updated April 2026
Quick start: Sign up at metabuff.dev/app, grab your API key from the dashboard, and make your first request in under 60 seconds.

Authentication

All API requests require a Bearer token. Your API key is available in the API Access section of your dashboard. Include it in the Authorization header of every request.

Header
Authorization: Bearer mb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep it secret. Your API key is tied to your account and tier. Never expose it in client-side code or public repositories. If compromised, rotate it from your dashboard immediately.

Base URL

All endpoints are served from:

Base URL
https://api.metabuff.dev/v1

Try it live

Paste your API key, pick an endpoint, click Send. Your key is used only for this request — it is not stored, logged, or transmitted anywhere except to api.metabuff.dev. Don't have a key? Sign in to the dashboard to get one.

Rate Limits

Rate limits are enforced per API key on a rolling 24-hour window. The remaining quota is returned in response headers.

Plan Daily Limit Rate Price
EXPLORER 50 calls/day 1 req/sec Free
INDIE PRO 500 calls/day 5 req/sec $9.99/mo

Rate Limit Headers

Response Headers
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1714521600

GET /market/niches

GET /v1/market/niches

Returns trending market niches ranked by opportunity score. Each niche is a combination of genre tags with saturation, game count, and estimated revenue data.

Query Parameters

ParamTypeDescription
min_opportunity float optional Minimum opportunity score (0.0–1.0). Default: 0
max_saturation float optional Maximum saturation score (0.0–1.0). Default: 1.0
min_games int optional Minimum games in niche. Default: 5
limit int optional Max results. Explorer: 10, Indie Pro: 200

Example: cURL

cURL
curl "https://api.metabuff.dev/v1/market/niches?min_opportunity=0.5&max_saturation=0.4&limit=20" \
  -H "Authorization: Bearer mb_live_xxxxx"

Example: JavaScript

JavaScript
const resp = await fetch(
  "https://api.metabuff.dev/v1/market/niches?min_opportunity=0.5",
  {
    headers: {
      "Authorization": `Bearer ${API_KEY}`
    }
  }
);

const niches = await resp.json();
console.log(niches.data[0]);
// → { tag_combo: ["Roguelike","Deckbuilder"], opportunity_score: 0.82, ... }

Response

JSON
{
  "data": [
    {
      "tag_combo": ["Roguelike", "Deckbuilder"],
      "game_count": 47,
      "saturation_score": 0.23,
      "opportunity_score": 0.82,
      "avg_review_score": 78.4,
      "median_revenue_estimate": 34500.00,
      "review_velocity_30d": 2.3
    }
  ],
  "meta": {
    "total": 142,
    "limit": 20,
    "tier": "indie"
  }
}

GET /game/diagnostic

GET /v1/game/diagnostic/{appid}

Returns a full visibility diagnostic for a specific game, including the 5-metric Buff Score breakdown and a structured Strategy Dossier with actionable recommendations.

Path Parameters

ParamTypeDescription
appid int required The game's App ID (numeric identifier from the store page URL)

Example: cURL

cURL
curl "https://api.metabuff.dev/v1/game/diagnostic/1086940" \
  -H "Authorization: Bearer mb_live_xxxxx"

Example: JavaScript

JavaScript
const APP_ID = 1086940; // Baldur's Gate 3

const resp = await fetch(
  `https://api.metabuff.dev/v1/game/diagnostic/${APP_ID}`,
  {
    headers: {
      "Authorization": `Bearer ${API_KEY}`
    }
  }
);

const { data } = await resp.json();
console.log(`Buff Score: ${data.buff_score}/100`);
console.log(`Actions: ${data.dossier.actions.length}`);

Response

JSON
{
  "data": {
    "steam_appid": 1086940,
    "name": "Baldur's Gate 3",
    "developer": "Larian Studios",
    "buff_score": 87,
    "metrics": {
      "impression_efficiency": 0.74,
      "tag_effectiveness": 0.68,
      "competitor_density": 12,
      "review_velocity": 3.2,
      "price_signal": 1.1
    },
    "dossier": {
      "version": 2,
      "actions": [
        {
          "type": "engagement",
          "text": "Strong review score (95% from 412k reviews)...",
          "impact": "medium",
          "data": { "review_score": 95, "total_reviews": 412000 }
        }
      ],
      "gaps": [ /* gap analysis entries */ ],
      "opportunities": [ /* tag swap suggestions */ ]
    }
  }
}

GET /market/tags

GET /v1/market/tags

Returns per-tag competition data: total games, 90-day new entries, average review scores, and median estimated revenue. Useful for evaluating individual tag choices.

Query Parameters

ParamTypeDescription
sort string optional total_games (default), new_games_90d, avg_review_score
limit int optional Max results (1–100). Default: 50

Example: cURL

cURL
curl "https://api.metabuff.dev/v1/market/tags?sort=new_games_90d&limit=20" \
  -H "Authorization: Bearer mb_live_xxxxx"

Response

JSON
{
  "data": [
    {
      "tag_name": "Roguelike",
      "total_games": 3420,
      "new_games_90d": 87,
      "avg_review_score": 72.1,
      "median_estimated_revenue": 18200.00
    }
  ]
}

Error Codes

All errors follow a consistent format:

JSON
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Daily API limit reached. Resets at midnight UTC.",
    "status": 429
  }
}
StatusCodeMeaning
400 invalid_parameter A query parameter is malformed or out of range
401 unauthorized Missing or invalid API key
403 tier_restricted Your plan does not include this endpoint or limit
404 not_found Game or resource not in our database
429 rate_limit_exceeded Daily limit reached. Resets at midnight UTC.
500 internal_error Something went wrong on our end. Retry after a few seconds.

Metric Glossary

Every metric in the diagnostic endpoint is a proxy derived from publicly available store data. We're transparent about what each one measures and its limitations.

MetricFormulaRangeInterpretation
Impression Efficiency sigmoid(log(followers / reviews)) 0–1 Higher = more visibility relative to purchases. >0.7 may indicate a conversion problem (people see it but don't buy).
Tag Effectiveness 1 - mean(tag_saturations) 0–1 Higher = your tags are in less crowded spaces. Low values mean your tags pit you against many competitors.
Competitor Density count(same_tags ∩ last_90d) 0–∞ Games sharing your top-3 tag combo released in the last 90 days. Lower = less direct competition in your release window.
Review Velocity (reviews_now - reviews_30d_ago) / 30 0–∞ Reviews per day over 30 days. Proxy for current player momentum and engagement.
Price Signal game_price / niche_median_price 0–∞ 1.0 = priced at niche median. >1.5 = significantly above average (may hurt conversion). <0.5 = potentially undervalued.
A note on honesty: These metrics are proxies, not direct measurements. We don't have access to actual impression counts or conversion rates — nobody outside the platform does. We use publicly available signals (followers, reviews, tags, prices) to build the best approximation possible, and we're upfront about the limitations.