Benchmark API

Per-plugin and per-theme WordPress performance scores from the only public dataset of its kind — 37,000+ plugins benchmarked across 3 contexts (activation, homepage, wp-admin).

Pricing

Starter
$49/mo
50,000 requests
Subscribe
Pro · popular
$149/mo
500,000 requests
Subscribe
Scale
$499/mo
5,000,000 requests
Subscribe

Need more or have an SLA requirement? Get in touch for Enterprise.

How it works

  1. Subscribe via Polar — you get a license key by email.
  2. Send Authorization: Bearer <your-key> with every request.
  3. Hard quota per month; soft 429 with no overage billing.

Endpoints

GET /wp-json/mwf-api/v1/plugins/{slug}

Returns benchmark data for a WordPress.org plugin.

$ curl https://makewpfast.com/wp-json/mwf-api/v1/plugins/akismet \
    -H "Authorization: Bearer mwf_live_..."

{
  "slug": "akismet",
  "type": "plugin",
  "name": "Akismet Anti-Spam",
  "benchmarked": true,
  "benchmarked_at": "2026-05-16 12:00:00",
  "speed_score": { "grade": "B+", "numeric": 78 },
  "contexts": {
    "activation": { "ttfb_delta_ms": 18, "memory_delta_kb": 2048, "queries_delta": 2 },
    "homepage":   { "ttfb_delta_ms":  5, "memory_delta_kb": 1024, "queries_delta": 1 },
    "admin":      { "ttfb_delta_ms": 22, "memory_delta_kb": 3072, "queries_delta": 4 }
  },
  "metadata": { "active_installs": 5000000, "rating": 4.7 },
  "links": { "profile": "https://makewpfast.com/plugins/akismet/" }
}

GET /wp-json/mwf-api/v1/themes/{slug}

Same shape, for WordPress.org themes.

GET /wp-json/mwf-api/v1/me

Returns your current tier, quota, usage, and reset date. Always works — even when over quota.

Response notes

  • Contexts may be null if a plugin couldn't be measured in that scenario (e.g. an admin-only plugin has no homepage row). Treat null as "not measured", not "no impact".
  • benchmarked: false means the slug is known but hasn't been benchmarked yet. 404 means the slug isn't in the dataset at all.
  • Memory deltas in KB, TTFB in milliseconds, queries are raw counts — all measured against a clean WordPress baseline.
  • Speed grade is computed from activation memory + query deltas on a logarithmic scale (A = ≤8MB / ≤4 extra queries; F = catastrophic).
  • Rate-limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset on every successful response.

Status codes

  • 200 — OK
  • 401 — missing or invalid API key
  • 403 — key revoked or suspended
  • 404 — slug not in dataset
  • 429 — monthly quota exceeded

Data freshness

Benchmarks are re-run as plugins update. The benchmarked_at field tells you when the row you're reading was last measured. Responses are not edge-cached (every request is authenticated against your quota); cache on your side if you need to absorb spiky traffic.

Questions? Email contact@makewpfast.com.