Quickstart#
Dependencies#
This module requires API key to function. You may sign up for a free API key at https://www.ip2location.io/pricing.
Compilation#
dune build
Sample Codes#
Lookup IP Address Geolocation Data#
open Printf
open Ip2locationio
exception Ws_exception of string
let my_config = Configuration.init "YOUR_API_KEY";;
let my_ip = "8.8.8.8";;
let my_lang = "es";; (* language only supported in Plus and Security plans, so leave as blank if not needed *)
let code, json = Ip_geolocation.lookup my_config my_ip my_lang;;
let open Yojson.Basic.Util in
if code == 200
then
begin
let ip = json |> member "ip" |> to_string in
printf "ip: %s\n" ip;
let country_code = json |> member "country_code" |> to_string in
printf "country_code: %s\n" country_code;
let country_name = json |> member "country_name" |> to_string in
printf "country_name: %s\n" country_name;
let region_name = json |> member "region_name" |> to_string in
printf "region_name: %s\n" region_name;
let city_name = json |> member "city_name" |> to_string in
printf "city_name: %s\n" city_name;
let latitude = json |> member "latitude" |> to_float in
printf "latitude: %f\n" latitude;
let longitude = json |> member "longitude" |> to_float in
printf "longitude: %f\n" longitude;
let zip_code = json |> member "zip_code" |> to_string in
printf "zip_code: %s\n" zip_code;
let time_zone = json |> member "time_zone" |> to_string in
printf "time_zone: %s\n" time_zone;
let asn = json |> member "asn" |> to_string in
printf "asn: %s\n" asn;
let as_name = json |> member "as" |> to_string in
printf "as: %s\n" as_name;
let isp = if json |> member "isp" = `Null then "N/A" else json |> member "isp" |> to_string in
printf "isp: %s\n" isp;
let domain = if json |> member "domain" = `Null then "N/A" else json |> member "domain" |> to_string in
printf "domain: %s\n" domain;
let net_speed = if json |> member "net_speed" = `Null then "N/A" else json |> member "net_speed" |> to_string in
printf "net_speed: %s\n" net_speed;
let idd_code = if json |> member "idd_code" = `Null then "N/A" else json |> member "idd_code" |> to_string in
printf "idd_code: %s\n" idd_code;
let area_code = if json |> member "area_code" = `Null then "N/A" else json |> member "area_code" |> to_string in
printf "area_code: %s\n" area_code;
let weather_station_code = if json |> member "weather_station_code" = `Null then "N/A" else json |> member "weather_station_code" |> to_string in
printf "weather_station_code: %s\n" weather_station_code;
let weather_station_name = if json |> member "weather_station_name" = `Null then "N/A" else json |> member "weather_station_name" |> to_string in
printf "weather_station_name: %s\n" weather_station_name;
let mcc = if json |> member "mcc" = `Null then "N/A" else json |> member "mcc" |> to_string in
printf "mcc: %s\n" mcc;
let mnc = if json |> member "mnc" = `Null then "N/A" else json |> member "mnc" |> to_string in
printf "mnc: %s\n" mnc;
let mobile_brand = if json |> member "mobile_brand" = `Null then "N/A" else json |> member "mobile_brand" |> to_string in
printf "mobile_brand: %s\n" mobile_brand;
let elevation = if json |> member "elevation" = `Null then 0 else json |> member "elevation" |> to_int in
printf "elevation: %d\n" elevation;
let usage_type = if json |> member "usage_type" = `Null then "N/A" else json |> member "usage_type" |> to_string in
printf "usage_type: %s\n" usage_type;
let address_type = if json |> member "address_type" = `Null then "N/A" else json |> member "address_type" |> to_string in
printf "address_type: %s\n" address_type;
let district = if json |> member "district" = `Null then "N/A" else json |> member "district" |> to_string in
printf "district: %s\n" district;
let ads_category = if json |> member "ads_category" = `Null then "N/A" else json |> member "ads_category" |> to_string in
printf "ads_category: %s\n" ads_category;
let ads_category_name = if json |> member "ads_category_name" = `Null then "N/A" else json |> member "ads_category_name" |> to_string in
printf "ads_category_name: %s\n" ads_category_name;
let is_proxy = json |> member "is_proxy" |> to_bool in
printf "is_proxy: %b\n" is_proxy;
let fraud_score = if json |> member "fraud_score" = `Null then 0 else json |> member "fraud_score" |> to_int in
printf "fraud_score: %d\n" fraud_score;
(* as_info addon *)
if (member "as_info" json) <> `Null
then
begin
let as_name = json |> member "as_info" |> member "as_name" |> to_string in
printf "as_name: %s\n" as_name;
let as_number = json |> member "as_info" |> member "as_number" |> to_string in
printf "as_number: %s\n" as_number;
let as_domain = json |> member "as_info" |> member "as_domain" |> to_string in
printf "as_domain: %s\n" as_domain;
let as_cidr = json |> member "as_info" |> member "as_cidr" |> to_string in
printf "as_cidr: %s\n" as_cidr;
let as_usage_type = json |> member "as_info" |> member "as_usage_type" |> to_string in
printf "as_usage_type: %s\n" as_usage_type;
end;
(* continent addon *)
if (member "continent" json) <> `Null
then
begin
let continent_name = json |> member "continent" |> member "name" |> to_string in
printf "continent_name: %s\n" continent_name;
let continent_code = json |> member "continent" |> member "code" |> to_string in
printf "continent_code: %s\n" continent_code;
let continent_hemisphere = json |> member "continent" |> member "hemisphere" |> to_list |> List.map (fun x -> x |> to_string) in
print_endline "continent_hemisphere:";
List.iter (fun x -> x |> print_endline) continent_hemisphere;
if (json |> member "continent" |> member "translation" |> member "lang") <> `Null
then
begin
let continent_translation_lang = json |> member "continent" |> member "translation" |> member "lang" |> to_string in
printf "continent_translation_lang: %s\n" continent_translation_lang;
let continent_translation_value = json |> member "continent" |> member "translation" |> member "value" |> to_string in
printf "continent_translation_value: %s\n" continent_translation_value;
end;
end;
(* country addon *)
if (member "country" json) <> `Null
then
begin
let country_name = json |> member "country" |> member "name" |> to_string in
printf "country_name: %s\n" country_name;
let country_alpha3_code = json |> member "country" |> member "alpha3_code" |> to_string in
printf "country_alpha3_code: %s\n" country_alpha3_code;
let country_numeric_code = json |> member "country" |> member "numeric_code" |> to_int in
printf "country_numeric_code: %d\n" country_numeric_code;
let country_demonym = json |> member "country" |> member "demonym" |> to_string in
printf "country_demonym: %s\n" country_demonym;
let country_flag = json |> member "country" |> member "flag" |> to_string in
printf "country_flag: %s\n" country_flag;
let country_capital = json |> member "country" |> member "capital" |> to_string in
printf "country_capital: %s\n" country_capital;
let country_total_area = json |> member "country" |> member "total_area" |> to_int in
printf "country_total_area: %d\n" country_total_area;
let country_population = json |> member "country" |> member "population" |> to_int in
printf "country_population: %d\n" country_population;
let country_tld = json |> member "country" |> member "tld" |> to_string in
printf "country_tld: %s\n" country_tld;
let country_currency_code = json |> member "country" |> member "currency" |> member "code" |> to_string in
printf "country_currency_code: %s\n" country_currency_code;
let country_currency_name = json |> member "country" |> member "currency" |> member "name" |> to_string in
printf "country_currency_name: %s\n" country_currency_name;
let country_currency_symbol = json |> member "country" |> member "currency" |> member "symbol" |> to_string in
printf "country_currency_symbol: %s\n" country_currency_symbol;
let country_language_code = json |> member "country" |> member "language" |> member "code" |> to_string in
printf "country_language_code: %s\n" country_language_code;
let country_language_name = json |> member "country" |> member "language" |> member "name" |> to_string in
printf "country_language_name: %s\n" country_language_name;
if (json |> member "country" |> member "translation" |> member "lang") <> `Null
then
begin
let country_translation_lang = json |> member "country" |> member "translation" |> member "lang" |> to_string in
printf "country_translation_lang: %s\n" country_translation_lang;
let country_translation_value = json |> member "country" |> member "translation" |> member "value" |> to_string in
printf "country_translation_value: %s\n" country_translation_value;
end;
end;
(* region addon *)
if (member "region" json) <> `Null
then
begin
let region_name = json |> member "region" |> member "name" |> to_string in
printf "region_name: %s\n" region_name;
let region_code = json |> member "region" |> member "code" |> to_string in
printf "region_code: %s\n" region_code;
if (json |> member "region" |> member "translation" |> member "lang") <> `Null
then
begin
let region_translation_lang = json |> member "region" |> member "translation" |> member "lang" |> to_string in
printf "region_translation_lang: %s\n" region_translation_lang;
let region_translation_value = json |> member "region" |> member "translation" |> member "value" |> to_string in
printf "region_translation_value: %s\n" region_translation_value;
end;
end;
(* city addon *)
if (member "city" json) <> `Null
then
begin
let city_name = json |> member "city" |> member "name" |> to_string in
printf "city_name: %s\n" city_name;
if (json |> member "city" |> member "translation" |> member "lang") <> `Null
then
begin
let city_translation_lang = json |> member "city" |> member "translation" |> member "lang" |> to_string in
printf "city_translation_lang: %s\n" city_translation_lang;
let city_translation_value = json |> member "city" |> member "translation" |> member "value" |> to_string in
printf "city_translation_value: %s\n" city_translation_value;
end
end;
(* time_zone_info addon *)
if (member "time_zone_info" json) <> `Null
then
begin
let time_zone_info_olson = json |> member "time_zone_info" |> member "olson" |> to_string in
printf "time_zone_info_olson: %s\n" time_zone_info_olson;
let time_zone_info_current_time = json |> member "time_zone_info" |> member "current_time" |> to_string in
printf "time_zone_info_current_time: %s\n" time_zone_info_current_time;
let time_zone_info_gmt_offset = json |> member "time_zone_info" |> member "gmt_offset" |> to_int in
printf "time_zone_info_gmt_offset: %d\n" time_zone_info_gmt_offset;
let time_zone_info_is_dst = json |> member "time_zone_info" |> member "is_dst" |> to_bool in
printf "time_zone_info_is_dst: %b\n" time_zone_info_is_dst;
let time_zone_info_abbreviation = json |> member "time_zone_info" |> member "abbreviation" |> to_string in
printf "time_zone_info_abbreviation: %s\n" time_zone_info_abbreviation;
let time_zone_info_dst_start_date = json |> member "time_zone_info" |> member "dst_start_date" |> to_string in
printf "time_zone_info_dst_start_date: %s\n" time_zone_info_dst_start_date;
let time_zone_info_dst_end_date = json |> member "time_zone_info" |> member "dst_end_date" |> to_string in
printf "time_zone_info_dst_end_date: %s\n" time_zone_info_dst_end_date;
let time_zone_info_sunrise = json |> member "time_zone_info" |> member "sunrise" |> to_string in
printf "time_zone_info_sunrise: %s\n" time_zone_info_sunrise;
let time_zone_info_sunset = json |> member "time_zone_info" |> member "sunset" |> to_string in
printf "time_zone_info_sunset: %s\n" time_zone_info_sunset;
end;
(* geotargeting addon *)
if (member "geotargeting" json) <> `Null
then
begin
let geotargeting_metro = json |> member "geotargeting" |> member "metro" |> to_string in
printf "geotargeting_metro: %s\n" geotargeting_metro;
end;
(* proxy addon *)
if (member "proxy" json) <> `Null
then
begin
let proxy_last_seen = json |> member "proxy" |> member "last_seen" |> to_int in
printf "proxy_last_seen: %d\n" proxy_last_seen;
let proxy_proxy_type = json |> member "proxy" |> member "proxy_type" |> to_string in
printf "proxy_proxy_type: %s\n" proxy_proxy_type;
let proxy_threat = json |> member "proxy" |> member "threat" |> to_string in
printf "proxy_threat: %s\n" proxy_threat;
let proxy_provider = json |> member "proxy" |> member "provider" |> to_string in
printf "proxy_provider: %s\n" proxy_provider;
let proxy_is_vpn = json |> member "proxy" |> member "is_vpn" |> to_bool in
printf "proxy_is_vpn: %b\n" proxy_is_vpn;
let proxy_is_tor = json |> member "proxy" |> member "is_tor" |> to_bool in
printf "proxy_is_tor: %b\n" proxy_is_tor;
let proxy_is_data_center = json |> member "proxy" |> member "is_data_center" |> to_bool in
printf "proxy_is_data_center: %b\n" proxy_is_data_center;
let proxy_is_public_proxy = json |> member "proxy" |> member "is_public_proxy" |> to_bool in
printf "proxy_is_public_proxy: %b\n" proxy_is_public_proxy;
let proxy_is_web_proxy = json |> member "proxy" |> member "is_web_proxy" |> to_bool in
printf "proxy_is_web_proxy: %b\n" proxy_is_web_proxy;
let proxy_is_web_crawler = json |> member "proxy" |> member "is_web_crawler" |> to_bool in
printf "proxy_is_web_crawler: %b\n" proxy_is_web_crawler;
let proxy_is_ai_crawler = json |> member "proxy" |> member "is_ai_crawler" |> to_bool in
printf "proxy_is_ai_crawler: %b\n" proxy_is_ai_crawler;
let proxy_is_residential_proxy = json |> member "proxy" |> member "is_residential_proxy" |> to_bool in
printf "proxy_is_residential_proxy: %b\n" proxy_is_residential_proxy;
let proxy_is_consumer_privacy_network = json |> member "proxy" |> member "is_consumer_privacy_network" |> to_bool in
printf "proxy_is_consumer_privacy_network: %b\n" proxy_is_consumer_privacy_network;
let proxy_is_enterprise_private_network = json |> member "proxy" |> member "is_enterprise_private_network" |> to_bool in
printf "proxy_is_enterprise_private_network: %b\n" proxy_is_enterprise_private_network;
let proxy_is_spammer = json |> member "proxy" |> member "is_spammer" |> to_bool in
printf "proxy_is_spammer: %b\n" proxy_is_spammer;
let proxy_is_scanner = json |> member "proxy" |> member "is_scanner" |> to_bool in
printf "proxy_is_scanner: %b\n" proxy_is_scanner;
let proxy_is_botnet = json |> member "proxy" |> member "is_botnet" |> to_bool in
printf "proxy_is_botnet: %b\n" proxy_is_botnet;
let proxy_is_bogon = json |> member "proxy" |> member "is_bogon" |> to_bool in
printf "proxy_is_bogon: %b\n" proxy_is_bogon;
end
end
else if (code == 400 || code == 401) && ((member "error" json) <> `Null)
then
begin
let error_message = json |> member "error" |> member "error_message" |> to_string in
raise (Ws_exception ("error_message: " ^ error_message));
end
else
raise (Ws_exception ("HTTP Code: " ^ (Int.to_string code)))
Lookup Domain Information#
open Printf
open Ip2locationio
exception Ws_exception of string
let my_config = Configuration.init "YOUR_API_KEY";;
let my_domain = "google.com";;
let code, json = Domain_whois.lookup my_config my_domain;;
let open Yojson.Basic.Util in
if code == 200
then
begin
let domain = json |> member "domain" |> to_string in
printf "domain: %s\n" domain;
let domain_id = json |> member "domain_id" |> to_string in
printf "domain_id: %s\n" domain_id;
let status = json |> member "status" |> to_string in
printf "status: %s\n" status;
let create_date = json |> member "create_date" |> to_string in
printf "create_date: %s\n" create_date;
let update_date = json |> member "update_date" |> to_string in
printf "update_date: %s\n" update_date;
let expire_date = json |> member "expire_date" |> to_string in
printf "expire_date: %s\n" expire_date;
let domain_age = json |> member "domain_age" |> to_int in
printf "domain_age: %d\n" domain_age;
let whois_server = json |> member "whois_server" |> to_string in
printf "whois_server: %s\n" whois_server;
let registrar_iana_id = json |> member "registrar" |> member "iana_id" |> to_string in
printf "registrar_iana_id: %s\n" registrar_iana_id;
let registrar_name = json |> member "registrar" |> member "name" |> to_string in
printf "registrar_name: %s\n" registrar_name;
let registrar_url = json |> member "registrar" |> member "url" |> to_string in
printf "registrar_url: %s\n" registrar_url;
let registrant_name = json |> member "registrant" |> member "name" |> to_string in
printf "registrant_name: %s\n" registrant_name;
let registrant_organization = json |> member "registrant" |> member "organization" |> to_string in
printf "registrant_organization: %s\n" registrant_organization;
let registrant_street_address = json |> member "registrant" |> member "street_address" |> to_string in
printf "registrant_street_address: %s\n" registrant_street_address;
let registrant_city = json |> member "registrant" |> member "city" |> to_string in
printf "registrant_city: %s\n" registrant_city;
let registrant_region = json |> member "registrant" |> member "region" |> to_string in
printf "registrant_region: %s\n" registrant_region;
let registrant_zip_code = json |> member "registrant" |> member "zip_code" |> to_string in
printf "registrant_zip_code: %s\n" registrant_zip_code;
let registrant_country = json |> member "registrant" |> member "country" |> to_string in
printf "registrant_country: %s\n" registrant_country;
let registrant_phone = json |> member "registrant" |> member "phone" |> to_string in
printf "registrant_phone: %s\n" registrant_phone;
let registrant_fax = json |> member "registrant" |> member "fax" |> to_string in
printf "registrant_fax: %s\n" registrant_fax;
let registrant_email = json |> member "registrant" |> member "email" |> to_string in
printf "registrant_email: %s\n" registrant_email;
let admin_name = json |> member "admin" |> member "name" |> to_string in
printf "admin_name: %s\n" admin_name;
let admin_organization = json |> member "admin" |> member "organization" |> to_string in
printf "admin_organization: %s\n" admin_organization;
let admin_street_address = json |> member "admin" |> member "street_address" |> to_string in
printf "admin_street_address: %s\n" admin_street_address;
let admin_city = json |> member "admin" |> member "city" |> to_string in
printf "admin_city: %s\n" admin_city;
let admin_region = json |> member "admin" |> member "region" |> to_string in
printf "admin_region: %s\n" admin_region;
let admin_zip_code = json |> member "admin" |> member "zip_code" |> to_string in
printf "admin_zip_code: %s\n" admin_zip_code;
let admin_country = json |> member "admin" |> member "country" |> to_string in
printf "admin_country: %s\n" admin_country;
let admin_phone = json |> member "admin" |> member "phone" |> to_string in
printf "admin_phone: %s\n" admin_phone;
let admin_fax = json |> member "admin" |> member "fax" |> to_string in
printf "admin_fax: %s\n" admin_fax;
let admin_email = json |> member "admin" |> member "email" |> to_string in
printf "admin_email: %s\n" admin_email;
let tech_name = json |> member "tech" |> member "name" |> to_string in
printf "tech_name: %s\n" tech_name;
let tech_organization = json |> member "tech" |> member "organization" |> to_string in
printf "tech_organization: %s\n" tech_organization;
let tech_street_address = json |> member "tech" |> member "street_address" |> to_string in
printf "tech_street_address: %s\n" tech_street_address;
let tech_city = json |> member "tech" |> member "city" |> to_string in
printf "tech_city: %s\n" tech_city;
let tech_region = json |> member "tech" |> member "region" |> to_string in
printf "tech_region: %s\n" tech_region;
let tech_zip_code = json |> member "tech" |> member "zip_code" |> to_string in
printf "tech_zip_code: %s\n" tech_zip_code;
let tech_country = json |> member "tech" |> member "country" |> to_string in
printf "tech_country: %s\n" tech_country;
let tech_phone = json |> member "tech" |> member "phone" |> to_string in
printf "tech_phone: %s\n" tech_phone;
let tech_fax = json |> member "tech" |> member "fax" |> to_string in
printf "tech_fax: %s\n" tech_fax;
let tech_email = json |> member "tech" |> member "email" |> to_string in
printf "tech_email: %s\n" tech_email;
let billing_name = json |> member "billing" |> member "name" |> to_string in
printf "billing_name: %s\n" billing_name;
let billing_organization = json |> member "billing" |> member "organization" |> to_string in
printf "billing_organization: %s\n" billing_organization;
let billing_street_address = json |> member "billing" |> member "street_address" |> to_string in
printf "billing_street_address: %s\n" billing_street_address;
let billing_city = json |> member "billing" |> member "city" |> to_string in
printf "billing_city: %s\n" billing_city;
let billing_region = json |> member "billing" |> member "region" |> to_string in
printf "billing_region: %s\n" billing_region;
let billing_zip_code = json |> member "billing" |> member "zip_code" |> to_string in
printf "billing_zip_code: %s\n" billing_zip_code;
let billing_country = json |> member "billing" |> member "country" |> to_string in
printf "billing_country: %s\n" billing_country;
let billing_phone = json |> member "billing" |> member "phone" |> to_string in
printf "billing_phone: %s\n" billing_phone;
let billing_fax = json |> member "billing" |> member "fax" |> to_string in
printf "billing_fax: %s\n" billing_fax;
let billing_email = json |> member "billing" |> member "email" |> to_string in
printf "billing_email: %s\n" billing_email;
let nameservers = json |> member "nameservers" |> to_list |> List.map (fun x -> x |> to_string) in
print_endline "nameservers:";
List.iter (fun x -> x |> print_endline) nameservers;
end
else if (code == 400 || code == 401) && ((member "error" json) <> `Null)
then
begin
let error_message = json |> member "error" |> member "error_message" |> to_string in
raise (Ws_exception ("error_message: " ^ error_message));
end
else
raise (Ws_exception ("HTTP Code: " ^ (Int.to_string code)))
Get Domain Name#
open Printf
open Ip2locationio
let my_config = Configuration.init "YOUR_API_KEY";;
let domain_name = Domain_whois.get_domain_name "https://www.example.com/exe";;
printf "domain_name: %s\n" domain_name;;
Get Domain Extension#
open Printf
open Ip2locationio
let my_config = Configuration.init "YOUR_API_KEY";;
let domain_extension = Domain_whois.get_domain_extension "example.com";;
printf "domain_extension: %s\n" domain_extension;;
Lookup IP Address Hosted Domains Data#
open Printf
open Ip2locationio
exception Ws_exception of string
let my_config = Configuration.init "YOUR_API_KEY";;
let my_ip = "8.8.8.8";;
let my_page = 1;;
let code, json = Hosted_domain.lookup my_config my_ip my_page;;
let open Yojson.Basic.Util in
if code == 200
then
begin
let ip = json |> member "ip" |> to_string in
printf "ip: %s\n" ip;
let total_domains = json |> member "total_domains" |> to_int in
printf "total_domains: %d\n" total_domains;
let page = json |> member "page" |> to_int in
printf "page: %d\n" page;
let per_page = json |> member "per_page" |> to_int in
printf "per_page: %d\n" per_page;
let total_pages = json |> member "total_pages" |> to_int in
printf "total_pages: %d\n" total_pages;
let domains = json |> member "domains" |> to_list |> List.map (fun x -> x |> to_string) in
print_endline "domains:";
List.iter (fun x -> x |> print_endline) domains;
end
else if (code == 400 || code == 401) && ((member "error" json) <> `Null)
then
begin
let error_message = json |> member "error" |> member "error_message" |> to_string in
raise (Ws_exception ("error_message: " ^ error_message));
end
else
raise (Ws_exception ("HTTP Code: " ^ (Int.to_string code)))