Get Started in Three Steps
Get your API key and make your first request to the OsintCat API.Step 1: Create an Account
Sign up for an account
Sign up for an account
- Visit https://www.osintcat.net/register
- Fill in your details and create your account
- Verify your email address if required
Get your API key
Get your API key
- Log in to your dashboard
- Navigate to your account settings
- 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:curl "https://www.osintcat.net/api/user" -H "X-API-KEY: YOUR_API_KEY"
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}")
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
$curl = curl_init();
$url = "https://www.osintcat.net/api/user";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'X-API-KEY: YOUR_API_KEY'
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$data = json_decode($response, true);
echo "Plan: " . $data['account_info']['plan'] . "\n";
echo "API Requests Remaining: " . $data['usage']['api']['requests_remaining_today'] . "\n";
}
package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
url := "https://www.osintcat.net/api/user"
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Printf("Error creating request: %v\n", err)
return
}
req.Header.Add("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, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading response: %v\n", err)
return
}
var result map[string]interface{}
json.Unmarshal(body, &result)
accountInfo := result["account_info"].(map[string]interface{})
usage := result["usage"].(map[string]interface{})
apiUsage := usage["api"].(map[string]interface{})
fmt.Printf("Plan: %v\n", accountInfo["plan"])
fmt.Printf("API Requests Remaining: %v\n", apiUsage["requests_remaining_today"])
}
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 "Plan: #{data['account_info']['plan']}"
puts "API Requests Remaining: #{data['usage']['api']['requests_remaining_today']}"
else
puts "Error: #{response.code}"
end
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.json.JSONObject;
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;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
JSONObject json = new JSONObject(response.toString());
JSONObject accountInfo = json.getJSONObject("account_info");
JSONObject usage = json.getJSONObject("usage");
JSONObject apiUsage = usage.getJSONObject("api");
System.out.println("Plan: " + accountInfo.getString("plan"));
System.out.println("API Requests Remaining: " + apiUsage.get("requests_remaining_today"));
} else {
System.out.println("Error: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text.Json;
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();
var json = JsonDocument.Parse(content);
var root = json.RootElement;
Console.WriteLine($"Plan: {root.GetProperty("account_info").GetProperty("plan").GetString()}");
Console.WriteLine($"API Requests Remaining: {root.GetProperty("usage").GetProperty("api").GetProperty("requests_remaining_today")}");
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
Step 3: Try a Lookup Endpoint
Now try a breach lookup:curl "https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY"
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}")
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
$curl = curl_init();
$url = "https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
$data = json_decode($response, true);
echo "Found " . $data['results_count'] . " breach records\n";
echo $response;
}
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", "test@example.com")
params.Add("id", "YOUR_API_KEY")
fullURL := baseURL + "?" + params.Encode()
resp, err := http.Get(fullURL)
if err != nil {
fmt.Printf("Error: %v\n", err)
return
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Printf("Error reading response: %v\n", err)
return
}
var result map[string]interface{}
json.Unmarshal(body, &result)
resultsCount := result["results_count"]
fmt.Printf("Found %v breach records\n", resultsCount)
fmt.Printf("%+v\n", result)
}
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://www.osintcat.net/api/breach')
params = { query: 'test@example.com', id: 'YOUR_API_KEY' }
uri.query = URI.encode_www_form(params)
response = Net::HTTP.get_response(uri)
if response.is_a?(Net::HTTPSuccess)
data = JSON.parse(response.body)
puts "Found #{data['results_count']} breach records"
puts JSON.pretty_generate(data)
else
puts "Error: #{response.code}"
end
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.json.JSONObject;
public class OsintCatAPI {
public static void main(String[] args) {
try {
String apiUrl = "https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY";
URL url = new URL(apiUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream())
);
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
JSONObject json = new JSONObject(response.toString());
System.out.println("Found " + json.getInt("results_count") + " breach records");
System.out.println(json.toString(2));
} else {
System.out.println("Error: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Text.Json;
class Program
{
static async Task Main(string[] args)
{
using (var client = new HttpClient())
{
try
{
string url = "https://www.osintcat.net/api/breach?query=test@example.com&id=YOUR_API_KEY";
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
var json = JsonDocument.Parse(content);
var root = json.RootElement;
Console.WriteLine($"Found {root.GetProperty("results_count").GetInt32()} breach records");
Console.WriteLine(content);
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
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/userendpoint
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
Browse API Reference
Explore all available endpoints and their parameters.
View Examples
See code examples for each endpoint in multiple languages.
Check Usage
Learn how to monitor your API usage and limits.
Get Support
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.
