Browse the corpus
The browse API exposes the corpus of sites AgentFit has audited. It has four read-only
sub-resources under https://agentfit.dev/api/public/browse:
| Endpoint | Returns |
|---|---|
GET /api/public/browse/summary |
Corpus summary across all audited sites (ETag-cached). |
GET /api/public/browse/top |
Top sites by score in a time window. |
GET /api/public/browse/search |
Search audited sites by hostname substring. |
GET /api/public/browse/stats |
Aggregate corpus statistics. |
Each site is a SiteSummary object: base_url, canonical_url, run_count,
latest_run_at, first_run_at, best_score, worst_score, and avg_score.
Search
GET https://agentfit.dev/api/public/browse/search
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q |
query | string | yes | Hostname substring to search for. |
curl
curl -s 'https://agentfit.dev/api/public/browse/search?q=stripe' | jq '.hits[0]'
Python
import requests
resp = requests.get("https://agentfit.dev/api/public/browse/search", params={"q": "stripe"}, timeout=10)
for site in resp.json()["hits"]:
print(site["canonical_url"], site["best_score"])
JavaScript
const resp = await fetch("https://agentfit.dev/api/public/browse/search?q=stripe");
const { hits } = await resp.json();
hits.forEach((s) => console.log(s.canonical_url, s.best_score));
Response
{
"query": "stripe",
"hits": [
{
"base_url": "docs.stripe.com",
"canonical_url": "https://docs.stripe.com",
"run_count": 4,
"latest_run_at": "2026-06-22T10:02:11Z",
"first_run_at": "2026-03-01T09:00:00Z",
"best_score": 71,
"worst_score": 63,
"avg_score": 67
}
]
}
The summary endpoint supports If-None-Match and returns 304 Not Modified when the
corpus is unchanged.