Documentation Index
Fetch the complete documentation index at: https://docs.oathnet.org/llms.txt
Use this file to discover all available pages before exploring further.
Overview
OathNet provides instant OSINT lookups for 10+ platforms. Get user profiles, account history, and cross-platform links with a single API call.
Available Services
IP Info
Geolocation, ISP, and network details for any IP address
Steam
Steam profile lookup by Steam64 ID or custom URL
Xbox
Xbox Live profile by gamertag or XUID
Discord
User info, username history, and Roblox linking
Roblox
Roblox user profile and username history
Minecraft
Minecraft username history
Holehe
Check which services have accounts for an email
GHunt
Google account information from Gmail address
Subdomains
Extract subdomains for a domain
Common Parameters
All OSINT endpoints accept:
| Parameter | Type | Description |
|---|
search_id | string | Search session ID for grouped lookups |
All OSINT endpoints return:
{
"success": true,
"message": "Description of result",
"data": { ... },
"lookups_left": 999,
"search_session": {
"id": "sess_abc123"
}
}
Rate Limits
OSINT endpoints have per-service rate limits:
| Service | Requests/Minute | Daily Limit |
|---|
| IP Info | 60 | Unlimited |
| Steam | 30 | 1,000 |
| Xbox | 30 | 1,000 |
| Discord | 30 | 1,000 |
| Roblox | 30 | 1,000 |
| Holehe | 10 | 500 |
| GHunt | 10 | 500 |
Combine multiple lookups for comprehensive profiles:
import requests
API_KEY = "YOUR_API_KEY"
HEADERS = {"x-api-key": API_KEY}
def investigate_discord_user(discord_id):
"""Build a comprehensive profile from a Discord ID."""
# Get Discord info
discord = requests.get(
"https://oathnet.org/api/service/discord-userinfo",
params={"discord_id": discord_id},
headers=HEADERS
).json()
print(f"Discord: {discord['data']['username']}")
print(f"Created: {discord['data']['creation_date']}")
# Get username history
history = requests.get(
"https://oathnet.org/api/service/discord-username-history",
params={"discord_id": discord_id},
headers=HEADERS
).json()
print(f"Previous names: {[h['name'] for h in history['history']]}")
# Check for linked Roblox
roblox_link = requests.get(
"https://oathnet.org/api/service/discord-to-roblox",
params={"discord_id": discord_id},
headers=HEADERS
).json()
if roblox_link["success"] and roblox_link["data"].get("roblox_id"):
roblox_id = roblox_link["data"]["roblox_id"]
# Get Roblox profile
roblox = requests.get(
"https://oathnet.org/api/service/roblox-userinfo",
params={"user_id": roblox_id},
headers=HEADERS
).json()
print(f"Linked Roblox: {roblox['data']['username']}")
print(f"Roblox ID: {roblox_id}")
return {
"discord": discord["data"],
"history": history["history"],
"roblox": roblox["data"] if roblox_link["success"] else None
}
# Run investigation
profile = investigate_discord_user("123456789012345678")
Error Handling
OSINT endpoints may return errors for:
- Invalid IDs: Malformed platform identifiers
- Not Found: Account doesn’t exist
- Rate Limited: Too many requests
- Unavailable: External service temporarily down
response = requests.get(
"https://oathnet.org/api/service/discord-userinfo",
params={"discord_id": "invalid"},
headers=HEADERS
).json()
if not response["success"]:
print(f"Error: {response['message']}")
Search Sessions
Group OSINT lookups with search sessions for better tracking