API documentation

Real estate license API documentation

REST API with JSON responses and OpenAPI docs. Search licensees, verify brokers and agents, check affiliations, and read coverage metadata — built for compliance, proptech, and data pipelines.

Create an account for an API key, or download the markdown context for Cursor, Claude, or ChatGPT.

Endpoints

API at a glance

Core endpoints for searching, verifying, and monitoring licensee data.

Integration source of truth

Source of truth: RELD_API_CONTEXT.md is the integration guide for coding agents. openapi.json defines exact parameters and response shapes. This page and marketing examples are orientation only — do not invent endpoints or fields.

Use the /api/v1/licensees endpoint family for search, verify, batch, and affiliations. Prefer GET /api/v1/licensees for search (not legacy /licensees/search).

Production base URL
https://app.realestatelicensedatabase.com
Authentication
Authorization: Bearer your_api_key
AI integration context
RELD_API_CONTEXT.md
Coverage metadata
GET /api/v1/coverage reports live jurisdictions, counts, refresh cadence, and source freshness.
GET /health

Liveness probe. No auth required. Point uptime monitors here (expect 200 and {"status":"ok"}). Historical uptime and incidents: https://status.realestatelicensedatabase.com/

GET /api/v1/coverage

Current jurisdiction coverage: refresh cadence, record count, last refresh. No API key required.

GET /api/v1/licensees

Search licensees. state is required; supports name, first_name, last_name, business_name, status, license_type, brokerage, city, page, per_page.

GET /api/v1/licensees/search

Legacy / backward-compatible search (first_name + last_name only). New integrations should use GET /api/v1/licensees.

GET /api/v1/licensees/verify

Verify a single license by state + license_number. Returns { verified, licensee }.

POST /api/v1/licensees/batch

Verify up to 100 licenses in one request. Mix states freely — send { state, license_number } pairs from a CRM export or roster; results return in input order with verified and licensee per row.

GET /api/v1/licensees/{state}/{license_number}

Fetch a single licensee record (public-shape) by state and license number.

GET /api/v1/licensees/{state}/{license_number}/affiliations

Affiliation history for a licensee (supervising-broker relationships with effective dates).

GET /api/v1/licensees/{state}/{license_number}/supervisors

All current supervising brokers (recommended). Returns empty data when none on file.

GET /api/v1/licensees/{state}/{license_number}/supervisor

Legacy: single current supervisor only. Prefer GET .../supervisors for new integrations.

GET /api/v1/licensees/{state}/{license_number}/affiliates

Paginated list of current affiliates (salespersons / broker associates) for a supervising broker.

GET /api/v1/licensees/changes

Reserved stub for a future change feed. Returns empty data — do not build production sync on this yet.

GET /api/v1/license-credentials/{credential_id}/hierarchy

Walk the supervisor chain upward from a license-credential UUID.

GET /api/v1/licenses/search

Lower-level licenses search returning the raw normalized license shape (id, license_type_normalized, status_normalized, …).

GET /api/v1/licenses/license-type-counts

Aggregate counts grouped by state and normalized license_type. Useful for analytics dashboards.

GET /api/v1/licenses/{state}/{license_number}

Lower-level lookup returning the raw normalized license shape.

GET /api/v1/states

List supported state codes (active jurisdictions).

GET /api/v1/sources

List configured upstream sources (one per state).

GET /api/v1/account

Get the current account associated with your API key.

GET /api/v1/account/usage

Current month's usage summary by endpoint.

GET /api/v1/api-keys

List API keys for the current account (hashed; raw value only ever returned at creation).

POST /api/v1/api-keys

Create an additional API key (the dashboard creates the first one without an existing key).

All endpoints under /api/v1/ require an API key in the Authorization: Bearer ... header. Full machine-readable contract: openapi.json · live docs: /docs.

Search

Search licensees within a state

Query by name, state, license type, brokerage, city, or status. State is required, and results come back as normalized JSON with metadata for broker lookup, agent verification, and high-volume integrations.

