Introduction
API Endpoint
https://crime.getupforchange.com/api/
Welcome to the CrimeCheck API! You can use our API to access court cases and other data in our database.
The Data APIs provide access to selected data sources, other than court records (which are available under Crime Records and Crime Reports APIs).
We have provided examples in cURL, Ruby, Python, PHP, JavaScript, Go, C# and Java! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
The CrimeCheck APIs are organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application (though you should never expose your secret API key in any public website's client-side code). JSON is returned by all API responses, including errors.
To make the API as explore-able as possible, accounts have test mode and live mode API keys. There is no "switch" for changing between modes, just use the appropriate key to perform a live or test transaction.
Basic API
Authentication
To authorize, use this code:
curl https://crime.getupforchange.com/api/v3/authenticate \
-u 'test_apikey:'
Note: curl uses the -u flag to pass basic auth credentials(adding
a colon after your API key prevents cURL from asking for a password).
require 'uri'
require 'net/http'
url = URI("https://crime.getupforchange.com/api/v3/authenticate")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth("test_apikey", "")
response = http.request(request)
end
import requests
requests.get('https://crime.getupforchange.com/api/v3/uthenticate', auth=('test_apikey', ''))
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://crime.getupforchange.com/api/v3/authenticate");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
var request = require('request');
var options = {
url: 'https://crime.getupforchange.com/api/v3/authenticate',
auth: {
'user': 'test_apikey',
'pass': ''
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
req, err := http.NewRequest("GET", "https://crime.getupforchange.com/api/v3/authenticate", nil)
if err != nil {
// handle err
}
req.SetBasicAuth("test_apikey", "")
resp, err := http.DefaultClient.Do(req)
if err != nil {
// handle err
}
defer resp.Body.Close()
var restClient = new RestClient('https://crime.getupforchange.com/api/v3/authenticate')
{
Authenticator = new HttpBasicAuthenticator('test_apikey', '')
};
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
HttpResponse<String> response = Unirest.get("https://crime.getupforchange.com/api/v3/authenticate")
.basicAuth("test_apikey", "")
.asString();
The above command returns JSON structured like this:
{
'status': 'OK'
}
Authenticate your account when using the API by including your secret API key in the request. Your API keys carry many privileges, so be sure to keep them secret! Do not share your secret API keys in publicly accessible areas such GitHub, client-side code, and so forth.
Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username value. You do not need to provide a password.
If you need to authenticate via bearer auth (e.g., for a cross-origin request), use -H "Authorization: test_apikey"
instead of -u test_apikey:.
CrimeCheck expects for the API key to be included in all API requests to the server. API requests without authentication will fail.
API Status
curl https://crime.getupforchange.com/api/v3/status \
-u 'test_apikey:'
Note: curl uses the -u flag to pass basic auth credentials (adding
a colon after your API key prevents cURL from asking for a password).
require 'uri'
require 'net/http'
url = URI("https://crime.getupforchange.com/api/v3/status")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request.basic_auth("test_apikey", "")
response = http.request(request)
end
import requests
requests.get('https://crime.getupforchange.com/api/v3/status', auth=('test_apikey', ''))
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://crime.getupforchange.com/api/v3/status");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_USERPWD, "test_apikey" . ":" . "");
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
var request = require('request');
var options = {
url: 'https://crime.getupforchange.com/api/v3/status',
auth: {
'user': 'test_apikey',
'pass': ''
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
req, err := http.NewRequest("GET", "https://crime.getupforchange.com/api/v3/status", nil)
if err != nil {
// handle err
}
req.SetBasicAuth("test_apikey", "")
resp, err := http.DefaultClient.Do(req)
if err != nil {
// handle err
}
defer resp.Body.Close()
var restClient = new RestClient('https://crime.getupforchange.com/api/v3/status')
{
Authenticator = new HttpBasicAuthenticator('test_apikey', '')
};
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
HttpResponse<String> response = Unirest.get("https://crime.getupforchange.com/api/v3/status")
.basicAuth("test_apikey", "")
.asString();
The above command returns JSON structured like this:
{
'status': 'OK'
}
GET https://crime.getupforchange.com/api/v3/status
Check if apiKey is valid using this API.
Errors
CrimeCheck uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, invalid API key etc.), and codes in the 5xx range indicate an error with CrimeCheck servers (these are rare).
HTTP status code summary
Status | Description |
200 | OK - Everything worked as expected |
400 | INVALID_REQUEST_ERROR - The request was unacceptable, often due to missing a required parameter or invalid value |
401 | INVALID_API_KEY, API_LIMIT_EXCEEDED - Authorization related |
429 | Too Many Requests (Rate limit of Max per MINUTE=1200, HOUR=7000, DAY=170000) |
500 | Crimecheck service issue |
MCA API
Given a CIN (Company Identification Number), the MCA API returns all details available about the company.
MCA
curl --location --request GET 'http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075'
require "uri"
require "net/http"
url = URI("http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
url = "http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var myHeaders = new Headers();
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var client = new RestClient("http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075")
.asString();
HTTP Request
GET http://crime.getupforchange.com/api/v3/mca?apiKey=test_apikey&cin=U74900TG2016PTC103075
URL Parameters
cin: | string Mandatory Corporate/Company Identity Number of the company |
apiKey: | string Mandatory The secret API key assigned for your account. This parameter is mandatory if apiKey is not passed via Authorization header |
Response
Response for MCA API
{
"companyname": "BRAND SPACE INDIA PRIVATE LIMITED",
"number_of_member": "0",
"company_status": null,
"inc29": "",
"roc": "RoC-Hyderabad",
"activity_description": "Business Services",
"country_of_incorporation": null,
"sub_category": "Indian Non-Government Company",
"foreign_office_address": null,
"state": "Telangana",
"class": "Private",
"company_type": null,
"authorized_capital": "100000",
"category": "Company limited by shares",
"cin": "U74900TG2016PTC103075",
"activity_code": null,
"date_of_registration": "03/02/16",
"month_name": null,
"paid_up_capital": "100000",
"type_of_office": null,
"gfc_uniqueid": "MCA_BRANDSPACEINDIAPRIVATELIMITED_U74900TG2016PTC103075_TELANGANA_ROCHYDERABAD_BUSINESSSERVICES",
"companyaddress": "8-2-293/82/BE/89, NAVANIRMAN NAGAR ROAD NO 71, JUBLIEE HILLS HYDERABAD Telangana INDIA 500033"
}
If successful, MCA API will return a JSON response containing company details.
In case of failure, API will return error code listed in error section.
EPFO API
The EPFO API accepts an organization's Employee's Provident Fund Organization (EPFO) establishment ID, and returns all details available in the EPFO database.
EPFO
curl --location --request GET 'http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000'
require "uri"
require "net/http"
url = URI("http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
url = "http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var myHeaders = new Headers();
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var client = new RestClient("http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000")
.asString();
HTTP Request
GET http://crime.getupforchange.com/api/v3/epfo?apiKey=test_apikey&establishmentId=BGBNG0005791000
URL Parameters
establishmentId: | string Mandatory The organization's establishmentID as registered with EPFO |
apiKey: | string Mandatory The secret API key assigned for your account. This parameter is mandatory if apiKey is not passed via Authorization header |
Response
Response for EPFO API
{
"establishmentname": "JANATHA BAZAAR",
"establishmentaddress": "CORPORATION SHOPPING COMPLEXJAYANAGAR",
"establishmentid": "BGBNG0005791000"
}
If successful, EPFO API will return a JSON response containing establishment details.
In case of failure, API will return error code listed in error section
FSSAI API
The FSSAI API accepts the license number given to an entity by the Food Safety and Standards Authority of India (FSSAI), and returns all details available in the FSSAI database.
FSSAI
curl --location --request GET 'http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001' \
require "uri"
require "net/http"
url = URI("http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
url = "http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var myHeaders = new Headers();
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var client = new RestClient("http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001")
.asString();
HTTP Request
GET http://crime.getupforchange.com/api/v3/fssai?apiKey=test_apikey&licenseNo=22915202000001
URL Parameters
licenseNo: | string Mandatory The FSSAI license number of the entity |
apiKey: | string Mandatory The secret API key assigned for your account. This parameter is mandatory if apiKey is not passed via Authorization header |
Response
Response for FSSAI API
{
"districtname": "Andamans",
"useddistrictname": null,
"applytype": "New Registration",
"gfccompanyname_phonetic": "Manohar Halder",
"displayid": "30151217165323017",
"statusdesc": "License Issued",
"gfc_companyaddress": [
{
"companyname": "Manohar Halder ",
"address": "No 5, Sitapur(V), Neil Island(P.O)",
"address_processed": "No 5, Sitapur(V), Neil Island(P.O)",
"name_processed": "Manohar Halder ",
"name": "Manohar Halder "
}
],
"refid": "102487913",
"gfccompanyname": "Manohar Halder",
"gfc_updated_at": "2022-07-20T14:02:30.000Z",
"gfccompanyname_auto_suggest": "Manohar Halder",
"companyaddress_processed": "No 5, Sitapur(V), Neil Island(P.O)",
"fboid": "71993344",
"address": "No 5, Sitapur(V), Neil Island(P.O)",
"villagename": null,
"categoryid": "3",
"pincode": "744104",
"licenseactive": "0",
"id": 1,
"talukname": "Port Blair 8",
"companyname": "Manohar Halder ",
"gfccompanyname_compound": "Manohar Halder",
"@version": "1",
"date": "2022-06-21T10:42:28.000Z",
"statename": "Andaman And Nicobar Islands",
"@timestamp": "2022-07-20T14:09:10.403Z",
"licenseno": "22915202000001",
"categoryname": "Registration",
"gfc_uniqueid": "FSSAI_FSSAIREGISTRATIONS_22915202000001_REGISTRATION_71993344_NEWREGISTRATION_ANDAMANS_ANDAMANANDNICOBARISLANDS"
}
If successful, FSSAI API will return a JSON response containing district_name and more details.
In case of failure, API will return error code listed in error section
Cybersafe API
It accepts a phone number and returns whether that phone number is involved in any fraud/spam/crime etc or not, as per data provided by Cyber Safe website (https://cybersafe.gov.in/)
Cybersafe
curl --location --request GET 'http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193' \
require "uri"
require "net/http"
url = URI("http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body
import requests
url = "http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var myHeaders = new Headers();
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var client = new RestClient("http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.get("http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193")
.asString();
HTTP Request
GET http://crime.getupforchange.com/api/v3/cybersafe?apiKey=test_apikey&phoneNumber=9838652193
URL Parameters
phoneNumber: | string Mandatory The phone number that you want to run a check against |
apiKey: | string Mandatory The secret API key assigned for your account. This parameter is mandatory if apiKey is not passed via Authorization header |
Response
Response for Cybersafe API
{
"DATE": "2022-08-22T11:40:10.168Z",
"recordsFound": 1,
"phoneNumber": "9838652193",
"message": "Records Found - The number has been involved in a fraud reported by Intelligence Telangana on 24-02-2021 !!"
}
If successful, Cybersafe API will return a JSON response containing crime details for given Phone Number.
In case of failure, API will return error code listed in error section
Change History
Date | Version | Author | Change Description |
---|---|---|---|
25/08/2022 | 1.0 | Upendra | Added Data APIs section |