# Breach Lookup Source: https://docs.osintcat.net/api-reference/endpoint/breach GET https://www.osintcat.net/api/breach Search for records in data breaches and compilations. This endpoint searches across multiple breach databases to find information associated with your query. ## Parameters The search term (e.g., email, username) ## Headers Your API key ## Response Returns breach data found across multiple sources. API identifier Request processing time in milliseconds Formatted timestamp of the request Number of breach records found Array of breach records Metadata about the request ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/breach?query=user@example.com" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/breach" params = {"query": "user@example.com"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/breach?query=user@example.com'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/breach" params := url.Values{} params.Add("query", "user@example.com") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/breach') uri.query = URI.encode_www_form({ query: 'user@example.com' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/breach?query=user@example.com"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/breach?query=user@example.com"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` ## Example Response ```json theme={null} { "api": "OsintCat", "elapsed_ms": 1234.56, "timestamp": "Jan 20th 14:30", "results_count": 5, "breach_data": [ { "source": "leakcheck", "email": "user@example.com", "password": "hashed_password", "breach_date": "2020-01-15" } ], "_meta": { "requests_remaining": 38 } } ``` # Chilean Name Source: https://docs.osintcat.net/api-reference/endpoint/chilean-name GET https://www.osintcat.net/api/chilean-name Find information about a Chilean person using their full name. ## Parameters Full name ## Headers Your API key ## Response Returns information about the Chilean person matching the provided name. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/chilean-name?query=Juan%20Perez" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/chilean-name" params = {"query": "Juan Perez"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/chilean-name?query=Juan%20Perez'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/chilean-name" params := url.Values{} params.Add("query", "Juan Perez") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/chilean-name') uri.query = URI.encode_www_form({ query: 'Juan Perez' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/chilean-name?query=Juan%20Perez"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/chilean-name?query=Juan%20Perez"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Discord Lookup Source: https://docs.osintcat.net/api-reference/endpoint/discord GET https://www.osintcat.net/api/discord Find Discord user information from various database leaks. This endpoint searches for Discord user data including usernames, user IDs, and associated information. ## Parameters Discord User ID, username, or email ## Headers Your API key ## Response Returns Discord user information found in various databases. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/discord?query=123456789012345678" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/discord" params = {"query": "123456789012345678"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/discord?query=123456789012345678'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/discord" params := url.Values{} params.Add("query", "123456789012345678") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/discord') uri.query = URI.encode_www_form({ query: '123456789012345678' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/discord?query=123456789012345678"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/discord?query=123456789012345678"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Discord to Roblox Source: https://docs.osintcat.net/api-reference/endpoint/discord-to-roblox GET https://www.osintcat.net/api/discord-to-roblox Find a linked Roblox account from a Discord User ID. ## Parameters The Discord User ID ## Headers Your API key ## Response Returns linked Roblox account information if found. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/discord-to-roblox?query=123456789012345678" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/discord-to-roblox" params = {"query": "123456789012345678"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/discord-to-roblox?query=123456789012345678'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/discord-to-roblox" params := url.Values{} params.Add("query", "123456789012345678") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/discord-to-roblox') uri.query = URI.encode_www_form({ query: '123456789012345678' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/discord-to-roblox?query=123456789012345678"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/discord-to-roblox?query=123456789012345678"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # DNS Resolver Source: https://docs.osintcat.net/api-reference/endpoint/dns-resolver GET https://www.osintcat.net/api/dns-resolver Resolve domain names and hostnames to IP addresses. ## Parameters A domain or hostname ## Headers Your API key ## Response Returns DNS resolution results mapping hostnames to IP addresses. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/dns-resolver?query=example.com" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/dns-resolver" params = {"query": "example.com"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/dns-resolver?query=example.com'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/dns-resolver" params := url.Values{} params.Add("query", "example.com") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/dns-resolver') uri.query = URI.encode_www_form({ query: 'example.com' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/dns-resolver?query=example.com"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/dns-resolver?query=example.com"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Domain Lookup Source: https://docs.osintcat.net/api-reference/endpoint/domain GET https://www.osintcat.net/api/domain Domain stealer lookup. Search for domain-related information in stealer logs and databases. ## Parameters Domain name (example -> example.com) ## Headers Your API key ## Response Returns domain-related information found in stealer logs and databases. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/domain?query=example.com" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/domain" params = {"query": "example.com"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/domain?query=example.com'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/domain" params := url.Values{} params.Add("query", "example.com") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/domain') uri.query = URI.encode_www_form({ query: 'example.com' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/domain?query=example.com"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/domain?query=example.com"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Email Footprint Source: https://docs.osintcat.net/api-reference/endpoint/email-footprint GET https://www.osintcat.net/api/footprint/create-task Discover platform registrations for an email address across 100+ services The Email Footprint API checks whether a specific email address is registered across social media, shopping, and professional platforms. It returns a summary of stats and a per-platform breakdown including secondary metadata like usernames or account status where available. The lookup backend is load-balanced, so footprint scans run as **asynchronous tasks**: 1. **Create a task** with `GET /api/footprint/create-task` (this is where one lookup is charged). You receive a `task_id`. 2. **Poll the task** with `GET /api/footprint/get-task?id=` until `status` is no longer a running state. Polling is free. Email and username footprints share the same task endpoints — only the `type` parameter differs (`email` vs `username`). *** ## Step 1 — Create Task ```bash theme={null} GET https://www.osintcat.net/api/footprint/create-task ``` The email address to scan (e.g., `user@gmail.com`) The footprint type. Use `email` for this endpoint. Your API key Creating a task consumes exactly **one lookup** from your daily quota. Polling `get-task` does not. **Response Body** The identifier used to poll for results. The initial task status (e.g., `running`, `queued`, `pending`). Your current plan. Remaining lookups for the day (`unlimited` on the Max plan). ```json theme={null} { "task_id": "f3c8a1e2-9b44-4d51-bd0a-1c2e3f4a5b6c", "status": "running", "_meta": { "plan": "researcher", "lookups_left": 4821 } } ``` *** ## Step 2 — Poll Task ```bash theme={null} GET https://www.osintcat.net/api/footprint/get-task ``` The `task_id` returned by `create-task`. Your API key Poll roughly once per second until `status` is no longer one of the running states (`running`, `queued`, `pending`, `processing`, `started`). A scan typically completes within a few seconds and is capped at \~3 minutes. **Response Body** Current task status. While running it is one of `running`, `queued`, `pending`, `processing`, `started`. Any other value (e.g., `done`, `finished`) means the scan is complete. Live progress / summary counters (populated as the scan runs). Number of platforms checked so far. Total number of platforms in the scan. Number of platforms where the email was found. Elapsed scan time. List of platform results (grows as the scan progresses). Platform domain (e.g., `github.com`) True if the email is registered on this platform Metadata retrieved from the platform (usernames, IDs, status, etc.) *** ## Example ```bash cURL theme={null} # 1. Create the task curl "https://www.osintcat.net/api/footprint/create-task?query=john@gmail.com&type=email" \ -H "X-API-KEY: YOUR_API_KEY" # 2. Poll until done (replace TASK_ID with the returned task_id) curl "https://www.osintcat.net/api/footprint/get-task?id=TASK_ID" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import time import requests BASE = "https://www.osintcat.net" HEADERS = {"X-API-KEY": "YOUR_API_KEY"} RUNNING = {"running", "queued", "pending", "processing", "started"} # 1. Create the task (charges one lookup) task = requests.get( f"{BASE}/api/footprint/create-task", params={"query": "john@gmail.com", "type": "email"}, headers=HEADERS, ).json() task_id = task["task_id"] # 2. Poll until the scan finishes while True: data = requests.get( f"{BASE}/api/footprint/get-task", params={"id": task_id}, headers=HEADERS, ).json() if str(data.get("status", "")).lower() not in RUNNING: break time.sleep(1) print(data) ``` ```javascript Node.js theme={null} const BASE = 'https://www.osintcat.net'; const HEADERS = { 'X-API-KEY': 'YOUR_API_KEY' }; const RUNNING = ['running', 'queued', 'pending', 'processing', 'started']; const sleep = ms => new Promise(r => setTimeout(r, ms)); (async () => { // 1. Create the task (charges one lookup) const task = await fetch( `${BASE}/api/footprint/create-task?query=john@gmail.com&type=email`, { headers: HEADERS } ).then(r => r.json()); // 2. Poll until the scan finishes let data; do { data = await fetch( `${BASE}/api/footprint/get-task?id=${encodeURIComponent(task.task_id)}`, { headers: HEADERS } ).then(r => r.json()); if (!RUNNING.includes(String(data.status).toLowerCase())) break; await sleep(1000); } while (true); console.log(data); })(); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, ]); $response = curl_exec($curl); curl_close($curl); return json_decode($response, true); } // 1. Create the task (charges one lookup) $task = get_json("$base/api/footprint/create-task?query=john@gmail.com&type=email", $headers); $taskId = $task["task_id"]; // 2. Poll until the scan finishes do { $data = get_json("$base/api/footprint/get-task?id=" . urlencode($taskId), $headers); if (!in_array(strtolower($data["status"]), $running)) break; sleep(1); } while (true); print_r($data); ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" "strings" "time" ) func getJSON(u string) map[string]interface{} { req, _ := http.NewRequest("GET", u, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var out map[string]interface{} json.Unmarshal(body, &out) return out } func main() { base := "https://www.osintcat.net" running := map[string]bool{"running": true, "queued": true, "pending": true, "processing": true, "started": true} // 1. Create the task (charges one lookup) params := url.Values{} params.Add("query", "john@gmail.com") params.Add("type", "email") task := getJSON(base + "/api/footprint/create-task?" + params.Encode()) taskID, _ := task["task_id"].(string) // 2. Poll until the scan finishes var data map[string]interface{} for { data = getJSON(base + "/api/footprint/get-task?id=" + url.QueryEscape(taskID)) status, _ := data["status"].(string) if !running[strings.ToLower(status)] { break } time.Sleep(time.Second) } fmt.Printf("%+v\n", data) } ``` **Example Result (completed task)** ```json theme={null} { "status": "done", "stats": { "checked": 119, "total_modules": 119, "found": 95, "elapsed": "6.4s" }, "results": [ { "domain": "github.com", "taken": true, "ExtraData": { "Username": "johnny123", "PublicRepos": 42 } } ] } ``` # Email OSINT Source: https://docs.osintcat.net/api-reference/endpoint/email-osint GET https://www.osintcat.net/api/email-osint Discover which websites an email address is registered on. **Purpose Identification Required**: This endpoint requires you to specify the purpose/reason for your OSINT search. You can provide this in 4 different ways (in order of priority): 1. **Query Parameter**: `?purpose=Your%20Purpose` 2. **X-Purpose Header**: `X-Purpose: Your Purpose` 3. **Purpose Header**: `Purpose: Your Purpose` 4. **User-Agent Header**: Include `Purpose: Your Purpose` within the User-Agent string **Credits Required**: This endpoint requires email OSINT credits to perform searches. Credits are deducted only after a successful search. Check your credit balance using the `/api/user` endpoint, which includes email OSINT credit information in its response. ## Parameters Email address to investigate Purpose/reason for the OSINT search (can also be provided via headers) ## Headers Your API key Alternative way to provide the purpose (takes priority over query parameter) Alternative way to provide the purpose Can include `Purpose: Your Purpose` within the User-Agent string ## Credit System Email OSINT searches require credits to be performed. The cost per search varies by your subscription plan: | Plan | Price per Search | Monthly Free Credits | | ------------ | ---------------- | -------------------- | | Free | €0.50 | 5 searches (€2.50) | | Starter | €0.40 | 10 searches (€4.00) | | Researcher | €0.30 | 20 searches (€6.00) | | Investigator | €0.20 | 30 searches (€6.00) | | Enterprise | €0.15 | 50 searches (€7.50) | **Monthly Credits**: Free credits are automatically awarded on the first of each month based on your plan. Free credits are not stackable - unused credits from previous months do not accumulate. **Credit Deduction**: Credits are deducted only after a successful API response. Failed requests (due to invalid parameters, rate limits, etc.) do not consume credits. ## Check Credit Balance Before making a search request, you can check your current credit balance using the `/api/user` endpoint, which includes email OSINT credit information: **Endpoint**: `GET /api/user` ```bash cURL theme={null} curl "https://www.osintcat.net/api/user" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/user" headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.get(url, headers=headers) if response.ok: data = response.json() credits = data.get('email_osint_credits', {}) print(f"Current credits: €{credits.get('current_balance', 0)}") print(f"Price per search: €{credits.get('price_per_search', 0)}") print(f"Searches available: {credits.get('searches_available', 0)}") else: print(f"Error: {response.status_code}") ``` The `email_osint_credits` object in the response contains: * `current_balance`: Current credit balance in EUR * `price_per_search`: Cost per search based on your plan * `has_sufficient_credits`: Whether you have enough credits for at least one search * `searches_available`: Estimated number of searches available with current balance See the [User Info](/api-reference/endpoint/user) endpoint documentation for the complete response structure. ## Response Returns information about websites where the email address is registered. Credits are deducted after a successful response. ## Example Request ```bash cURL theme={null} # Using header for API Key and X-Purpose for reason curl "https://www.osintcat.net/api/email-osint?query=test@example.com" \ -H "X-API-KEY: YOUR_API_KEY" \ -H "X-Purpose: Security Research" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/email-osint" params = { "query": "test@example.com", "purpose": "Security Research" } headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/email-osint?query=test@example.com&purpose=Security%20Research'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/email-osint" params := url.Values{} params.Add("query", "test@example.com") params.Add("purpose", "Security Research") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/email-osint') uri.query = URI.encode_www_form({ query: 'test@example.com', purpose: 'Security Research' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/email-osint?query=test@example.com&purpose=Security%20Research"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/email-osint?query=test@example.com&purpose=Security%20Research"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` ## Error Responses ### Insufficient Credits (402 Payment Required) If you don't have enough credits to perform a search, you'll receive a 402 status code: ```json theme={null} { "error": "INSUFFICIENT_CREDITS", "message": "Insufficient credits. You need 0.50€ but have 0.00€. Please purchase credits.", "credits_needed": 0.50, "credits_available": 0.00 } ``` ### Rate Limit Exceeded (429 Too Many Requests) If you exceed the rate limit of 3 requests per second, you'll receive a 429 status code. This does not consume credits. ### Other Status Codes * `200 OK` - Success (credits are deducted) * `400 Bad Request` - Missing or invalid parameters (no credits deducted) * `403 Forbidden` - Invalid or missing API key (no credits deducted) * `429 Too Many Requests` - Rate limit exceeded (no credits deducted) * `500 Internal Server Error` - Server error (no credits deducted) # GTA Online Players Source: https://docs.osintcat.net/api-reference/endpoint/gta-players GET https://www.osintcat.net/api/gta/players Search tracked GTA Online players by display name or Rockstar ID. Returns platform, last seen timestamp, and full raw data for each match. ## Parameters The search value: a player name (partial match) or Rockstar ID (exact match) Search mode. `name` for display name lookup, `rid` for Rockstar ID lookup ## Headers Your API key ## Response List of matched player objects Rockstar ID Display name Platform (`pc`, `ps`, `xbox`) Unix timestamp of last recorded presence Number of results returned Server-side processing time in milliseconds ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/gta/players?query=salzling&type=name" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/gta/players" params = { "query": "salzling", "type": "name" } headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/gta/players?query=salzling&type=name'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error: " . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/gta/players" params := url.Values{} params.Add("query", "salzling") params.Add("type", "name") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/gta/players') uri.query = URI.encode_www_form({ query: 'salzling', type: 'name' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) puts JSON.pretty_generate(JSON.parse(response.body)) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/gta/players?query=salzling&type=name"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) response.append(inputLine); in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync( "https://www.osintcat.net/api/gta/players?query=salzling&type=name"); if (response.IsSuccessStatusCode) Console.WriteLine(await response.Content.ReadAsStringAsync()); else Console.WriteLine($"Error: {response.StatusCode}"); } } } ``` # GTA Online Spotted Source: https://docs.osintcat.net/api-reference/endpoint/gta-spotted GET https://www.osintcat.net/api/gta/spotted Search the GTA Online sighting history database. Returns every recorded sighting of a player including times seen, first and last spotted timestamps, and platform. ## Parameters The search value: a player name (partial match) or Rockstar ID (exact match) Search mode. `name` for display name lookup, `rid` for Rockstar ID lookup ## Headers Your API key ## Response List of matched sighting records Rockstar ID Display name at time of sighting Platform (`pc`, `ps`, `xbox`) Total number of times this entry was recorded Unix timestamp of first sighting Unix timestamp of most recent sighting ISO timestamp of most recent sighting Number of results returned Server-side processing time in milliseconds ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/gta/spotted?query=salzling&type=name" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/gta/spotted" params = { "query": "salzling", "type": "name" } headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/gta/spotted?query=salzling&type=name'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error: " . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/gta/spotted" params := url.Values{} params.Add("query", "salzling") params.Add("type", "name") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/gta/spotted') uri.query = URI.encode_www_form({ query: 'salzling', type: 'name' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) puts JSON.pretty_generate(JSON.parse(response.body)) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/gta/spotted?query=salzling&type=name"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) response.append(inputLine); in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync( "https://www.osintcat.net/api/gta/spotted?query=salzling&type=name"); if (response.IsSuccessStatusCode) Console.WriteLine(await response.Content.ReadAsStringAsync()); else Console.WriteLine($"Error: {response.StatusCode}"); } } } ``` # Instagram Resolver Source: https://docs.osintcat.net/api-reference/endpoint/instagram-resolver GET https://www.osintcat.net/api/instagram-resolver Resolve an Instagram share link to expose both the **author** of the post and the **sharer** (the user who generated the share link). Pulls the `xig_logged_out_dynamic_dialog_info` payload that Instagram embeds for logged-out viewers. ## Parameters An Instagram share URL, e.g. `https://www.instagram.com/share/p/ABCDEFGHIJ` ## Headers Your API key ## Response ```json theme={null} { "success": true, "author": { "username": "...", "avatar": "..." }, "sharer": { "username": "...", "full_name": "...", "id": "...", "avatar": "..." }, "entity_id": "...", "_meta": { ... } } ``` ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/instagram-resolver?link=https%3A%2F%2Fwww.instagram.com%2Fshare%2Fp%2FABCDEFGHIJ" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/instagram-resolver" params = {"link": "https://www.instagram.com/share/p/ABCDEFGHIJ"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/instagram-resolver?link=' + encodeURIComponent('https://www.instagram.com/share/p/ABCDEFGHIJ'); fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/instagram-resolver" params := url.Values{} params.Add("link", "https://www.instagram.com/share/p/ABCDEFGHIJ") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/instagram-resolver') uri.query = URI.encode_www_form({ link: 'https://www.instagram.com/share/p/ABCDEFGHIJ' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String link = URLEncoder.encode("https://www.instagram.com/share/p/ABCDEFGHIJ", "UTF-8"); String apiUrl = "https://www.osintcat.net/api/instagram-resolver?link=" + link; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; using System.Web; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string link = HttpUtility.UrlEncode("https://www.instagram.com/share/p/ABCDEFGHIJ"); string url = $"https://www.osintcat.net/api/instagram-resolver?link={link}"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # IP Info Source: https://docs.osintcat.net/api-reference/endpoint/ip GET https://www.osintcat.net/api/ip Get IP information and IP stealer logs lookup. ## Parameters An IP address ## Headers Your API key ## Response Returns IP address information including geolocation, ISP, and stealer log data. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/ip?query=8.8.8.8" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/ip" params = {"query": "8.8.8.8"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/ip?query=8.8.8.8'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/ip" params := url.Values{} params.Add("query", "8.8.8.8") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/ip') uri.query = URI.encode_www_form({ query: '8.8.8.8' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/ip?query=8.8.8.8"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/ip?query=8.8.8.8"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Machine Viewer Source: https://docs.osintcat.net/api-reference/endpoint/machine-viewer GET https://www.osintcat.net/api/machine_viewer/stats Search and explore infected machine data, file trees, and extracted information via API key The Machine Viewer module provides access to infected machine records stored in the OsintCat breach database. Search machines by name, retrieve device details, browse file trees, and download archived logs — all via API key. All Machine Viewer API endpoints use `X-API-KEY` header authentication. Searching machines costs **1 credit** per search. *** ## Global Statistics ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/stats ``` Returns total infected machine and file counts. Your API key **Response** ```json theme={null} { "total_machines": 412000, "total_files": 18500000 } ``` ```bash cURL theme={null} curl "https://www.osintcat.net/api/machine_viewer/stats" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/machine_viewer/stats" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript Node.js theme={null} fetch('https://www.osintcat.net/api/machine_viewer/stats', { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }).then(r => r.json()).then(console.log); ``` *** ## Search Machines ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/search ``` Search for infected machines by hostname or username. Costs **1 credit** per search. The search term (hostname, username, UUID, etc.) Your API key **Response** ```json theme={null} { "query": "ZAEZBCAOHJNF", "total": 1, "machines": [ { "id": "742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5", "name": "ZAEZBCAOHJNF", "file_count": 15, "total_size": 772597, "imported_at": "2026-03-03T00:00:00" } ] } ``` ```bash cURL theme={null} curl "https://www.osintcat.net/api/machine_viewer/search?query=ZAEZBCAOHJNF" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/machine_viewer/search" params = {"query": "ZAEZBCAOHJNF"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) print(response.json()) ``` ```javascript Node.js theme={null} fetch('https://www.osintcat.net/api/machine_viewer/search?query=ZAEZBCAOHJNF', { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }).then(r => r.json()).then(console.log); ``` *** ## Get Machine Info ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/info ``` Returns full device identity, extracted email addresses, and Discord tokens. The UUID of the machine (from Search response) Your API key **Response** ```json theme={null} { "machine": { "id": "742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5", "name": "ZAEZBCAOHJNF", "file_count": 15, "total_size": 772597, "imported_at": "2026-03-03T00:00:00" }, "emails": ["user@example.com", "admin@test.org"], "tokens": ["MTA5NDI3MzI2NTQ2NDAyNTYy.XXXXX.YYYYY"] } ``` ```bash cURL theme={null} curl "https://www.osintcat.net/api/machine_viewer/machines/742e1f66-.../info" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests machine_id = "742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5" url = f"https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/info" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) print(response.json()) ``` *** ## Get File Tree ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/files/treeview ``` Returns a nested directory/file tree for a machine. The UUID of the machine **Response** ```json theme={null} { "machine": "ZAEZBCAOHJNF", "total_files": 15, "tree": [ { "name": "passwords", "type": "directory", "children": [ { "name": "chrome.txt", "type": "file", "id": "abc123", "size": 1024 } ] } ] } ``` ```bash cURL theme={null} curl "https://www.osintcat.net/api/machine_viewer/machines/742e1f66-.../files/treeview" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests machine_id = "742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5" url = f"https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/files/treeview" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) print(response.json()) ``` *** ## Get File Info & Content ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/files/{file_id}/info ``` Returns metadata and text content of a single file. The `file_id` comes from the file tree response. The UUID of the file (from File Tree response) **Response** ```json theme={null} { "id": "abc123", "filename": "chrome.txt", "path": "passwords/chrome.txt", "size": 1024, "content": "URL: https://example.com\nUsername: user@gmail.com\nPassword: ..." } ``` ```bash cURL theme={null} curl "https://www.osintcat.net/api/machine_viewer/files/abc123/info" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests file_id = "abc123" url = f"https://www.osintcat.net/api/machine_viewer/files/{file_id}/info" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) print(response.json()) ``` *** ## Download Single File ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/files/{file_id}/download ``` Downloads the raw content of a single file as `application/octet-stream`. The UUID of the file ```bash cURL theme={null} curl -O -J "https://www.osintcat.net/api/machine_viewer/files/abc123/download" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests file_id = "abc123" url = f"https://www.osintcat.net/api/machine_viewer/files/{file_id}/download" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) with open("file.txt", "wb") as f: f.write(response.content) ``` *** ## Download Machine Archive ```bash theme={null} GET https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/download ``` Downloads all files for a machine as a `.zip` archive. The UUID of the machine Returns `application/zip` named `{machine_name}_export.zip`. ```bash cURL theme={null} curl -O -J "https://www.osintcat.net/api/machine_viewer/machines/742e1f66-.../download" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests machine_id = "742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5" url = f"https://www.osintcat.net/api/machine_viewer/machines/{machine_id}/download" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) with open("machine_export.zip", "wb") as f: f.write(response.content) print(f"Downloaded {len(response.content)} bytes") ``` ```javascript Node.js theme={null} const fs = require('fs'); const https = require('https'); const machine_id = '742e1f66-f449-4a6c-80d5-8f5eb8e9c2b5'; const url = `https://www.osintcat.net/api/machine_viewer/machines/${machine_id}/download`; const file = fs.createWriteStream('machine_export.zip'); https.get(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }, res => { res.pipe(file); file.on('finish', () => file.close(() => console.log('Downloaded!'))); }); ``` # Minecraft Source: https://docs.osintcat.net/api-reference/endpoint/minecraft GET https://www.osintcat.net/api/minecraft Minecraft breach data lookup. Search for Minecraft account information including usernames, IPs, passwords, emails, and UUIDs from breach databases. ## Parameters The search query value ## Headers Your API key ## Response Returns Minecraft breach data based on the search type specified. The response structure varies depending on the type parameter used. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/minecraft?query=Notch" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/minecraft" params = {"query": "Notch"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/minecraft?query=Notch'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/minecraft" params := url.Values{} params.Add("query", "Notch") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/minecraft') uri.query = URI.encode_www_form({ query: 'Notch' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/minecraft?query=Notch"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/minecraft?query=Notch"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Minecraft OSINT Source: https://docs.osintcat.net/api-reference/endpoint/minecraft-osint GET https://www.osintcat.net/api/minecraft-lookup Minecraft OSINT lookup. Search for Minecraft account information including usernames, IPs, passwords, emails, and UUIDs from breach databases. Results are cached for improved performance. ## Parameters The search query value The type of search to perform. Available search types: `username`, `ip`, `password`, `email`, `uuid` ## Headers Your API key ## Response Returns Minecraft breach data based on the search type specified. The response structure varies depending on the type parameter used. Results are cached for 30 minutes. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/minecraft-lookup?query=Notch&type=username" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/minecraft-lookup" params = { "query": "Notch", "type": "username" } headers = { "X-API-KEY": "YOUR_API_KEY" } response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/minecraft-lookup?query=Notch&type=username'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/minecraft-lookup" params := url.Values{} params.Add("query", "Notch") params.Add("type", "username") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/minecraft-lookup') uri.query = URI.encode_www_form({ query: 'Notch', type: 'username' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/minecraft-lookup?query=Notch&type=username"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/minecraft-lookup?query=Notch&type=username"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Phone OSINT Source: https://docs.osintcat.net/api-reference/endpoint/phone-osint GET https://www.osintcat.net/api/phone-osint Gather intelligence on a phone number, including carrier and associated online profiles. ## Parameters Phone number in international format (e.g., 14155552671) ## Headers Your API key ## Response Returns phone number information including carrier details, location data, and associated online profiles. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/phone-osint?query=14155552671" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/phone-osint" params = {"query": "14155552671"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/phone-osint?query=14155552671'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/phone-osint" params := url.Values{} params.Add("query", "14155552671") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/phone-osint') uri.query = URI.encode_www_form({ query: '14155552671' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/phone-osint?query=14155552671"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/phone-osint?query=14155552671"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Roblox to Discord Source: https://docs.osintcat.net/api-reference/endpoint/roblox GET https://www.osintcat.net/api/roblox Find Discord accounts linked to a Roblox username. Searches our database of scraped Roblox-to-Discord mappings and returns matching profiles with Discord ID, username, and avatar where available. ## Parameters Roblox username. Wildcard `*` is supported: * `demon*` — usernames starting with `demon` * `*boy` — usernames ending with `boy` * `*123*` — usernames containing `123` Plain queries (no `*`) match the username exactly (case-insensitive). Up to 50 results are returned. ## Headers Your API key ## Response Returns a list of matches from the database. Each result contains the Roblox username and, if a linked Discord account is on file, the Discord ID plus username and avatar URL fetched live from Discord. ```json theme={null} { "query": "demon*", "count": 2, "results": [ { "roblox_name": "demonboy", "discord_id": "123456789012345678", "discord_username": "demon", "discord_avatar": "https://cdn.discordapp.com/avatars/123456789012345678/abc123.png?size=128" }, { "roblox_name": "demon123", "discord_id": null } ] } ``` If no matches are found, the API returns: ```json theme={null} { "error": "No matches found in database." } ``` ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/roblox?query=demon*" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/roblox" params = {"query": "demon*"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/roblox?query=demon*'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/roblox" params := url.Values{} params.Add("query", "demon*") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/roblox') uri.query = URI.encode_www_form({ query: 'demon*' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; public class OsintCatAPI { public static void main(String[] args) { try { String query = URLEncoder.encode("demon*", StandardCharsets.UTF_8); String apiUrl = "https://www.osintcat.net/api/roblox?query=" + query; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; using System.Web; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string query = HttpUtility.UrlEncode("demon*"); string url = $"https://www.osintcat.net/api/roblox?query={query}"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # Stealer Logs (Legacy) Source: https://docs.osintcat.net/api-reference/endpoint/stealer-logs GET https://www.osintcat.net/api/database-search Search stealer log collections and breach compilations by email or domain. This is a legacy endpoint. Use the [Breach Lookup](/api-reference/endpoint/breach) endpoint for newer indexed data. ## Parameters The search term (email address or domain name) The search type. Accepted values: email, domain. If not provided, the type is auto-detected based on the query format (presence of @ = email, otherwise domain). ## Headers Your API key ## Response Returns matching records found across the stealer log database collection. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/database-search?query=example@email.com&type=email" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/database-search" params = {"query": "example@email.com", "type": "email"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} fetch('https://www.osintcat.net/api/database-search?query=example@email.com&type=email', { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} , CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"], ]); = curl_exec(); = curl_error(); curl_close(); if () { echo "cURL Error #:" . ; } else { echo ; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/database-search" params := url.Values{} params.Add("query", "example@email.com") params.Add("type", "email") req, _ := http.NewRequest("GET", baseURL+"?"+params.Encode(), nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` # TikTok Resolver Source: https://docs.osintcat.net/api-reference/endpoint/tiktok-resolver GET https://www.osintcat.net/api/tiktok-resolver Resolve a TikTok short link (vm.tiktok.com / vt.tiktok.com) to the user who shared it — including username, nickname, region, follower count, total likes, bio and the share timestamp. ## Parameters A TikTok short link, e.g. `https://vm.tiktok.com/ZGdHhUjhW/` ## Headers Your API key ## Response Returns the sharer profile pulled from the redirect target, with `success`, `sharer.{username, nickname, region, follower_count, heart_count, user_id, timestamp, bio, avatar}` and `_meta` usage info. ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/tiktok-resolver?link=https%3A%2F%2Fvm.tiktok.com%2FZGdHhUjhW%2F" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/tiktok-resolver" params = {"link": "https://vm.tiktok.com/ZGdHhUjhW/"} headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/tiktok-resolver?link=' + encodeURIComponent('https://vm.tiktok.com/ZGdHhUjhW/'); fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" ) func main() { baseURL := "https://www.osintcat.net/api/tiktok-resolver" params := url.Values{} params.Add("link", "https://vm.tiktok.com/ZGdHhUjhW/") fullURL := baseURL + "?" + params.Encode() req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/tiktok-resolver') uri.query = URI.encode_www_form({ link: 'https://vm.tiktok.com/ZGdHhUjhW/' }) request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String link = URLEncoder.encode("https://vm.tiktok.com/ZGdHhUjhW/", "UTF-8"); String apiUrl = "https://www.osintcat.net/api/tiktok-resolver?link=" + link; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; using System.Web; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string link = HttpUtility.UrlEncode("https://vm.tiktok.com/ZGdHhUjhW/"); string url = $"https://www.osintcat.net/api/tiktok-resolver?link={link}"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` # User Info Source: https://docs.osintcat.net/api-reference/endpoint/user GET https://www.osintcat.net/api/user Retrieve information and usage statistics about your own account, including email OSINT credit information. ## Headers Your API key ## Response Returns account information including username, email, plan, usage statistics, and email OSINT credit information. Account information object Your username Your email address Your current plan (Free, Starter, Researcher, Investigator, or Enterprise) Usage statistics object Daily request limit Remaining requests today Whether API access is enabled Whether IntelX access is enabled Maximum number of IP addresses allowed Email OSINT credit information Current credit balance in EUR (2 decimal places) Cost per search based on your plan in EUR (2 decimal places) Whether you have enough credits for at least one search Estimated number of searches available with current balance (integer) ## Example Request ```bash cURL theme={null} curl "https://www.osintcat.net/api/user" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/user" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/user'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "X-API-KEY: YOUR_API_KEY" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" ) func main() { fullURL := "https://www.osintcat.net/api/user" req, _ := http.NewRequest("GET", fullURL, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Printf("Error: %v\n", err) return } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var result map[string]interface{} json.Unmarshal(body, &result) fmt.Printf("%+v\n", result) } ``` ```ruby Ruby theme={null} require 'net/http' require 'json' require 'uri' uri = URI('https://www.osintcat.net/api/user') request = Net::HTTP::Get.new(uri) request['X-API-KEY'] = 'YOUR_API_KEY' response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(request) end if response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) puts JSON.pretty_generate(data) else puts "Error: #{response.code}" end ``` ```java Java theme={null} import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; public class OsintCatAPI { public static void main(String[] args) { try { String apiUrl = "https://www.osintcat.net/api/user"; URL url = new URL(apiUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setRequestProperty("X-API-KEY", "YOUR_API_KEY"); int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); System.out.println(response.toString()); } else { System.out.println("Error: " + responseCode); } } catch (Exception e) { e.printStackTrace(); } } } ``` ```csharp C# theme={null} using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { using (var client = new HttpClient()) { try { string url = "https://www.osintcat.net/api/user"; client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY"); var response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); } else { Console.WriteLine($"Error: {response.StatusCode}"); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } } ``` ## Example Response ```json theme={null} { "account_info": { "username": "user123", "email": "user@example.com", "plan": "Starter" }, "usage": { "request_limit_daily": 100, "requests_remaining_today": 85, "api_access": true, "intelx_access": false, "max_ips": 3 }, "email_osint_credits": { "current_balance": 10.50, "price_per_search": 0.40, "has_sufficient_credits": true, "searches_available": 26 } } ``` # Username Footprint Source: https://docs.osintcat.net/api-reference/endpoint/user-footprint GET https://www.osintcat.net/api/footprint/create-task Discover platform registrations for a username across 100+ services The Username Footprint API checks whether a given username is registered across social media, gaming, and community platforms. It returns a summary and a per-platform breakdown including secondary metadata like profile IDs or account status where available. The lookup backend is load-balanced, so footprint scans run as **asynchronous tasks**: 1. **Create a task** with `GET /api/footprint/create-task` (this is where one lookup is charged). You receive a `task_id`. 2. **Poll the task** with `GET /api/footprint/get-task?id=` until `status` is no longer a running state. Polling is free. Username and email footprints share the same task endpoints — only the `type` parameter differs (`username` vs `email`). *** ## Step 1 — Create Task ```bash theme={null} GET https://www.osintcat.net/api/footprint/create-task ``` The username to scan (e.g., `johndoe`) The footprint type. Use `username` for this endpoint. Your API key Creating a task consumes exactly **one lookup** from your daily quota. Polling `get-task` does not. **Response Body** The identifier used to poll for results. The initial task status (e.g., `running`, `queued`, `pending`). Your current plan. Remaining lookups for the day (`unlimited` on the Max plan). ```json theme={null} { "task_id": "f3c8a1e2-9b44-4d51-bd0a-1c2e3f4a5b6c", "status": "running", "_meta": { "plan": "researcher", "lookups_left": 4821 } } ``` *** ## Step 2 — Poll Task ```bash theme={null} GET https://www.osintcat.net/api/footprint/get-task ``` The `task_id` returned by `create-task`. Your API key Poll roughly once per second until `status` is no longer one of the running states (`running`, `queued`, `pending`, `processing`, `started`). A scan typically completes within a few seconds and is capped at \~3 minutes. **Response Body** Current task status. While running it is one of `running`, `queued`, `pending`, `processing`, `started`. Any other value (e.g., `done`, `finished`) means the scan is complete. Live progress / summary counters (populated as the scan runs). Number of platforms checked so far. Total number of platforms in the scan. Number of platforms where the username was found. Elapsed scan time. List of platform results (grows as the scan progresses). Platform domain (e.g., `github.com`) True if the username is registered on this platform Metadata retrieved from the platform (profile IDs, avatar URLs, follower counts, etc.) *** ## Example ```bash cURL theme={null} # 1. Create the task curl "https://www.osintcat.net/api/footprint/create-task?query=johndoe&type=username" \ -H "X-API-KEY: YOUR_API_KEY" # 2. Poll until done (replace TASK_ID with the returned task_id) curl "https://www.osintcat.net/api/footprint/get-task?id=TASK_ID" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import time import requests BASE = "https://www.osintcat.net" HEADERS = {"X-API-KEY": "YOUR_API_KEY"} RUNNING = {"running", "queued", "pending", "processing", "started"} # 1. Create the task (charges one lookup) task = requests.get( f"{BASE}/api/footprint/create-task", params={"query": "johndoe", "type": "username"}, headers=HEADERS, ).json() task_id = task["task_id"] # 2. Poll until the scan finishes while True: data = requests.get( f"{BASE}/api/footprint/get-task", params={"id": task_id}, headers=HEADERS, ).json() if str(data.get("status", "")).lower() not in RUNNING: break time.sleep(1) print(data) ``` ```javascript Node.js theme={null} const BASE = 'https://www.osintcat.net'; const HEADERS = { 'X-API-KEY': 'YOUR_API_KEY' }; const RUNNING = ['running', 'queued', 'pending', 'processing', 'started']; const sleep = ms => new Promise(r => setTimeout(r, ms)); (async () => { // 1. Create the task (charges one lookup) const task = await fetch( `${BASE}/api/footprint/create-task?query=johndoe&type=username`, { headers: HEADERS } ).then(r => r.json()); // 2. Poll until the scan finishes let data; do { data = await fetch( `${BASE}/api/footprint/get-task?id=${encodeURIComponent(task.task_id)}`, { headers: HEADERS } ).then(r => r.json()); if (!RUNNING.includes(String(data.status).toLowerCase())) break; await sleep(1000); } while (true); console.log(data); })(); ``` ```php PHP theme={null} $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers, ]); $response = curl_exec($curl); curl_close($curl); return json_decode($response, true); } // 1. Create the task (charges one lookup) $task = get_json("$base/api/footprint/create-task?query=johndoe&type=username", $headers); $taskId = $task["task_id"]; // 2. Poll until the scan finishes do { $data = get_json("$base/api/footprint/get-task?id=" . urlencode($taskId), $headers); if (!in_array(strtolower($data["status"]), $running)) break; sleep(1); } while (true); print_r($data); ``` ```go Go theme={null} package main import ( "encoding/json" "fmt" "io" "net/http" "net/url" "strings" "time" ) func getJSON(u string) map[string]interface{} { req, _ := http.NewRequest("GET", u, nil) req.Header.Set("X-API-KEY", "YOUR_API_KEY") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) var out map[string]interface{} json.Unmarshal(body, &out) return out } func main() { base := "https://www.osintcat.net" running := map[string]bool{"running": true, "queued": true, "pending": true, "processing": true, "started": true} // 1. Create the task (charges one lookup) params := url.Values{} params.Add("query", "johndoe") params.Add("type", "username") task := getJSON(base + "/api/footprint/create-task?" + params.Encode()) taskID, _ := task["task_id"].(string) // 2. Poll until the scan finishes var data map[string]interface{} for { data = getJSON(base + "/api/footprint/get-task?id=" + url.QueryEscape(taskID)) status, _ := data["status"].(string) if !running[strings.ToLower(status)] { break } time.Sleep(time.Second) } fmt.Printf("%+v\n", data) } ``` **Example Result (completed task)** ```json theme={null} { "status": "done", "stats": { "checked": 112, "total_modules": 112, "found": 34, "elapsed": "5.1s" }, "results": [ { "domain": "github.com", "taken": true, "ExtraData": { "ProfileURL": "https://github.com/johndoe", "PublicRepos": 17 } }, { "domain": "reddit.com", "taken": false, "ExtraData": {} } ] } ``` # VIN Lookup Source: https://docs.osintcat.net/api-reference/endpoint/vin GET https://www.osintcat.net/api/vin Decode Vehicle Identification Numbers (VINs) and query vehicle data from the NHTSA vPIC API. Supports single/batch VIN decode, WMI decode, makes & models, manufacturers, vehicle variables, and Canadian vehicle specifications. ## Headers Your API key ## Parameters All requests require a `type` parameter. Other parameters depend on the operation. Use the fields below in the Try it panel; the tables describe which apply to each `type`. Operation type VIN (decode/batch), WMI code (wmi), or search term (makes, manufacturers, variables). Not used for canadian. Model year 1981+. For type=decode only. Recommended for partial VINs. If true, include extended NHTSA variables. For type=decode only. Sub-operation. Required for type=makes, manufacturers, variables. Model year. For type=makes (manufacturer, models) and type=canadian (required). e.g. Passenger Car, Truck. For type=makes (models) and type=manufacturers (wmis). Manufacturer type filter. For type=manufacturers, search\_type=all. Start date. Required for type=manufacturers, search\_type=parts. End date. Required for type=manufacturers, search\_type=parts. Parts doc type. For type=manufacturers, search\_type=parts. Default: 565. Page number. For type=manufacturers. Default: 1. Make. Required for type=canadian. Model name. For type=canadian. Units for type=canadian. Metric or Imperial (Imperial is sent as US to the API). Default: Metric. *** ### type: `decode` Decode a 17-digit VIN or partial VIN (use `*` for missing characters). | Parameter | Type | Required | Description | | ----------- | ------ | -------- | ------------------------------------------------------ | | query | string | Yes | VIN (6–17 chars) or partial VIN | | model\_year | int | No | Model year (1981+). Recommended for pre-1980. | | extended | bool | No | `true` for extended NHTSA variables. Default: `false`. | *** ### type: `batch` Decode up to 50 VINs at once. One per line; optional format: `VIN, model_year`. | Parameter | Type | Required | Description | | --------- | ------ | -------- | --------------------------- | | query | string | Yes | VINs, one per line. Max 50. | *** ### type: `wmi` Decode a World Manufacturer Identifier (3 or 6 characters). | Parameter | Type | Required | Description | | --------- | ------ | -------- | ---------------------------- | | query | string | Yes | WMI code (e.g. `1FT`, `JHM`) | *** ### type: `makes` Search makes, models, and vehicle types. | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------------- | | search\_type | string | Yes | `all`, `manufacturer`, `vehicletype`, `models`, `vehicletypes` | | query | string | No\* | Manufacturer/make/vehicle type (see search\_type). \*Required except for `all`. | | year | int | No | Model year (for `manufacturer`, `models`) | | vehicle\_type | string | No | e.g. `Passenger Car`, `Truck` (for `models`) | *** ### type: `manufacturers` Search manufacturers, WMIs, and parts documentation. | Parameter | Type | Required | Description | | ------------- | ------ | -------- | ---------------------------------------------------------- | | search\_type | string | Yes | `all`, `details`, `wmis`, `parts` | | query | string | No\* | Manufacturer name or ID. \*Required for `details`, `wmis`. | | mfr\_type | string | No | e.g. `Completed Vehicle Manufacturer` (for `all`) | | from\_date | string | No\* | `YYYY-MM-DD`. \*Required for `parts`. | | to\_date | string | No\* | `YYYY-MM-DD`. \*Required for `parts`. | | parts\_type | string | No | `565` or `566`. Default: `565`. (for `parts`) | | vehicle\_type | string | No | (for `wmis`) | | page | int | No | Page number. Default: 1. | *** ### type: `variables` Get the list of vehicle variables or values for a specific variable. | Parameter | Type | Required | Description | | ------------ | ------ | -------- | --------------------------------------------------------------------- | | search\_type | string | Yes | `list` (all variables) or `values` (values for one variable) | | query | string | No\* | Variable name (e.g. `Vehicle Type`, `Make`). \*Required for `values`. | *** ### type: `canadian` Get Canadian Vehicle Specifications (1971+). Uses `year` and `make`; `query` is not used. | Parameter | Type | Required | Description | | --------- | ------ | -------- | -------------------------------------------------------------------------------- | | year | int | Yes | Model year (1971+) | | make | string | Yes | Make (e.g. `Honda`, `Toyota`) | | model | string | No | Model name | | units | string | No | `Metric` or `Imperial` (Imperial is sent as `US` to the API). Default: `Metric`. | *** ## Response Returns JSON. Structure depends on `type` (object for decode/wmi, array for makes/manufacturers/variables/list, etc.). ## Example: Decode VIN ```bash cURL theme={null} curl "https://www.osintcat.net/api/vin?type=decode&query=1HGBH41JXMN109186&model_year=2021" \ -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/vin" params = { "type": "decode", "query": "1HGBH41JXMN109186", "model_year": "2021" } headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) if response.ok: print(response.json()) else: print(f"Error: {response.status_code} - {response.text}") ``` ```javascript Node.js theme={null} const params = new URLSearchParams({ type: 'decode', query: '1HGBH41JXMN109186', model_year: '2021' }); fetch(`https://www.osintcat.net/api/vin?${params}`, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(json => console.log(json)) .catch(err => console.error('error:', err)); ``` ## Example: WMI Decode ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=wmi&query=1FT" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Get All Makes ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=makes&search_type=all&query=" \ -H "X-API-KEY: YOUR_API_KEY" ``` Or with a dummy query (some clients omit empty query): ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=makes&search_type=all" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Models by Make ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=makes&search_type=models&query=Tesla&year=2023" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Variable List ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=variables&search_type=list" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Variable Values ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=variables&search_type=values&query=Vehicle%20Type" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Canadian Vehicle Specifications ```bash theme={null} curl "https://www.osintcat.net/api/vin?type=canadian&year=2022&make=Honda&model=Civic&units=Metric" \ -H "X-API-KEY: YOUR_API_KEY" ``` ## Example: Batch Decode ```bash theme={null} # Send VINs as newline-separated in query (URL-encode newlines as %0A) curl "https://www.osintcat.net/api/vin?type=batch&query=1HGBH41JXMN109186%0A5YJ3E1EA1KF123456" \ -H "X-API-KEY: YOUR_API_KEY" ``` For batch, `query` can also be sent in the request body as form data or in a POST with a JSON body if your client supports it; the backend reads `query` from `request.args`. ## Error Responses | Code | Description | | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 400 | Bad request: missing/invalid `query` (when required), invalid `type` or `search_type`, or validation error (e.g. `from_date`/`to_date` required for `parts`). | | 403 | Invalid or missing `X-API-KEY`. | | 429 | Rate limit exceeded. | | 500 | vPIC or internal error. | Errors return JSON, e.g. `{"error": "query parameter is required"}`. # API Introduction Source: https://docs.osintcat.net/api-reference/introduction OsintCat API documentation - Comprehensive OSINT and data lookup services ## Welcome to OsintCat API OsintCat provides a powerful REST API for OSINT (Open Source Intelligence) lookups, breach data searches, and public record queries. Our API enables developers to integrate comprehensive data lookup capabilities into their applications. ## Base URL All API requests should be made to: ``` https://www.osintcat.net/api ``` ## Authentication All API endpoints require authentication using an API key. Include your API key in the header as "X-API-KEY" Keep your API key secure and never expose it in client-side code or public repositories. ### Example Request ```bash theme={null} curl "https://www.osintcat.net/api/user" -H "X-API-KEY: YOUR_API_KEY" ``` ## Rate Limits Our API has a soft rate limit of **3 requests per second**. If you exceed this limit, you will receive a 30-minute timeout. **Rate Limit Warning**: Exceeding 3 requests per second will result in a 30-minute timeout. Please implement proper rate limiting in your application. ## Response Format All API responses are returned in JSON format with proper HTTP status codes: * `200` - Success * `400` - Bad Request (missing or invalid parameters) * `401` - Unauthorized (missing API key) * `403` - Forbidden (invalid API key) * `429` - Too Many Requests (rate limit exceeded) * `500` - Internal Server Error ## API Plans Different API plans have different request limits: ### Free Plan * **API Requests**: 0 requests/day * **Dashboard Requests**: 10 requests/day ### Premium Plan * **API Requests**: 50 requests/day * **Dashboard Requests**: Unlimited ### Enterprise Plan * **API Requests**: Unlimited * **Dashboard Requests**: Unlimited Daily limits reset at midnight UTC. You can check your current usage and limits using the `/api/user` endpoint. ## Available Endpoints Our API provides the following endpoints: ### Account Management * **[User Info](/api-reference/endpoint/user)** - Get account information, usage statistics, and email OSINT credit information ### OSINT Lookups * **[Breach Lookup](/api-reference/endpoint/breach)** - Search for records in data breaches * **[Discord Lookup](/api-reference/endpoint/discord)** - Find Discord user information * **[Roblox to Discord](/api-reference/endpoint/roblox)** - Find Discord accounts linked to a Roblox username (wildcard supported) * **[Discord to Roblox](/api-reference/endpoint/discord-to-roblox)** - Find linked Roblox accounts * **[Email OSINT](/api-reference/endpoint/email-osint)** - Discover websites an email is registered on * **[Phone OSINT](/api-reference/endpoint/phone-osint)** - Gather intelligence on phone numbers * **[GitHub OSINT](/api-reference/endpoint/github-osint)** - Find GitHub accounts by email * **[GitHub User Info](/api-reference/endpoint/github-userinfo)** - Get GitHub user information and email from commits * **[Username Lookup](/api-reference/endpoint/username)** - Find stealer logs and site information * **[Minecraft Lookup](/api-reference/endpoint/minecraft)** - Minecraft breach data lookup * **[Minecraft OSINT](/api-reference/endpoint/minecraft-osint)** - Minecraft OSINT lookup with caching ### Network & Domain * **[IP Info](/api-reference/endpoint/ip)** - Get IP information and stealer logs * **[DNS Resolver](/api-reference/endpoint/dns-resolver)** - Resolve domain names to IP addresses * **[Domain Lookup](/api-reference/endpoint/domain)** - Domain stealer lookup ### Public Records * **[Chilean Name](/api-reference/endpoint/chilean-name)** - Find information about Chilean persons ## Getting Started 1. **[Sign up](https://www.osintcat.net/register)** for an account 2. **[Get your API key](https://www.osintcat.net/dashboard)** from the dashboard 3. Start making requests to our endpoints 4. Check your usage with the `/api/user` endpoint ## Code Examples We provide code examples in multiple languages for each endpoint. You can find examples in: * cURL * Python * Node.js * PHP ## Support If you need help or have questions: * Check the endpoint-specific documentation * Review the [Quickstart Guide](/quickstart) * Contact support through your dashboard # OsintCat API Documentation Source: https://docs.osintcat.net/index Comprehensive API documentation for OsintCat - OSINT and data lookup services ## Welcome to OsintCat API OsintCat provides a powerful REST API for OSINT (Open Source Intelligence) lookups, breach data searches, and public record queries. Integrate comprehensive data lookup capabilities into your applications. Follow our quickstart guide to get your API key and make your first request. ## Quick Links Browse all available API endpoints and their documentation. Sign up for an account and get your API key to start making requests. View your API usage, manage your account, and monitor your requests. View our pricing plans and choose the one that fits your needs. ## Features ### Comprehensive OSINT Lookups * **Breach Data**: Search across multiple breach databases * **Social Media**: Lookup Discord, Roblox, and more * **Email & Phone**: Discover where emails and phone numbers are registered * **Username Search**: Find information across multiple platforms * **Network Intelligence**: IP and domain lookups with stealer logs ### Developer Friendly * **RESTful API**: Simple HTTP requests with JSON responses * **Multiple Languages**: Code examples in cURL, Python, Node.js, and PHP * **Rate Limiting**: Clear rate limits with automatic timeout protection * **Comprehensive Docs**: Detailed documentation for every endpoint ### Reliable & Secure * **API Key Authentication**: Secure access with API keys * **Error Handling**: Clear error messages and HTTP status codes * **Usage Tracking**: Monitor your API usage in real-time * **Plan Flexibility**: Choose from Free, Premium, or Enterprise plans ## Popular Endpoints Get account information and usage statistics Search for records in data breaches Find Discord user information Get IP information and stealer logs Find information across multiple platforms ## Need Help? Browse our complete API documentation with examples and detailed parameter descriptions. # Quickstart Source: https://docs.osintcat.net/quickstart Get started with OsintCat API in minutes ## Get Started in Three Steps Get your API key and make your first request to the OsintCat API. ### Step 1: Create an Account 1. Visit [https://www.osintcat.net/register](https://www.osintcat.net/register) 2. Fill in your details and create your account 3. Verify your email address if required 1. Log in to your [dashboard](https://www.osintcat.net/dashboard) 2. Navigate to your account settings 3. Copy your API key Keep your API key secure and never expose it in client-side code or public repositories. ### Step 2: Make Your First Request Test the API by checking your account information: ```bash cURL theme={null} curl "https://www.osintcat.net/api/user" -H "X-API-KEY: YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/user" headers = {"X-API-KEY": "YOUR_API_KEY"} response = requests.get(url, headers=headers) if response.ok: data = response.json() print(f"Plan: {data['account_info']['plan']}") print(f"API Requests Remaining: {data['usage']['api']['requests_remaining_today']}") else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/user'; fetch(url, { headers: { 'X-API-KEY': 'YOUR_API_KEY' } }) .then(res => res.json()) .then(data => { console.log(`Plan: ${data.account_info.plan}`); console.log(`API Requests Remaining: ${data.usage.api.requests_remaining_today}`); }) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} ### Step 3: Try a Lookup Endpoint Now try a breach lookup: ```bash cURL theme={null} curl "https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY" ``` ```python Python theme={null} import requests url = "https://www.osintcat.net/api/breach" params = { "query": "test@example.com", "id": "YOUR_API_KEY" } response = requests.get(url, params=params) if response.ok: data = response.json() print(f"Found {data['results_count']} breach records") print(data) else: print(f"Error: {response.status_code}") ``` ```javascript Node.js theme={null} const url = 'https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY'; fetch(url) .then(res => res.json()) .then(data => { console.log(`Found ${data.results_count} breach records`); console.log(data); }) .catch(err => console.error('error:' + err)); ``` ```php PHP theme={null} ## Understanding Rate Limits **Important**: Our API has a soft rate limit of **3 requests per second**. Exceeding this limit will result in a 30-minute timeout. * Implement proper rate limiting in your application * Use exponential backoff for retries * Monitor your usage with the `/api/user` endpoint ## API Plans ### Free Plan * API Requests: 0 requests/day * Dashboard Requests: 10 requests/day ### Premium Plan * API Requests: 50 requests/day * Dashboard Requests: Unlimited ### Enterprise Plan * API Requests: Unlimited * Dashboard Requests: Unlimited Daily limits reset at midnight UTC. Check your usage anytime with the `/api/user` endpoint. ## Next Steps Explore all available endpoints and their parameters. See code examples for each endpoint in multiple languages. Learn how to monitor your API usage and limits. Access support through your dashboard. ## Common Use Cases ### Security Research Use breach lookups and email OSINT to investigate security incidents and data leaks. ### Account Verification Verify user information across multiple platforms using username and email lookups. ### Network Analysis Analyze IP addresses and domains to understand network infrastructure and potential threats. ### Social Media Intelligence Gather information from Discord and other platforms for legitimate research purposes. Always ensure you have proper authorization and comply with applicable laws when using OSINT tools.