Query Parameters

state Two-letter state code — required (e.g., TX, CA, FL)
name Full or partial name search
first_name Filter by first name
last_name Filter by last name
business_name Filter by business / entity name
status active, inactive, expired, suspended
license_type broker, salesperson, etc.
brokerage Filter by affiliated brokerage name
city Filter by city
page Page number for pagination
per_page Results per page (max 100)
Search Request & Response
GET /api/v1/licensees?state=TX&name=johnson&status=active
Authorization: Bearer your_api_key

Response:
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "full_name": "Robert Johnson",
      "license_number": "0654321",
      "license_type": "Broker",
      "status": "Active",
      "state": "TX",
      "expiration_date": "2027-11-30",
      "brokerage": "Lone Star Realty Inc.",
      "last_verified": "2026-04-26T06:00:00Z",
      "first_name": "Robert",
      "last_name": "Johnson",
      "business_name": null,
      "city": "Austin"
    },
    {
      "id": "8b2c1a00-1234-5678-9abc-def012345678",
      "full_name": "Maria Johnson-Garcia",
      "license_number": "0789012",
      "license_type": "Salesperson",
      "status": "Active",
      "state": "TX",
      "expiration_date": "2026-08-15",
      "brokerage": "Compass Texas LLC",
      "last_verified": "2026-04-26T06:00:00Z",
      "first_name": "Maria",
      "last_name": "Johnson-Garcia",
      "business_name": null,
      "city": "Dallas"
    }
  ],
  "meta": {
    "total": 2,
    "page": 1,
    "per_page": 25
  }
}

Mock Playground

Try the API response format

Interactive preview only. Generates a sample request/response shape — does not call the live API. States under Live match production coverage; Roadmap options return a static mock only.

Mock only

Preview a sample search

Use this to understand request/response structure before you have an API key. Values shown below are static demo data.

Generated mock request

GET /api/v1/licensees?state=TX&name=alex&status=active

This tool is a UI mock for developer onboarding. For real data, request an API key and call GET /api/v1/licensees.

Mock Search Response (Generated)
Click "Run Mock Request" to generate a mock response.
Verification Request & Response
GET /api/v1/licensees/verify?state=TX&license_number=TX123
Authorization: Bearer your_api_key

Response:
{
  "verified": true,
  "licensee": {
    "id": "2d8f3c10-abcd-4ef0-8123-456789abcdef",
    "full_name": "Robert Johnson",
    "license_number": "TX123",
    "license_type": "Sales Agent",
    "status": "Active",
    "state": "TX",
    "expiration_date": "2027-09-30",
    "brokerage": "Lone Star Realty Inc.",
    "last_verified": "2026-04-26T05:30:00Z",
    "first_name": "Robert",
    "last_name": "Johnson",
    "business_name": null,
    "city": "Austin"
  }
}

Verify

Single-license verification

Verify a specific broker, salesperson, or business license by state and license number. The response includes a boolean verified flag and the full current record.

For onboarding lists and compliance re-checks, use POST /api/v1/licensees/batch instead — see the batch section below.

Batch verify

Verify entire rosters in one call

When you already have license numbers — from a CRM, onboarding spreadsheet, or referral network — POST them in batches of up to 100. Mix states in the same request: Texas agents, California brokers, and Florida salespeople in one round-trip.

  • Up to 100 { state, license_number } pairs per request
  • Results returned in the same order as your input
  • Hits include the full licensee record; misses return verified: false (still HTTP 200)
  • Counts as one metered API request per HTTP call — chunk larger rosters into batches of 100
Batch Verification Request & Response
POST /api/v1/licensees/batch
Authorization: Bearer your_api_key
Content-Type: application/json

{
  "licenses": [
    { "state": "TX", "license_number": "9001878" },
    { "state": "CA", "license_number": "00006213" },
    { "state": "TX", "license_number": "DOES-NOT-EXIST" }
  ]
}

