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": …}). Returns status (fresh or dedup), 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):

MeterStandard (email-verified)Researcher (identity-verified)
Names searches / month10100
Aggregate searches / hour15010,000
Aggregate searches / day1,00050,000

Headers and errors

  • Search responses carry RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset (seconds) for the binding window of that search's meter.
  • 429 — the meter refused: body carries {code, message, category, window} plus a Retry-After header.
  • 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.