Criminal Records API for Developers

Integrate millions of arrest records, sex offender data, court records, and address geocoding into your application in minutes

Simple REST API • JSON Responses • Multiple Endpoints • Complete Code Examples • Pay-As-You-Go Pricing

Why Developers Love Our API

Lightning Fast Integration

Get started in under 5 minutes with our copy-paste code examples. No complex setup, no SDKs to install - just make HTTP requests and get JSON responses.

Multiple Powerful Endpoints

Criminal Records search across 4 databases + Address Geocoding API. Query Sex Offender Registry, DOC, Arrest, and Court Records, plus validate and geocode addresses.

Simple Authentication

Just add your API key and secret to request headers. No OAuth flows, no tokens to manage - authentication is straightforward and secure.

Pay Only For What You Use

No monthly fees or subscriptions. Pay $0.01 per API call (1 credit = 1 search). Scale up or down as needed with no commitment.

Comprehensive Documentation

Detailed docs with examples in PHP, Python, JavaScript, and cURL. Every parameter explained, every response field documented.

High Rate Limits

100 requests per minute per API key. Need more? Contact us for enterprise rates. Built to handle high-volume applications.

Flexible Filtering

Filter by name, state, city, age, or specify which databases to search. Control response size with limit parameters.

Real-Time Analytics

Track API usage, monitor remaining credits, and view call history in your dashboard. Know exactly how your API is being used.

CORS Enabled

Make API calls directly from browsers. Perfect for web applications, Chrome extensions, and client-side JavaScript apps.

Ready-to-Use Code Examples

Copy, paste, and start searching in seconds. Examples work right out of the box!

curl -X GET "https://unlimitedcriminalchecks.com/api-2.0/search.php?first_name=John&last_name=Smith&state=CA" \
  -H "X-API-Key: your_api_key_here" \
  -H "X-API-Secret: your_api_secret_here"
<?php
// Replace with your actual API credentials
$apiKey = 'your_api_key_here';
$apiSecret = 'your_api_secret_here';

// Search parameters
$params = [
    'first_name' => 'John',
    'last_name' => 'Smith',
    'state' => 'CA',
    'limit' => 100
];

// Initialize cURL
$ch = curl_init('https://unlimitedcriminalchecks.com/api-2.0/search.php?' . http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-Key: ' . $apiKey,
    'X-API-Secret: ' . $apiSecret
]);

// Execute request
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Parse JSON response
$data = json_decode($response, true);

// Handle response
if ($httpCode === 200 && $data['success']) {
    echo "Found {$data['results']['total']} total records\n";
    echo "Credits remaining: {$data['credits']['remaining']}\n\n";
    
    // Process results
    foreach ($data['results']['sor']['records'] as $record) {
        echo "{$record['NAME']} - {$record['CITY']}, {$record['STATE']}\n";
    }
} else {
    echo "Error: {$data['message']}\n";
}
?>
import requests

# Replace with your actual API credentials
api_key = 'your_api_key_here'
api_secret = 'your_api_secret_here'

# API endpoint
url = 'https://unlimitedcriminalchecks.com/api-2.0/search.php'

# Headers with authentication
headers = {
    'X-API-Key': api_key,
    'X-API-Secret': api_secret
}

# Search parameters
params = {
    'first_name': 'John',
    'last_name': 'Smith',
    'state': 'CA',
    'limit': 100
}

# Make API request
response = requests.get(url, headers=headers, params=params)
data = response.json()

# Handle response
if response.status_code == 200 and data['success']:
    print(f"Found {data['results']['total']} total records")
    print(f"Credits remaining: {data['credits']['remaining']}\n")
    
    # Process results
    for record in data['results']['sor']['records']:
        print(f"{record['NAME']} - {record['CITY']}, {record['STATE']}")
else:
    print(f"Error: {data['message']}")
// Replace with your actual API credentials
const apiKey = 'your_api_key_here';
const apiSecret = 'your_api_secret_here';

// Build query string
const params = new URLSearchParams({
    first_name: 'John',
    last_name: 'Smith',
    state: 'CA',
    limit: 100
});

