LOOKUP

A powerful lookup service that offers APIs to check and validate IPs, Phone numbers, and Emails.

Detect if the user's IP is from a VPN. Check if the email is deliverable. Lookup if the user's phone number exists.

Ensure users don't deceive your system by using a VPN to redeem multiple freebies and validate the IP, email, and phone at registration or transaction stages for risk assessment.

API Usage


API POST Requests Examples for IP Lookup

Using cURL:

curl -X POST "https://lookup.im/api.php" -d "action=checkIP&ip=8.8.8.8&token=your_token"

Using PHP:

$url = 'https://lookup.im/api.php';
$post_data = array(
    'action' => 'checkIP',
    'ip' => '8.8.8.8',
    'token' => 'your_token'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);

Using Java:

URL url = new URL("https://lookup.im/api.php");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
String data = "action=checkIP&ip=8.8.8.8&token=your_token";
con.getOutputStream().write(data.getBytes("UTF-8"));
con.getInputStream();

Expected JSON Response

In case of checkIP action, if it is VPN, TOR, or server, the 'status' will be 'found', and 'type' will be one of:

  • vpn
  • tor
  • server
  • crawler
  • lesserKnown

If the status is 'notfound', then the IP belongs to an actual user.

Example JSON response:

{
    "status": "found",
    "type": "vpn"
}

Note:
1) Crawlers are legitimate web crawlers from services like Google and Bing.
2) Lesser Knowns is a more extensive list of IPs that consist of servers known to host VPNs. The VPN services frequently change these servers, hence their IPs, and it takes a few days for them to be included in the VPN list. The Lesser Known list can be used to fill that gap.

API POST Requests Examples for Email Lookup

Using cURL:

curl -X POST "https://lookup.im/api.php" -d "action=checkEmail&email=test@example.com&token=your_token"

Using PHP:

$url = 'https://lookup.im/api.php';
$post_data = array(
    'action' => 'checkEmail',
    'email' => 'test@example.com',
    'token' => 'your_token'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);

Using Java:

URL url = new URL("https://lookup.im/api.php");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
String data = "action=checkEmail&email=test@example.com&token=your_token";
con.getOutputStream().write(data.getBytes("UTF-8"));
con.getInputStream();

Expected JSON Response

In case of checkEmail action, the following keys will be returned with their respective values:

  • result: The result of the email check, either 'valid', 'invalid' or 'unknown'.
  • reason: The reason for the result, e.g. 'rejected_email', 'syntax_error'.
  • is_role: A boolean value indicating if the email address has a role associated with it (e.g. info@example.com, support@example.com).
  • is_free: A boolean value indicating if the email address belongs to a free email provider (e.g. gmail.com, yahoo.com).
  • is_accept_all: A boolean value indicating if the email server accepts all emails sent to it.
  • is_disposable: A boolean value indicating if the email address is a temporary or disposable address.
  • is_spamtrap: A boolean value indicating if the email address is a known spam trap.
  • suggestion: Suggested alternative email address if the provided email contains a possible typo.
  • user: The user part of the email address (e.g. 'john' in john@example.com).
  • domain: The domain part of the email address (e.g. 'example.com' in john@example.com).
  • email: The complete email address (e.g. john@example.com).
  • is_mx_valid: A boolean value indicating if the mx servers are valid.
  • mx_server: An array of MX servers associated with the email domain.

Example JSON response:

{
  "result": "invalid",
  "reason": "rejected_email",
  "is_role": false,
  "is_free": true,
  "is_accept_all": false,
  "is_disposable": false,
  "is_spamtrap": false,
  "suggestion": null,
  "user": "baduser",
  "domain": "example.com",
  "email": "baduser@example.com",
  "is_mx_valid": true
  "mx_server": ["mx1.example.com"],
}

API POST Requests Examples for Mobile Phone Lookup

Using cURL:

curl -X POST "https://lookup.im/api.php" -d "action=checkPhone&phone=+919411000005&token=your_token"

Using PHP:

$url = 'https://lookup.im/api.php';
$post_data = array(
    'action' => 'checkPhone',
    'phone' => '+919411000005',
    'token' => 'your_token'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$response = curl_exec($ch);
curl_close($ch);

Using Java:

URL url = new URL("https://lookup.im/api.php");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
String data = "action=checkPhone&phone=+919411000005&token=your_token";
con.getOutputStream().write(data.getBytes("UTF-8"));
con.getInputStream();

Expected JSON Response

When making a checkPhone action, the following keys will be returned with their respective values:

  • status: The status of the request, 'success' indicates the request was successfully processed.
  • result: The result of the phone number check, either 'valid' or 'invalid'.
  • carrier: The mobile network carrier of the phone number (e.g. 'BSNL/MTNL - Central Gov.'), when the number was first issued.
  • circle: The telecom circle or region of the phone number (e.g. 'UP (West)').
  • country: The country associated with the phone number (e.g. 'India').
  • country_code: The country code of the phone number (e.g. '91').
  • phone: The complete mobile phone number (e.g. '919411000005').
  • notes: Additional notes about the phone number.

Example JSON response:

{
        "status": "success",
        "result": "invalid",
        "info": {
            "carrier": "BSNL/MTNL - Central Gov.",
            "circle": "UP (West)",
            "country": "India",
            "country_code": "91",
            "phone": "919411000005",
            "notes": ""
        }
    }

Notes:

  1. The response may not contain all the fields, depending on the country.
  2. The check is strictly for mobile numbers.
  3. For some countries, such as the USA, the API will return landline numbers as valid. This is because landline and mobile numbers can be interchanged in these regions.
  4. The "+" sign in the phone field of the request parameter is optional, but using it is recommended for optimal results.
  5. The carrier information provided reflects the carrier that originally issued the phone number. Please note that the user might have ported the number to a different carrier since then.

Pricing

Free Plan

100

100 requests per month

Get Started

Starter Plan

$49/mo

25000 requests per month

Get Started

Pro Plan

$99/mo

100000 requests per month

Get Started

Free Plan

100

100 requests per month

Get Started

Starter Plan

$99/mo

25000 requests per month

Get Started

Pro Plan

$199/mo

100000 requests per month

Get Started