Domain Collection
The Domain Collection API provides company and organization information derived from domain analysis. This API allows you to query domain information and discover related company data.
Domain Lookup
Query domain collection database for information related to a specific domain.
HTTP Request
GET https://fullhunt.io/api/v1/nexus/domain-collection/lookup
Query Parameters
Parameter | Required | Type | Description |
---|---|---|---|
domain | Yes | string | The domain name to lookup |
Example Request
curl "https://fullhunt.io/api/v1/nexus/domain-collection/lookup?domain=kaspersky.com" \
-H "X-API-KEY: xxxx-xxxx-xxxx-xxxxxx"
Example Response
{
"count": 1,
"data": {
"company_name": "Kaspersky",
"copyright": "",
"crunchbase_urls": [],
"description": "A Global Leader in Next Generation Cybersecurity Solutions and Services, Kaspersky Offers Premium Protection Against All Cyber Threats for Your Home and Business.",
"domain": "kaspersky.com",
"facebook_urls": ["https://www.facebook.com/Kaspersky"],
"favicon_url": "https://kaspersky.com/favicon.ico",
"github_urls": [],
"images_list": [],
"instagram_urls": ["https://instagram.com/kasperskylab"],
"linkedin_urls": ["https://linkedin.com/company/kaspersky/"],
"meta_logo_url": "",
"other_urls": [
"https://www.kaspersky.co.kr/",
"https://kaspersky.com/enterprise-security",
"https://kaspersky.com#main"
],
"pinterest_urls": [],
"reddit_urls": [],
"snapchat_urls": [],
"title": "Kaspersky Cyber Security Solutions for Home and Business | Kaspersky",
"tumblr_urls": [],
"twitter_urls": ["https://twitter.com/kaspersky"],
"youtube_urls": ["https://youtube.com/Kaspersky"]
},
"error": "",
"status": 200
}
Company Search
Search the domain collection database for companies by name.
HTTP Request
GET https://fullhunt.io/api/v1/nexus/domain-collection/company-lookup
Query Parameters
Parameter | Required | Type | Description |
---|---|---|---|
query | Yes | string | Company name to search for |
Example Request
curl "https://fullhunt.io/api/v1/nexus/domain-collection/company-lookup?query=kaspersky" \
-H "X-API-KEY: xxxx-xxxx-xxxx-xxxxxx"
Example Response
{
"count": 6,
"data": [
{
"company_name": "Kaspersky",
"copyright": "",
"crunchbase_urls": [],
"description": "Najczęściej nagradzana. Najczęściej testowana. Ochrona antywirusowa i Internet Security dla domu i biznesu od Kaspersky",
"domain": "kaspersky.com.pl",
"facebook_urls": ["https://facebook.com/KasperskyPolska"],
"favicon_url": "https://kaspersky.com.pl/favicon.ico",
"github_urls": [],
"images_list": ["https://www.kaspersky.com.pl/images/image_logo.jpg"],
"instagram_urls": ["https://instagram.com/KasperskyPolska"],
"linkedin_urls": ["https://www.linkedin.com/company/kaspersky-polska"],
"meta_logo_url": "",
"other_urls": [
"https://kaspersky.com.pl/safe-kids",
"https://kaspersky.com.pl/ochrona-dla-sredniego-biznesu"
],
"pinterest_urls": [],
"reddit_urls": [],
"snapchat_urls": [],
"title": "Kaspersky - oficjalna strona - najlepszy antywirus, internet security | sklep",
"tumblr_urls": [],
"twitter_urls": ["https://twitter.com/KasperskyPolska"],
"youtube_urls": [
"https://www.youtube.com/embed/KurkIrV9hVo?autoplay=1",
"https://www.youtube.com/KasperskyLabPL"
]
}
],
"error": "",
"status": 200
}
Response Fields
Field | Type | Description |
---|---|---|
count | integer | Number of results found |
data | object/array | Company data (object for domain lookup, array for company search) |
error | string | Error message (empty on success) |
status | integer | HTTP status code |
Company Data Fields
Field | Type | Description |
---|---|---|
company_name | string | Company name |
domain | string | Primary domain |
description | string | Company description |
title | string | Website title |
favicon_url | string | Favicon URL |
facebook_urls | array | Facebook profile URLs |
twitter_urls | array | Twitter profile URLs |
linkedin_urls | array | LinkedIn profile URLs |
instagram_urls | array | Instagram profile URLs |
youtube_urls | array | YouTube channel URLs |
github_urls | array | GitHub organization URLs |
crunchbase_urls | array | Crunchbase profile URLs |
other_urls | array | Other significant URLs |
images_list | array | Associated image URLs |
Integration Example
import requests
import json
from datetime import datetime
from collections import defaultdict
class DomainCollectionAnalyzer:
def __init__(self, api_key):
self.api_key = api_key
self.headers = {"X-API-KEY": api_key}
self.base_url = "https://fullhunt.io/api/v1/nexus/domain-collection"
def lookup_domain(self, domain):
"""Look up company information for a domain."""
url = f"{self.base_url}/lookup"
params = {"domain": domain}
response = requests.get(url, headers=self.headers, params=params)
if response.status_code == 200:
return response.json()
else:
print(f"Error looking up domain {domain}: {response.status_code}")
return None
def search_company(self, company_name):
"""Search for company information by name."""
url = f"{self.base_url}/company-lookup"
params = {"query": company_name}
response = requests.get(url, headers=self.headers, params=params)
if response.status_code == 200:
return response.json()
else:
print(f"Error searching for company {company_name}: {response.status_code}")
return None
def analyze_company_presence(self, domain_or_company):
"""Analyze digital presence for a company."""
# Try domain lookup first
domain_data = self.lookup_domain(domain_or_company)
if domain_data and domain_data.get('count', 0) > 0:
company_info = domain_data['data']
print(f"🏢 Company Analysis for domain: {domain_or_company}")
else:
# Try company search
company_data = self.search_company(domain_or_company)
if company_data and company_data.get('count', 0) > 0:
company_info = company_data['data'][0] # Take first result
print(f"🏢 Company Analysis for company: {domain_or_company}")
else:
print(f"No company information found for: {domain_or_company}")
return None
print("=" * 60)
# Basic company information
print(f"Company Name: {company_info.get('company_name', 'N/A')}")
print(f"Primary Domain: {company_info.get('domain', 'N/A')}")
print(f"Description: {company_info.get('description', 'N/A')[:100]}...")
# Social media presence analysis
social_platforms = {
'Facebook': company_info.get('facebook_urls', []),
'Twitter': company_info.get('twitter_urls', []),
'LinkedIn': company_info.get('linkedin_urls', []),
'Instagram': company_info.get('instagram_urls', []),
'YouTube': company_info.get('youtube_urls', []),
'GitHub': company_info.get('github_urls', []),
'Reddit': company_info.get('reddit_urls', []),
'Pinterest': company_info.get('pinterest_urls', []),
'Snapchat': company_info.get('snapchat_urls', []),
'Tumblr': company_info.get('tumblr_urls', [])
}
active_platforms = {platform: urls for platform, urls in social_platforms.items() if urls}
print(f"\n📱 Social Media Presence:")
print(f" Active platforms: {len(active_platforms)}/10")
for platform, urls in active_platforms.items():
print(f" {platform}: {len(urls)} profile(s)")
for url in urls[:2]: # Show first 2 URLs
print(f" • {url}")
# Other digital assets
other_urls = company_info.get('other_urls', [])
if other_urls:
print(f"\n🔗 Other Digital Assets: {len(other_urls)}")
for url in other_urls[:5]: # Show first 5
print(f" • {url}")
# Branding assets
branding_assets = []
if company_info.get('favicon_url'):
branding_assets.append(f"Favicon: {company_info['favicon_url']}")
if company_info.get('meta_logo_url'):
branding_assets.append(f"Logo: {company_info['meta_logo_url']}")
images = company_info.get('images_list', [])
if images:
branding_assets.append(f"Images: {len(images)} found")
if branding_assets:
print(f"\n🎨 Branding Assets:")
for asset in branding_assets:
print(f" • {asset}")
return {
'company_info': company_info,
'social_platforms': active_platforms,
'digital_presence_score': len(active_platforms),
'total_urls': len(other_urls),
'has_branding': len(branding_assets) > 0
}
def compare_companies(self, company_list):
"""Compare digital presence across multiple companies."""
print(f"📊 Digital Presence Comparison - {len(company_list)} Companies")
print("=" * 70)
comparison_data = {}
for company in company_list:
print(f"\nAnalyzing {company}...")
analysis = self.analyze_company_presence(company)
if analysis:
comparison_data[company] = analysis
print(f" Digital presence score: {analysis['digital_presence_score']}/10")
else:
print(f" No data found")
# Summary comparison
if len(comparison_data) > 1:
print(f"\n🏆 Digital Presence Rankings:")
# Sort by digital presence score
ranked_companies = sorted(
comparison_data.items(),
key=lambda x: x[1]['digital_presence_score'],
reverse=True
)
for i, (company, data) in enumerate(ranked_companies, 1):
score = data['digital_presence_score']
total_urls = data['total_urls']
print(f" {i}. {company}")
print(f" Social platforms: {score}/10")
print(f" Total URLs: {total_urls}")
print(f" Has branding: {'Yes' if data['has_branding'] else 'No'}")
return comparison_data
def discover_company_network(self, company_name, max_results=20):
"""Discover network of related companies/domains."""
print(f"🕸️ Discovering company network for: {company_name}")
print("=" * 60)
# Search for the company
search_results = self.search_company(company_name)
if not search_results or search_results.get('count', 0) == 0:
print("No company data found")
return None
companies = search_results['data'][:max_results]
print(f"Found {len(companies)} related companies/domains:")
network_analysis = {
'total_companies': len(companies),
'domains': [],
'social_coverage': defaultdict(int),
'geographic_presence': defaultdict(int),
'companies': companies
}
for i, company in enumerate(companies, 1):
domain = company.get('domain', 'N/A')
name = company.get('company_name', 'Unknown')
print(f"\n{i}. {name}")
print(f" Domain: {domain}")
network_analysis['domains'].append(domain)
# Analyze geographic presence from domain TLD
if '.' in domain:
tld = domain.split('.')[-1]
network_analysis['geographic_presence'][tld] += 1
# Count social platform coverage
social_platforms = ['facebook_urls', 'twitter_urls', 'linkedin_urls',
'instagram_urls', 'youtube_urls', 'github_urls']
active_platforms = []
for platform in social_platforms:
if company.get(platform):
platform_name = platform.replace('_urls', '').title()
active_platforms.append(platform_name)
network_analysis['social_coverage'][platform_name] += 1
if active_platforms:
print(f" Social presence: {', '.join(active_platforms)}")
# Show description if available
description = company.get('description', '')
if description:
print(f" Description: {description[:80]}...")
# Network summary
print(f"\n📈 Network Analysis Summary:")
print(f" Total entities: {network_analysis['total_companies']}")
print(f" Unique domains: {len(set(network_analysis['domains']))}")
print(f"\n🌍 Geographic Distribution:")
for tld, count in sorted(network_analysis['geographic_presence'].items(),
key=lambda x: x[1], reverse=True)[:5]:
print(f" .{tld}: {count} domains")
print(f"\n📱 Social Platform Coverage:")
for platform, count in sorted(network_analysis['social_coverage'].items(),
key=lambda x: x[1], reverse=True):
percentage = (count / len(companies)) * 100
print(f" {platform}: {count}/{len(companies)} ({percentage:.1f}%)")
return network_analysis
def export_company_report(self, company_name, filename=None):
"""Export comprehensive company report."""
analysis = self.analyze_company_presence(company_name)
network = self.discover_company_network(company_name)
if not analysis and not network:
print("No data to export")
return False
report = {
'timestamp': datetime.now().isoformat(),
'company': company_name,
'company_analysis': analysis,
'network_analysis': network,
'summary': {
'has_company_data': analysis is not None,
'digital_presence_score': analysis.get('digital_presence_score', 0) if analysis else 0,
'network_size': network.get('total_companies', 0) if network else 0
}
}
if filename is None:
safe_name = company_name.replace(' ', '_').replace('.', '_')
filename = f"company_report_{safe_name}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
try:
with open(filename, 'w') as f:
json.dump(report, f, indent=2)
print(f"📁 Company report exported to: {filename}")
return True
except Exception as e:
print(f"❌ Failed to export report: {e}")
return False
# Usage Examples
api_key = "your-api-key-here"
analyzer = DomainCollectionAnalyzer(api_key)
# Basic domain lookup
domain_info = analyzer.lookup_domain("kaspersky.com")
print(f"Company: {domain_info['data']['company_name']}")
# Company search
company_results = analyzer.search_company("kaspersky")
print(f"Found {company_results['count']} related companies")
# Comprehensive analysis
analysis = analyzer.analyze_company_presence("kaspersky.com")
# Compare multiple companies
companies = ["kaspersky", "symantec", "mcafee"]
comparison = analyzer.compare_companies(companies)
# Discover company network
network = analyzer.discover_company_network("kaspersky", max_results=10)
# Export comprehensive report
analyzer.export_company_report("kaspersky")
Use Cases
Company Intelligence
- Research company information and digital presence
- Analyze competitors' online footprint
- Investigate business relationships and networks
Brand Monitoring
- Monitor brand presence across digital platforms
- Track social media coverage and engagement
- Identify unauthorized brand usage
Due Diligence
- Research companies for partnership or acquisition
- Validate company information and presence
- Assess digital maturity and online strategy
Threat Intelligence
- Investigate suspicious companies and domains
- Map organizational relationships
- Research potential threat actor infrastructure
Market Research
- Analyze competitive landscape
- Study industry digital presence patterns
- Research market penetration strategies
Best Practices
Data Analysis
- Cross-Validation: Verify information across multiple sources
- Pattern Recognition: Look for patterns in domain naming and structure
- Temporal Analysis: Track changes in company information over time
- Network Mapping: Map relationships between related companies
Investigation Workflow
- Domain Discovery: Start with known domains to gather company information
- Network Expansion: Use company names to discover related entities
- Validation: Cross-reference findings with external sources
- Documentation: Maintain comprehensive records of discoveries
Integration Tips
- CRM Integration: Feed company data into customer relationship management systems
- Threat Intelligence: Combine with other intelligence sources for comprehensive analysis
- Marketing Intelligence: Use for competitive analysis and market research
- Risk Assessment: Integrate into due diligence and risk assessment processes