Developer API

API Documentation

Integrate Ohio professional license verification directly into your applications. Free for verified businesses. RESTful JSON API.

REST + JSON
API Key Auth
All 24 Boards

Quick Start

All API requests require your API key in the X-API-Key header.

curl -X POST "https://ohiolicensecheck.com/api/v1/lookup/cached" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: olc_your_api_key_here" \
  -d '{
    "board": "Nursing Board",
    "license_number": "RN.516652"
  }'

Authentication

API keys are issued free of charge to verified business accounts. Keys are prefixed with olc_.

Request Header

X-API-Key: olc_your_key_here

Error Response (401)

{"detail": "Invalid or inactive API key"}

Don't have an API key? Request one here →

Base URL

https://ohiolicensecheck.com/api/v1

All endpoints are relative to this base URL. HTTPS only.

Endpoints

🔍 License Lookup

GET
/lookup/boards

Get all 24 Ohio licensing boards with their license types

GET
/lookup/boards/{board}/types

Get license types for a specific board

POST
/lookup/cached

Look up a license from cache (uses last nightly snapshot — recommended for API consumers)

POST /lookup/cached — Request Body

{
  "board": "Nursing Board",          // required — must match board name exactly
  "license_number": "RN.516652",     // required for cached lookup
  "license_type": "Registered Nurse (RN)"  // optional
}

Response

{
  "found": true,
  "license_number": "RN.516652",
  "full_name": "SMITH, JANE A",
  "board": "Nursing Board",
  "license_type": "Registered Nurse (RN)",
  "status": "ACTIVE",
  "expiry_date": "2026-01-31",
  "days_until_expiry": 45,
  "city": "Columbus",
  "state": "OH",
  "raw_status": "Active",
  "extra_data": {},
  "cached": true,
  "last_scraped": "2025-03-30T02:14:22"
}

🏛️ GET /lookup/boards — Response

{
  "boards": [
    "Accountancy Board",
    "Architects Board",
    "Board of Pharmacy",
    "Nursing Board",
    "Medical Board",
    "... (24 total)"
  ],
  "board_details": {
    "Nursing Board": {
      "code": "RN",
      "license_types": [
        "Registered Nurse (RN)",
        "Licensed Practical Nurse (LPN)",
        "Advanced Practice Registered Nurse (APRN)",
        "Dialysis Technician",
        "Medication Aide"
      ]
    }
  }
}

📊 License Status Values

ACTIVE

License is current and valid

EXPIRED

License has lapsed

SUSPENDED

License suspended by board

INACTIVE

License marked inactive

UNKNOWN

Status could not be determined

Error Codes

CodeMeaning
200Success
400Bad request — check your request body
401Invalid or missing API key
404License not found in cache — try looking it up via the website first
409Conflict — duplicate subscription
429Too many requests — slow down or contact us
500Internal server error

Code Examples

Python

import requests

API_KEY = "olc_your_api_key_here"
BASE    = "https://ohiolicensecheck.com/api/v1"

def check_license(license_number: str, board: str) -> dict:
    resp = requests.post(
        f"{BASE}/lookup/cached",
        json={"board": board, "license_number": license_number},
        headers={"X-API-Key": API_KEY},
        timeout=30,
    )
    resp.raise_for_status()
    return resp.json()

# Check a nursing license
result = check_license("RN.516652", "Nursing Board")
if result["found"]:
    print(f"{result['full_name']} — {result['status']} — Expires: {result['expiry_date']}")
    if result.get("days_until_expiry", 999) <= 30:
        print("⚠️  License expiring soon!")

JavaScript / Node.js

const API_KEY = 'olc_your_api_key_here';
const BASE    = 'https://ohiolicensecheck.com/api/v1';

async function checkLicense(licenseNumber, board) {
  const res = await fetch(`${BASE}/lookup/cached`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': API_KEY,
    },
    body: JSON.stringify({ board, license_number: licenseNumber }),
  });
  if (!res.ok) throw new Error(`API error: ${res.status}`);
  return res.json();
}

// Get all boards
const { boards } = await fetch(`${BASE}/lookup/boards`, {
  headers: { 'X-API-Key': API_KEY }
}).then(r => r.json());
console.log('Available boards:', boards);

cURL — Batch License Check

# Check multiple licenses with a loop
for lic in "RN.516652" "RN.789012" "LPN.334455"; do
  curl -s -X POST "https://ohiolicensecheck.com/api/v1/lookup/cached" \
    -H "Content-Type: application/json" \
    -H "X-API-Key: olc_your_key" \
    -d "{\"board\": \"Nursing Board\", \"license_number\": \"$lic\"}" | \
    python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('full_name'), d.get('status'), d.get('expiry_date'))"
done

Usage Notes

Free Tier

Currently free for all verified business accounts. Fair use applies.

🕐

Cache Freshness

Cached data is refreshed nightly at 2AM ET. For real-time data, use the website.

📋

Boards Required

Always provide the exact board name from /lookup/boards. Typos return 400.

🔑

Key Security

Never expose API keys in client-side code. Keys shown only once at generation.

Ready to integrate?

Get your free API key in minutes. Requires a verified business account.

Request API Key →