Developers
Programmatic access to your own LookBefore searches and reports.
Pricing
Programmatic access is free within your account's existing meters. API calls draw the same per-category limits as searches in the app — there is no paid API tier, no separate API allowance, and no way to purchase additional API volume.
API keys
Create and revoke API keys from the dashboard ("API access"). The full key (lbk_…) is shown exactly once at creation; send it as Authorization: Bearer lbk_…. Keys are account credentials for the API only — they never authenticate browser sessions. Names-scoped keys additionally require verified researcher identity and a recorded permissible-purpose statement.
Endpoints (v1)
POST /api/v1/search/{category}— run a search (organizations,products,places; body{"q": …}). Returnsstatus(freshordedup),report_id, and the full notice-bearing report envelope. Recent identical searches deduplicate to the stored report free of charge.GET /api/v1/reports— list your saved reports.GET /api/v1/reports/{id}— fetch one of your reports (any category you have filed, Names included).
The Names search endpoint (POST /api/v1/search/people) is not yet launched: names-scoped keys receive 403 names_api_not_launched until public enablement.
Meters
One set of meters covers app and API together (searches, not report reads — fetching stored reports is free):
| Meter | Standard (email-verified) | Researcher (identity-verified) |
|---|---|---|
| Names searches / month | 10 | 100 |
| Aggregate searches / hour | 150 | 10,000 |
| Aggregate searches / day | 1,000 | 50,000 |
Headers and errors
- Search responses carry
RateLimit-Limit,RateLimit-Remaining, andRateLimit-Reset(seconds) for the binding window of that search's meter. 429— the meter refused: body carries{code, message, category, window}plus aRetry-Afterheader.403— typed refusals: wrong key scope,names_api_not_launched, or a missing Names permissible-purpose acknowledgment.401— unknown, revoked, or malformed credentials (session cookies never authenticate v1 routes).
MCP server
An official MCP server ships in the repository (backend/mcp_server/) with two tools: search_records(category, q) and fetch_report(report_id). It is a thin client of the endpoints above — same key, same meters, payloads returned verbatim. Run it locally from a checkout; setup is documentation-managed (it is not listed on any MCP registry):
{
"mcpServers": {
"lookbefore": {
"command": "python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/lookbefore/backend",
"env": {
"LOOKBEFORE_API_KEY": "lbk_…your key…",
"LOOKBEFORE_BASE_URL": "https://www.lookbefore.org"
}
}
}
}Permitted use
LookBefore is for personal, non-commercial public-records research. It is not a consumer report and may not be used for FCRA-covered decisions.
API deliverables carry these notices in-payload. Full terms of use: lookbefore.org/terms.