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
Need more or have an SLA requirement? Get in touch for Enterprise.
How it works
- Subscribe via Polar — you get a license key by email.
- Send
Authorization: Bearer <your-key>with every request. - 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
nullif a plugin couldn't be measured in that scenario (e.g. an admin-only plugin has no homepage row). Treatnullas "not measured", not "no impact". benchmarked: falsemeans the slug is known but hasn't been benchmarked yet.404means 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-Reseton every successful response.
Status codes
200— OK401— missing or invalid API key403— key revoked or suspended404— slug not in dataset429— 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.