Skip to content

API Reference

CompanyLens API

REST API for company data enrichment. All endpoints return JSON. Authentication via Bearer token. Base URL: https://api.companylens.io

Authentication

Include your API key as a Bearer token in the Authorization header of every request. Keep your key secure and never expose it in client-side code.

Authorization: Bearer YOUR_API_KEY
Note: Never expose your API key in client-side JavaScript. Always make API calls from your backend server.
GET/v1/enrich/companyCompany Profile

Full company enrichment. Returns firmographic data, tech stack, social profiles, WHOIS, DNS records, and website metadata. Data is cached for 7 days — use refresh=true to bypass.

Parameters

NameTypeRequiredDescription
domainstringrequiredThe domain to enrich (e.g. stripe.com)
refreshbooleanoptionalForce fresh data, bypassing the cache (default: false)
Request
curl -X GET \
  "https://api.companylens.io/v1/enrich/company?domain=stripe.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response200 OK
{
  "domain": "stripe.com",
  "name": "Stripe",
  "description": "Financial infrastructure platform for the internet.",
  "industry": "Financial Technology",
  "employee_count_range": "5000-10000",
  "founded_year": 2010,
  "location": {
    "city": "San Francisco",
    "state": "CA",
    "country": "US"
  },
  "social_profiles": {
    "linkedin": "https://linkedin.com/company/stripe",
    "twitter": "https://twitter.com/stripe",
    "github": "https://github.com/stripe"
  },
  "tech_stack": ["React", "Cloudflare", "AWS", "Google Analytics"],
  "whois": {
    "registrar": "MarkMonitor Inc.",
    "created_date": "2009-09-17",
    "expires_date": "2031-09-17"
  },
  "last_updated": "2026-03-24T00:00:00Z"
}
GET/v1/enrich/techTech Stack Detection

Analyzes HTTP headers, HTML content patterns, and DNS MX records to detect the technologies a company uses. Returns categorized stacks across frameworks, analytics, CDN, payment, email, and more.

Parameters

NameTypeRequiredDescription
domainstringrequiredThe domain to scan for technologies
refreshbooleanoptionalForce fresh scan, bypassing the cache (default: false)
Request
curl -X GET \
  "https://api.companylens.io/v1/enrich/tech?domain=stripe.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response200 OK
{
  "domain": "stripe.com",
  "tech_stack": {
    "frameworks":      ["React", "Next.js"],
    "analytics":       ["Google Analytics", "Segment"],
    "payment":         ["Stripe.js"],
    "cdn_hosting":     ["Cloudflare", "AWS CloudFront"],
    "email_provider":  ["SendGrid"],
    "chat_support":    ["Intercom"]
  },
  "last_updated": "2026-03-24T00:00:00Z"
}
GET/v1/enrich/socialSocial Discovery

Discovers social media profiles for a company by scraping the website and probing common URL patterns. Covers LinkedIn, Twitter/X, Facebook, GitHub, YouTube, Instagram, and Crunchbase.

Parameters

NameTypeRequiredDescription
domainstringrequiredThe domain of the company
refreshbooleanoptionalForce fresh discovery, bypassing the cache (default: false)
Request
curl -X GET \
  "https://api.companylens.io/v1/enrich/social?domain=stripe.com" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response200 OK
{
  "domain": "stripe.com",
  "social_profiles": {
    "linkedin":   "https://linkedin.com/company/stripe",
    "twitter":    "https://twitter.com/stripe",
    "facebook":   "https://facebook.com/stripeHQ",
    "github":     "https://github.com/stripe",
    "youtube":    "https://youtube.com/c/stripe",
    "instagram":  null,
    "crunchbase": "https://crunchbase.com/organization/stripe"
  },
  "last_updated": "2026-03-24T00:00:00Z"
}
POST/v1/enrich/bulkBulk Enrichment

Enrich up to 10 domains concurrently in a single request. Each result includes success/failure status plus the full enrichment payload. Ideal for batch processing pipelines.

Request Body

NameTypeRequiredDescription
domainsstring[]requiredArray of domains to enrich (max 10)
refreshbooleanoptionalForce fresh data for all domains (default: false)
Request
curl -X POST \
  "https://api.companylens.io/v1/enrich/bulk" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["stripe.com", "vercel.com", "linear.app"]}'
Response200 OK
{
  "results": [
    { "domain": "stripe.com", "success": true,  "data": { "..." }, "error": null },
    { "domain": "vercel.com", "success": true,  "data": { "..." }, "error": null },
    { "domain": "linear.app", "success": true,  "data": { "..." }, "error": null }
  ],
  "total": 3,
  "succeeded": 3,
  "failed": 0
}

Error Codes

StatusDescription
200 OKRequest succeeded.
400 Bad RequestMissing or invalid domain parameter.
401 UnauthorizedMissing or invalid API key.
422 Unprocessable EntityDomain failed validation (malformed, empty, or not a real domain).
429 Too Many RequestsRate limit exceeded. Check X-RateLimit-Reset header and use exponential backoff.
500 Internal Server ErrorSomething went wrong on our side. Please retry.

Rate Limits

Rate limits are enforced per API key. Check the following headers in every response:

X-RateLimit-Limit:Total requests allowed per month
X-RateLimit-Remaining:Requests remaining this billing cycle
X-RateLimit-Reset:Unix timestamp when quota resets

When you hit a rate limit, the API returns 429 Too Many Requests. Use exponential backoff before retrying.

Ready to start?

50 free lookups per month. No credit card required.

Get your API key →