// Make API request
fetch(`https://unlimitedcriminalchecks.com/api-2.0/search.php?${params}`, {
    method: 'GET',
    headers: {
        'X-API-Key': apiKey,
        'X-API-Secret': apiSecret
    }
})
.then(response => response.json())
.then(data => {
    if (data.success) {
        console.log(`Found ${data.results.total} total records`);
        console.log(`Credits remaining: ${data.credits.remaining}`);
        
        // Process results
        data.results.sor.records.forEach(record => {
            console.log(`${record.NAME} - ${record.CITY}, ${record.STATE}`);
        });
    } else {
        console.error(`Error: ${data.message}`);
    }
})
.catch(error => {
    console.error('Request failed:', error);
});
const axios = require('axios');

// Replace with your actual API credentials
const apiKey = 'your_api_key_here';
const apiSecret = 'your_api_secret_here';

// API configuration
const config = {
    method: 'get',
    url: 'https://unlimitedcriminalchecks.com/api-2.0/search.php',
    headers: {
        'X-API-Key': apiKey,
        'X-API-Secret': apiSecret
    },
    params: {
        first_name: 'John',
        last_name: 'Smith',
        state: 'CA',
        limit: 100
    }
};

// Make API request
axios(config)
    .then(response => {
        const data = response.data;
        
        if (data.success) {
            console.log(`Found ${data.results.total} total records`);
            console.log(`Credits remaining: ${data.credits.remaining}\n`);
            
            // Process results
            data.results.sor.records.forEach(record => {
                console.log(`${record.NAME} - ${record.CITY}, ${record.STATE}`);
            });
        } else {
            console.error(`Error: ${data.message}`);
        }
    })
    .catch(error => {
        console.error('Request failed:', error.message);
    });

Multiple API Endpoints for Different Needs

Criminal Records Search API

Access 4 major databases in a single API call

Sex Offender Registry

Nationwide sex offender records with offense details, addresses, and physical descriptions

Department of Corrections

Prison and corrections records including inmate information, sentences, and release dates

Arrest Records

Recent arrest data with charges, booking information, and mugshot photos

Court Records

Public court filings, case information, and legal proceedings


Address Lookup / Geocoding API

Convert addresses to coordinates and get detailed location data

Geocoding

Address → Lat/Long

Normalization

Standardized format

Components

Parsed address data

Use Cases:

  • Map criminal records to geographic coordinates
  • Validate and normalize user-entered addresses
  • Build location-based search features
  • Calculate distances between addresses
  • Enrich your database with geocoded data
Endpoint: /api-2.0/address-lookup.php
Cost: 1 credit per lookup
Example: ?address=1600+Pennsylvania+Ave+Washington+DC

Clean, Structured JSON Responses

{
  "success": true,
  "version": "2.0",
  "query": {
    "first_name": "John",
    "last_name": "Smith",
    "state": "CA",
    "city": null,
    "age": null,
    "feeds": ["sor", "doc", "arrest", "court"]
  },
  "results": {
    "total": 45,
    "sor": {
      "count": 12,
      "records": [
        {
          "NAME": "John Smith",
          "AGE": 45,
          "STATE": "CA",
          "CITY": "Los Angeles",
          "ADDRESS": "123 Main St",
          "OFFENSE": "...",
          "..."
        }
      ]
    },
    "doc": { "count": 15, "records": [...] },
    "arrest": { "count": 10, "records": [...] },
    "court": { "count": 8, "records": [...] }
  },
  "credits": {
    "used": 1,
    "remaining": 9999
  },
  "meta": {
    "execution_time_ms": 234,
    "timestamp": "2025-11-20T10:30:45+00:00",
    "api_key_name": "Production API"
  }
}

Simple, Transparent Pricing

Pay-As-You-Go

$0.01 / search

1 Credit = 1 API Search

  • No monthly fees or subscriptions
  • No setup costs or hidden charges
  • 100 requests per minute rate limit
  • Search all 4 databases in one call
  • Unlimited API keys per account
  • Real-time usage analytics
  • Cancel anytime, no commitment
  • Credits never expire
Get Started Free

New accounts get 25 free credits to test the API

Start Building in Minutes

Join hundreds of developers using our API to power their applications

Sign Up Free

Questions? Contact our developer support team