API Documentation

Authentication

Calls to API endpoints must be authenticated. Authentication is provided by OAuth token. Responses are JSON formatted.

To retrieve an OAuth token, send a POST request to the token endpoint. Use "Basic" authentication, using your ClientId and ClientSecret as username and password, respectively. You should have received these in an email when you registered.

POST /services/oauth2/token HTTP/1.1
Host: arrestapi.com
Authorization: Basic <user-password-hash>

Sample response (200):

{
  "success": true,
  "message": "Request successful",
  "data": {
    "tokenType": "Bearer",
    "token": <token>,
    "expiresIn": 
  }
}

The token will be valid for the specified number of seconds. You should store this expiration time along with the token, and avoid requesting a new token while the current one is still active.

Use the token for further requests to API endpoints, using "Bearer" authentication:

GET /arrests/search?firstName=charlie&lastName=chaplain HTTP/1.1
Host: arrestapi.com
Authorization: Bearer <bearer-token>

Endpoints

GET /v1/arrests/search

Description: Search arrests database
Parameters:

  • Pagination parameters (optional): see Pagination
  • Search parameters (all required):
    • firstName
    • lastName
    • dateOfBirth

Sample response (200):

{
  "success": true,
  "message": "Request successful",
  "data": {
    {
      "ArrestDate": "2080-01-01",
      "BookDate": "2080-01-01",
      "ArrestLocation": "Down On The Corner",
      "BailAmount": "30000",
      "PostConviction": false,
      "CrimeCodes": [
        [
          "484",
          "Theft"
        ]
      ],
      "ArrestingAgency": "Sacramento SD",
      "ArrestCounty": "Sacramento",
      "FirstName": "John",
      "MiddleName": "D",
      "LastName": "Doe",
      "DateOfBirth": "2020-01-01",
      "DOBIsEstimate": false,
      "Race": "Unknown",
      "Gender": "Male",
      "HairColor": "Brown",
      "EyeColor": "Brown",
      "Height": "5 ft 10 in",
      "Weight": "170",
      "Employment": "N/A",
      "Address": "123 Street",
      "City": "City",
      "State": "CA",
      "Zip": "11111",
      "Latitude": "38.5835",
      "Longitude": "-121.494",
      "County": "Sacramento"
    },
    {
      "ArrestDate": "2080-01-01",
      "BookDate": "2080-01-01",
      "ArrestLocation": "Down On The Corner",
      "BailAmount": "30000",
      "PostConviction": false,
      "CrimeCodes": [
        [
          "484",
          "Theft"
        ]
      ],
      "ArrestingAgency": "Sacramento SD",
      "ArrestCounty": "Sacramento",
      "FirstName": "Jean",
      "MiddleName": "B",
      "LastName": "Buck",
      "DateOfBirth": "2020-01-01",
      "DOBIsEstimate": false,
      "Race": "Unknown",
      "Gender": "Female",
      "HairColor": "Brown",
      "EyeColor": "Brown",
      "Height": "5 ft 10 in",
      "Weight": "170",
      "Employment": "N/A",
      "Address": "123 Street",
      "City": "City",
      "State": "CA",
      "Zip": "11111",
      "Latitude": "38.5835",
      "Longitude": "-121.494",
      "County": "Sacramento"
    }
  },
  "meta": {
    "start": 0,
    "count": 2,
    "total": 3982
  }
}

Sample response (402 Invalid subscription):

{
  "success": false,
  "message": "Invalid subscription."
}

Sample response (402 Invalid payment method):

{
  "success": false,
  "message": "Invalid payment method."
}

GET /v1/report/<report-token>

Description: Retrieve most recent results for a predefined report run periodically. Contact sales to set up a report.
Parameters:

  • Report Token <report-token>: The identifier of the report to retrieve, as part of the request URL.
  • Pagination parameters (optional): see Pagination

Sample response (200):

{
  "success": true,
  "message": "Request successful",
  "data": {
    {
      "ArrestDate": "2080-01-01",
      "FirstName": "John",
      "LastName": "Doe",
      "DateOfBirth": "2020-01-01",
      "DOBIsEstimate": false,
      "Address": "123 Street",
      "City": "City",
      "State": "CA",
      "Zip": "111111",
      "CrimeCodes": [
        [
          "484",
          "Theft"
        ]
      ]
    },
    {
      "ArrestDate": "2080-01-02",
      "FirstName": "Jonny",
      "LastName": "Buck",
      "DateOfBirth": "2020-01-02",
      "DOBIsEstimate": false,
      "Address": "123 Street",
      "City": "City",
      "State": "CA",
      "Zip": "111111",
      "CrimeCodes": [
        [
          "484",
          "Theft"
        ]
      ]
    }
  },
  "meta": {
    "start": 0,
    "count": 2,
    "total": 3982,
    "lastRun": "2025-04-04"
  }
}

Sample response (400):

{
  "success": false,
  "message": "Report has not been run. Please check back later."
}

GET /v1/account/status

Description: Retrieve account details, including plan limits, request counts.
Parameters: none

Sample response (200):

{
  "success": true,
  "message": "Request successful",
  "data": "data": {
    "SubscriptionName": "Bronze",
    "RenewalDate": "2025-04-07",
    "NextRenewalDate": "2025-05-07",
    "RenewalAmount": 20,
    "RequestsPerRenewalCycle": 10,
    "RequestsThisRenewalCycle": 0
  }
}

Endpoints potentially return large lists of data, so are paginated. Pagination details are returned in the meta section of a successful response.

{
  "success": true,
  "message": "Successfully performed query.",
  "data": {
  },
  "meta": {
    "start": 0,
    "count": 50,
    "total": 3982
  }
}

start Specifies the offset of the first element in the contents of data.
count Specifies the number of elements in the contents of data.
total Specifies the number of elements total in the data set.

Paginated endpoints accept two parameters: top and skip, to be included in the query string for the request:

GET /v1/arrests/search?firstName=charlie&lastName=chaplain&dateOfBirth=2020-01-01&top=50&skip=50

top  Specifies the number of elements to return (if available). Max: 200, default: 200.
skip Specifies the number of elements to ignore before returning top items. Defaults to 0. Unless you are requesting more data than is available, this will be the value found in start in the response.