Developers
The WebPo API.
Free, read-only and no key needed. Use WebPo grades in your dashboards, research, news stories or client reports.
Base address
https://webpo.org/api/v1
- Every answer is JSON. Only GET requests are accepted.
- It returns exactly what the website shows: published case files only, never drafts, emails or private audits.
- Answers are cached for 5 minutes. Please keep it to about one request a second.
- Credit WebPo and link to the case file when you show a grade.
Endpoints
GET /api/v1/cases
Published case files, newest first. Options: category, limit (1 to 100, default 50), include_examples=1.
https://webpo.org/api/v1/cases?limit=5GET /api/v1/cases/{slug}
One case file with its findings, what the site got right, the owner's response and re-score history.
https://webpo.org/api/v1/cases/your-case-slugGET /api/v1/verified
Websites that currently hold the Verified by WebPo badge, with a link to each badge image.
https://webpo.org/api/v1/verifiedGET /api/v1/benchmarks
Average scores per category and across all websites, for each of the 10 criteria.
https://webpo.org/api/v1/benchmarksGET /api/v1/stats
Headline counts: published cases, free checks, Daily Crimes played, detectives and certificates.
https://webpo.org/api/v1/stats
A case file looks like this
{
"number": 12,
"slug": "012-example-hotel",
"site": "Example Hotel",
"category": "Hotels and travel",
"tested_on": "2026-10-20",
"scores": { "mobile": 8, "speed": 5, "trust": 10, "broken": 9, "freshness": 7,
"design": 8, "accessibility": 6, "seo": 7, "language": 6, "conversion": 8 },
"total": 74, "grade": "C",
"current_total": 83, "current_grade": "B",
"verdict": "cleared",
"verified": true,
"url": "https://webpo.org/cases/012-example-hotel"
}- total and grade are the original scores. current_total and current_grade include the latest re-check.
- verdict is cleared (80 and above), warning (50 to 79) or wanted (under 50).
- Errors come back as { "error": { "code", "message" } } with a matching status code.
Try it
const res = await fetch('https://webpo.org/api/v1/benchmarks');
const { benchmarks } = await res.json();
console.log(benchmarks[0].avg_total);curl https://webpo.org/api/v1/cases?limit=3
Want to show the checker or a badge instead? Free widget · Verified badge