Response:
{
  "data": [
    {
      "state": "TX",
      "license_number": "9001878",
      "verified": true,
      "licensee": {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "full_name": "Jane Doe",
        "license_number": "9001878",
        "license_type": "Sales Agent",
        "status": "Active",
        "state": "TX",
        "expiration_date": "2027-03-15",
        "brokerage": "Lone Star Realty Inc.",
        "supervising_brokerages": ["Lone Star Realty Inc."],
        "current_affiliate_roles": [],
        "last_verified": "2026-05-01T12:00:00Z",
        "first_name": "Jane",
        "last_name": "Doe",
        "business_name": null,
        "city": "Austin"
      }
    },
    {
      "state": "CA",
      "license_number": "00006213",
      "verified": true,
      "licensee": { "...": "full licensee record" }
    },
    {
      "state": "TX",
      "license_number": "DOES-NOT-EXIST",
      "verified": false,
      "licensee": null
    }
  ]
}

Coverage

Programmatic coverage status

Check which states are available, how data is accessed, and when it was last refreshed — all through the API. Build your application logic around actual coverage availability.

Coverage Endpoint
GET /api/v1/coverage

Response (excerpt):
{
  "states": [
    {
      "state": "CA",
      "status": "active",
      "refresh_frequency": "nightly",
      "record_count": 434938,
      "active_record_count": 342862,
      "last_updated": "2026-05-03T12:00:00Z"
    },
    {
      "state": "WV",
      "status": "active",
      "refresh_frequency": "weekly",
      "record_count": 4976,
      "active_record_count": 4976,
      "last_updated": "2026-05-03T12:00:00Z"
    },
    {
      "state": "NV",
      "status": "active",
      "refresh_frequency": "monthly",
      "record_count": 29341,
      "active_record_count": 29341,
      "last_updated": "2026-05-03T12:00:00Z"
    },
    {
      "state": "KS",
      "status": "active",
      "refresh_frequency": "monthly",
      "record_count": 84153,
      "active_record_count": 17656,
      "last_updated": "2026-05-03T12:00:00Z"
    }
  ]
}

Authentication

Getting started

1

Sign up

Sign up and create your first API key from the dashboard (no existing key required). Additional keys can be created via the API.

2

Authenticate

Include your API key in the Authorization header on every request.

3

Query Data

Start searching, verifying, and integrating licensee data into your stack.

Machine-readable contract: openapi.json (Swagger UI at /docs). Use those as the source of truth when integrating; this page is updated when the API changes.

AI assistants

Cursor skill and starter prompt

The markdown integration guide is in the hero above. Use these extras for Cursor or copy-paste into any LLM.

Cursor skill (zip)

reld-api-skill.zip

Unzip into your project's .cursor/skills/reld-api/ folder.

Download

Copy a starter prompt
Integrate our application with the RELD API using RELD_API_CONTEXT.md (https://www.realestatelicensedatabase.com/docs/RELD_API_CONTEXT.md). Use the /api/v1/licensees endpoint family as the canonical API (GET /api/v1/licensees for search). Do not invent endpoints, fields, or response shapes. Auth: Authorization: Bearer. For exact schemas, use https://app.realestatelicensedatabase.com/openapi.json.

Machine-readable index for crawlers and agents: llms.txt. LLM-ready integration guide included with every account.

Postman

Try it in Postman in 60 seconds

One ready-to-import collection covering every public endpoint. It is pre-pointed at production — just add your API key and go.

  1. 1. In Postman, click Import and drop in License_API.postman_collection.json.
  2. 2. Open the collection variables and paste your raw API key into apiKey.
  3. 3. Run 1. Getting started → Verify your API key to confirm auth, then browse 2. Search & verify or jump to 5. States for ready-to-run examples per state.

Ready to integrate?

Create an account, generate your API key from the dashboard, and start building with real licensee data.